资讯详情

Paper Reading:A Survey of Deep Learning-based Object Detection

摘要 介绍了文章的大致思路和结构: 1.介绍,经典的目标检测算法,数据集 2.分析比较,包括一阶段和两阶段在内的各种目标检测算法 3.介绍、传统和新的应用,以及一些目标测试的其他分支 4.讨论用这些算法构建有效的系统,目标检测算法未来的发展方向 相关背景 目标检测是找出图像中所有感兴趣的物体,包括物体定位和物体分类,并确定物体的类别和位置。

传统的目标检测方法一般分为三个阶段: 1.在给定的图像上选择一些候选区域, 2.提取这些区域的特征, 3.使用训练分类器进行分类。 (1)区域选择:这一步是定位目标位置。例如,整个图像最早采用滑动窗口的策略,需要设置不同的尺寸和长宽比。 (2)特征提取:常用特征有 SIFT、HOG等。 (3)分类:根据第二步提取的特点对目标进行分类,主要包括分类器 SVM,AdaBoost 等。 基于深度学习的目标检测算法 目前主流的目标检测算法主要是基于深度学习模型,可分为两类: (1)One-Stage不需要目标检测算法Region Proposal阶,比较典型的算法有 SSD、YOLO、YOLOv2、YOLOv3和CornerNet; (2)Two-Stage目标检测算法将检测问题分为两个阶段,第一阶段产生候选区域(Region Proposals),包括目标的一般位置信息,然后在第二阶段对候选区域进行分类和位置细化,主要包括R-CNN以及它衍生的各种算法。 目标检测模型的主要性能指标是检测准确性和速度,主要考虑物体的定位和分类准确性。一般来说,Two-Stage算法在准确性有优势,One-Stage算法在速度上有优势。 Two-stage (基于候选区域的目标测试) R-CNN(2014年)CNN使用目标检测算法,效果远好于传统算法。思路和以前的传统算法还是差不多的,但是特征提取用了CNN。 R-CNN生成Proposals传统的方法是方法Selective Search,主要思路是通过图像中的纹理、边缘、颜色等信息对图像进行自底向上的分割,然后对分割区域进行不同每个生成区域都是候选人Proposal。选择性搜索(Selective Search )是典型的候选区域方法。算法原理如下:首先将每个像素作为一组。然后,计算每组的纹理,并将两两个最接近的组。这张图的第一行显示了如何增加区域,第二行的蓝色矩形代表了合并过程中所有可能的可能性 ROI。 R-CNN 利用候选区域的方法创建合同 2000 个 ROI。这些区域被转换成固定大小的图像,并分别发送到卷积神经网络。然后使用SVM对区域进行分类,用线性回归损失校正边界框,实现目标分类,获得边界框。 R-CNN 整个系统的流程图

Fast R-CNN(2015年):R-CNN许多区域相互重叠。如果我们有 2000 每个候选区域都需要独立馈送 CNN 中,那么对于不同的 ROI,许多特征可能需要重复提取。因此 R-CNN 训练和预测速度很慢。 直接使用cnn得到的特征图代替原图来检测目标 这样可以提高算法的运行速度。 这个想法有了很大的改进,即将整个图片输入到网络中,共享卷积层首先提取特征,然后切割图片,并使用它RoI Pooling统一二阶段的输入特征大小,大大提高了速度,除切割部分外,其他部分都连接在一起。Fast R-CNN 选择了 VGG16 中的卷积层 conv5 来生成 ROI该区域在相应的特征图上映射特征图块,用于目标检测任务。我们使用 ROI 池化将特征块转换为固定尺寸,并送到全连接层进行分类和定位。因为 Fast-RCNN 特征不会重复提取,可以显著减少处理时间。 Faster R-CNN(2015年,Fast R-CNN提出三个月后,何凯明等人提出):Fast R-CNN 选择性搜索取决于外部候选区域的方法。但这些算法是 CPU 速度很慢。Faster R-CNN 利用区域生成网络(Region Proposal Network,RPN)替换候选区域方法。 RPN 区域生成网络(RPN)输入前卷积网络的输出特征图,如VGG16的conv5特征图。它在特征图上滑动 3×3 卷积核是利用卷积网类别无关的候选区域。使用VGG如果网络提取特征,每个 3x3 该区域将获得一个512维的特征向量,然后发送到两个独立的全连接层,以预测边界框和两个目标分数(目标或非目标)。

