1. 程式人生 > 程式設計 >使用darknet框架的imagenet資料分類預訓練操作

使用darknet框架的imagenet資料分類預訓練操作

最近一段時間一直在研究yolo物體檢測,基於網路上很少有yolo的分類預訓練和yolo9000的聯合資料的訓練方法,經過本人的真實實驗,對這兩個部分做一個整理(本篇介紹yolo的分類預訓練)

1、資料準備

1000類的Imagenet圖片資料

因為Imagenet不同的類別資料都是單獨放在一個資料夾中,並且有特定的命名,如‘n00020287',所以在做分類時我們不需要去製作特定的標籤,只要訓練的圖片的path中包含自身的類別標籤,而不含有其他類的標籤即可。

製作用於訓練的資料列表*classf_list.txt

使用darknet框架的imagenet資料分類預訓練操作

2、分類標籤製作

製作所有類別的標籤列表new_label.txt和標籤對應的類別名稱的列表new_name.txt

new_label.txt

使用darknet框架的imagenet資料分類預訓練操作

new_name.txt(訓練時不需要,但是測試時可以顯示出具體的類別)

使用darknet框架的imagenet資料分類預訓練操作

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
[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)

使用darknet框架的imagenet資料分類預訓練操作

6 . 測試

./darknet classifier predict cfg/classf.data cfg/classf.cfg backup/classf.weights data/eagle.jpg

使用darknet框架的imagenet資料分類預訓練操作

當然這只是剛剛訓練了2000次測試的結果,只是測試,還需要繼續訓練。

以上這篇使用darknet框架的imagenet資料分類預訓練操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。