目标检测---RCNN系列

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解 目标检测:R-CNN、Fast R-CNN与Faster R-CNN理论讲解,根据B站up霹雳吧啦Wz总结。此文章包含R-CNN算法原理讲解、Fast R-CNN算法原理讲解、Faster R-CNN原理讲解、目标检测评价指标介绍与特征金字塔网络FPN讲解。 阅读详情

•   RCNN

        RCNN(Regions with CNN features)是将CNN方法应用到目标检测问题上的一个里程碑,由年轻有为的RBG大神提出,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。

        算法可以分为四步:

        1)候选区域选择

        Region Proposal是一类传统的区域提取方法,可以看作不同宽高的滑动窗口,通过窗口滑动获得潜在的目标图像,关于Proposal大家可以看下SelectiveSearch,一般Candidate选项为2k个即可,这里不再详述;

        根据Proposal提取的目标图像进行归一化,作为CNN的标准输入。

        2)CNN特征提取

        标准CNN过程,根据输入进行卷积/池化等操作,得到固定维度的输出;

        3)分类与边界回归

        实际包含两个子步骤,一是对上一步的输出向量进行分类(需要根据特征训练分类器);二是通过边界回归(bounding-box regression) 得到精确的目标区域,由于实际目标会产生多个子区域,旨在对完成分类的前景目标进行精确的定位与合并,避免多个检出。

        RCNN存在三个明显的问题:

1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;

2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;

3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。


•   SPP-Net

        智者善于提出疑问,既然CNN的特征提取过程如此耗时(大量的卷积计算),为什么要对每一个候选区域独立计算,而不是提取整体特征,仅在分类之前做一次Region截取呢?智者提出疑问后会立即付诸实践,于是SPP-Net诞生了。


        SPP-Net在RCNN的基础上做了实质性的改进:

1)取消了crop/warp图像归一化过程,解决图像变形导致的信息丢失以及存储问题;

2)采用空间金字塔池化(SpatialPyramid Pooling )替换了 全连接层之前的最后一个池化层(上图top),翠平说这是一个新词,我们先认识一下它。

        为了适应不同分辨率的特征图,定义一种可伸缩的池化层,不管输入分辨率是多大,都可以划分成m*n个部分。这是SPP-net的第一个显著特征,它的输入是conv5特征图 以及特征图候选框(原图候选框 通过stride映射得到),输出是固定尺寸(m*n)特征;

        还有金字塔呢?通过多尺度增加所提取特征的鲁棒性,这并不关键,在后面的Fast-RCNN改进中该特征已经被舍弃;

        最关键的是SPP的位置,它放在所有的卷积层之后,有效解决了卷积层的重复计算问题(测试速度提高了24~102倍),这是论文的核心贡献。


        尽管SPP-Net贡献很大,仍然存在很多问题:

1)和RCNN一样,训练过程仍然是隔离的,提取候选框 | 计算CNN特征| SVM分类 | Bounding Box回归独立训练,大量的中间结果需要转存,无法整体训练参数;

2)SPP-Net在无法同时Tuning在SPP-Layer两边的卷积层和全连接层,很大程度上限制了深度CNN的效果;

3)在整个过程中,Proposal Region仍然很耗时。


