Orest Kupyn 13 · Eugene Khvedchenia 2 · Christian Rupprecht 1 ·
1 옥스포드 대학 · 2 우크라이나 가톨릭 대학교 · 3 Piñatafarms ai
Vggheads는 확산 모델로 생성 된 1 백만 개가 넘는 이미지로 인간 헤드 감지 및 3D 메쉬 추정을위한 대규모 완전 합성 데이터 세트입니다. 합성 데이터에 대해서만 훈련 된 모델은 실제 세계에 잘 공급되고 동시 헤드 감지 및 헤드 메시 재구성이 단일 단계에서 단일 이미지로부터 재구성 할 수 있습니다.

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 파일의 내용을 추출하십시오.
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. save_meshes 메소드를 사용하여 헤드 메시를 OBJ 파일로 내보낼 수 있습니다.
# 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 매개 변수를 수정할 수 있습니다. 사용 가능한 옵션은 프로젝트 디렉토리의 구성 파일을 확인하십시오.
하이퍼 파라미터 조정 : 명령 줄에 추가하여 다양한 하이퍼 파라미터를 조정할 수 있습니다. 예를 들어:
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-Nonmercial 4.0 International License에 따라 라이센스가 부여됩니다.