使用darknet框架的imagenet數據分類預訓練操作
最近一段時間一直在研究yolo物體檢測,基于網絡上很少有yolo的分類預訓練和yolo9000的聯合數據的訓練方法,經過本人的真實實驗,對這兩個部分做一個整理(本篇介紹yolo的分類預訓練)
1、數據準備
1000類的Imagenet圖片數據
因為Imagenet不同的類別數據都是單獨放在一個文件夾中,并且有特定的命名,如‘n00020287',所以在做分類時我們不需要去制作特定的標簽,只要訓練的圖片的path中包含自身的類別標簽,而不含有其他類的標簽即可。
制作用于訓練的數據列表*classf_list.txt
2、分類標簽制作
制作所有類別的標簽列表new_label.txt和標簽對應的類別名稱的列表new_name.txt
new_label.txt
new_name.txt(訓練時不需要,但是測試時可以顯示出具體的類別)
3、修改cfg/.data配置文件(*classf.data)
classes=1000 train =/home/research/disk2/wangshun/yolo1700/darknet/coco/filelist/classf_list.txt labels=data/new_label.txt names=data/new_name.txt backup=backup top=5
修改網絡配置文件(classf.cfg)
[net] #Training batch=64 subdivisions=1 width=416 height=416 channels=3 momentum=0.9 decay=0.0005 angle=0 saturation = 1.5 exposure = 1.5 hue=.1 max_crop = 512 learning_rate=0.001 burn_in=1000 max_batches = 1000000000 policy=steps steps=350000,500000,750000,1200000 scales=.1,.1,.1,.1 [convolutional] batch_normalize=1 filters=16 size=3 stride=1 pad=1 activation=leaky [maxpool] size=2 stride=2 [convolutional] batch_normalize=1 filters=32 size=3 stride=1 pad=1 activation=leaky [maxpool] size=2 stride=2 [convolutional] batch_normalize=1 filters=64 size=3 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=32 size=1 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=64 size=3 stride=1 pad=1 activation=leaky [maxpool] size=2 stride=2 [convolutional] batch_normalize=1 filters=128 size=3 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=64 size=1 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=128 size=3 stride=1 pad=1 activation=leaky [maxpool] size=2 stride=2 [convolutional] batch_normalize=1 filters=64 size=3 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=128 size=1 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=256 size=3 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=128 size=1 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=256 size=3 stride=1 pad=1 activation=leaky [maxpool] size=2 stride=2 [convolutional] batch_normalize=1 filters=256 size=3 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=128 size=1 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=256 size=3 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=128 size=1 stride=1 pad=1 activation=leaky [convolutional] batch_normalize=1 filters=256 size=3 stride=1 pad=1 activation=leaky ####### [convolutional] batch_normalize=1 size=1 stride=1 pad=1 filters=128 activation=leaky [convolutional] batch_normalize=1 size=3 stride=1 pad=1 filters=256 activation=leaky [convolutional] batch_normalize=1 size=3 stride=1 pad=1 filters=256 activation=leaky [convolutional] filters=1000 size=1 stride=1 pad=1 activation=leaky [avgpool] [softmax] groups = 1 [cost] type=sse
當然中間的網絡層是我自己修改的網絡。
5. 訓練
./darknet classifier train cfg/classf.data cfg/classf.cfg -gpus 0,3(選擇自己機器的gpu)
6 . 測試
./darknet classifier predict cfg/classf.data cfg/classf.cfg backup/classf.weights data/eagle.jpg
當然這只是剛剛訓練了2000次測試的結果,只是測試,還需要繼續(xù)訓練。
以上這篇使用darknet框架的imagenet數據分類預訓練操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。