TensorFlow1.12+Python3.6+faster_rcnn+ubantu16.04

本文详细介绍Faster R-CNN的环境搭建、模型训练及测试流程。从代码下载到数据集准备,再到训练自己数据集的全过程解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备注:此实验基于已部署好的环境下实现(ubantu16.04、python3.6、tensorflow1.12)

一、下载 faster_rcnn代码,并解压

        下载链接:https://github.com/endernewton/tf-faster-rcnn        

data:存放demo测试数据、预训练模型、训练数据(VOC2007数据格式)

docker:cuda文件

experiments:训练测试sh文件、训练测试过程日志文件

lib: 数据读取、训练模型等文件

tools:模型训练、验证等python文件

二、对网络进行编译

1、进入lib文件夹下,建立cypython块,并返回原路径

cd ./lib
make clean
make
cd ../

2、下载res101预训练模型,创建超链接、运行demo.py

     1)预训练模型下载

     链接:https://pan.baidu.com/s/1zNWzMxBwQ6qVoXXvN89Peg 密码:0rtb 解压至data路径下,文件夹命名为     voc_2007_trainval+voc_2012_trainval

     2)创建预训练模型超链接

NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}
cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../data/voc_2007_trainval+voc_2012_trainval ./default
cd ../../..

    3)运行/tools/demo.py,将结果保存

demo.py文件头添加:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
保存文件:
for im_name in im_names:
        print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
        print('Demo for data/demo/{}'.format(im_name))
        demo(sess, net, im_name)
        plt.savefig("./data/demtest/"+im_name)
测试:
GPU_ID=0
CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

三、下载res101、vgg16/训练模型,下载VOC2007数据集

下载vgg16训练模型:https://pan.baidu.com/s/1aD0jlYGHhZQeeTvNJy0GGQ,密码:45ef。

下载res101训练模型:

在data目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,resnet_v1_101.ckpt重命名为res101.ckpt

下载VOC2007数据集:解压至data文件夹,将文件名VOCdevkit重命名为VOCdevkit2007,trainval解压至VOCdevkit2007中

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

四、使用训练好的模型对数据进行测试

修改 tf-faster-rcnn/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])

测试:
GPU_ID=0
./experiments/scripts/test_faster_rcnn.sh $GPU_ID pascal_voc_0712 res101

五、对VOC2007数据集进行训练验证

./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16
或者./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc res101

六、训练自己的数据集

  1、制作标记数据(下载标记工具labelme、部署并标记)

      下载标记工具:https://github.com/CSAILVision/LabelMeAnnotationTool

  2、标记数据转VOC2007数据集格式

       1)下载标记处理数据工具集:https://github.com/CSAILVision/LabelMeToolbox

       2) ./LabelMeToolbox/compatibility/labelme2pascal.m文件是对labelme标记数据转VOV2007数据集格式(./xml文件转换、train\val等数据比例分配)

      3) 运行./LabelMeToolbox/test.m文件对labelme2pascal.m文件传参,从而进行数据格式转换和数据比例分配

HOMEIMAGES = '/var/www/html/LabelMeAnnotationTool/Images'; //原图像文件路径
HOMEANNOTATIONS = '/var/www/html/LabelMeAnnotationTool/Annotations'; //原XML文件路径
%LMinstall (HOMEIMAGES, HOMEANNOTATIONS);
%D = LMdatabase(HOMEANNOTATIONS);
D = LMdatabase(HOMEANNOTATIONS, {'zly1'});  //XML文件目标名
databasename = '111';  //原图像与保存图像上级目录           
folderdestination = '/home/th/test';    //保存路径
labelme2pascal(D, databasename, HOMEIMAGES, folderdestination);
%[mask, class] = LMobjectmask(D(1).annotation, HOMEIMAGES);
%imshow(colorSegments(mask));

     4)将生成的文件拷贝至./tf-faster-rcnn-master/data/VOCdevkit2007/下

3、修改代码

注意:如果先前对VOC2007数据集进行训练测试等操作,必须将tf-faster-rcnn-master/data/cache、tf-faster-rcnn-master/data/res101等文件删除或者更名,如果还是出现网络不匹配问题,建议重新配置,直接运行自己的数据

    1)在tf-faster-rcnn/lib/datasets目录下的pascal_voc.py里第36行更改自己的类别,

'_background__'切记不可删掉,把后面的原来的20个label换成自己的,不用更改类别数目,也没有地方可以更改。

   2) 网络超参数修改

       训练迭代次数ITERS修改:/tf-faster-rcnn-master/experiments/scripts/train_faster_rcnn.sh

       测试迭代次数ITERS修改:/tf-faster-rcnn-master/experiments/scripts/test_faster_rcnn.sh

train_faster_rcnn.sh
test_faster_rcnn.sh

   

         学习率、权重等超参修改:/tf-faster-rcnn-master/lib/model/config.py

   3)训练:

./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16
或者./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc res101

参考文献:https://blog.youkuaiyun.com/hitzijiyingcai/article/details/81808091

                    https://blog.youkuaiyun.com/hitzijiyingcai/article/details/81914200

错误解决参考文献:https://www.jianshu.com/p/08c1faa38358

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值