•   Fast-RCNN

        问题很多,解决思路同样也非常巧妙,ok,再次感谢 RBG 大神的贡献,直接引用论文原图(描述十分详尽)。

        Fast-RCNN主要贡献在于对RCNN进行加速,快是我们一直追求的目标(来个山寨版的奥运口号- 更快、更准、更鲁棒),问题在以下方面得到改进:

        1)卖点1 - 借鉴SPP思路,提出简化版的ROI池化层(注意,没用金字塔),同时加入了候选框映射功能,使得网络能够反向传播,解决了SPP的整体网络训练问题;

        2)卖点2 - 多任务Loss层

    A)SoftmaxLoss代替了SVM,证明了softmax比SVM更好的效果;

    B)SmoothL1Loss取代Bouding box回归。

        将分类和边框回归进行合并(又一个开创性的思路),通过多任务Loss层进一步整合深度网络,统一了训练过程,从而提高了算法准确度。

        3)全连接层通过SVD加速

            这个大家可以自己看,有一定的提升但不是革命性的。

        4)结合上面的改进,模型训练时可对所有层进行更新,除了速度提升外(训练速度是SPP的3倍,测试速度10倍),得到了更好的检测效果(VOC07数据集mAP为70,注:mAP,mean Average Precision)。

        接下来分别展开这里面的两大卖点:

        前面已经了解过可伸缩的池化层,那么在训练中参数如何通过ROI Pooling层传导的?根据链式求导法则,对于yj = max(xi) 传统的max pooling的映射公式:


        其中 为判别函数,为1时表示选中为最大值,0表示被丢弃,误差不需要回传,即对应 权值不需要更新。如下图所示,对于输入 xi 的扩展公式表示为:


      (i,r,j) 表示 xi 在第 r 个框的第  j 个节点是否被选中为最大值(对应上图 y0,8 和 y1,0),xi 参数在前向传导时受后面梯度误差之和的影响。


        多任务Loss层(全连接层)是第二个核心思路,如上图所示,其中cls_score用于判断分类,bbox_reg计算边框回归,label为训练样本标记。

        其中Lcls为分类误差:


        px 为对应Softmax分类概率,pl 即为label所对应概率(正确分类的概率),pl = 1时,计算结果Loss为0, 越小,Loss值越大(0.01对应Loss为2)。

       Lreg为边框回归误差:

        即在正确分类的情况下,回归框与Label框之间的误差(Smooth L1), 对应描述边框的4个参数(上下左右or平移缩放),g对应单个参数的差异,|x|>1 时,变换为线性以降低离群噪声:


         Ltotal为加权目标函数(背景不考虑回归Loss):


        细心的小伙伴可能发现了,我们提到的SPP的第三个问题还没有解决,依然是耗时的候选框提取过程(忽略这个过程,Fast-RCNN几乎达到了实时),那么有没有简化的方法呢?

        必须有,搞学术一定要有这种勇气。


•   Faster-RCNN

        对于提取候选框最常用的SelectiveSearch方法,提取一副图像大概需要2s的时间,改进的EdgeBoxes算法将效率提高到了0.2s,但是这还不够。

        候选框提取不一定要在原图上做,特征图上同样可以,低分辨率特征图意味着更少的计算量,基于这个假设,MSRA的任少卿等人提出RPN(RegionProposal Network),完美解决了这个问题,我们先来看一下网络拓扑。


        通过添加额外的RPN分支网络,将候选框提取合并到深度网络中,这正是Faster-RCNN里程碑式的贡献。

RPN网络的特点在于通过滑动窗口的方式实现候选框的提取,每个滑动窗口位置生成9个候选窗口(不同尺度、不同宽高),提取对应9个候选窗口(anchor)的特征,用于目标分类和边框回归,与FastRCNN类似。

        目标分类只需要区分候选框内特征为前景或者背景。

        边框回归确定更精确的目标位置,基本网络结构如下图所示:


        训练过程中,涉及到的候选框选取,选取依据:

1)丢弃跨越边界的anchor;

2)与样本重叠区域大于0.7的anchor标记为前景,重叠区域小于0.3的标定为背景;

      对于每一个位置,通过两个全连接层(目标分类+边框回归)对每个候选框(anchor)进行判断,并且结合概率值进行舍弃(仅保留约300个anchor), 没有显式地提取任何候选窗口 ,完全使用网络自身完成判断和修正。

        从模型训练的角度来看,通过使用共享特征交替训练的方式,达到接近实时的性能,交替训练方式描述为:

1)根据现有网络初始化权值w,训练RPN;

2)用RPN提取训练集上的候选区域,用候选区域训练FastRCNN,更新权值w;

3)重复1、2,直到收敛。

        因为Faster-RCNN,这种基于CNN的real-time 的目标检测方法看到了希望,在这个方向上有了进一步的研究思路。至此,我们来看一下RCNN网络的演进,如下图所示:

        Faster RCNN的网络结构(基于VGG16):


        Faster实现了端到端的检测,并且几乎达到了效果上的最优,速度方向的改进仍有余地,于是YOLO诞生了。

•   YOLO

        YOLO来自于“YouOnly Look Once”,你只需要看一次,不需要类似RPN的候选框提取,直接进行整图回归就可以了,简单吧?


        算法描述为:

1)将图像划分为固定的网格(比如7*7),如果某个样本Object中心落在对应网格,该网格负责这个Object位置的回归;

2)每个网格预测包含Object位置与置信度信息,这些信息编码为一个向量;

3)网络输出层即为每个Grid的对应结果,由此实现端到端的训练。

        YOLO算法的问题有以下几点:

1)7*7的网格回归特征丢失比较严重,缺乏多尺度回归依据;

2)Loss计算方式无法有效平衡(不管是加权或者均差),Loss收敛变差,导致模型不稳定。

Object(目标分类+回归)<=等价于=>背景(目标分类)

        导致Loss对目标分类+回归的影响,与背景影响一致,部分残差无法有效回传;