对于特征图中的每个位置,RPN 会做 k 次预测。RPN 将输出 4×k 坐标和每个位置 2×k 个分。下图显示 8×8 还有一个特征图 3×3 执行卷积核运算,最终输出 8×8×3 个 ROI(其中 k=3)。下图(右)显示单个位置 3 候选区域。

Faster R-CNN 使用更多的锚点。它部署了 9 个锚点框:3 宽高比不同 3 不同尺寸的锚点框。使用每个位置 9 每个位置都会生成锚点 2×9 目标分数和 4×9 个坐标。 Mask R-CNN:Faster R-CNN在Instance Segmentation改进版增加了一个mask分支来完成mask任务。最重要的贡献之一是提出RoI Pooling的改进版ROIAlign,提高位置判断的精度。 One-stage one-stage相较于two-stage,牺牲精度来提高速度。 YOLO : 在一步中完成物体分类和定位。Yolo直接回到输出层bounding box的位置和bounding box从而实现所属类别one-stage。通过这种方式,Yolo每秒45帧的运行速度可以完全满足实时要求(每秒24帧,人眼认为是连续的)。CVPR发表于2016年的2015年Faster R-CNN,很容易想到,直接使用RPN或者类RPN分类,直接一次性给出判断结果。最直接的,把RPN二分类改为多分类, YOLO构建回归目标时,系列算法的主要区别之一是,如果将图像划分为SxS每个网格只负责检测目标中心点落入网格的物体;如果没有目标中心点落入网格,则为负样本。 单个检测器通常需要在精度和实时处理速度之间进行权衡。它们在检测太近或太小的目标时容易出现问题。在下图中,左下角 9 圣诞老人,但单个检测器只检测到 5 个。 YOLOv2:针对YOLO做了一些改进,卷积层前加BN层,使用DarkNet等等。 YOLOv3:在YOLOv以上改进, 调整网络结构;对象检测采用多尺度特征; 在预测对象类别时使用logistic取代了softmax。 网络架构 提取基本图像特征,YOLO v使用了称之为Darknet-53网络结构(包括52个卷积层和1个全连接层),借鉴残余网络residual network在某些层之间设置了快速链路(shortcut connections)。DarkNet-53 主要由 3 × 3 和 1× 1 卷积核和类似 ResNet 快捷链路构成。相比 ResNet-152,DarkNet 有更低的 BFLOP(10亿浮点数运算),但可以 2 倍速得到相同的分类精度。 每个残差组件有两个卷积层和一个快速链路。 金字塔网络的特点(FPN)——利用多尺度特征进行检测 在YOLO v三个不同尺度的特征图进一步用于对象检测。 结合上图,卷积网络在79层后,通过下面的个黄色卷积层获得一个尺度的检测结果。与输入图像相比,这里用于检测的特征图是下采样的32倍。例如,输入是416x如果是416,这里的特征图是13x13.由于采样倍数高,这里特征图的感觉野比较大,所以适合检测图像中尺寸较大的物体。 为了实现细粒度的检测,第79层的特征图开始采样(从79层到右),然后与第61层的特征图集成(Concatenation),通过这种方式,获得了第91层细粒度的特征图,并在几个卷积层后获得了相对输入图像16倍的采样特征图。它具有中等尺度的感觉领域,适用于检测中等尺度的对象。 最后,第91层特征图再次采样,并与第36层特征图集成,最终获得相对输入图像8倍的特征图。它的感觉是最小的,适合测试小尺寸的对象。 用不同尺寸特征图预测的网络称为特征金字塔网络(FPN),特征提取器旨在提高准确性和速度。 9种尺度的 anchor boxes 随着输出特征图数量和尺度的变化,需要相应调整先验框的尺寸。YOLO2已开始使用K-means聚类得到先验框的尺寸,YOLO3.延续这种方法,为每个采样尺度设置3个先验框,共9个尺寸的先验框。在COCO这9个数据集先验框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。 在最小13分配方面x大型先验框(116x90),(156x198),(373x326)适用于大型物体的检测。中等的26x中等先验框(30x61),(62x45),(59x119)适用于检测中等大小的对象。较大的52x在52特征图上(较小的感觉野)应用较小的先验框(10x13),(16x30),(33x23)适用于检测较小的对象。 感受9个先验框的大小,下图中蓝色框是聚类先验框。黄色框架ground truth,红框是对象中心点所在的网格。 输入图像,YOLO v3将其映射到3个尺度的输出张量,代表图像各个位置存在各种对象的概率。 看一下YOLO v三共进行了多少预测?对于一个416x416输入图像在每个尺度特征图的每个网格上设置3个先验框,共有 13x13x3 26x26x3 52x52x3 = 10647 个预测。每个预测都是一个(4 1 80)=85维向量,这个85维向量包含边框坐标(4个数值),边框置信度(1个数值),对象类别的概率(对于COCO有80个对象的数据集)。 对比一下,YOLO v2采用13x13x5 = 845个预测,YOLO v3的试验预测边框数量增加了10倍以上,并且不同的分辨率上进行,因此mAP并在一定程度上提高了小物体的检测效果。 SSD( Single-Shot MultiBox Detecto):YOLO的改进版,针对YOLO的不足,加入了多尺度的特征。SSD检测算法的网络结构如下图所示,其中Backbone为VGG网络,使用不同阶段不同分辨率的feature maps进行预测。 SSD系列检测算法在确定正负样本的时候通过交并比大小进行区分,当某一个Ground Truth的目标框与anchor的交并比最大且对应的交并比大于某一个阈值的时候,对应anchor即负责检测该Ground Truth,即每一个anchor最多负责一个物体的检测,同一个物体可能被多个anchor同时检测。 RetinaNet:损失主要包括分类损失(Cls Loss)和定位损失(Loc Loss),常见的损失组合主要有如下两种Cls Loss + Loc Loss(SSD系列算法)、Cls Loss + Obj Loss + Loc Loss (YOLO系列算法),其中YOLO系列算法相比于SSD系列算法多了Object Loss,即判断对应区域是否为物体的损失。 One-Stage目标检测算法的正负样本不均衡的问题比较严重,对于设计损失函数还会有一些针对创新。提出了Focal loss,解决one-stage里普遍存在的类别不平衡问题。 将原先训练 分类任务 惯用的 交叉熵误差在这里插入图片描述 改为 FL (focal loss) 即可。 focal loss的标准公式:

