yolov3を使用して独自のデータセットをトレーニングする(C ++ vs2017 Win10)

リファレンス:https : //blog.csdn.net/la_fe_/article/details/81564420

https://blog.csdn.net/qq_31442743/article/details/81087346

既存のものに基づいてデータセットのトレーニングを続行する場合は、 https //mp.csdn.net/postedit/102964648を参照してください。

1.データセット、トレーニング画像、検証画像、および対応するパス名のtxtファイルを準備します

fast-rcnnとは異なり、yoloはこのスクリプトvoc_label2.py実行して生成するためにいくつかのtxtファイルも必要です(トップリファレンスブログを参照)

これら3つのフォルダのパスの\を/に置き換えます

D:\ software_engineer \ darknet \ darknet \ scripts \ VOCdevkit \ VOC2007 \ラベルも生成されますこのフォルダ

voc_label2.py:

 

2.構成ファイルを準備します。3つの構成ファイルが必要です

1.voc.data(カテゴリの数、ステップ1の2つのtxtのパス、クラス名のパス、トレーニングファイルの場所)

2.voc.name

3.yolov3.cfg

以前のバッチとサブディビジョンは、トレーニング中にテスト中にコメントアウトされ、テスト中にトレーニング中にコメントアウトされました

ここでいくつかのパラメータを変更する必要があります:

 [たたみ込み] 

サイズ= 1 

ストライド= 1 

パッド= 1 

filters = 30 // 最後のたたみ込み層のカーネルパラメーターの数を変更します。各yolo層の上に3つのたたみ込み層があります

               //計算式は引き続き、独自のデータフィルターのカテゴリ数= num×(クラス+ coords + 1)= 5×(1 + 4 + 1)= 30 

// YOLOv3 バージョンでは、filter = 3×(class + coords + 1)= 3×(1 + 4 + 1)= 18、つまり3 *(カテゴリの数+ 5)

アクティベーション=リニア 

[領域] 

アンカー= 1.08、1.19、3.42、4.41、6.63、11.38、9.42、5.11、16.62、10.52 

bias_match = 1 

classes = 1 //クラスの数、この場合は1クラス 

座標= 4 

数値= 5 

softmax = 1 

ジッタ= .2 

rescore = 1 

object_scale = 5 

noobject_scale = 1 

class_scale = 1 

coord_scale = 1 

絶対= 1 

thresh = .6 

ランダム= 1

2.トレーニング

Dで実行:\ software_engineer \ darknet \ darknet \ build \ darknet \ x64

./darknet検出器列D:/software_engineer/darknet/darknet/cfg/voc.data D:/software_engineer/darknet/darknet/cfg/yolov3.cfg

事前トレーニング済みモデルがある場合は、darknet.exeと同じフォルダーに配置し、手順の最後に事前トレーニング済みモデルの名前を追加します。例:darknet53.conv.74、

既存の方法でトレーニングする場合は、最後にトレーニング済みのファイル名を直接追加することはできません。次の文を実行して微調整を行い、yolov3_last.weightsをyolov3_last.conv.23に変更する必要があります。そうしないと、エラーが報告されます(ショー)

./darknet部分的なcfg / darknet19_448.cfg yolov3_last.weights yolov3_last.conv.23 23

次に、training。/ darknet Detector train Dを実行します:/software_engineer/darknet/darknet/cfg/voc.data D:/software_engineer/darknet/darknet/cfg/yolov3.cfg yolov3_last.conv.23

3テスト(テストの前にyolov3.cfgファイルを変更)

(1)単一画像テスト

./darknet検出器テストD:/software_engineer/darknet/darknet/cfg/voc.data D:/software_engineer/darknet/darknet/cfg/yolov3.cfg D:/software_engineer/darknet/darknet/backup/yolov3_last.weights -i 0 -thresh 0.5 D:/ work_place /ドアロックプロジェクト/カウントプロジェクトの深層学習ターゲット認識/ VOCdevkit / VOC2007 / JPEGImages / 00089.jpg

yolov3_last.weightsはトレーニング済みのファイルです。バックアップで、パスを失いたくない場合は、darknet.exeと同じフォルダーにコピーできます。

(2)テストパラメーターを有効に変更してから、画像名を削除します(つまり、パスは画像セットフォルダーのパスです)。テストセットのデータをバッチテストして結果フォルダーに保存できます。txt形式であり、直感的ではありません。このバッチテストは、テストセットのみを実行します。

(3)テストビデオのパラメーターをデモに変更する

./darknet検出器のデモデータ/coco.data cfg / yolov3.cfg yolov3.weights video_003.avi

発生した問題:

1. yolov3のテスト時のエラー:cudaエラー:メモリ不足darknet:./src/cuda.c:36:check_error:アサーション `0 'が失敗しました。

800回にトレーニングしたときに突然このエラーを報告しましたが、幸い、この時点ですでに収束し始めており、トレーニング結果を使用できます

2.バッチサイズを64に調整すると、トレーニング速度が非常に遅くなり、データセットのサイズに大きな関係がないように見えます。数万のvoc2007データセットのトレーニングは、独自の200データセットとほぼ同じ速度です。

元の記事を59件公開 いいね46 30,000回以上訪問

おすすめ

転載: blog.csdn.net/sinat_41852207/article/details/103026284