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  

 

 

 

 

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第1张图片

 

我们需要对Faster RCNN项目当中的setup.py进行一点点修改。G:\Tensorflow\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI\setup.py,原始的是下面这样的

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第2张图片

我们在程序的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代码情况如下:

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第3张图片

然后重新进行编译,

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

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第4张图片

编译成功之后在相应文件夹下,生成一个新的cython_bbox的文件(这里是针对Py36的版本)。我们将这个文件放入对应位置:

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第5张图片

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第6张图片

然后把 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\目录下 

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第7张图片

下载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为例,同时选中三个压缩包,右键,然后选择解压到当前文件夹

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第8张图片

可以得到VOCDevkit文件夹,将VOCDevkit重命名为VOCDevkit2007,然后将这个文件夹拷贝到你自己的Faster-RCNN中data目录下。

   

   win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第9张图片

 

 

我的放置后的目录结构见下文,供参考:

----\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 了。

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第10张图片

       训练得到的模型保存在根目录下的\default\voc_2007_trainval\default,中如下图所示。模型训练过程中每5000次迭代保存一次,一共迭代40000次(max_iters),可以加多一个0,改为400000。这些在config.py中可以自己设置。所以想要跑demo.py,先训练吧。

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第11张图片

 

然后就是开始训练数据了,运行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

然后将训练完的模型移到该文件夹如面。如下图所示:

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第12张图片

然后,打开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')

 

最后成功运行如下:

win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练_第13张图片

 

 

遇到的各种问题:

出现的错误这里基本都包括了,我就不自己写啦

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

    还有问题的,可以加群264191384 注明(faster-Rcnn)

    WIN10+cuda10+pytorch+py3.68环境下,warpctc 编译不成功的解决办法

你可能感兴趣的:(tensorflow,cuda9.2,深度学习)