目标检测——YOLO系列(一网打尽)


友情提示:参考文献中附有原论文地址

1. 基本概念

目标检测(Object Detection)是在图像中对一类或多类感兴趣的目标进行查找和分类,确定它们的类别和位置。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域具有挑战性的问题。

计算机视觉中关于图像识别有四大类任务:

(1)分类(Classification):解决“是什么”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。

(2)定位(Location):解决“在哪里”的问题,即定位出这个目标的的位置。

(3)检测(Detection):解决“在哪里,是什么”的问题,即定位出这个目标的位置并且知道目标物是什么。

(4)分割(Segmentation):分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

因此,我们可以发现目标检测网络是一个多任务的网络,它不仅要进行一个分类还要进行定位回归,如下图1所示。

在这里插入图片描述

图1 图像识别

目标检测中需解决的问题:

(1)分类问题:即图片(或某个区域)中的图像属于哪个类别。

(2)定位问题:目标可能出现在图像的任何位置。

(3)大小问题:目标有各种不同的大小。

(4)形状问题:目标可能有各种不同的形状。

2. 目标检测算法分类及流程

2.1 算法分类

近年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region ProposalR-CNN系列算法(R-CNNFast R-CNN, Faster R-CNN等),它们属于two-stage算法,需要算法先产生目标候选框,也就是目标位置,然后再对候选框做分类与回归。而另一类是YOLOSSD这类one-stage算法,其仅仅使用一个主干卷积神经网络CNN直接预测不同目标的类别与位置。第一类方法是识别精度较高,但是速度慢,第二类算法是速度较快,但识别精度较低,如下图2所示。

在这里插入图片描述

图2 目标检测算法

2.2 基本流程

传统的目标检测流程如下图3所示。首先输入图像,然后通过输入候选框,对候选框进行特征的提取,再利用分类器对候选框进行判断属于目标还是背景,最后利用非极大值抑制对候选框进行合并,删除冗余的候选框,最终得到目标输出的结果。

在这里插入图片描述

图3 传统目标检测流程

基于深度学习的Two-stage的目标检测算法流程如图4所示。将候选框、特征提取和分类器判断通过RPN网络来完成候选框的推荐,取代手动设计特征滑动窗口的方式。
在这里插入图片描述

图4 Two-stage目标检测算法流程

基于深度学习的One-stage的目标检测算法直接采用特征提取与回归的方式对感兴趣目标区域进行提取,如下图5所示。
在这里插入图片描述

图5 One-stage目标检测算法流程

传统的目标检测算法与基于深度学习的目标检测方法的区别主要取决于是否采用手动设计特征的方式还是采用卷积神经网络的方式

2.3 Two-stage与One-stage基本流程比较

Two-stage网络中,Img为输入的图像,Conv&Pooling为深度卷积神经网络,不代表只有一个卷积层,而是代表主干基础网络(如GooleNetResNet等)。通过主干网络进行深度特征的提取,再将输出的特征图(Feature Map)经过RPN网络完成原有通过滑动窗口完成的任务,即产生候选区域。候选区域提取的同时完成区域分类的任务,区分是背景还是目标,还会对目标位置进行初步的预测,即区域分类和位置粗修两个环节,在得到候选框后,后续会进一步精确地定位。Roi_Pooling层可以理解为一个抠图的过程,得到候选框特征后再通过全连接FC层对特征进行表示,最后通过分类与回归完成对候选目标位置的分类和精修,Lcls识别出目标的种类,Lreg得到目标的位置坐标。在One-stage中,通过输入图像Img,然后主干网络进行深度特征的提取,接着直接进行区域的回归与分类,完成目标检测任务。

在这里插入图片描述

(a) Two-stage基本流程

在这里插入图片描述

(b) One-stage基本流程
图6 Two-stage与One-stage基本流程比较

3. YOLO系列目标检测模型

3.1 YOLO v1

3.1.1 基本思想

YOLOYou Only Look Once)是继RCNNFAST-RCNNFASTER-RCNN之后,Ross Girshick针对深度学习目标检测速度问题提出的另一种框架,其核心思想是将整张图片作为网络的输入(类似于Faster-RCNN),直接在输出层对Bounding Box的位置和所属类别进行回归

基于Region ProposalR-CNN系算法首先需要产生大量可能包含待检测物体的先验框, 然后用分类器判断每个先验框对应的边界框里是否包含待检测物体,以及物体所属类别的概率或者置信度,同时需要后续处理修正边界框,最后基于一些准则过滤掉置信度不高和重叠度较高的边界框,进而得到检测结果。这种基于先产生候选区再检测的方法虽然有相对较高的检测准确率,但运行速度较慢。YOLO创造性的将物体检测任务直接当作回归问题(regression problem)来处理,将候选区和检测两个阶段合二为一。只需一眼就能知道每张图像中有哪些物体以及物体的位置。下图展示了各网络目标检测流程简图。

在这里插入图片描述

图7 各网络目标检测流程简图

实际上,YOLO并没有真正去掉候选区,而是采用了预定义候选区的方法,也就是将图片划分为7*7个网格,每个网格允许预测出2个边框,总共49*2bounding box,可以理解为98个候选区域,它们很粗略地覆盖了图片的整个区域。YOLO以降低mAP为代价,大幅提升了时间效率。

在这里插入图片描述

图8 图像网格划分产生候选框

图8是将一幅图像划分为7*7(S×S)个网格,其中的红点代表的是Ground Truth,即物体的中心,包含有Ground Truth的格子用来预测狗这个目标,橙色的这个格子在训练过程中是用来预测外面包含狗的这个红色Bounding Box的,而绿色和白色的格子在训练过程中仅作为分类的依据,并不参与狗的这个Bounding Box的预测。

每个格子用来预测B个Bounding Box及其置信度,以及C个类别的概率,其中每个Bounding Box包含 [ x , y , w , h , c ] [x,y,w,h,c] [x,y,w,h,c] 5个参数新, ( x , y ) (x,y) (x,y)坐标表示中心点相对于网格的偏移量,宽度 w w w和高度 h h h是相对于整张图像预测的比例,置信度 c c c预测表示预测框与实际边界框之间的IOU。因此,每幅图像所输出的向量长度为 S × S × ( 5 × B + C ) S×S×(5×B+C) S×S×(5×B+C),如图9所示。置信度分数反映了该模型对框是否包含目标的可靠程度,以及它预测框的准确程度。置信度定义为:

P r ( O b j e c t ) ∗ I O U p r e d t r u t h , 其 中 P r ( O b j e c t )

  • 20
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值