基于tensorflow-cpu的fasterrcnn复现目标识别

基于tensorflow-cpu的fasterrcnn复现目标识别

由于老师项目需要,要求在不完全了解机器学习和python的情况下实现对金叉石斛的叶片和茎部识别。由于具体数据集尚未制作完成,这里采用的是网上的COCO数据集。

算法理解

在这里插入图片描述
Faster -R-CNN包括四个部分:
卷积层(conv layers):本质为卷积神经网络CNN,通过卷积核与原图进行卷积,输出提取的特征图feature maps,然后送至下一部分;
RPN网络(region proposal Network):本质是一个全卷积网络,通过对feature maps进行处理,RPN寻找可能包含目标objects的预定义数量区域ROI,输出候选区域的边界框;
ROI pooling(感兴趣区域池化层):将不同大小的输入转换为固定长度的输出
Classfier:分类和回归,输出候选区域所属的类和精确位置,达到目标识别的目的。
算法实现过程:
第一步,Faster-r-cnn要采用基于分类任务的CNN模型作为图片特征提取器,获得feature maps。常用的CNN模型为vgg16,Faster-r-cnn采用的是vgg16的中间卷积层,不关心输入图片尺寸。第一层卷积层一般学习edges的信息,第二层学习的是edges内的图案patterns…最终得到卷积特征图feature maps,其分辨率比原图小得多。
第二步,获取feature maps之后,就需要寻找proposals,这一步由RPN网络完成。首先有一个固定尺寸的边界框Anchors,在feature maps(CONVwidthCONVheight)每个点上创建anchors,获得第一次预测object时参考用的边界框boxes,注意:anchors虽然是基于feature maps定义的,但最终的anchors是相对于原图的。RPN网络利用所有可参考的boxes,输出一系列objects的良好的proposals,如何选取?anchor内是object的概率,RPN不关心object的类,只关心是object or background,然后利用object score滤除效果不佳地boxes。获得效果更好的boxes之后,利用已获得的输出调整anchors,获得更好的拟合预测的boxes。每个anchors输出是objects的score和非objects的score,在回归层,每个anchors输出Δxcenter,Δycenter,Δwidth,Δheight,即得到最终的 proposals。
第三步,Faster-r-cnn采用每个proposal对feature maps裁剪crop,然后利用插值算法,将每个crop resize为固定尺寸14
14ConvDepth,再利用22kernel的Max Pooling得到每个proposal的77ConvDepth特征图,即利用proposals提取特征。
第四步,采用Relu和两个全连接层进行处理。对每个不同的objects采用两种不同的全连接层:一个全连接层有N+1个神经元,N为class总数,+1为background;4N神经元,回归预测输出,得到可能的class的Δxcenter,Δycenter,Δwidth,Δheight。

如下为算法复现过程:

首先是安装Anaconda和python3.5的安装,Anaconda是一个开源的python及其科学包管理器,安装之后可以很方便的安装各类python开源库。tensorflow是google开发的基于数据流编程(dataflow programming)的符号数学系统,可以在安装Anaconda后在Prompt内通过pip install 命令安装,如果默认网址下载速度慢的话可以通过清华镜像源安装

pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow

具体的安装流程这里不再敷述。复现环境如下:

  1. python3.5.4
  2. tensorflow1.12.0
  3. cython0.29.14
  4. python-opencv 4.1.2.30
  5. easydict 1.9
  6. Pillow 7.0.0
  7. matplotlib 3.0.3
  8. scipy 1.4.1
    先确保所有依赖库安装成功!

1.faste-r-rcnn程序包链接:

https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5

解压后源码如下
在这里插入图片描述
2.下载VOC2007格式的数据集PYCoco数据集:

https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models

下载解压后粘贴到如下图路径,注意文件夹命名。
在这里插入图片描述
3.下载预训练的卷积模型VGG16:

http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz

路径如下,注意文件夹命名:
在这里插入图片描述
4.在anaconda prompt中cd …/data/coco/PythonAPI目录下,编译setup.py

 `python setup.py build_ext --inplace`  
 `python setup.py build_ext install`  

cd …/lib/utils目录下,装载setup.py

python setup.py build_ext --inplace

5.在程序包目录下,运行

python train.py

即可开始训练模型,默认迭代5000次保存,最大跌代次数40000次
具体迭代次数可在config.py中修改
在这里插入图片描述
6.修改demo.py中的部分代码

tfmodel=r'your path'

your path为训练好的模型的路径
parse_args函数修改如下
在这里插入图片描述
7.在程序包目录下运行

python demo.py

即可自动识别demo文件夹中的中的图片,效果如下
在这里插入图片描述

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值