二阶段目标检测介绍

这篇具有很好参考价值的文章主要介绍了二阶段目标检测介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二阶段目标检测算法(RCNN 家族)是目标检测中最经典的算法之一,有 R-CNN -> Fast R-CNN -> Faster R-CNN,每一代的变化以及目的性都明确,也是目标检测领域二阶段检测必会的算法之一。

如果想对目标检测有更多了解请查看【CV算法恩仇录】目标检测合集。

深度学习在目标检测应用

R-CNN 算法在 2014 年提出,可以说是历史性的算法,将深度学习应用于目标检测领域,相较于之前的目标检测方法,提升多达 30% 以上,大大提高了目标检测效果,改变了目标检测领域的研究方向。

早在 2010 年,深度学习已经初露锋芒,为什么在 2014 年目标检测才可以说正式应用深度学习技术呢?

这要从目标检测的场景以及目的上来分析。将问题简化一下,假设现在在做猫和狗的检测,要从图片中找到猫和狗的位置并且知道是什么分类。对于人工智能问题,往下细分可以分到 2 个方向,分类问题和回归问题。识别一张图片是猫还是狗是比较容易的事情,也可以准确的说是分类问题。

但是寻找到图片中不确定是否含有以及不确定具体数量的猫和狗的具体位置,这样的一个问题算作哪个类别呢?分类和回归问题都不好往上面靠,下面再把问题拆分一下。

目标检测中的分类与回归问题

假设,现在已经有框框了,如图 1 所示,根据 4 个检测框内是否包含狗做分类,包含待检测目标越完整、背景越少则概率越高,下图中显然蓝色更加合适。

二阶段目标检测介绍
用蓝色的检测框来代表检测的物体还有个问题,就是这个框还有些许的偏差,离“完美”的检测框还是有一些距离,下面可以对我们的检测框进行矫正回归,如图 2 所示。白色的框是“完美检测框”,我们希望蓝色的检测框向白色的检测框从形状和位置上靠近,在某些特殊条件下,这种变换满足线性的变化,将边框的矫正问题转变成一个回归问题。

二阶段目标检测介绍
现在目标检测问题得到了解决,前提是已经存在可能存在待检测物体的预选框,剩下的问题是如何产生这些预选框。

R-CNN 算法就是采用上面所述的解决思路,采用的是选择性搜索(Selective Search)算法来选择预选框。

选择性搜索 (Selective Search) 提取候选区域

选择性搜索 (Selective Search) 是对上文中的选择区域过程进行的一个优化。Selective Search 算法在 13 年提出,这个算法其实是借鉴了层次聚类的思想,将层次聚类的思想应用到区域的合并上面。

首先使用 Felzenszwalb 等人在其论文“Efficient Graph-Based Image Segmentation ”中描述的方法生成输入图像的初始子候选区域。

然后将较小的相似区域递归组合为较大的相似区域。这里使用贪婪算法将相似的区域组合成更大的区域。

所谓贪婪算法就是从一组区域中,选择两个最相似的区域,将它们合并为一个较大的区域,重复上述步骤进行多次迭代,直至数量为我们想得到的候选区域数量。

选择性搜索的思想是基于图像中物体可能具有某些相似性或者连续性,因此采用子区域合并的方法进行提取候选边界框,合并过程根据子区域之间的颜色、纹理、体积等相似性进行区域合并,最后合并成我们想要的数量,然后再对子区域做外切矩形,得到的矩形就是候选区域。

二阶段目标检测介绍

R-CNN:Region with CNN feature (Region proposals + CNN)

R-CNN 算法流程可以分为 4 步:

  • 使用选择性搜索 (Selective Search) 从图像中提取 1k-2k 个区域,将其称为候选区域。

  • 将这 2000 个大小可能不同的候选区域处理成固定大小 (227,227),然后输入到卷积神经网络中做图像特征提取,生成 4096 维特征图作为第二步输出。

  • 将特征图输入到一组 SVM 中,对候选区域是否存在要检测的目标进行分类,每个 SVM 都是一个二分类器,负责判断是否是存在某一个类 (yes/no),也就是说有多少个分类就有多少个SVM分类器。

  • 除了预测候选区域内是否包含检测目标,该算法还预测四个值,这些值是偏移值,以提高边界框的精度。

二阶段目标检测介绍

统一候选区域尺寸

通过前面的内容,可以在图片中找出想得到的候选区域,这个候选区域不一定都是同样的大小,如果进行简单的缩放到同一尺寸,会造成不同的拉扯程度,同一张图片选出的候选框进行了不同程度的变形会对结果造成影响。

选择性搜索最终产出的是矩形,论文中对矩形的缩放尝试了两种方式:各向同性缩放、各向异性缩放。

二阶段目标检测介绍

上图 5 中 B 列,直接在原始图片中,把边界扩展延伸成正方形,然后再进行裁剪;如果已经延伸到了原始图片的外边界,那么就用候选框中的颜色进行填充;C 列,先沿边框进行剪裁,然后用固定颜色填充成正方形,这个固定颜色为候选框内颜色均值;D 列方法很简单,不管候选区域的宽高比,直接进行缩放。

