OREST KUPYN 13 · Eugene Khvedchenia 2 · Christian Rupprecht 1 ·
1 มหาวิทยาลัยอ๊อกซฟอร์ด· 2 มหาวิทยาลัยคาทอลิกยูเครน· 3 piñatafarms ai
VGGHEADS เป็นชุดข้อมูลสังเคราะห์ขนาดใหญ่สำหรับการตรวจจับศีรษะของมนุษย์และการประมาณตาข่าย 3 มิติที่มีภาพมากกว่า 1 ล้านภาพที่สร้างขึ้นด้วยแบบจำลองการแพร่กระจาย แบบจำลองที่ได้รับการฝึกฝนเกี่ยวกับข้อมูลสังเคราะห์ทั่วไปได้ดีไปสู่โลกแห่งความเป็นจริงและมีความสามารถในการตรวจจับหัวพร้อมกันและการสร้างหัวตาข่ายใหม่จากภาพเดียวในขั้นตอนเดียว

ในการดาวน์โหลดชุดข้อมูล 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ลิงค์ Torrent เต็มรูปแบบ
เราขอแนะนำให้ใช้วิธี 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:
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 ตัวอย่างของการอนุมานสามารถพบได้ที่: colab
นอกจากนี้เรายังให้การสาธิต Gradio ซึ่งคุณสามารถทำงานในพื้นที่:
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 : จำนวน GPU ที่คุณต้องการใช้สำหรับการฝึกอบรมDATA_FOLDER : เส้นทางไปยังไดเรกทอรีที่มีชุดข้อมูลที่แยกออกมาของคุณการฝึกอบรม GPU เดี่ยว: หากคุณใช้ GPU เดียวคุณสามารถทำให้คำสั่งง่ายขึ้น:
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 เพื่อใช้การกำหนดค่าโมเดลที่แตกต่างกัน ตรวจสอบไฟล์การกำหนดค่าในไดเรกทอรีโครงการสำหรับตัวเลือกที่มีอยู่
การปรับพารามิเตอร์ hyperparameters: คุณสามารถปรับพารามิเตอร์ hyperparameters ต่างๆได้โดยเพิ่มลงในบรรทัดคำสั่ง ตัวอย่างเช่น:
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-Noncommercial 4.0