Orest Kupyn 13・Eugene Khvedchenia 2・Christian Rupprecht 1・
1オックスフォード大学・2ウクライナ・カトリック大学・3PiñatafarmsAI
Vggheadsは、拡散モデルで生成された100万枚以上の画像を備えたヒトの頭部検出と3Dメッシュ推定のための大規模な完全な合成データセットです。合成データでのみ訓練されたモデルは、実世界によく一般化され、同時ヘッド検出と単一の画像からのヘッドメッシュの再構築が1つのステップで再構成できます。

VGGHEADSデータセットをダウンロードするには、2つのオプションがあります。
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メソッドを使用することをお勧めします。
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ダウンロードが成功し、ファイルが無傷の場合は、「OK」メッセージが表示されます。
検証が成功した場合は、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で見つけることができます
また、グレーディオデモも提供しています。これをローカルで実行できます。
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コンソール出力を介してトレーニングの進捗を監視できます。トレーニングメトリックのより詳細な監視と視覚化のために、テンソルボードなどのツールを使用することを検討してください。
あなたがあなたの研究とアプリケーションに役立つ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国際ライセンスの下でライセンスされています。