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的文章,欢迎关注


相关文章
|
10天前
|
机器学习/深度学习 自然语言处理 算法
调研180多篇论文,这篇综述终于把大模型做算法设计理清了
《A Systematic Survey on Large Language Models for Algorithm Design》综述了过去三年大型语言模型(LLMs)在算法设计中的应用。LLMs通过自然语言处理技术,助力生成、优化和验证算法,在优化、机器学习、数学推理等领域展现出广泛应用前景。尽管存在资源需求高、结果不确定等挑战,LLMs仍为算法设计带来新机遇。论文地址:https://arxiv.org/abs/2410.14716。
46 14
|
2月前
|
机器学习/深度学习 监控 算法
基于反光衣和检测算法的应用探索
本文探讨了利用机器学习和计算机视觉技术进行反光衣检测的方法,涵盖图像预处理、目标检测与分类、特征提取等关键技术。通过YOLOv5等模型的训练与优化,展示了实现高效反光衣识别的完整流程,旨在提升智能检测系统的性能,应用于交通安全、工地监控等领域。
|
3月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA-PSO-SVM算法的混沌背景下微弱信号检测matlab仿真
本项目基于MATLAB 2022a,展示了SVM、PSO、GA-PSO-SVM在混沌背景下微弱信号检测中的性能对比。核心程序包含详细中文注释和操作步骤视频。GA-PSO-SVM算法通过遗传算法和粒子群优化算法优化SVM参数,提高信号检测的准确性和鲁棒性,尤其适用于低信噪比环境。
|
2月前
|
存储 JSON 算法
TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案
在使用 TDengine 存储时序数据时,压缩数据以节省磁盘空间是至关重要的。TDengine 支持用户根据自身数据特性灵活指定压缩算法,从而实现更高效的存储。然而,如何选择最合适的压缩算法,才能最大限度地降低存储开销?为了解决这一问题,我们特别推出了一个实用工具,帮助用户快速判断并选择最适合其数据特征的压缩算法。
61 0
|
3月前
|
机器学习/深度学习 安全 算法
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23(下)
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23(下)
56 0
|
3月前
|
安全 搜索推荐 算法
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23(上)
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23(上)
41 0
|
3月前
|
自然语言处理 搜索推荐 算法
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21(下)
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21(下)
42 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21(上)
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21(上)
34 0
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##

热门文章

最新文章