1. 程式人生 > >win10+python3.66+vs2017+cuda9.2下執行tensorflow版的faster-Rcnn編譯訓練

win10+python3.66+vs2017+cuda9.2下執行tensorflow版的faster-Rcnn編譯訓練

win10+python3.66+vs2017+cuda9.2下執行tensorflow版的faster-Rcnn

 

配置Faster-RCNN(網上找的的都是基於python3.5的,不支援py3.6,本文主要嘗試用py3.6配置)

python3.5版本  https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5

 

由於上述版本中的python都是基於linux環境編寫的,windows執行需要進行改動。

 

基礎環境配置:

安裝TensorFlow的GPU版本,

具體安裝步驟可以參照這裡
安裝一些必要的庫:cython,easydict,python-opencv,庫的安裝可以直接用pip 命令,當然這裡的安裝位置要在你自己建的的TensorFlow-gpu環境中。
在命令列中 cd 一下進入原始碼中所給的 /data/coco/PythonAPI資料夾下,執行編譯提供的 setup.py
強調一下,最好按照原始碼給的參考裝python 3.5。偷懶不想換原來裝的其他版本會出會問題的,我就是,結果被一個bug坑了好久,我的基礎環境已經裝好,就不重複了。需要什麼模組大家直接安裝。

我的執行環境:tensorflow-gpu 1.10
win10 64bit
i7-8700k+32G+gtx1070
CUDA:9.2
IDE:VS2017

 

This is the branch to compile Faster R-CNN on Windows. It is heavily inspired by the great work done here and here. I have not implemented anything new but I fixed the implementations for Windows and Python 3.5.

python3.5是必須的。我安裝了python3.66,but各種不行。如果你安裝python3.5,估計都沒什麼問題了,如果你不想折騰,你就安裝一個python3.5,如果想和我一樣折騰一下,就繼續往下看。

先執行一下demo.py  

 

 

 

 

 

我們需要對Faster RCNN專案當中的setup.py進行一點點修改。G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI\setup.py,原始的是下面這樣的

我們在程式的16行加上

,
    Extension( 'lib.utils.cython_bbox',
               sources=['../../../lib/utils/bbox.c','../../../lib/utils/bbox.pyx'],
               include_dirs = [np.get_include(), '/lib/utils'], 
               extra_compile_args=[], )


加完這些程式碼之後的Setup.py程式碼情況如下:

然後重新進行編譯,

C:\Users\WWWW>g:

G:\>cd G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI

G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI>python setup.py build_ext --inplace

G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI>python setup.py build_ext install

編譯成功之後在相應資料夾下,生成一個新的cython_bbox的檔案(這裡是針對Py36的版本)。我們將這個檔案放入對應位置:

然後把 G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI\build\lib.win-amd64-3.6\lib\utils\cython_bbox.cp36-win_amd64.pyd這個檔案複製到 G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\lib\utils\目錄下 

下載PyCoco database 

可以在這裡下載:http://host.robots.ox.ac.uk:8080/pascal/VOC/voc2007/#devkit
 

http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

將下載後的三個壓縮包解壓到同一個資料夾下,以WinRAR為例,同時選中三個壓縮包,右鍵,然後選擇解壓到當前資料夾

可以得到VOCDevkit資料夾,將VOCDevkit重新命名為VOCDevkit2007,然後將這個資料夾拷貝到你自己的Faster-RCNN中data目錄下。

   

   

 

 

我的放置後的目錄結構見下文,供參考:

