如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

发布时间:2021-12-18 16:07:59 作者:柒染
来源:亿速云 阅读:398

本篇文章给大家分享的是有关如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Faster-RCNN图片识别

Faster-RCNN对象检测算法是R-CNN对象检测的第三个版本算法,其前面还有Fast-RCNN与RCNN算法,由于R-CNN无法实现End-to-End训练,Fast R-CNN Selective Search耗时比较长等原因,作者在此2版的基础上,更新到了Faster-RCNN对象检测算法。

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

对象检测

从下方结构图可以看出:Faster-RCNN对象检测算法将特征提取、proposal提取、Bounding Box Regression、Classification整合到一个网络中,对象检测速度不仅有了提示还避免了前2个版本的缺点。

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

Faster R-CNN

Faster R-CNN对象检测流程:

1、特征提取(convolutional layer):Faster R-CNN使用卷积+relu+pooling池化层提取被检测对象的特征。

2、区域预测网络(Region Proposal Network):RPN通过softmax函数判断锚点(anchors)属于某个特征,再利用边界框回归(bounding box regression)修正anchors获得精确的对象检测值。

3、目标区池化(Roi Pooling):收集输入的特征数据和候选目标区域,利用此层信息提取目标区域特征数据,然后全连接层识别图片。

4、分类(Classification):利用目标区域特征数据计算太识别图片,同时利用边界框回归获得对象检测的精确位置。

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

Faster R-CNN流程图

如何来实现Faster R-CNN,以及Faster R-CNN的具体工作是如何实现的,小编也参考了很多网友的源码,无奈代码量太大(少的也得几千行),我们前期分享了如何使用opencv与MobileNet SSD的图像识别以及视频实时识别

MobileNet SSD视频流实时识别

MobileNet SSD图像识别

同样使用opencv也可以来实现Faster R-CNN的对象检测算法,很多代码都比较类似,小伙伴们也可以参考往期文章

使用OpenCV进行基于Faster R-CNN深度学习的对象检测

Faster R-CNN prototxt 与Faster R-CNN model模型已经共享:

回复:RCNN 即可领取

模型一共2种:

faster_rcnn_inception_v2与faster_rcnn_resnet50,2种模型是在不同的训练集上训练的数据,其中faster_rcnn_inception_v2模型较小,速度较快,本期按照此模型来搭建对象检测,其faster_rcnn_resnet50模型跟faster_rcnn_inception_v2模型的代码完全一致,只是修改一下模型的路径便可

在本节中,我们将使用 OpenCV中的深度神经网络( dnn)模块与Faster R-CNN prototxt 与Faster R-CNN model来构建我们的对象检测器

1、模型以及第三方库

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

模型以及第三方库

首先导入模型以及模型参数,若使用faster_rcnn_resnet50模型, 12 、13行直接修改为faster_rcnn_resnet50模型的相对地址

2、定义模型识别类型

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

定义模型识别类型

Faster R-CNN模型相比SSD来说,能够识别的种类,丰富了很多,大概有100个种类,几乎包含了生活中所能涉及的种类,当然,若你有强大的数据支撑,也可以来训练自己的模型(后期分享如何来训练自己的模型)

3、opencv建立神经网络

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

opencv建立神经网络

对比51 、52行可以知道,SSD模型是在caffe上训练的模型,而Faster R-CNN模型是tensorflow上训练的模型,但是强大的opencv库使用dnn函数就能很方便的加载预训练模型,且可以对比看出,其模型与参数文件前后有区别

4、计算blob,进行神经网络的预测

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

计算blob,进行神经网络的预测

获取图片的长宽参数,重新调整图片长宽为300*300,来进行图片blob的计算,然后blob传入神经网络来进行计算,使用前向传播来预测图片

5、遍历预测值,提取设置阈值的对象

如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别

遍历预测值,提取设置阈值的对象

以上就是如何实现深度学习OpenCV对象检测中的Faster-RCNN图片识别,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. OpenCV怎样实现人脸检测
  2. 基于openCV实现人脸检测

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

opencv

上一篇:Apollo系统中怎么添加新的GPS接收器

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》