在此基础上,作者还尝试了加入 padding 处理,示意图中第一、三行是使用了padding=0 的效果,第二、四行使用了 padding=16 的效果。经过测试发现,使用各向异性缩放结合 padding=16 的精度最高,使 mAp 提高了 3 到 5 个百分点。

在网络结构方面,R-CNN 对比现在流行的网络显得略微“单薄”。方案选择上面有 2 个选择:Alexnet 与 VGG16。从表现来说 VGG16 的表现效果会更好一些,VGG16 有较小的卷积核以及较小的步长,泛化能力更强,但是计算量是 Alexnet 的 7 倍。

Fast R-CNN:Towards Real-Time Object Detection with Region Proposal Networks

站在现在的目标检测技术角度去看 R-CNN,可能会觉得这个模型表现的并不是很好,设计的也不够合理,但是在当时 R-CNN 将深度学习引入检测领域,一举将 PASCAL VOC 上的检测率从 35.1% 提升到 53.7%。

R-CNN 也存在着非常大的问题,首先三个模型在训练的方面会是个比较大的挑战,其次也是最主要的就是效率问题,计算 Region Proposals 和 features 平均所花时间:13s/image on a GPU;53s/image on a CPU。最后 2000 个左右的候选区域都需要经过网络处理,这就大大的加大了计算代价。

已经定位了 R-CNN 的计算瓶颈,那么解决方法也就应运而生,R-CNN 的同一作者解决了R-CNN 的一些缺点并提出了新的算法,该算法称为 Fast R-CNN。

Fast R-CNN 算法发表于 2015 年,在同样使用VGG16 网络作为 Backbone 的情况下,与 R-CNN 相比训练速度快 9 倍,推理时间快了 200 多倍,在 Pascal VOC 数据集上准确率也从 62% 提升到了66%。

整体思路类似于 R-CNN 算法,与之不同的是,不再用候选区域选出来再传入网络中,Fast R-CNN 将输入图像直接提供给 CNN 结构来生成卷积特征图,在原图中使用 SS(Selective Search) 算法提取候选区域,映射到特征图上形成特征矩阵,这样看似简单的调整顺序,从需要对 1k-2k 张图像提取特征变成只需要对一张图像提取特征,极大的减少了执行时间。但是新的问题也出来了,对特征图进行预选区域选择后产出的“小特征图”大小不一,无法一下放入网络中进行处理与预测。Fast R-CNN 借鉴了 SPP Net 的设计来解决这个问题。

SPP:Spatial Pyramid Pooling(空间金字塔池化)

SPP-Net 是出自 2015 年发表在 IEEE 上的论文:《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》,SPP 是其中核心的设计。

CNN 一般都有卷积部分和全连接部分,其中,卷积层不需要固定尺寸的图像,而全连接层是需要固定大小的输入。

所以当全连接层面对各种尺寸的输入数据时,就需要对输入数据进行 crop(crop 就是从一个大图扣出网络输入大小的 patch,比如 227×227),或 warp(把一个边界框 bounding box 的内容 resize 成 227×227)等一系列操作以统一图片的尺寸大小,比如 224×224(ImageNet)、32×32(LenNet)等。

在 R-CNN 中,因为取出的区域大小各自不同,所以需要将每个 Region Proposal 缩放(warp)成统一的 227x227 的大小并输入到 CNN。但 warp/crop 这种预处理,导致的问题要么被拉伸变形、要么物体不全,限制了识别精确度。如图 6 所示,原本“瘦高”的灯塔,warp 之后体型“发福”了。

二阶段目标检测介绍

SPP Net 开拓了新的思路,原来的思路是在进入 CNN 中之前,将图像统一尺寸,而 CNN 本身可以适应任何尺寸,那么何不尝试在 CNN 结构之后再加入某种结构使后面的全连接层可以接收到固定的输出呢?

下图便是 R-CNN 与 SPP Net 检测流程的对比:

二阶段目标检测介绍

在卷积结构与 FC 层之间介入金字塔池化层,保证传到下一层全连接层的输入固定。换句话说,在普通的 CNN 结构中,输入图像的尺寸往往是固定的(比如 224×224 像素),输出则是一个固定维数的向量。SPP Net 在普通的 CNN 结构中加入了 ROI 池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。

Fast R-CNN 中的 ROI ooling

Fast R-CNN 使用 ROI Pooling 结构将 CNN 结构输出统一成 7×7 的结构,这个过程并不复杂,如图 7 所示,左面假设是特征图(为了可视化使用图像代替),将特征图分成 7×7 的 49 份,对每一份使用 max pooling 得到 7×7的 结构,图中使用一个 channel 数据示例,实际计算中对每个 channel 做如下处理。

二阶段目标检测介绍

在训练过程中,并不是所有 SS 算法获取的候选框都被使用,相对于选择的 1k-2k 个候选框,只需要其中的一小部分, 从中选择正样本和负样本,正样本指包含需要检测的目标,而负样本不包含需要检测的目标,也就是背景。