----\data\VOCDevkit2007\create_segmentations_from_detections.m
----\data\VOCDevkit2007\devkit_doc.pdf
----\data\VOCDevkit2007\example_classifier.m
----\data\VOCDevkit2007\example_detector.m
----\data\VOCDevkit2007\example_layout.m
----\data\VOCDevkit2007\example_segmenter.m
----\data\VOCDevkit2007\local
----\data\VOCDevkit2007\results
----\data\VOCDevkit2007\viewanno.m
----\data\VOCDevkit2007\viewdet.m
----\data\VOCDevkit2007\VOC2007
----\data\VOCDevkit2007\VOCcode
----\data\VOCDevkit2007\local\VOC2006
----\data\VOCDevkit2007\local\VOC2007
----\data\VOCDevkit2007\local\VOC2006\dummy
----\data\VOCDevkit2007\local\VOC2007\dummy
----\data\VOCDevkit2007\results\VOC2006
----\data\VOCDevkit2007\results\VOC2007
----\data\VOCDevkit2007\results\VOC2006\Main
----\data\VOCDevkit2007\results\VOC2006\Main\dummy
----\data\VOCDevkit2007\results\VOC2007\Layout
----\data\VOCDevkit2007\results\VOC2007\Main
----\data\VOCDevkit2007\results\VOC2007\Segmentation
----\data\VOCDevkit2007\results\VOC2007\Layout\dummy
----\data\VOCDevkit2007\results\VOC2007\Main\dummy
----\data\VOCDevkit2007\results\VOC2007\Segmentation\dummy
----\data\VOCDevkit2007\VOC2007\Annotations
----\data\VOCDevkit2007\VOC2007\ImageSets
----\data\VOCDevkit2007\VOC2007\JPEGImages
----\data\VOCDevkit2007\VOC2007\SegmentationClass
----\data\VOCDevkit2007\VOC2007\SegmentationObject
----\data\VOCDevkit2007\VOC2007\Annotations\000001.xml
----\data\VOCDevkit2007\VOC2007\Annotations\000002.xml
----\data\VOCDevkit2007\VOC2007\Annotations\000003.xml
----\data\VOCDevkit2007\VOC2007\Annotations\000004.xml
----\data\VOCDevkit2007\VOC2007\Annotations\000005.xml
...
----\data\VOCDevkit2007\VOC2007\Annotations\009962.xml
----\data\VOCDevkit2007\VOC2007\Annotations\009963.xml
----\data\VOCDevkit2007\VOC2007\ImageSets\Layout
----\data\VOCDevkit2007\VOC2007\ImageSets\Main
----\data\VOCDevkit2007\VOC2007\ImageSets\Segmentation
----\data\VOCDevkit2007\VOC2007\ImageSets\Layout\test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Layout\train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Layout\trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Layout\val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\aeroplane_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\aeroplane_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\aeroplane_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\aeroplane_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bicycle_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bicycle_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bicycle_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bicycle_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bird_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bird_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bird_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bird_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\boat_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\boat_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\boat_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\boat_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bottle_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bottle_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bottle_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bottle_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bus_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bus_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bus_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\bus_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\car_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\car_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\car_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\car_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cat_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cat_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cat_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cat_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\chair_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\chair_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\chair_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\chair_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cow_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cow_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cow_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\cow_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\diningtable_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\diningtable_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\diningtable_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\diningtable_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\dog_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\dog_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\dog_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\dog_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\horse_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\horse_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\horse_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\horse_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\motorbike_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\motorbike_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\motorbike_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\motorbike_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\person_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\person_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\person_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\person_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\pottedplant_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\pottedplant_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\pottedplant_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\pottedplant_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sheep_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sheep_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sheep_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sheep_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sofa_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sofa_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sofa_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\sofa_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\train_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\train_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\train_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\train_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\tvmonitor_test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\tvmonitor_train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\tvmonitor_trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\tvmonitor_val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Main\val.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Segmentation\test.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Segmentation\train.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Segmentation\trainval.txt
----\data\VOCDevkit2007\VOC2007\ImageSets\Segmentation\val.txt
----\data\VOCDevkit2007\VOC2007\JPEGImages\000001.jpg
----\data\VOCDevkit2007\VOC2007\JPEGImages\000002.jpg
----\data\VOCDevkit2007\VOC2007\JPEGImages\000003.jpg
----\data\VOCDevkit2007\VOC2007\JPEGImages\000004.jpg
...
----\data\VOCDevkit2007\VOC2007\JPEGImages\009962.jpg
----\data\VOCDevkit2007\VOC2007\JPEGImages\009963.jpg
----\data\VOCDevkit2007\VOC2007\SegmentationClass\000032.png
----\data\VOCDevkit2007\VOC2007\SegmentationClass\000033.png
----\data\VOCDevkit2007\VOC2007\SegmentationClass\000039.png
...
----\data\VOCDevkit2007\VOC2007\SegmentationClass\009947.png
----\data\VOCDevkit2007\VOC2007\SegmentationClass\009950.png
----\data\VOCDevkit2007\VOC2007\SegmentationObject\000032.png
----\data\VOCDevkit2007\VOC2007\SegmentationObject\000033.png
----\data\VOCDevkit2007\VOC2007\SegmentationObject\000039.png
...
----\data\VOCDevkit2007\VOC2007\SegmentationObject\009947.png
----\data\VOCDevkit2007\VOC2007\SegmentationObject\009950.png
----\data\VOCDevkit2007\VOCcode\PASemptyobject.m
----\data\VOCDevkit2007\VOCcode\PASemptyrecord.m
----\data\VOCDevkit2007\VOCcode\PASerrmsg.m
----\data\VOCDevkit2007\VOCcode\PASreadrecord.m
----\data\VOCDevkit2007\VOCcode\PASreadrectxt.m
----\data\VOCDevkit2007\VOCcode\VOCevalcls.m
----\data\VOCDevkit2007\VOCcode\VOCevaldet.m
----\data\VOCDevkit2007\VOCcode\VOCevallayout.m
----\data\VOCDevkit2007\VOCcode\VOCevalseg.m
----\data\VOCDevkit2007\VOCcode\VOCinit.m
----\data\VOCDevkit2007\VOCcode\VOClabelcolormap.m
----\data\VOCDevkit2007\VOCcode\VOCreadrecxml.m
----\data\VOCDevkit2007\VOCcode\VOCreadxml.m
----\data\VOCDevkit2007\VOCcode\VOCwritexml.m
----\data\VOCDevkit2007\VOCcode\VOCxml2struct.m
 