整体上YOLO方法定位不够精确,贡献在于提出给目标检测一个新的思路,让我们看到了目标检测在实际应用中真正的可能性。

        这里备注一下,直接回归可以认为最后一层即是对应7*7个网格的特征结果,每一个网格的对应向量代表了要回归的参数(比如pred、cls、xmin、ymin、xmax、ymax),参数的含义在于Loss函数的设计。

•   SSD

        由于YOLO本身采用的SingleShot基于最后一个卷积层实现,对目标定位有一定偏差,也容易造成小目标的漏检。

        借鉴Faster-RCNN的Anchor机制,SSD(Single Shot MultiBox Detector)在一定程度上解决了这个问题,我们先来看下SSD的结构对比图。

        基于多尺度特征的Proposal,SSD达到了效率与效果的平衡,从运算速度上来看,能达到接近实时的表现,从效果上看,要比YOLO更好。

        对于目标检测网络的探索仍在一个快速的过程中,有些基于Faster-RCNN的变种准确度已经刷到了87%以上,而在速度的改进上,YOLO2也似乎会给我们带来一定的惊喜,“未来已来”,我们拭目以待!

转自:https://blog.youkuaiyun.com/linolzhang/article/details/54344350

目标检测-RCNN系列 •   RCNN        RCNN(Regions with CNN features)是将CNN方法应用到目标检测问题上的一个里程碑,由年轻有为的RBG大神提出,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。        算法可以分为四步:        1)候选区域选择        Region Proposal是一类传统的区域提取方 阅读详情

相关推荐

目标检测算法汇总:RCNN系列、YOLO系列、SSD系列

常见的目标检测算法1、传统的目标检测方法2、候选区域/窗+分类3、回归 目前,常见的目标检测(object detection)算法分为3类: 1、传统的目标检测方法:特征提取+分类器 2、候选区域/窗+分类:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN 3、回归:YOLO系列、SSD系列 1、传统的目标检测方法 2、候选区域/窗+分类 2.1 3、回归 参考: 1、一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD .

soohoo 8892

R-CNN史上最全讲解

R-CNN史上最全讲解

weixin_43702653的博客 6万+

目标检测的相关模型图:YOLO系列和RCNN系列

目标检测的相关模型图:YOLO系列和RCNN系列 最近好像大家也都在写毕业论文,前段时间跟朋友聊天,突然想起自己之前写画了一些关于YOLO、Faster RCNN的图,下面share一下。有需要的同学可以评论区留邮箱,有看到就集中发。PPT里面的图可以换成自己的数据集类型的图,包括元素的设计。

xiaobaizaza_Ry的博客 1438

RCNN详解

RCNN详解 RCNN即region proposals(候选区域) + CNN,是将CNN引入目标检测领域的开山之作(2014年),大大提高了目标检测的效果,在其后也是出现了更优异的变体Fast RCNN, Faster RCNN。 下文按照RCNN的工作过程依次介绍 1. 生成候选区域 获取候选区域最直接的方式就是滑窗法了,但是滑窗法需要用一个固定大小的小窗口遍历整张图片,因此其有很多的局限性。 所以一般都是使用一些候选区域(Region Proposal)算法,候选区域算法使用一些图像分割的算法来识别

panfengblog 3万+

几种目标检测网络模型对比(RCNN系列、Mask-RCNN、R-FCN、YOLO、SSD、FPN等)

RCNN RCNN具体原理解析 网络分为四个部分:区域划分、特征提取、区域分类、边框回归 区域划分:使用selective search算法画出2k个左右候选框,送入CNN 特征提取:使用imagenet上训练好的模型,进行finetune 区域分类:从头训练一个SVM分类器,对CNN出来的特征向量进行分裂 边框回归:使用线性回归,对边框坐标进行精修 优点:ss算法比滑窗得到候选框高效一些;使用...

Dominic_S的博客 2万+

目标检测—RCNN系列

