Darknet YOLO v2でカスタムオブジェクト分類子をトレーニングしようとしています https://pjreddie.com/darknet/yolo/
ほとんどの画像は6000 x 4000ピクセルで、いくつかの低解像度の画像のデータセットを収集しました。
二乗するためにトレーニングする前に画像のサイズを変更する必要がありますか?
私は設定が使用することがわかりました:
[net]
batch=64
subdivisions=8
height=416
width=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
それが、さまざまなサイズのデータセットに使用する方法を考えていた理由です。
Darknetが代わりにサイズを変更するため、サイズを変更する必要はありません!
つまり、実際にその必要はなく、トレーニング中にさまざまな画像サイズを使用できます。上記で投稿したのは、単なるネットワーク構成です。完全なネットワーク定義も必要です。また、高さと幅からネットワークの解像度がわかります。また、アスペクト比も保持します。たとえば、 this を確認します。
トレーニングの前に画像のサイズを変更することは非常に一般的です。 416x416は一般的なサイズよりわずかに大きくなっています。ほとんどのimagenetモデルは、画像のサイズを変更して、たとえば256x256に二乗します。したがって、ここでも同じことが期待されます。 6000x4000でトレーニングしようとすると、GPUのファームが必要になります。標準プロセスでは、画像を最大サイズ(高さまたは幅)に二乗し、短辺に0を追加してから、PILなどの標準画像サイズ変更ツールを使用してサイズを変更します。
画像のサイズを変更する必要はありません。darknet.cfg
ファイルの値を直接変更できます。
darknet.cfg
(yolo-darknet.cfg)ファイルを開くと、すべてのことができますcfg
ファイルイメージのサイズが(416,416)->(weight、height)で示されているように、値を変更して、darknetがトレーニング前に自動的にイメージのサイズを変更できるようにします。データベースイメージのサイズを変更する必要はありません。 YOLOアーキテクチャーは、.cfgファイルの解像度に応じて、アスペクト比を安全に(情報が失われないように)維持します。たとえば、画像サイズが1248 x 936の場合、YOLOは416 x 312にサイズ変更し、余分なスペースに416 x 416ネットワークに収まるように黒いバーを埋め込みます。