Faster R-CNN(Tensorflow版) 训练自己的数据集

本文介绍如何基于Faster RCNN框架进行目标检测任务的数据准备、模型训练及测试过程。主要内容包括修改源代码以适应自定义数据集、训练前的准备工作、训练命令配置、解决训练过程中遇到的问题、测试阶段的注意事项及如何生成最终结果。

直接转载一篇博客,中间一些地方做了一些修改

源码地址:https://github.com/smallcorgi/Faster-RCNN_TF

为了最小程度的修改源代码,我把自己的数据处理成和 VOC2007 文件格式一模一样的结构。这样,只需要修改 classes 里的类别就可以了,路径的问题完全不用管。

一、修改的文件路径

1、/home/Faster-RCNN_TF/lib/datasets/pascal_voc.py
修改为自己数据的类

pascal_voc.py

2、/home/Faster-RCNN_TF/lib/networks/VGGnet_train.py
修改类的个数n_classes = 3(其中3是类别数目+1(背景))

VGGnet_train.py

3、/home/Faster-RCNN_TF/lib/networks/VGGnet_test.py
修改类的个数

VGGnet_test.py


二、我们的数据

训练前要把官方的数据替换掉,如果你拿原始VOC数据训练过,还需要把load的数据和模型删掉。

需要删除这两个目录下的文件:

/home/Faster-RCNN_TF/data/cache
/home/Faster-RCNN_TF/output/faster_rcnn_end2end

开始训练

首先要到根目录 Faster-RCNN_TF
然后到lib目录下执行:

export PATH=$PATH:/usr/local/cuda-8.0/bin/   #此处的cuda-8.0根据自己使用的cuda不同
make
退回到Faster-RCNN_TF执行:
./experiments/scripts/faster_rcnn_end2end.sh gpu 0 VGG16 pascal_voc
demo.py


★注意:训练到最后会报错,提示 --weights: expected one argument, 这时候需要添加我们训练好的模型路径。看下文的开始测试

开始测试

训练结束:可以看到test_net.py 报错是因为--weights 后面没有相应的模型参数。因此我们需要添加上面的模型文件路径

但是,github上的版本,训练后没有生成ckpt文件,导致测试不能正常进行。

解决办法:找到文件lib/fast_rcnn/train.py

在line 42: self.saver = saver ⇒ self.saver = tf.train.Saver(max_to_keep=100,write_version=tf.train.SaverDef.V1),这样就能生成需要的cpkt文件,然后用下面的命令进行测试

执行测试前查看 /home/Faster-RCNN_TF/data/VOCdevkit2007/annotations_cache/annots.pkl 的缓存文件是不是清空的。

python ./tools/test_net.py --device gpu --device_id 0 --weights /home/Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt --imdb voc_2007_test --cfg experiments/cfgs/faster_rcnn_end2end.yml --network VGGnet_test
下面是我的测试结果:


使用 demo.py 检测从网上找到的相关皮肤病图片

直接用模型对相关图片进行目标检测
首先要把 demo.py 文件里的 CLASSES 要与之前修改的类别保持一致
/home/Faster-RCNN_TF/tools
在文件根目录下面执行此命令,开始生成结果:

python ./tools/demo.py --model /home/Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt

保存标记好的图片

在 demo.py 里添加我们要保存图片的路径

demo.py

结果展示

参考文章:https://www.jianshu.com/p/c0c239a67f8e

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值