工程应用中,检测算法以one-stage算法yolo系列等为主,因为one-stage通常来说速度快,可以完成良好的实时检测。 本文回顾的是two-stage算法:RCNN系列 One-stage and two-stage: one-stage: 直接回归物体的类别概率和位置坐标值(无region pr...

weixin_44768052的博客 4962

【目标检测】RCNN系列

前言

Daycym的博客 1238

R-CNN、Fast RCNN和Faster RCNN网络介绍

R-CNN、Fast RCNN和Faster RCNN网络介绍

chase 7663

目标检测——RCNN与YOLO系列

目标检测——RCNN与YOLO系列

a264672的博客 1万+

大话目标检测经典模型(RCNN、Fast RCNN、Faster RCNN)

目标检测是深度学习的一个重要应用,就是在图片中要将里面的物体识别出来,并标出物体的位置,一般需要经过两个步骤: 1、分类,识别物体是什么 2、定位,找出物体在哪里 除了对单个物体进行检测,还要能支持对多个物体进行检测,如下图所示: 这个问题并不是那么容易解决,由于物体的尺寸变化范围很大、摆放角度多变、姿态不定,而且物体有很多种类别,可以在图片中出现多种物体、出现在任意位置。因此,目标检测是一个比较复杂的问题。 最直接的方法便是构建一个深度神经网络,将图像和标注位置作为样本输入,然后经过CNN网络,再.

qq_33287871的博客 1723

RCNN系列论文:深度学习目标检测技术演进

htmltable {th, td {th {pre {简介:RCNN系列论文在计算机视觉领域标志着目标检测技术的重大进步,通过四篇具有里程碑意义的论文介绍了一系列模型:RCNN、Fast R-CNN、Faster R-CNN及Mask R-CNN。这些模型通过逐步的技术改进,显著提高了目标检测的速度和准确性。

weixin_35755562的博客 958

目标检测总结:RCNN系列(1)

目标检测总结:RCNN系列(1)RCNNSPP-NETSPPnet用于目标检测Fast RCNN 之前主要是回顾了常见的卷积神经网络,下面开始回顾目标检测相关的算法。首先RCNN系列说起。 RCNN RCNN算法主要包括两部分部分:1.region proposal 生乘候选框,2.对选出的region proposal进行特征提取。 region proposal:图像中物体可能存在的区域应该...

Tianlock的博客 531

QGIS三维地形可视化实战:从DEM数据到炫酷3D场景(附Qgis2threejs插件配置)

本文详细介绍了如何利用QGIS和Qgis2threejs插件,将DEM数据转化为交互式三维地形场景的完整工作流。核心内容包括DEM数据准备、坐标系选择(重点对比WGS 84与UTM的差异及影响)、插件核心参数配置、卫星影像与等高线叠加等进阶技巧,并提供了成果导出与常见问题解决方案,帮助用户高效创建可用于网页展示的炫酷3D可视化成果。

mqtt6iot的博客 875

目标检测RCNN系列算法学习笔记

目标检测RCNN系列算法学习笔记 主要内容有: RCNN SPP Fast RCNN Faster RCNN Mask RCNN 最近在室里面交流会上做了个目标检测算法的ppt,所以拿出来做个记录。 发展综述 2018年发展我更倾向于Kaiming He的全景分割,但是这是一种全新定义的场景任务,所以没有写到上面。还有YOLO、SSD以及最近看的FPN打算写在另一篇博客当...

栗子酱11的博客 532

E4A蓝牙APP开发实战:从零到一构建简易物联网控制终端

本文详细介绍了使用E4A(易安卓)开发蓝牙APP的实战教程,从零开始构建简易物联网控制终端。通过E4A的中文编程环境和内置蓝牙组件,开发者可以快速实现智能家居控制、创客项目遥控等功能。文章涵盖硬件准备、开发环境搭建、核心代码解析及典型应用场景,特别适合零Java基础的电子爱好者入门蓝牙APP开发。

weixin_42715608的博客 475

Buck-Boost电路

前面我们学习了降压的Buck电路 (左图) 和升压的Boost电路 (右图),那么如果我们把Buck电路和Boost电路结合一下会发生什么情况? 我们尝试着画一下: 我们用Buck电路作为输入,然后用Boost电路进行调整,最后输出。因此Buck电路中的负载、Boost电路的电源都可以删掉。得到下图: 由于Buck电路中的C2的作用是在输出的时候滤波,这个功能已经由Boost电路中的C1实现了,因此可以删除Buck电路中的C2电容。得到下图: 这里两个电感处于串联状态,可以合二为一,得到下面的电路:

wangeil007的博客 4万+

目标检测之RCNN系列浅析

对目标检测的深度学习算法也不是很熟,这方面都快被大牛们写烂了,这里仅根据近期自己的理解小记一下,如有偏颇望不吝指正。 RCNN(Regions with CNN features)系列是由RossB.Girshick于2014年提出,基于CNN良好的特征提取及分类性能,通过region proposal实现目标检测。 首先上一张图,rcnn艰辛的进化历程,至于yolo,ssd后面再续吧...

hanzhangliu_lkzy的博客 562

HDMI与DisplayPort混搭方案:如何用Xilinx Video PHY Controller实现多协议视频接口转换

本文详细解析了如何利用Xilinx Video PHY Controller IP核实现HDMI与DisplayPort协议转换,涵盖混合视频接口架构设计、GT收发器动态重配置策略及跨协议时钟域处理方案。通过实战案例和配置技巧,帮助开发者构建高性能多协议视频转换系统,适用于医疗影像、工业控制等场景。

weixin_30776273的博客 447

目标检测之RCNN系列之SPPNet

目标检测之RCNN

朴素.无恙的博客 399

嵌入式工程师必学(52):储能系统ESS

能量存储系统(ESS,Energystoragesystems)存在于各种各样的尺寸、形状和技术中。储能系统的技术,即基本的储能机制,自然会影响其重要特性,包括成本、安全性、性能、可靠性和寿命。然而,尽管基础技术很重要,但一个成功的储能项目依赖于对该技术的彻底和深思熟虑的实施,以实现项目的目标。成功的实施取决于储能系统的架构和组装情况。系统的体系结构可以决定其性能和可靠性,与它所使用的技术一致,甚至与之无关。

码农17年的博客 1443

Win7 x64位系统下几乎完美使用安装RTX3050 6G显卡驱动详细教程

RTX3050 6G显卡驱动安装指南:由于该显卡发布时间晚于驱动,需手动修改安装文件。首先在NVIDIA官网下载驱动并解压,通过设备管理器获取硬件ID(PCI\VEN_10DE&DEV_2584),然后在解压目录的.inf文件中添加对应的设备标识。安装完成后可能出现设备管理器感叹号问题,推荐通过命令提示符启用测试模式(bcdedit /set testsigning on)解决,此方法无需每次启动按F8,但会显示测试模式水印。文中提供了详细的图文操作步骤和两种解决方案。

m0_67194883的博客 2892

2D目标检测:RCNN系列文章

Rich feature hierarchies for accurate object detection and semantic segmentation 要解决的问题 利用深度网络对目标进行定位,利用少量带注释的检测数据训练大容量模型。 ...

qq_35970322的博客 430

数据分享|1961-2017年中国0.25°×0.25° 逐日地表水文数据集(VIC-CN05.1)

其中,全球径流中心(University of New Hampshire and Global Runoff Data Centre, UNH/GRDC)的复合产流场集成了观测的河道径流和水量平衡模式模拟的地表和地下径流,常被用来评估模拟的径流。在长白山、海北灌丛和千烟洲通量站,模拟与观测的逐月潜热通量的平均NSE为0.61。VIC-CN05.1受益于较准确的大气驱动场、先进的地表水文参数化方案以及更真实丰富的土壤信息,可作为中国水文气象研究的参照数据,用于陆面模式的评估和长期的趋势分析等。

J_Giser的博客 1833

目标检测:RCNN系列总结

RCNN系列 1)RCNN 候选框提取:使用selective search来提取类别独立的object proposals 特征提取:使用一个预训练的模型进行finetune。由于在ImageNet上预训练模型输出是1000类,而VOC只需要21类(加上后景),因此需要替换掉最后一层。将SS提取的候选框统一到同一size放入网络进行finetune,候选框跟ground truth box的...

Nick Hwong's Blogs 342

5.4 GTT BO的内存分配分析

本文分析了AMD GPU驱动中的GTT技术实现。GTT作为GPU页表,负责管理主机内存与GPU虚拟地址的映射,支持大容量内存访问和统一寻址。文章详细介绍了GTT的核心数据结构amdgpu_gtt_mgr、初始化流程,以及BO(Buffer Object)创建时GTT区间的分配与释放机制。GTT管理通过TTM框架实现分层设计,提供内存统计、兼容性检查等接口,并支持动态迁移、多进程隔离等高级特性。该机制为AMD GPU提供了高效灵活的内存管理基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3738

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【目标检测】YOLOv3手动实现Pytorch代码全流程详解 RCNN、YOLO系列

目标检测概述 之前的MTCNN实现了单类多目标的高效检测,而现实中更普遍的任务是多类多目标检测。 目标检测可划分为3个发展阶段: 传统的目标检测 区域选择:滑动窗口 特征提取:Harr、SIFT、HOG等特征提取算法 分类器:如常用的SVM模型 基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余; 手工设计特征费时费力,且对于多样性的变化没有很好的鲁棒性。 基于Region Proposal的深度学习目标检测算法 使用 region proposal+CNN 代替传统目标检测使用的 滑动窗口+手

不佛的博客 7451

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: Softmax的理解与应用
下一篇: Tensorflow中的dynamic shape、static shape及reshape、set_shape
class_brick
博客等级 码龄12年 223粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值