使用YOLO框架Darknet進行分類預訓練

網絡上大部分整理的博文都是關於YOLO以及YOLOv2的finetune過程,但由於實際的業務數據的要求,需要得到與之匹配的預訓練模型,本文將使用YOLO的網絡進行預訓練,得到適合自己的分類器。
文章參考鏈接地址:https://pjreddie.com/darknet/train-cifar/

1、 下載darknet,並進行編譯

git clone https://github.com/pjreddie/darknet
cd darknet
make

2、獲取數據

我使用的是Mnist數據集,由於Mnist數據集是二進制格式的,所以需要先將其轉化爲.jpg格式的圖片,同時將其中的標籤數據提取出來。具體提取後的適配於Darknet訓練的格式如下:
這裏寫圖片描述
其中test存放測試圖片,train存放訓練圖片,labels存放類別種類。labels中的格式如下:

 0
 1
 2
 3
 4
 5
 6
 7
 8
 9

注意:train文件夾中的每張圖片的名字,需要包含label中的標籤,比如有張圖片屬於類別”0”,則這張圖片名字可以命名爲“0_XXXXX”,其中XXXXX 爲任意字符,但不能包含標籤中其他類別的字符,否則程序就會當作該圖片屬於多個類。
將lables.txt改爲lables.list,然後還需要train.list文件,這個文件裏列出了train文件夾裏所有的圖片,每一行爲一張圖片的絕對路徑。

/home/yrs/darknet/data/train/0_asdgaega.jpg
/home/yrs/darknet/data/train/1_asdgbyel.jpg

3、修改數據配置文件

進入darknet/cfg文件夾,修改imagenet1k.data文件,並保存爲mnist.data:

classes=10                              //類別數
train  = data/train.list                //訓練集列表路徑
valid  = data/valid.list                //驗證集列表路徑
backup = /home/yrs/backup/              //用來保存訓練結果的路徑
labels = data/labels.list               //標籤路徑
names  = data/shortnames.list           //訓練階段不使用
top=5                                   //top5準確率

4、修改網絡配置文件

還是上一步的文件夾,打開darknet19.cfg,這裏列出了主要需要修改的項,並保存爲mnist.cfg

[net]
batch=128
subdivisions=1
height=56
width=56
max_crop=512
channels=3
momentum=0.9
decay=0.0005

learning_rate=0.001
policy=poly
power=4
max_batches=10000

angle=7
hue = .1
saturation=.75
exposure=.75
aspect=.75

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky

......
......

[convolutional]
filters=10              //一定要修改,否則會出錯
size=1
stride=1
pad=1
activation=linear

[avgpool]

[softmax]
groups=1

[cost]
type=sse

5、訓練模型

進入darknet根目錄

./darknet classifier train cfg/mnist.data cfg/mnist.cfg

接下來就看到訓練過程啦~
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章