YOLO(Darknet官方)訓練分類器


1. 分類數據准備

需要的文件列表:

1. train.list : 訓練的圖片的絕對路徑
2. test.list : 用於測試的圖片的絕對路徑
3. labels.txt : 所有的類別,一行一個類
4. voc.data : darknet配置文件,記錄相關位置信息
5. cifar.cfg : 網絡配置文件

按照以下目錄結構進行構造:

VOCdevkit
	VOC2017
		JPEGImages
			train
			test

其中訓練和測試的比例設置:

  1. 如果數據集比較小(10,000左右),那么設置的比例為:訓練:測試 = 80% : 20%
  2. 如果數據集比較大(100,000左右),那么設置的比例為:訓練:測試 = 99% :1%

然后轉到JPEGImages目錄下進行以下操作:

find `pwd`/train -name \*.jpg > train.list
find `pwd`/test -name \*.jpg > test.list

構造labels.txt文件內容

airplane
automobile
bird
cat
deer
dog
frog
horse
ship
truck

構造voc.data文件中內容:

classes=10 #設置的類別個數
train  = data/cifar/train.list #上邊構造的訓練列表
valid  = data/cifar/test.list # 上邊構造的測試列表
labels = data/cifar/labels.txt # 記錄類別
backup = backup/ #訓練的網絡文件的位置
top=2 # 計算top-n的准確率

網絡配置文件的選擇:

網絡配置文件以及預訓練模型

以AlexNet為例:

[net]
# Training
# batch=128
# subdivisions=1
# Testing
batch=1
subdivisions=1
height=227
width=227
channels=3
momentum=0.9
decay=0.0005
max_crop=256

learning_rate=0.01
policy=poly
power=4
max_batches=800000

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

[convolutional]
filters=96
size=11
stride=4
pad=0
activation=relu

[maxpool]
size=3
stride=2
padding=0

[convolutional]
filters=256
size=5
stride=1
pad=1
activation=relu

[maxpool]
size=3
stride=2
padding=0

[convolutional]
filters=384
size=3
stride=1
pad=1
activation=relu

[convolutional]
filters=384
size=3
stride=1
pad=1
activation=relu

[convolutional]
filters=256
size=3
stride=1
pad=1
activation=relu

[maxpool]
size=3
stride=2
padding=0

[connected]
output=4096
activation=relu

[dropout]
probability=.5

[connected]
output=4096
activation=relu

[dropout]
probability=.5

[connected]
output=1000
activation=linear

[softmax]
groups=1

2. Darknet配置

  1. 下載darknet
git clone https://github.com/pjreddie/darknet.git
cd darknet
make -j4

如果有GPU並且安裝了cuda8.0和cudnn6.0,請在Makefile中進行修改,將對應的CUDA=0改為CUDA=1.

  1. 將在第一步構造的文件放到對應位置
darknet
	cfg -- AlexNet.cfg
	data -- voc.data, labels.txt, train.list, test.list

其中voc.data中的內容直接指到對應的文件上。

3. Darknet命令使用

  1. train命令

    ./darknet classifier train data/voc.data cfg/AlexNet.cfg

  2. valid命令

    ./darknet classifier valid data/voc.data cfg/AlexNet.cfg backup AlexNet.backup

  3. predict命令

    ./darknet classifier predict data/voc.data cfg/AlexNet.cfg backup AlexNet.backup ./cat.png

  4. 終端訓練后重新訓練

    ./darknet classifier train data/voc.data cfg/AlexNet.cfg backup/AlexNet.backup

  5. 設置訓練使用的GPU

    -gpus 0,1

4. cifar-10 使用示例

  1. 數據獲取

    cd data
    wget https://pjreddie.com/media/files/cifar.tgz
    tar xzf cifar.tgz
    
    cd cifar
    find `pwd`/train -name \*.png > train.list
    find `pwd`/test -name \*.png > test.list
    cd ../..
    
  2. 選擇config文件

    classes=10
    train  = data/cifar/train.list
    valid  = data/cifar/test.list
    labels = data/cifar/labels.txt
    backup = backup/
    top=2
    
  3. 創建網絡配置文件

    cifar_small.cfg(官方提供)

    [net]
    batch=128
    subdivisions=1
    height=28
    width=28
    channels=3
    max_crop=32
    min_crop=32
    
    hue=.1
    saturation=.75
    exposure=.75
    
    learning_rate=0.1
    policy=poly
    power=4
    max_batches = 5000
    momentum=0.9
    decay=0.0005
    
    [convolutional]
    batch_normalize=1
    filters=32
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [maxpool]
    size=2
    stride=2
    
    [convolutional]
    batch_normalize=1
    filters=16
    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=32
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [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]
    filters=10
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [avgpool]
    
    [softmax]
    
  4. 訓練

    訓練:./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg

    valid: ./darknet classifier valid cfg/cifar.data cfg/cifar_small.cfg backup/cifar_small.backup


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM