RCNN目标检测算法内容详解(依托论文讲解)

简介: RCNN目标检测算法内容详解(依托论文讲解)

作为目标检测的开山鼻祖,对于RCNN的学习一定是有里程碑的意义的,RCNN的横空出世让我们对神经网络有了更深的认识,在CNN识别盛行的年代开创了先河,因此了解RCNN对于我们学习目标检测算法有非常重大的意义。


image.png


我在学习目标检测算法的时候,发现有些概念总是模糊不清,因为我是直接学习yolo系列的,但是学了好几遍总感觉差点什么,对于一些大佬给我的建议是要重头撸一遍目标检测算法,RCNN作为目标检测的第一个算法,他的出现影响了后续一大堆目标检测算法,因此我打算从RCNN开始将经典的目标检测算法都学习一下,同时也会写下随笔博客,对于文中不对的地方欢迎大家批评指正。


这里有个很有意思的论文翻译,对于阅读英文论文有困难的同学,可以看一下


R-CNN论文详解(论文翻译)_目标检测_v1_vivian-DevPress官方社区


RCNN算法结构:

RCNN算法总的分为如下四步:如下图所示


image.png


1、使用Selective Search(选择性搜索)算法,将图片生成1K-2K个Region propsals:

可以理解成就是根据SS算法的方法将图片分成2000个可能含有目标的候选框


2、对于每个生成的Region propsals,使用深度网络提取feature:

       我们将图像切割成了2000个区域,那就相当于产生了2000个小图片,然后我们将这2000个小图片打入神经网络进行训练,就是所谓的用CNN提取这2000个小图片的特征。


       RCNN这里使用的CNN神经网络是Alexnet神经网络,然而这里出现了一个问题就是Alexnet网络的输入均为277*277大小的图片,但是我们切割的2000个候选区域不一定是刚好符合这个大小的,因此作者在这里对着2000个图片进行了resize,即将所有的候选区域小图片均调整为了277*277,然后再在候选区域周围加上了16的padding,再进行异性缩放,作者在文中指出这种方法使得RCNN的mAp提高了3到5个百分点。


      另外在这里需要解释一下,我们使用的Alexnet卷积神经网络是迁移学习过的,因为如果从头开始训练一个网络的话,数据量太小效果会很差,因此我们使用迁移学习的方法训练我们的网络。


3、将feature送入每一类对应的SVM支持向量机:

    如果bounding box 没包含到车辆部分叫正样本;如果bounding box 没有包含到车辆的某部分,我们称它为负样本。接触过目标检测的同学们都知道,正负样本的区分是需要阈值划分的,划分的基础是IOU(IOU不知道是啥的自行百度),作者测试了IoU阈值的多个值, 0.1, 0.2, 0.3, 0.4, 0.5 。最后通过测试发现,IOU阈值为0.3效果最好(选择为0精度下降了4个百分点,选择0.5精度下降了5个百分点),即当重叠度小于0.3的时候,我们就把它标注为负样本。



    到这里我们的RCNN已经在经过Alexnet神经网络之后提取到了我们想要的特征,因为作者在Alexnet最后一层中去掉了全连接层,因此我们这个特征即为2000*4096-D的向量(D为物体的种类+背景),然后我们将这D类的特征向量送入D个SVM进行训练,(这里解释一下,因为SVM只能做二分类,因此我们需要建立D个SVM分类器对特征向量进行打分),注意这个打分很重要,这D个SVM的打分又会组成一个新的特征向量,同时SVM训练过程是将打分和真实的label进行比较,计算出loss然后再对SVM进行反复训练。


    另外在这里需要解释一下,RCNN在这里用到了一个比较特别的算法叫做hard negative mining方法(因为刚开始训练的时候,很多情况下负样本远远高于正样本,这样会导致训练的优化过程很慢,hard negative mining算法是将经过一轮训练后得分最高,即最容易被误判的负样本加入新的样本训练集,进行再次训练,重复上述步骤,直到算法收敛)。hard negative mining方法的作用就是去掉负样本中对优化作用影响很小的负样本,保留最接近阈值(最接近正样本容易分辨错误的负样本)。


4、最后使用回归算法对候选框进行微调,然后进行NMS(非极大值抑制选出最合适的候选框):

image.png


Selective search算法会生成1K~2K的候选区域,这些候选区域存在这种那种的问题,因此我们需要在最后一步对候选框进行微调。在RCNN中,作者使用线性回归器对候选框位置进行微调,得到更加准确的候选框。训练样本:判定为本类的候选框中和真值重叠面积大于0.6 的候选框。


NMS(非极大值抑制的过程)首先我们需要先计算出每一个bounding box的面积,然后根据它的score进行排序,把score最大的bounding box作为我们选定的框,然后计算其余bounding box与我们上述最大score与box的IoU,删除IoU大于设定的阈值的bounding box。反复进行上述过程,直至所有bounding box用完,然后再删除score小于一定阈值的选定框。