VGG16模型預訓練權重下載地址:http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz

  可以使用這個百度雲連結進行下載,

模型下載後解壓,放在上面的路徑下,沒有就建立一個資料夾。 "data\imagenet_weights\vgg16.ckpt"

注意:下載後的VGG16模型的名字是vgg_16.ckpt,將其改為vgg16.ckpt,不然後面會報錯。

 

 

接下來就是跑 train.py 了。

       訓練得到的模型儲存在根目錄下的\default\voc_2007_trainval\default,中如下圖所示。模型訓練過程中每5000次迭代儲存一次,一共迭代40000次(max_iters),可以加多一個0,改為400000。這些在config.py中可以自己設定。所以想要跑demo.py,先訓練吧。

 

然後就是開始訓練資料了,執行train.py.

 

訓練完成後,程式預設的模型儲存的路徑在下面這個位置。

Faster-RCNN-TensorFlow-Python3.5-master\default\voc_2007_trainval\default

下面就到了檢驗模型的時刻了,執行demo.py,不過在此之前需要將demo.py的第108行原來預設的res101,改成我們現在用的vgg16。就是下面這個位置。

如果改完上面直接執行demo.py還可能出現下面的問題,

OSError: output\vgg16\voc_2007_trainval+voc_2012_trainval\default\vgg16_faster_rcnn_iter_70000.ckpt.meta not found.

這個問題解決要兩步走,第一步是先修改一下訓練權重的的儲存位置,先新建一個名為output的資料夾,具體的檔名就按它報錯的位置跟著新建就行如下圖。

第二步就是後面那個迭代70000次的那個問題了,因為預設的最多迭代次數是40000次,所以不加修改前儲存的模型應該是最多儲存到40000次對應的模型的,需要將demo.py檔案中的第39行對應的迭代次數名給改一下,當然如果你之前訓練的模型裡面包含70000次這個,這步就是不必要的了。

 

然後就開始執行demo.py檔案了,

run python demo.py

首先在demo.py同級目錄下,建立一個這樣的目錄檔案:G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\output\vgg16\voc_2007_trainval+voc_2012_trainval\default

然後將訓練完的模型移到該資料夾如面。如下圖所示:

然後,開啟demo.py,   將42行修改成如下:

修改前:
NETS = {'vgg16': ('vgg16_faster_rcnn_iter_10000.ckpt',), 'res101': ('res101_faster_rcnn_iter_110000.ckpt',)}
 
修改後:
NETS = {'vgg16': ('vgg16_faster_rcnn_iter_10000.ckpt',)}

 

將108行修改成如下:

修改前:parser.add_argument('--net', dest='demo_net', help='Network to use [vgg16 res101]',
                        choices=NETS.keys(), default='res101')
 
 
 
 