为什么要分正样本与负样本,对于选择出的 1k-2k 个候选区域,绝大部分只会有很小的一部分里面包含需要检测的物体,大部分都是背景,如果全部使用包含图像的样本进行训练,会对网络产生不好的影响。区分正负样本的条件是与 GT 的 IOU 大于 0.5 的为正样本,反之为负样本。

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Faster R-CNN的设计思路

经过前面两个网络的积累 (Fast R-CNN 与 R-CNN),Ross B.Girshick 在 2016 年提出了新的改进版算法 Faster R-CNN,尽管 Fast R-CNN 已经对 R-CNN 的速度进行了大幅度的优化,但是在其结构中还是有明显的瓶颈,Fast R-CNN 的整体结构并不紧凑,先使用卷积神经网络结构进行特征提取,筛选候选区域再进行预测。

在 Faster R-CNN 中,引入了 Region Proposal Network(RPN),RPN 网络与检测网络共享完整的图像卷积特征,从而大大降低了 region proposal 的代价。 RPN 是一个 FCN 结构的网络,可以同时预测每个位置上的对象范围和对象得分。RPN 网络不是单独的网络而是融合在整个网络之中,这样更容易训练出好的效果。

二阶段目标检测介绍

更多关于RPN的内容,去【CV算法恩仇录】中查看

代码结构

除了 RPN 结构,Faster R-CNN 与 Fast R-CNN 结构一致,这里不再过多的介绍基础,在前期对 Faster R-CNN 有初步的认识即可,下面给出 Faster R-CNN 实现的代码结构图。

二阶段目标检测介绍文章来源地址https://www.toymoban.com/news/detail-457425.html

到了这里,关于二阶段目标检测介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目标检测——SSD模型介绍

    PriorBox层先验框的生成方法 loc的预测结果

    2024年02月16日
    浏览(38)
  • 【目标检测】IOU介绍

    IOU全称Intersection over Union,交并比。 IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量。 在目标识别中,我们的预测框与实际框的某种比值就是IOU 这是IOU的计

    2024年02月05日
    浏览(37)
  • 目标检测简要介绍

    目标检测是计算机视觉领域的一项重要任务,其目的是在图像或视频中自动识别和定位特定目标。本教程将介绍目标检测的基础知识和常用算法,旨在帮助读者快速掌握目标检测的核心概念和实现方法。 目标检测基础知识 图像表示和处理 目标检测的定义和分类 目标检测的评

    2024年02月01日
    浏览(40)
  • 【3D目标检测】KITTI数据集介绍

    KITTI数据集很大,包括了很多任务,使用的训练样本7481个,测试样本7518个。但测试样本我们是不可见的,所以一般将将7481个训练样本划分为3712与3769分别作为训练集和测试集。 下载部分参考:OpenPCDet——环境配置和训练测试(升级系统、Nvidia驱动、cuda11.3、cudnn8.2) 具体解释

    2023年04月15日
    浏览(52)
  • 【DOTA】目标检测数据集介绍与使用

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog DOTA 数据集简单介绍 1.1 简介 数据集包含来自不同的传感器和平台的航拍图。每张图像的像素尺寸在 800 × 800 到 20,000 × 20,000 之间,其中包含不同大小、方向和形状的物体。 时间 类别 图片数 实例

    2024年02月16日
    浏览(34)
  • [数据集][VOC][目标检测]河道垃圾水面漂浮物数据集目标检测可用yolo训练-1304张介绍

    数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1304 标注数量(xml文件个数):1304 标注类别数:1 标注类别名称:[\\\"trash\\\"] 每个类别标注的框数: trash count = 1386 数据集详细介绍: [数据集介绍][目标检测

    2024年02月05日
    浏览(58)
  • (1)VisDrone无人机目标检测数据集介绍

    官网:http://aiskyeye.com/ VisDrone数据集,包含了10个类(即行人、人、汽车、面包车、公共汽车、卡车、汽车、自行车、遮阳三轮车和三轮车) 无人机计算机视觉相关检测和跟踪( Vision Meets Drones)作为近年来的研究热点之一,受到了广泛关注,这两年在各大会议上都有相关文章

    2024年02月11日
    浏览(39)
  • 简要介绍 | OOD目标检测:背景,研究现状,挑战和未来

    在计算机视觉领域,目标检测任务一直是研究的热点。然而,大多数现有的目标检测方法在面对 开放环境中的未知类别 (Out-Of-Distribution, OOD)时性能表现不佳。本文将探讨OOD目标检测的背景、研究现状、挑战和未来。 目标检测方法通常在 训练集 上学习,然后在 测试集 上进

    2024年02月08日
    浏览(37)
  • 【DIOR | DIOR-R】(旋转)目标检测数据集介绍

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog DIOR DIOR-R 数据集介绍 论文: DIOR论文 DIOR-R论文 数据集: 1. https://drive.google.com/drive/folders/1UdlgHk49iu6WpcJ5467iT-UqNPpx__CC 2. https://pan.baidu.com/s/1iLKT0JQoKXEJTGNxt5lSMg? at =1681367336560#list/path=%2F 说明: 数据是一样

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包