faster rcnn训练自己的数据集demo和训练过程error总结
来源:互联网 发布:零壹乐队 知乎 编辑:程序博客网 时间:2024/05/21 15:41
电脑环境:ubuntu16.04+cuda7.5+960(2G)和ubuntu 16.04+cuda8.0+titan x(12G)
demo过程
1. 拉取源码
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
2. 安装依赖项
sudo apt-get install python-opencvsudo pip install cython easydict
3.复制作者的Mkefile.config.example文件,并重命名为Makefile.config.
cp Makefile.config.example Makefile.config
分别取消USE_CUDNN=1, WITH_PYTHON_LAYER = 1, USE_PKG_CONFIG = 1 的注释;
修改 include_dirs 和 libarry_dirs 的那两行 为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial \ /usr/local/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/x86_64-linux-gnu/hdf5/serial \ /usr/local/lib /usr/lib
4.编译cython模块
编译cython模块
cd ~/py-faster-rcnn/lib/make
5.编译pycaffe
首先需要按照如下进行修改
①将/home/xxx/py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/cudnn.hpp 换成
/home 的caffe里的相应目录下的cudnn.hpp;
②将/home/xxx/py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers/下所有cudnn开头的文件
都替换为/home 的
caffe里相应目录下的同名文件;
③将/home/xxx/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layer下所有cudnn开头的文件
都替换为/home 的
caffe里相应目录下的同名文件;
如果如图报错
打开makefile 文件
gedit Makefile
修改这一行
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)为
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
6.下载模型
cd ~/py-faster-rcnn/./data/scripts/fetch_faster_rcnn_models.sh
7.模型demo
./tools/demo.py --net zf如果这条脚本语句报错,bash:没有足够的权限,那就需要修改py-faster-rcnn文件夹的权限.
chmod -R 777 py-faster-rcnn
以上过程主要参照博客进行的.
数据集制作过程
用自己的数据训练faster rcnn.首先要做数据集,看这篇博客,
博客最后一部分imagesets中main的几个txt我不是很清楚,
我翻了一下VOC2007中main文件夹下的txt发现每个类别都有相应的4个txt,而且后面有1,和-1。
我当时做的是车辆检测,每张图片都有车,
我直接复制了生成的txt,重命名了一下,用sed命令给每一行末尾加上了1。
在此介绍一下sed,tr相关命令。非常实用。
sed用法见这篇博客。在制作数据集画完框后批量修改生成的txt文件内容,可以参考这篇博客
合并txt命令:
cat a.txt b.txt > c.txt
8 制作好数据集后,开始训练faster rcnn.修改文件参数见这篇博客.说的很详细,对着做就可以了。
遇到的error
1. ATTributeError:'module'object has no attribute 'text format'
解决方法:在lib/fast_rcnn/train.py中添加:
Import google protobuf.text_format
2. assert (box[:,2]>=box[:,0].all() assertionerror
使用这篇博客前两种方法结合,我不报错了,少了一个都报错。
3.运行完了rpn第一阶段,显示错误
check failed: error == cudasuccess(2 vs.0) out of memory
原因显存不够。方法:调小batch_size.
文件位置:py/lib/fast-rcnn/config.py.我当时直接调到2,显存(2G)还是不够。同文件 config.py修改train.size=600这句。size我设为450,下面一行设为700.ok 可以跑了。这个地方是在改动图片的尺寸。
心得体会
1.首先设置 max iters的时候把第一阶段迭代次数设为200,看第二阶段能不能跑,会不会爆显存,爆了在修改,等的时间也不长,不要一来就弄几万次迭代,如果你笔记本显存大就无所谓了,我后来用的titan x显存12G,灰常爽啊。
2.如果为了方便的话,小显存就训练zf,大显存就直接上vgg16.中间的网络训练出来,demo自己的图片demo.py需要修改的更多。
3.demo的图片结果标签可以不按照自己的数据集命名,例如我做的车辆检测,制作数据集是写的是 vehicle类和background类,在demo.py文件中修改class 可以不用vehicle,用V也可以显示出来,当时我demo的一张图片车辆太多,vehicle太长,经常重叠,很难看。
4.一张图片含有多类检测物体希望在demo的时候所有结果显示在一张图片上,看这篇文章
暂时就想到这么多了,以后想起来了在写出来 2017.4.20
2017.9.28补充:
VOC数据集的xml文件格式如下:
自己制作数据集时,用LabelImg工具可以直接得到xml文件,格式如下:
此时filename名称是不正确的,需要加后缀,linux下可以使用如下bash语句加上后缀:
find -name '*.xml' |xargs perl -pi -e 's|</filename>|.jpg</filename>|g'
此时便可以直接使用xml文件。
2017.11.04
自己电脑上的caffe出问题了,然后重装了一下,安装ssd的时候,对照师兄的这篇博客,但是在make -j8的时候报错,/usr/bin/ld :cannot find -lopenbals.此时需要安装openblas,对照这篇博客 .编译成功。
在make runtest 的时候报错build_release/tools/caffe: error while loading shared libraries: libopenblas.so.0: cannot open shared object file: No such file or directory。
解决办法是在/usr/lib/下建立一个 软链接将 libopenblas.so.0指向/openbls安装目录/lib/ libopenblas.so.0
ln -s /home/cyh/lib/libopenblas.so.0 /usr/lib/libopenblas.so.0即可。
- faster rcnn训练自己的数据集demo和训练过程error总结
- Faster RCNN 训练自己的数据集
- Faster-RCNN训练自己的数据集
- Faster-RCNN训练自己的数据集
- faster Rcnn训练自己的数据集
- Faster-Rcnn训练自己的数据集
- 用自己的数据训练Faster-RCNN
- faster-rcnn安装,训练自己的数据
- py-faster-rcnn训练自己的数据
- faster rcnn 训练自己的数据
- 使用自己的数据训练Faster-RCNN
- 使用faster rcnn训练自己的数据-制作数据集
- 【faster-rcnn】训练自己的数据集时的坑
- 【faster-rcnn】训练自己的数据集时的坑
- 【faster-rcnn】训练自己的数据集时的坑
- Faster-RCNN 训练自己数据集的坑记录
- 用py-faster-rcnn训练自己的VOC数据集
- faster rcnn在自己的数据集上训练
- 微信公众号
- CodeForces 604 B.More Cowbell(贪心)
- android-ExpandableListView的使用
- 路径规划(京东2016实习生真题)
- Spring学习总结——Spring实现AOP的多种方式
- faster rcnn训练自己的数据集demo和训练过程error总结
- YARN源代码解读
- PHP 模块生命周期
- session_set_cookie_params()
- 动态规划入门-Triangle
- Android开发之自定义圆形的ImageView的实现
- 题目1177:查找
- 手机CNN网络模型--MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 电子邮件相关_邮件传输协议简单了解