我使用的faster-RCNN的代码是最原始的一个python版本(https://github.com/smallcorgi/Faster-RCNN_TF)
给自己标记数据的工具为LabelImg(https://github.com/tzutalin/labelImg),关于怎么用这个工具制作自己的数据集,参见(https://www.jianshu.com/p/4451e6cc1d67)
因为俺也是初学者嘛,不怎么会改代码,因此我把自己的数据直接处理成了VOC2007的结构,这样我只需要去修改classes的类别,不用担心文件的路径。
修改的文件
- Faster-RCNN_TF/lib/datasets/pascal_voc.py
修改红色的地方,可以把其中的类改成自己定义的那些类,但是第一行的background不能动,那个相当于是背景类。
如果你想强行来训练PNG图片的话,就把图中黄色圈圈的jpg改成png -
Faster-RCNN_TF/lib/networks/VGGnet_train.py
改成你的类别数 + 1,因为有一个背景类别。
-
Faster-RCNN_TF/lib/networks/VGGnet_test.py
同上进行修改。
-
Faster-RCNN_TF/tools/demo.py
同1中进行修改即可
注:修改完了之后要删除修改的文件对应的pyc编译文件
训练自己的数据
训练前要把官方的数据替换掉,如果你拿原始数据训练过,还需要把load的数据和模型删掉。
需要删除的文件在这三个目录下面:
Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/
Faster-RCNN_TF/data/cache/
Faster-RCNN_TF/data/VOCdevkit2007/annotations_cache/
准备进行训练
进入Faster-RCNN_TF/lib目录make一下,再进入Faster-RCNN_TF目录执行
./experiments/scripts/faster_rcnn_end2end.sh gpu 0 VGG16 pascal_voc
训练到最后会报错,提示 --weights: expected one argument, 这时候需要添加我们训练好的模型路径。在训练阶段,这个问题可以通过修改shell脚本faster_rcnn_end2end.sh来解决,做如下修改:
--weights ${NET_FINAL} \
修改为
--weights output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt \
网友评论