修改後:
parser.add_argument('--net', dest='demo_net', help='Network to use [vgg16 res101]',
                        choices=NETS.keys(), default='vgg16')

 

最後成功執行如下:

 

 

遇到的各種問題:

出現的錯誤這裡基本都包括了,我就不自己寫啦

http://blog.csdn.net/JiaJunLee/article/details/50373815

py_faster_rcnn識別出來的結果好多紅框重疊  

py_faster_rcnn識別出來的結果好多紅框重疊, 可以通過調節demo.py中的NMS_THRESH的值進行限制。

NMS_THRESH表示非極大值抑制,這個值越小表示要求的紅框重疊度越小,0.0表示不允許重疊。有時候0.3會有好多重疊

92行  NMS_THRESH = 0.1  

訓練自己的資料集

 如何使用faster rcnn訓練自己的模型,然後識別圖片,可以參考下一篇部落格:

Windows下使用Faster RCNN訓練自己的模型

參考 https://blog.csdn.net/samylee/article/details/51201744

https://blog.csdn.net/char_QwQ/article/details/80980505

https://blog.csdn.net/Best_Coder/article/details/76577544

 

 自己資料集的製作

  • xml檔案的製作需要labelImg軟體的幫助,這裡提供在window下的exe包,開啟即可使用

    wget https://github.com/pprp/DL/blob/master/LabelIMG.zip
    • 使用方法:
    Ctrl + u  載入目錄中的所有影象,滑鼠點選Open dir同功能
    Ctrl + r  更改預設註釋目標目錄(xml檔案儲存的地址) 
    Ctrl + s  儲存
    Ctrl + d  複製當前標籤和矩形框
    space     將當前影象標記為已驗證
    w         建立一個矩形框
    d         下一張圖片
    a         上一張圖片
    del       刪除選定的矩形框
    Ctrl++    放大
    Ctrl--    縮小
    ↑→↓←        鍵盤箭頭移動選定的矩形框
  • 資料的放置結構(自己手動建立)

-data
    - VOCdevkit2007
        - VOC2007
            - Annotations (標籤XML檔案,用對應的圖片處理工具人工生成的)
            - ImageSets (生成的方法是用sh或者MATLAB語言生成)
                - Main
                    - test.txt
                    - trian.txt
                    - trainval.txt
                    - val.txt
            - JPEGImages(原始檔案)
  • Main中的四個txt檔案的製作

    詳見附件二,注意要修改路徑位置,最好是絕對路徑

xmlfilepath = 'Annotations'  
txtsavepath = 'ImageSets\Main'  

替換成自己的資料

參考 https://www.cnblogs.com/pprp/p/9465065.html

將製作好的資料按照以上的目錄結構進行放置

用你的Annotations,ImagesSets和JPEGImages替換…\Faster-RCNN-TensorFlow-Python3.5\data\VOCdevkit2007\VOC2007中對應資料夾

 