本质改进点在于,在原本的 交叉熵误差 基础上乘上 这一权重。 乘上了该权重,量大的类别所贡献的loss被大幅砍削,量少的类别所贡献的loss几乎没有多少降低。这样训练过程中量少的类别能得到平衡。

Mask R-CNN是继承于Faster R-CNN (2016)的,Mask R-CNN只是在Faster R-CNN上面加了一个Mask Prediction Branch (Mask 预测分支),并且改良了ROI Pooling,提出了ROI Align。

数据集&评估矩阵 早期的数据集:人脸识别、行人识别 通用数据集:PASCAL VOC、MS COCO、ImageNet-loc 通用目标检测算法分析 特征抽取(主干网络) 以FPN为代表(PFPNet、WeaveNet等),由于物体的大小差异,考虑从不同的层抽取信息来判别不同大小的物体。 另一个思路是从不同物体间的语义关系出发来帮助识别遮挡和小物体,个人理解总体来说就是把box之间的信息加入到网络中。(例如R-DAD中,作者把一个anchor再切成上下左右的子anchor,在整个anchor中再加入子anchor的信息,有利于重叠的box间的信息提取。还有一系列其他的文章,后续有需要和时间再细看) 再就是注意力机制,以及可变卷积等等。 提升位置精度 位置精度的衡量标准,主要是IoU。大部分的论文就围绕IoU做文章,一种是设计新的regression loss,在loss中考虑IoU;另一种是设计变种IoU。具体的,在Unitbox中使用-ln(IoU)作为loss代替regression的l2 loss,在Generalized Intersection over Union中,重新定义了一种新的IoU作为更合适的衡量标准。IoU-Net中提出在第一阶段新增一个输出来预测IoU,这样可以接入程度信息。 解决负样本的不平衡 two-stage方法在第一个阶段已经筛选了大量的anchor,故样本不平衡问题相对不大,而在one-stage中则没有。一般的方法有hard negative mining(OHEM)。也有许多其他的算法如Libra r-cnn等等用特定的抽样方法而不是随机抽样(IoU-balanced sampling)。 另一种就是Focal loss及其他的一些loss(Average-Precision loss),通过调整正负样本的loss值解决问题。 提升NMS方法 Relation network中用模型保留了一部分不使用NMS的框。在IoU-Net中使用IoU而不是类别的confidence作为选框依据。另外还有adaptive-NMS,soft-NMS、softer-NMS等等。 结合one-stage和two-stage 一般把是否有ROI作为one-stage与two-stage的判别标准,RefineDet及后续的AlignDet等。 复杂情况的处理 小物体及遮挡物体,许多是人脸识别或是行人识别的场景。有ssd及其变种,也有PGAN,tiny face等等。 尺度跨度太大的物体,一般有3种解决思路:原图缩放到不同尺度来训练,多种大小的filters,设置不同大小的anchor。 anchor-free 这两年挺多的anchor-free的论文,Fcos、Foveabox、CornerNet、CenterNet、Dubox等等,今年非常多~ training from scratch(不预训练) 用预训练模型可能会存在几个问题(如网络结构相对固定,不同场景存在差异等等),于是有DetNet、DSOD、ScratchDet等算法,以及何恺明的Rethinking等等的论文,开始去思考和探索如何设计网络来提升检测。 设计新结构 DetNet,新的backbone。以及Light-head r-cnn: In defense of two-stage object detector,解决两阶段算法的头部计算量太大问题。 加速 mobile等设备上的应用,需要实时高速的模型,故而有一系列的这方面的算法(一阶段的YOLO、SSD等等) 更快更准确 有一些结合one-stage与two-stage的工作;