这就是RCNN的全部过程了,后续会更新其他系列的RCNN的文章,欢迎关注


相关文章
|
14天前
|
算法 JavaScript 前端开发
在JavaScript中实现基本的碰撞检测算法,我们通常会用到矩形碰撞检测,也就是AABB(Axis-Aligned Bounding Box)碰撞检测
【6月更文挑战第16天】JavaScript中的基本碰撞检测涉及AABB(轴对齐边界框)方法,常用于2D游戏。`Rectangle`类定义了矩形的属性,并包含一个`collidesWith`方法,通过比较边界来检测碰撞。若两矩形无重叠部分,四个条件(关于边界相对位置)均需满足。此基础算法适用于简单场景,复杂情况可能需采用更高级的检测技术或物理引擎库。
49 6
|
26天前
|
运维 算法 安全
异常检测算法及其在安全领域的应用
【6月更文挑战第4天】在数字化时代,数据安全至关重要,异常检测算法扮演着守护者角色。它能自动学习正常行为模式,及时发现网络攻击和欺诈行为。非监督式异常检测算法尤其重要,如基于距离的方法,通过计算数据点间距离识别偏离常规的点。Python的scikit-learn库可实现这一算法。异常检测不仅应用于金融领域的欺诈检测,还广泛用于工业监控、医疗诊断和社交媒体分析,为多领域数据安全提供保障。随着技术进步,异常检测将更智能、高效,成为数据安全的重要防线。
38 2
|
2月前
|
算法 计算机视觉
YOLOv3 的非极大值抑制(NMS)算法是如何工作的,它对最终检测结果有何影响?
YOLOv3 的非极大值抑制(NMS)算法是如何工作的,它对最终检测结果有何影响?
|
2月前
|
监控 算法 自动驾驶
主流的目标检测算法是那种?
主流的目标检测算法是那种?
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
【CVPR2024】阿里云人工智能平台PAI图像编辑算法论文入选CVPR2024
近期,阿里云人工智能平台PAI发表的图像编辑算法论文在CVPR-2024上正式亮相发表。论文成果是阿里云与华南理工大学贾奎教授领衔的团队共同研发。此次入选标志着阿里云人工智能平台PAI自主研发的图像编辑算法达到了先进水平,赢得了国际学术界的认可。在阿里云人工智能平台PAI算法团队和华南理工大学的老师学生们一同的坚持和热情下,将阿里云在图像生成与编辑领域的先进理念得以通过学术论文和会议的形式,向业界传递和展现。
|
23天前
|
算法 计算机视觉
图像处理之角点检测算法(Harris Corner Detection)
图像处理之角点检测算法(Harris Corner Detection)
18 3
|
5天前
|
算法 C++ 计算机视觉
详细解读Canny检测算法与实现
详细解读Canny检测算法与实现
|
2月前
|
机器学习/深度学习 运维 算法
[ICDE2024]多正常模式感知的频域异常检测算法MACE
阿里云计算平台大数据基础工程技术团队主导,与浙江大学合作的论文《Learning Multi-Pattern Normalities in the Frequency Domain for Efficient Time Series Anomaly Detection》被ICDE2024收录,该论文解决了云服务环境中不同服务存在不同正常模式,而传统神经网络一个训练好的模型只能较好捕捉一种或少数几种正常模式的问题,该论文提出的方法可以使用一个统一模型对不同服务进行检测,就达到比为每一个服务定制一个模型的SOTA方法更好的效果。
|
10天前
|
机器学习/深度学习 算法 语音技术
基于语音信号MFCC特征提取和GRNN神经网络的人员身份检测算法matlab仿真
**语音识别算法概览** MATLAB2022a中实现,结合MFCC与GRNN技术进行说话人身份检测。MFCC利用人耳感知特性提取语音频谱特征,GRNN作为非线性映射工具,擅长序列学习,确保高效识别。预加重、分帧、加窗、FFT、滤波器组、IDCT构成MFCC步骤,GRNN以其快速学习与鲁棒性处理不稳定数据。适用于多种领域。
|
11天前
|
机器学习/深度学习 算法 计算机视觉
基于ADAS的车道线检测算法matlab仿真
**摘要:** 基于ADAS的车道线检测算法利用Hough变换和边缘检测在视频中识别车道线,判断车道弯曲情况,提供行驶方向信息,并高亮显示。在MATLAB2022a中实现,系统包括图像预处理(灰度化、滤波、边缘检测)、车道线特征提取(霍夫变换、曲线拟合)和车道线跟踪,确保在实时场景中的准确性和稳定性。预处理通过灰度转换减少光照影响,滤波去除噪声,Canny算法检测边缘。霍夫变换用于直线检测,曲线拟合适应弯道,跟踪则增强连续帧的车道线检测。