【深度学习笔记(十)】之物体检测(R-CNN,Fast R-CNN, Faster R-CNN)
本文章由公号【开发小鸽】发布!欢迎关注!!!
老规矩–妹妹镇楼:
一. 物体检测
(一)定义
在输入图像中检测出所有的不同物体,并用方框将所有的物体都框出来。
(二)候选框(Region proposals)
如果用分类和回归定位,那么要用滑动窗口滑动整张图片,需要计算太多的位置和预处理太多的图片尺寸,耗时耗力。
物体检测只需要将图片中的物体检测出来就可以了,图片中的物体个数不会太多,有些背景是不需要检测出来的,因此,我们只需要少量的窗口即可,将所需要的的物体给框出来,再从这些窗口中进行检测。
这些窗口叫做“候选框“,从输入图像中将可能是物体的区域用不同尺寸的候选框框住,以方便后续的检测。
下图中左图为输入图像,右图为所有的候选框
(三)生成候选框(Selective Search算法)
选择搜索算法用于生成候选框,这个用的是图像处理中的图像分割算法,现将图像分割为很小的区域,再将图像中相似的区域连接起来,生成候选框。
如下图所示:
二.R-CNN模型
(一)提取候选框
提取出了大概2000个 Regions of Interest(RoI)
(二)调整候选框的尺寸
从图片中提取出的候选框的尺寸一定是不相同的,我们需要调整这些候选框的尺寸,使得所有的候选框的尺寸相同。
(三)卷积神经网络
经过卷积神经网络提取特征值,并将特征值固化在磁盘中。特征值大概200GB,非常麻烦。
(四)分类
用SVMs对磁盘中的特征值进行分类,SVM是二分类的分类器,那么有多少个类型,就需要多少个SVM分类器,非常麻烦。
(五)回归
也是用磁盘中的特征值进行回归定位,线性回归确定最佳位置。
(六)R-CNN的问题
- 测试时间非常慢
因为每个候选框都要进行一次CNN卷积神经网络操作,这样非常耗时间。
- 固化特征很麻烦
将特征固化在磁盘中,再从磁盘中进行分类和回归,而不是直接完成的。
三. Fast R-CNN
(一) 共享CNN
在R-CNN中,每个候选框独立进行CNN操作,非常耗时。Fast R-CNN进行了改进,首先进行CNN操作,再进行提取候选框操作,这样,所有的候选框就是共享同一个CNN操作,提速非常多。
(二) 整合分类和回归
R-CNN中是分别进行分类和回归的,在Fast R-CNN中,我们将分类和回归整合在一起。用全连接层分出两个分支,一个用作分类,一个用作回归,同时分类损失和回归损失结合在一起,反向传播调整权重。
这样,整个模型就是流水线的操作,减少了很多中间操作以及人为操作,大大提高了速度以及模型的鲁棒性。
(三)R-CNN和 Fast R-CNN对比
0.32是没有选取候选框的测试时间,2秒是加上选取候选框的测试时间。可以看到,选取候选框十分耗时。
三. Faster R-CNN
Fast R-CNN最大的测试时间占比是选取候选框,那么将选取候选框集成到卷积神经网络中不就更好了么?
(一)改进
Faster R-CNN将选取候选框设置在CNN的最后一层卷积层之后,称为Region Proposal Network(RPN),用卷积后得出的特征图来选取候选框,然后做分类和回归操作。那么,所有的操作都在CNN中,没有其他分支,速度更加快。
(二)RPN
在最后一层卷积得出的特征图中选出候选框。
怎么做的呢?
同样是通过滑动窗口,只不过是在特征图上进行滑动,对于每个滑动窗口获取9个候选框,每个候选框的尺寸都是不一样的,它设置了9种候选框的尺寸大小,这些候选框的尺寸能够将正常生活中的物体都框出来。
anchors就是候选框,n = 9
(三) ROI POOLING
提取完候选框后,我们就可以进行分类和回归了。但是,提取出的候选框尺寸都是不一样的,那么所得出的特征图的特征向量维度肯定是不同的。
而分类和回归需要相同维度的特征向量,因此需要ROI POOLING对于不同尺寸的候选框进行不同的POOLING操作,压缩特征到同一维度。
(四) Faster R-CNN提升对比
可以看出,Faster R-CNN的速度相对于R-CNN,Fast R-CNN都大幅度地提升,甚至达到了实时的水平,而准确率并没有下降,反而有微小的提升。
【深度学习笔记(十)】之物体检测(R-CNN,Fast R-CNN, Faster R-CNN)相关推荐
- hough变换直线检测_CV学习笔记(十五):直线检测
在这一篇文章中我们将学习使用OpenCV中的 HoughLines 函数和 HoughLinesP 函数来检测图像中的直线. 在这个函数中,使用的是霍夫变换(Hough Transform) 这是计算 ...
- 深度学习【54】物体检测:Feature-Fused SSD: Fast Detection for Small Objects
论文的思路比价简单,本身论文写的也简单,这里也就简单记录一下. 论文的思路是使用高层的特征图来加强低层特征图的语义信息,以增加小物体检测精度.具体如下图: 至于为什么使用conv5和conv4,论文也 ...
- 深度学习笔记(2)——pytorch实现MNIST数据集分类(FNN、CNN、RNN、LSTM、GRU)
文章目录 0 前言 1 数据预处理 2 FNN(前馈神经网络) 3 CNN(卷积神经网络) 4 RNN(循环神经网络) 5 LSTM(长短期记忆网络) 6 GRU(门控循环单元) 7 完整代码 0 前 ...
- 吴恩达深度学习笔记12-Course4-Week3【目标检测】
目标检测(Object detection) 一.目标定位(Object Localization) 图像识别的三个层次: 图像分类:判断图像中是否包含某一类物体,并且假定每张图像只有一个目标. 目标 ...
- Ng深度学习笔记-卷积神经网络-目标检测
目标定位 符号表示: 图片左上角的坐标为(0,0)(0,0)(0,0),右下角标记为(1,1)(1,1)(1,1). 红色方框的中心点(bxb_{x}bx,byb_{y}by),边界框的高度为bh ...
- HALCON 21.11:深度学习笔记---对象检测, 实例分割(11)
HALCON 21.11:深度学习笔记---对象检测, 实例分割(11) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在 ...
- HALCON 20.11:深度学习笔记(11)---目标检测
HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...
- 深度学习笔记(十)—— 梯度检验[Gradient Checks]
这是深度学习笔记第十篇,完整的笔记目录可以点击这里查看. 梯度检验就是将解析法(也就是用导数公式求解梯度)计算的梯度与用数值法(也就是通过导数定义求解梯度)计算的梯度进行对比,以检验解析 ...
- 深度学习(十四)——Softmax详解, 目标检测, RCNN
https://antkillerfarm.github.io/ Softmax详解 首先给出Softmax function的定义: yc=ζ(z)c=ezc∑Cd=1ezd for c=1,-,C ...
- 深度学习笔记(34) 目标检测
深度学习笔记(34) 目标检测 1. 目标检测算法 2. 图像滑动窗口操作 3. 滑动窗口目标检测算法缺点 1. 目标检测算法 了解对象定位和特征点检测,现在来构建一个目标检测算法 通过卷积网络进行对 ...
最新文章
- Hadoop学习笔记—7.计数器与自定义计数器
- HDU 4540 威威猫系列故事――打地鼠(DP)
- TensorFlow实现案例汇集:代码+笔记
- iOS Xcode 项目重命名
- MPU6050开发 -- 进阶之I2C/SPI通信协议
- 高鸿股份与鸿蒙,高鸿股份(000851)个股分析_牛叉诊股_同花顺财经
- ContextLoaderListener介绍
- 金融行业 | 电子银行系统性能优化解决方案
- 《第9章 循环结构进阶》
- Java千百问_05面向对象(004)_java接口到底是什么
- android studio创建9.patch图片,使用时出现Error: Duplicate resources
- html静态网页制作天天生鲜,天天生鲜 前后台资源
- 安卓逆向 | 某新闻类APP urlSign
- selenium 下载文件
- ureport2项目使用
- 如何破解加密的PDF文件
- 51视频编辑压缩官网
- 更改Anaconda下载源,提高下载速度
- Go typeof、 Kind、Elem、Name用法
- html登陆没反应,ipad屏幕输入密码没反应