YOLO(Darknet公式)トレーニング分類器

4511 ワード

目次
  • 1. 分類データ準備
  • 2. Darknet構成
  • 3. Darknetコマンド使用
  • 4. cifar-10使用例
  • 1.分類データ準備


    必要なファイルのリスト:
    1. train.list :  
    2. test.list :  
    3. labels.txt :  , 
    4. voc.data : darknet , 
    5. cifar.cfg :  
    

    次のディレクトリ構造で構成されます.
    VOCdevkit
    	VOC2017
    		JPEGImages
    			train
    			test
    

    トレーニングとテストの割合を設定します.
  • データセットが比較的小さい(10000程度)場合、設定された割合は、トレーニング:テスト=80%:20%
  • である.
  • データセットが比較的大きい(100000程度)場合、設定された割合は、トレーニング:テスト=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構成

  • darknet
  • をダウンロード
    git clone https://github.com/pjreddie/darknet.git
    cd darknet
    make -j4
    

    GPUがあるcuda 8がインストールされている場合.0とcudnn 6.0、Makefileで修正して、対応するCUDA=0をCUDA=1に変更してください.
  • 第1ステップで構築するファイルを対応する位置
  • に配置する.
    darknet
    	cfg -- AlexNet.cfg
    	data -- voc.data, labels.txt, train.list, test.list
    

    そのうちvoc.dataの内容は対応するファイルに直接指します.

    3.Darknetコマンド使用

  • trainコマンド./darknet classifier train data/voc.data cfg/AlexNet.cfg
  • validコマンド./darknet classifier valid data/voc.data cfg/AlexNet.cfg backup AlexNet.backup
  • predictコマンド./darknet classifier predict data/voc.data cfg/AlexNet.cfg backup AlexNet.backup ./cat.png
  • 端末訓練後再訓練./darknet classifier train data/voc.data cfg/AlexNet.cfg backup/AlexNet.backup
  • 訓練用GPU -gpus 0,1
  • を設置する

    4.cifar-10使用例

  • データ取得
    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 ../..
    
  • configファイル
    classes=10
    train  = data/cifar/train.list
    valid  = data/cifar/test.list
    labels = data/cifar/labels.txt
    backup = backup/
    top=2
    
  • を選択
  • ネットワークプロファイル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]
    
  • 訓練:./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