首先,感谢博客上各路大佬的无私奉献!但是也不得不吐槽下,大佬些写博客的时候能尽量写的对小白友好一点吗?期间遇到各种坑,说多了都是泪啊!话不多说,上正题!
环境:win10+anaconda3+tensorflow1.2.1+python3.6,CPU版本。
源码地址:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5
一 下载源码以及源码环境准备
- 肯定是下载源码,配置好相应的环境!anaconda prompt下激活tensorflow环境,包括但不限于安装python包(cython,python-opencv,easydict),反正就是提示缺少什么,就install什么就对了!
- GitHub上源码提示有“Checkout this branch”这一步,但我没懂什么意思!没照做,但是也训练成功了,有懂得老哥帮忙解释一下!
- setup.py文件修改
在第16行加入以下代码,(别问我为什么,我只是代码的搬运工)
Extension('lib.utils.cython_bbox', sources=['E:/python/tensorflow/Faster-RCNN-TensorFlow-Python3.5-master/lib/utils/bbox.c','E:/python/tensorflow/Faster-RCNN-TensorFlow-Python3.5-master/lib/utils/bbox.pyx'],include_dirs = [np.get_include(), 'E:/python/tensorflow/Faster-RCNN-TensorFlow-Python3.5-master/lib/utils'],extra_compile_args=[])
- 承接步骤1,进入到源码的路径下(cd 自己的路径\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI);分别执行下列命令:
python setup.py build_ext --inplace
python setup.py build_ext install
提示:安装VS2015的库,否则会报错 “error: Unable to find vcvarsall.bat”
- 用VS2015编译python3.6代码:这一步对于不是python3.5的小伙伴很关键,因为源码是基于python3.5编译,而在python3.6下运行就会报错,所以必须在python3.6环境下重新编译。编译步骤如下:
1)打开VS2015 X64 本机工具命令提示符;
2)同样激活tensorflow环境(activate tensorflow),进入到源码的路径下(cd 自己的路径\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI),运行:
python setup.py build_ext --inplace;
会在 “***\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI\lib\utils”目录下生成cython_bbox.cp36-win_amd64.pyd文件,将该文件复制到“***\Faster-RCNN-TensorFlow-Python3.5-master\lib\utils”下。
5. 这里下载模型VGG16 ,放入“***\Faster-RCNN-TensorFlow-Python3.5-master\data \ imagenet_weights \ vgg16.ckpt”,记得把文件名从“VGG_16”更改为“VGG16”,这儿坑了我不少时间。再次感谢博主---douminan
二 准备训练集
1.labelimg标注数据
labelimg的使用:https://cloud.tencent.com/developer/news/325876
注意:注意标注的时候一定不要用大写,不要有空格,建议全部用小写字母和数字,感谢博主--beyond_xnsx
2.将自己的数据制作成VOC2007的格式
批量命名文件:https://blog.csdn.net/u011574296/article/details/72956446
制作训练集:https://blog.csdn.net/gaohuazhao/article/details/60871886
注意:VOC2007的格式生成如下图所示:
三 源码修改
Faster-RCNN-TensorFlow-Python3.5-master\lib\datasets\pascal_voc.py文件中,将以下代码中的类别替换为自己数据集的类别,如下图所示。至于某些博客说不能删除类别总数,但是经实际测试,删除了也不影响。
self._classes = ('__background__', # always index 0'bird','flower', 'horse')
注意:不要更改'__background__',这个是本身自有的,即你有N类检测目标,实际是N+1,多出来的1类就是背景,所以不能删除'__background__'。
Faster-RCNN-TensorFlow-Python3.5-master\lib\config\config.py中修改训练参数,根据自己情况更改哈,博主也是小白,无法作任何指导。
四 训练
哈哈,终于到激动人心的一刻,成功还是继续躺坑里就看这一步了!
继续在anaconda prompt里,激活tensorflow环境,进入到Faster-RCNN-TensorFlow-Python3.5-master根目录下(跟上述一样,用“cd”命令进入哈,根目录就是能看到一个train.py的文件),执行
python train.py
一般不报错进入到训练环节就是对的哈,训练如下所示。
五 后续测试
由于没有训练结束,所以等待后续更新。。。
由于工作方面不再接触这类事件,所以没有后续了。。。抱歉!
主要引用下列博客,再次感谢博客大佬们的无私奉献。
https://blog.csdn.net/beyond_xnsx/article/details/79771690
https://blog.csdn.net/weixin_38124357/article/details/80816288
https://blog.csdn.net/douminan/article/details/82223619
https://blog.csdn.net/gaohuazhao/article/details/60871886
https://blog.csdn.net/u011574296/article/details/72956446