基于Tensorflow使用FasterRCNN训练

源码:endernewton/tf-faster-rcnn

一、使用VOC数据集训练

1. 克隆Github代码
git clone https://github.com/endernewton/tf-faster-rcnn.git
2. 配置修改
cd ./tf-faster-rcnn/lib
vim setup.py

服务器为GTX 1060,第135行左右,-arch 改为 sm_61

3. 编译

lib文件夹下:

make clean
make
4. VOC数据集下载

下载地址:
VOCtrainval_06-Nov-2007
VOCtest_06-Nov-2007
VOCdevkit_08-Jun-2007

目录位置:
data/VOCdevkit2007/VOCode
data/VOCdevkit2007/VOC2007

说明:
test与trainval合并。
其中SegmentationClass与SegmentationObject,对目标识别而言无用。

5. 预训练权重下载

下载地址:
pre-trained-models

存放位置:
data/imagenet_weights/res101.ckpt

6. 错误修改

由于Python版本原因,有一处需要修改。不然运行test_faster_rcnn.sh时,会报错。
修改内容如下,参考博客https://blog.csdn.net/hitzijiyingcai/article/details/81808091
lib/datasets/voc_eval.py

  • 第121行
with open(cachefile,'w') as f

修改为

with open(cachefile,'wb') as f
  • 第105行
cachefile = os.path.join(cachedir, '%s_annots.pkl' % imagesetfile)

修改为

cachefile = os.path.join(cachedir, '%s_annots.pkl' % imagesetfile.split("/")[-1].split(".")[0])
7. 训练测试

experiments/scripts/train_faster_rcnn.sh,experiments/scripts/test_faster_rcnn.sh 中分别修改相同的迭代次数。

./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc res101

二、使用自身数据集训练

1. 准备数据集

准备自己的数据集,替代data/VOCdevkit2007/VOC2007中的内容。制作步骤,可以参考博客https://blog.csdn.net/hitzijiyingcai/article/details/81636455

2. 修改部分代码,训练测试

lib/datasets/pascal_voc.py 中,修改self._classes

./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc res101
3. 遇到的问题记录
  1. 训练过程中,出现loss = nan,且报错:_sample_rois() -> keep_inds = np.append(fg_inds, bg_inds)
    这一类错误,均是由图片的标签数据有问题导致的。
    我的问题出现在,标签中xmin或ymin有0值。如下图所示,使用lib/datasets/pascol_voc.py读取标签数据时,-1操作导致:原坐标为0时,值最终存储为65535。因此将此处的-1操作删除。
    报错原因
    对应的,如果你有将翻转图像加入到训练集中,在lib/datasets/imdb.py的第117行左右,也应把两个-1操作删除。
    在这里插入图片描述
  2. 修改lib/datasets/voc_eval.py
    在这里插入图片描述
    由于我的xml文件中,没有设置pose与truncated,因此在此处删除。由于xml文件中的四个坐标,均用小数表示,因此在此处应先使用“float(bbox.find(‘xmin’).text)”。
4. 运行demo

第33行。修改classes
第35行。修改ckpt的名字
第101行。设置默认的net
第103行。设置默认的数据集格式
第115行。设置ckpt存放的地址
第136行。修改类别的个数
第143行。修改demo中的图片名称
接着可以运行

python ./tools/demo.py
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值