Orest Kupyn 13 · Eugene Khvedchenia 2 · Christian Rupprecht 1 ·
1 Universitas Oxford · 2 Universitas Katolik Ukraina · 3 Piñatafarms AI
Vggheads adalah dataset sintetis sepenuhnya skala besar untuk deteksi kepala manusia dan estimasi mesh 3D dengan lebih dari 1 juta gambar yang dihasilkan dengan model difusi. Model yang dilatih hanya pada data sintetis menggeneralisasi dengan baik ke dunia nyata dan mampu mendeteksi kepala simultan dan rekonstruksi kepala dari satu gambar dalam satu langkah.

Untuk mengunduh dataset Vggheads, Anda memiliki dua opsi:
pip install academictorrents
at-get 1ac36f16386061685ed303dea6f0d6179d2e2121atau gunakan ARIA2C
aria2c --seed-time=0 --max-overall-download-limit=10M --file-allocation=none https://academictorrents.com/download/1ac36f16386061685ed303dea6f0d6179d2e2121.torrentTautan torrent penuh
Kami merekomendasikan menggunakan metode torrent karena biasanya lebih cepat dan membantu mengurangi beban pada server kami.
wget https://thor.robots.ox.ac.uk/vgg-heads/VGGHeads.tar Ini akan mengunduh file bernama VGGHeads.tar ke direktori Anda saat ini.
Untuk memverifikasi integritas file yang diunduh, kita akan memerlukan checksum MD5. Unduh mereka menggunakan:
wget https://thor.robots.ox.ac.uk/vgg-heads/MD5SUMS Setelah kedua file diunduh, verifikasi integritas file VGGHeads.tar :
md5sum -c MD5SUMSJika unduhan berhasil dan file utuh, Anda akan melihat pesan "OK".
Jika verifikasi berhasil, ekstrak isi file tar:
tar -xvf VGGHeads.tarIni akan mengekstraksi isi arsip ke dalam direktori Anda saat ini.
Catatan:
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 ./Atau cukup instal
pip install git+https://github.com/KupynOrest/head_detector.gitUntuk menguji model vggheads pada gambar Anda sendiri cukup gunakan kode ini:
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. Anda dapat mengekspor jala kepala sebagai file OBJ menggunakan metode save_meshes :
# After getting predictions
save_folder = "path/to/save/folder"
predictions . save_meshes ( save_folder )Ini akan menyimpan file OBJ individual untuk setiap kepala yang terdeteksi di folder yang ditentukan.
Untuk mendapatkan tanaman kepala yang selaras, gunakan metode 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 )Ini mengembalikan daftar tanaman kepala yang selaras yang dapat Anda proses atau simpan lebih lanjut.
Berikut contoh lengkap yang menggabungkan semua fitur:
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'" )Contoh yang diperluas ini menunjukkan cara menggunakan semua fitur model VGGHEADS, termasuk deteksi kepala dasar, hasil menggambar, mengekspor jerat kepala, dan mendapatkan tanaman kepala yang selaras.
Selain itu, bobot ONNX tersedia di Huggingface. Contoh inferensi dapat ditemukan di: colab
Kami juga menyediakan demo gradio, yang dapat Anda jalankan secara lokal:
cd gradio
pip install -r requirements.txt
python app.py Anda dapat menentukan argumen --server_port , --share , --server_name untuk memenuhi kebutuhan Anda!
Periksa yolo_head_training/Makefile untuk contoh skrip kereta api.
Untuk menjalankan pelatihan pada semua data dengan data paralel terdistribusi (DDP), gunakan perintah berikut:
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=DDPGanti placeholder berikut:
NUM_GPUS : Jumlah GPU yang ingin Anda gunakan untuk pelatihan.DATA_FOLDER : Jalur ke direktori yang berisi dataset yang diekstraksi.Pelatihan GPU tunggal: Jika Anda menggunakan satu GPU, Anda dapat menyederhanakan perintah:
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 Konfigurasi Kustom: Anda dapat memodifikasi parameter --config-name untuk menggunakan konfigurasi model yang berbeda. Periksa file konfigurasi di direktori proyek untuk opsi yang tersedia.
Menyesuaikan hyperparameters: Anda dapat menyesuaikan berbagai hiperparameter dengan menambahkannya ke baris perintah. Misalnya:
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 Pelatihan Lanjutkan: Jika Anda perlu melanjutkan pelatihan dari pos pemeriksaan, Anda dapat menggunakan bendera 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=TrueAnda dapat memantau kemajuan pelatihan melalui output konsol. Pertimbangkan untuk menggunakan alat seperti Tensorboard untuk pemantauan yang lebih rinci dan visualisasi metrik pelatihan.
Jika Anda menemukan vgghead berguna untuk penelitian dan aplikasi Anda, silakan mengutip kami menggunakan Bibtex ini:
@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 } ,
}Karya ini dilisensikan di bawah lisensi internasional Atribut-Nonkomersial 4.0 Creative Commons.