smallcorgi/Faster-RCNN_TF訓練本身的數據

  熟悉了github項目提供的訓練測試後,能夠來訓練本身的數據了。本文只介紹改動最少的方法,只訓練2個類,html

即本身添加的類(如person)和 background,使用的數據格式爲pascal_voc。git


1.訓練數據的準備
  先來看看data下的目錄:github

  

  (1)Annotations 存放全部訓練數據的xml文件,是圖片的標註數據,緩存

能夠使用labelImg工具生成。github地址:https://github.com/tzutalin/labelImg.git
  (2)ImageSets 底下有個main文件夾,裏面放的是4個txt文件,ide

分別爲  test.txt,train.txt,trainval.txt,val.txt。工具

每一個文件存放的都是相應的圖片數據名稱,不含後綴。
trainval是train和val的合集,二者的比例能夠爲1:1。測試

生成txt文件的方法能夠參考本人的另外一篇blog:http://www.cnblogs.com/danpe/p/7859635.html
  (3)JPEGImages 是存放全部訓練圖片的目錄。spa

注:修改成訓練數據後,須要刪除data/cache 下的pkl文件,否則不會去獲取修改的數據,而是使用該緩存。
2.修改項目部分代碼文件
  因爲咱們只訓練了2個類,因此須要對代碼中有關類的數目的地方進行修改。
  (1)lib/datasets/pascal_voc.py .net

   class pascal_voc(imdb):
        def __init__(self, image_set, year, devkit_path=None):
            imdb.__init__(self, 'voc_' + year + '_' + image_set)
            self._year = year
            self._image_set = image_set
            self._devkit_path = self._get_default_path() if devkit_path is None \
                                else devkit_path
            self._data_path = os.path.join(self._devkit_path, 'VOC' + self._year)
# modified
# self._classes = ('__background__', # always index 0 # 'aeroplane', 'bicycle', 'bird', 'boat', # 'bottle', 'bus', 'car', 'cat', 'chair', # 'cow', 'diningtable', 'dog', 'horse', # 'motorbike', 'person', 'pottedplant', # 'sheep', 'sofa', 'train', 'tvmonitor')
self._classes = ('__background__', # always index 0 'person')

  (2)lib/datasets/pascal_voc2.py,與pascal_voc.py文件相似。
  (3)lib/networks/VGGnet_train.py code

    import tensorflow as tf
    from networks.network import Network
    
    
    #define
    
# modified #n_classes = 21 n_classes = 2 _feat_stride = [16,] anchor_scales = [8, 16, 32]

  (4)lib/networks/VGGnet_test.py,與VGGnet_train.py文件相似。
  (5)tools/demo.py 

 import os, sys, cv2
    import argparse
    from networks.factory import get_network
    
# modified
#CLASSES = ('__background__', # 'aeroplane', 'bicycle', 'bird', 'boat', # 'bottle', 'bus', 'car', 'cat', 'chair', # 'cow', 'diningtable', 'dog', 'horse', # 'motorbike', 'person', 'pottedplant', # 'sheep', 'sofa', 'train', 'tvmonitor') CLASSES = ('__background__', 'person')

  注:若是修改的.py文件有對應的.pyc文件,須要對pyc文件從新編譯,方法爲

  import py_compile

  py_compile.compile(dir/filename)

    3.執行訓練的腳本    ./experiments/scripts/faster_rcnn_end2end.sh $DEVICE $DEVICE_ID VGG16 pascal_voc

相關文章
相關標籤/搜索