Orest Kupyn 13 · Eugene Khvedchenia 2 · Christian Rupprecht 1 ·
1 جامعة أكسفورد · 2 الجامعة الكاثوليكية الأوكرانية · 3 Piñatafarms AI
VgGheads هي مجموعة بيانات اصطناعية على نطاق واسع للكشف عن الرأس البشري وتقدير شبكة ثلاثية الأبعاد مع أكثر من مليون صورة تم إنشاؤها مع نماذج الانتشار. يعتمد نموذج يتم تدريبه فقط على البيانات الاصطناعية بشكل جيد للعالم الحقيقي وقادر على اكتشاف الرؤوس المتزامنة وإعادة بناء الرأس من صورة واحدة في خطوة واحدة.

لتنزيل مجموعة بيانات VGGHeads ، لديك خياران:
pip install academictorrents
at-get 1ac36f16386061685ed303dea6f0d6179d2e2121أو استخدام ARIA2C
aria2c --seed-time=0 --max-overall-download-limit=10M --file-allocation=none https://academictorrents.com/download/1ac36f16386061685ed303dea6f0d6179d2e2121.torrentرابط التورنت الكامل
نوصي باستخدام طريقة التورنت لأنها عادة ما تكون أسرع وتساعد على تقليل الحمل على خوادمنا.
wget https://thor.robots.ox.ac.uk/vgg-heads/VGGHeads.tar سيؤدي ذلك إلى تنزيل ملف اسمه VGGHeads.tar إلى دليلك الحالي.
للتحقق من سلامة الملف الذي تم تنزيله ، سنحتاج إلى فحص MD5. قم بتنزيلها باستخدام:
wget https://thor.robots.ox.ac.uk/vgg-heads/MD5SUMS بعد تنزيل كلا الملفين ، تحقق من سلامة ملف VGGHeads.tar :
md5sum -c MD5SUMSإذا كان التنزيل ناجحًا وكان الملف سليمًا ، فيجب أن ترى رسالة "موافق".
إذا كان التحقق ناجحًا ، فاستخرج محتويات ملف القطران:
tar -xvf VGGHeads.tarسيؤدي ذلك إلى استخراج محتويات الأرشيف في الدليل الحالي.
ملحوظات:
conda create --name vgg_heads python=3.10
conda activate vgg_headsgit clone https://github.com/KupynOrest/head_detector.git
cd head_detector
pip install -e ./أو ببساطة تثبيت
pip install git+https://github.com/KupynOrest/head_detector.gitلاختبار نموذج VGGHeads على صورك الخاصة ، استخدم هذا الرمز: ما عليك سوى استخدام هذا الرمز:
from head_detector import HeadDetector
import cv2
detector = HeadDetector ()
image_path = "your_image.jpg"
predictions = detector ( image_path )
# predictions.heads contain a list of heads with .bbox, .vertices_3d, .head_pose params
result_image = predictions . draw () # draw heads on the image
cv2 . imwrite ( "result.png" , result_image ) # save result image to preview it. يمكنك تصدير شبكات الرأس كملفات OBJ باستخدام طريقة save_meshes :
# After getting predictions
save_folder = "path/to/save/folder"
predictions . save_meshes ( save_folder )سيؤدي ذلك إلى حفظ ملفات OBJ الفردية لكل رأس مكتشف في المجلد المحدد.
للحصول على محاصيل الرأس المحاذاة ، استخدم طريقة get_aligned_heads :
# After getting predictions
aligned_heads = predictions . get_aligned_heads ()
# Process or save aligned head crops
for i , head in enumerate ( aligned_heads ):
cv2 . imwrite ( f"aligned_head_ { i } .png" , head )هذا يعيد قائمة محاصيل الرأس المحاذاة التي يمكنك معالجة أو حفظها.
إليك مثال كامل يتضمن جميع الميزات:
from head_detector import HeadDetector
import cv2
import os
# Initialize the detector
detector = HeadDetector ()
# Specify the path to your image
image_path = "your_image.jpg"
# Get predictions
predictions = detector ( image_path )
# Draw heads on the image
result_image = predictions . draw ()
cv2 . imwrite ( "result.png" , result_image )
# Save head meshes
save_folder = "head_meshes"
os . makedirs ( save_folder , exist_ok = True )
predictions . save_meshes ( save_folder )
# Get and save aligned head crops
aligned_heads = predictions . get_aligned_heads ()
for i , head in enumerate ( aligned_heads ):
cv2 . imwrite ( f"aligned_head_ { i } .png" , head )
print ( f"Detected { len ( predictions . heads ) } heads." )
print ( f"Result image saved as 'result.png'" )
print ( f"Head meshes saved in ' { save_folder } ' folder" )
print ( f"Aligned head crops saved as 'aligned_head_*.png'" )يوضح هذا المثال الممتد كيفية استخدام جميع ميزات نموذج VGGHeads ، بما في ذلك اكتشاف الرأس الأساسي ، ونتائج الرسم ، وتصدير شبكات الرأس ، والحصول على محاصيل الرأس المحاذاة.
بالإضافة إلى ذلك ، تتوفر أوزان ONNX في Huggingface. يمكن العثور على مثال الاستدلال على: كولاب
نحن نقدم أيضًا عرضًا تجريبيًا ، يمكنك تشغيله محليًا:
cd gradio
pip install -r requirements.txt
python app.py يمكنك تحديد وسيطات --server_port ، --share ، --server_name لتلبية احتياجاتك!
تحقق من yolo_head_training/Makefile للحصول على أمثلة على البرامج النصية للقطار.
لتشغيل التدريب على جميع البيانات مع البيانات الموزعة الموازية (DDP) ، استخدم الأمر التالي:
torchrun --standalone --nnodes=1 --nproc_per_node=NUM_GPUS train.py --config-name=yolo_heads_l
dataset_params.train_dataset_params.data_dir=DATA_FOLDER/large
dataset_params.val_dataset_params.data_dir=DATA_FOLDER/large
num_gpus=NUM_GPUS multi_gpu=DDPاستبدل العناصر النائبة التالية:
NUM_GPUS : عدد وحدات معالجة الرسومات التي تريد استخدامها للتدريب.DATA_FOLDER : المسار إلى الدليل الذي يحتوي على مجموعة البيانات المستخرجة.تدريب وحدات معالجة الرسومات المفردة: إذا كنت تستخدم وحدة معالجة الرسومات واحدة ، فيمكنك تبسيط الأمر:
python train.py --config-name=yolo_heads_l
dataset_params.train_dataset_params.data_dir=DATA_FOLDER/large
dataset_params.val_dataset_params.data_dir=DATA_FOLDER/large التكوين المخصص: يمكنك تعديل المعلمة --config-name لاستخدام تكوينات نموذج مختلفة. تحقق من ملفات التكوين في دليل المشروع للحصول على الخيارات المتاحة.
تعديل أجهزة التمييز المفرطة: يمكنك ضبط العديد من المقاييس الزائدة عن طريق إضافتها إلى سطر الأوامر. على سبيل المثال:
python train.py --config-name=yolo_heads_l
dataset_params.train_dataset_params.data_dir=DATA_FOLDER/large
dataset_params.val_dataset_params.data_dir=DATA_FOLDER/large
training_hyperparams.initial_lr=0.001
training_hyperparams.max_epochs=100 تدريب استئناف: إذا كنت بحاجة إلى استئناف التدريب من نقطة تفتيش ، فيمكنك استخدام training_hyperparams.resume : العلم:
python train.py --config-name=yolo_heads_l
dataset_params.train_dataset_params.data_dir=DATA_FOLDER/large
dataset_params.val_dataset_params.data_dir=DATA_FOLDER/large
training_hyperparams.resume=Trueيمكنك مراقبة تقدم التدريب من خلال إخراج وحدة التحكم. فكر في استخدام أدوات مثل Tensorboard لمزيد من المراقبة والتصور لمقاييس التدريب.
إذا وجدت vggheads مفيدة للبحث والتطبيقات الخاصة بك ، فيرجى الاستشهاد بنا باستخدام هذا bibtex:
@article { vggheads ,
title = { VGGHeads: A Large-Scale Synthetic Dataset for 3D Human Heads } ,
author = { Orest Kupyn and Eugene Khvedchenia and Christian Rupprecht } ,
year = { 2024 } ,
eprint = { 2407.18245 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CV } ,
url = { https://arxiv.org/abs/2407.18245 } ,
}تم ترخيص هذا العمل بموجب ترخيص Creative Commons Attribution-Noncommercial 4.0 الدولي.