YOLOv 3使用ノート——darknet分類、計算accuracy

2165 ワード

https://pjreddie.com/darknet/train-cifar/
1.データセット準備
本稿ではdarknet 19トレーニングスイッチゲートデータセットを例に挙げる
ルートディレクトリdataフォルダの下に新しいdoorフォルダを作成して、データセット、ラベルファイルを保存します.
新しいlabel.txt、ドアを開けるのと閉めるの2種類に分けられます
open
closed

新しいtrainフォルダ、testフォルダは、トレーニングセットとテストセットを保存するために使用されます.
画像名のフォーマットは次のとおりです:00001_open.jpg    00001_closed.jpgシーケンス番号_ラベル接尾辞名の形式
新しいtrain.list、test.Listは、対応するデータセットピクチャの絶対パスであり、例:/home/yolov 3/darknet/data/door/train/00001_closed.jpg
注意:パスにラベル名を含めることはできません.そうしないと、Too many or too few labelsエラーが表示されます.
スクリプトを直接書くlistを取得したり、コマンドls>a.txtですべてのファイル名を取得したりして、行ごとに先頭に文字を付けて置換したりすることができます.sed's/^/test&/g'a.txt>test.list、testを絶対パスに置き換えます.テキスト操作によりlistファイルが得られます.
2.cfgの修正
例:darknet 19.cfg、最後のボリューム層filtersを変更し、その他のスーパーパラメータを必要に応じて変更します.
[convolutional]
filters=2// 
size=1
stride=1
pad=1
activation=linear

新しいdoor.data、データセットとモデルの保存パスに対応してtop 1精度に変更
classes= 2
train  = data/door/train.list
valid  = data/door/test.list
labels =data/door/labels.txt
backup = /home/yolov3/darknet/door_flag_model/
top=1

 
3.トレーニング
darknetを表示c,classifier.c,darknet訓練分類器はfinetuningできない
./darknet classifier train cfg/door.data cfg/darknet19.cfg -gpus 0,1 2>1 | tee train_darknet19.log

保存するモデルには.backupは訓練を継続し、モデルをepoch数で命名するために保存するために使用することができる.
 
4.テスト
./darknet classifier predict cfg/door.data cfg/darknet19.cfg door_flag_model/darknet19_3.weights data/a.jpg 

 
5.計算精度
 
darknet分類はcaffeのように訓練されていないと同時にログファイルがテストセットを出力する精度であるが,valid関数を提供してtop−1精度を出力する.
./darknet classifier valid cfg/door.data cfg/darknet19.cfg classify_result/darknet19_18.weights

同じデータセットでcaffe,pytorchフレームワークを比較し,近似的なネットワークトレーニングでdarknetフレームワークトレーニングの平均lossがより低く,精度がより高く,モデルの汎化表現もより良好であった.caffeと比較して、サードパーティ製ライブラリがなく、cも組み込みプラットフォームに移植しやすい.
 
 
 
参照先:
https://blog.csdn.net/u011576009/article/details/70146766
https://blog.csdn.net/Allyli0022/article/details/78185305
https://blog.csdn.net/hjimce/article/details/74454165