###  將原始程式碼修改為適配你自己的程式碼

    1. Pascal_VOC.py,修改自己的標註的類別

      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__',
      '你的標籤1','你的標籤2',你的標籤3','你的標籤4')
    1. demo.py, 修改為自己的標註類別

      CLASSES = ('__background__',
                  'aeroplane', 'bicycle', 'bird', 'boat',
                  'bottle', 'bus', 'car', 'cat', 'chair',
                  'cow', 'diningtable', 'dog', 'horse',
                  'motorbike', 'person', 'pottedplant',
                  'sheep', 'sofa', 'train', 'tvmonitor')

      更改為:

      CLASSES = ('__background__',
                 '你的標籤1','你的標籤2',你的標籤3','你的標籤4')
    1. demo.py 更改另外一處程式碼:

      net.create_architecture(sess, "TEST", 21,tag='default', anchor_scales=[8, 16, 32])

      更改為:

      net.create_architecture(sess, "TEST", 5,tag='default', anchor_scales=[8, 16, 32])

      原本的程式碼是有20類物體+背景,所以是21。 把類別數改為,你的類別+背景。如果是隻檢測一類物體,那就改為2

  • Faster R-CNN:tf-faster-rcnn程式碼結構

  • 
    
    
    Section 1: ./tf-faster-rcnn目錄:
    
    ├── data     //資料目錄主要儲存一些資料集比如VOC2007、coco等
    │   ├── cache   //儲存一些資料集的訓練集和測試集的proposals,比如voc_2007_test_gt_roidb.pkl,格式[{ },{ },...,{ }]。程式首先從這讀取,如果檔案存在
                          //否則讀取.xml檔案得到proposal,同時在該目錄下生成對應的.pkl檔案  Note:訓練集合和測試集變化了,一定的先delete該目錄下的對應的.pkl檔案
    │   ├── cache.tgz  
    │   ├── coco        //Python COCO API. The code requires the API to access COCO dataset.      
    │   ├── demo        //儲存幾張圖片(.jpg檔案),用於演示demo
    │   ├── imagenet_weights  //儲存在ImageNet資料集訓練好的分類模型(比如vgg16,res101),vgg16.ckpt和res101.ckpt
    │   ├── readme.txt
    │   ├── res101_voc_0712_80k-110k.tgz    //原檔名為voc_0712_80k-110k.tgz  faster-rcnn(res101)的模型壓縮檔案
    │   ├── res101_voc_2007_trainval+voc_2012_trainval //由原名為voc_0712_80k-110k.tgz解壓出來的,faster-rcnn(res101)的模型
    │   ├── scripts                 //包含fetch_faster_rcnn_models.sh,該指令碼可用來下載訓練好的faster-rcnn模型
    │   ├── vgg16_voc_0712_80k-110k.tgz     //原檔名為voc_0712_80k-110k.tgz  faster-rcnn(vgg16)的模型壓縮檔案             
    │   ├── vgg16_voc_2007_trainval+voc_2012_trainval  //由原名為voc_0712_80k-110k.tgz解壓出來的,faster-rcnn(vgg16)的模型
    │   ├── VOCdevkit       //PASCAL VOC 2007資料集開發工具箱
    │   ├── VOCdevkit2007 -> VOCdevkit   //軟連線
    │   └── wget-log      //下載模型的日誌檔案
    ├── lib    //
    │   ├── datasets   //基類imdb  針對具體資料集的派生類如pascal_voc  coco 
    │   ├── layer_utils  //與anchor proposal相關
    │   ├── Makefile
    │   ├── model   //config配置檔案   nms bbox test train_val等
    │   ├── nets    //基類Network,針對具體網路的派生類(如mobilenet_v1,resnet_v1,vgg16)
    │   ├── nms     //c和cuda的加速程式碼,生成共享庫(.so)
    │   ├── roi_data_layer  //RoI層
    │   ├── setup.py  //用於構建Cython模組
    │   └── utils  //一些輔助工具,計時、視覺化 
    ├── LICENSE
    ├── output  //儲存訓練模型和測試結果 具體見section 2.
    │   ├── res101
    │   └── vgg16
    ├── README.md
    ├── run_demover1.sh   //演示demo
    ├── run_test.sh       //測試
    ├── run_train.sh      //訓練+測試
    ├── tensorboard       //視覺化tensorboard
    │   ├── res101
    │   └── vgg16
    └── tools
        ├── convert_from_depre.py
        ├── demo.py      
        ├── demover1.py      //demo
        ├── _init_paths.py
        ├── _init_paths.pyc
        ├── __pycache__
        ├── reval.py     
        ├── test_net.py      //測試
        └── trainval_net.py  //訓練
    
     
    Section 2: /tf-faster-rcnn/output目錄
    
    ├── res101   //在faster-rcnn(res101)
    │   ├── voc_2007_test    //測試結果,按類別儲存的.pkl檔案
    │   │   └── default
    │   ├── voc_2007_trainval   //訓練的模型儲存在該資料夾下
    │   │   └── default
    │   └── voc_2007_trainval+voc_2012_trainval  //在voc_07+voc_12上訓練好的faster-rcnn(res101)模型 從/data目錄下軟連結過來的
    └── vgg16
        ├── voc_2007_test     //測試結果,按類別儲存的.pkl檔案
        │   └── default
        ├── voc_2007_trainval  //訓練的模型儲存在該資料夾下
        │   └── default
        └── voc_2007_trainval+voc_2012_trainval
            └── default -> ../../../data/vgg16_voc_2007_trainval+voc_2012_trainval/   //軟連結過來的faster-r