应用与分支 人脸检测 Hyperface,Wasserstein cnn,Adaacos,ArcFace等等,详见Deep face recognition: A survey,详细介绍各种深度学习的人脸检测方法 行人检测 具体参看Computer vision and deep learning techniques for pedestrian detection and tracking: A survey 总结与展望 gpu等算力的发展,使得深度学习及目标检测成为可能。目标检测朝着更准、更快的方向发展,发展的方向有新的结构、新的特征提取、提升处理速度、从头训练、anchor-free、特定场景(小物体、遮挡物体)、one-stage与two-stage融合、NMS优化、正负样本不平衡、更准确定位、更准确分类等等。并且,目标检测在各领域(公共安全、军事、交通、医学、生活等等)的应用也越来越广泛和成熟。接下来是几个方向的展望: one-stage与two-stage融合 two-stage过程中有个比较耗时费力的选框过程(比如RoI Pooling和NMS)。而one-stage的准确率一直相对较差一些。如何结合one-stage与two-stage的优点(前者更快,后者更准)是一个挑战。 ps:如果我想更准一些,是否可以重新考虑stage?比如Cascade就是拉长stage的感觉。 视频目标检测 在视频目标检测中,运动模糊、视频散焦、运动目标模糊、目标运动剧烈、目标小、遮挡和截断等问题使得该任务在现实场景和遥感场景中难以获得良好的性能。深入研究移动目标和视频等更复杂的源数据是未来研究的重点之一。 高效的后处理方法 类似NMS之类的,对预测框的进一步处理的方法也对准确率有很大的影响。 弱监督目标检测 多领域目标检测 3D目标检测 显著目标检测(SOD) 无监督目标检测 多任务目标检测 多源信息辅助(比如文本信息) 终端目标检测系统 医学图像和辅助诊断 遥感目标检测 基于GAN的目标检测

标签: dubox系列连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台