1 目标检测概述
1.1目标检测
目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置
计算机视觉中关于图像识别的四类任务
分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。
检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的
基于深度学习的两类目标检测算法分类
(1)One Stage
(经过1个CNN模型即可直接得到最终的检测结果(创新点)包含物体的类别概率和位置坐标值)
“一步法”核心理念:在原图上进行密集抽样,产生大量的Bouding box,然后进行分类和回归。
不用RP,直接在网络中提取特征来预测物体分类和位置。
任务流程:特征提取–> 分类/定位回归。
常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。
(2)Tow Stage
先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。
任务流程:特征提取 –> 生成RP –> 分类/定位回归。
常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。
1.2目标检测发展历程
2 YOLO V1 概述
2.1 基本结构
YOLOv1采用一个卷积神经网络,借鉴于GoogleNet,主要包含卷积层和最后的两层全连接层。YOLOv1的网络结构较为简单,且是大部分YOLO优化中最关键的部分。
模块一
核心思想
1:卷积神经网络最后一层卷积输出的特征图S×S,将其位置映射至原始图像,图像被分成S×S个网格(grid cell),
2:如果物体的Ground Truth(样本的标签)中心落在某个网格中,则这个网格就负责预测这个物体
(网格预测B个大小Bounding box,最终使用与Ground truth的IOU相对较大的Bounding box检测物体)
3:网格输出维度
(每个网格使用B(B=2)个Bbox进行回归预测,共产生5个值 置信度confidence,包含物体的可能性大小 回归坐标(x, y, w, h) 2)每个网格还要预测C个类别概率,以判断当前cell属于哪个类别C 因此,1个网格的输出维度是(5×B+C) S×S个网格,输出就是S × S×(5×B+C))
模块2
2.2 回归坐标
1:理解YOLO输出的Bbox框中的坐标xpre, ypre, wpre, hpre
Bbox框坐标(xpre, ypre, wpre, hpre)
xpre是模型预测框的中心点横坐标(原始图像坐标空间)
ypre是模型预测框的中心点纵坐标(原始图像坐标空间)
wpre是预测框宽度(原始图像坐标空间)
hpre是预测框高度(原始图像坐标空间)
*注意 xpre, ypre, wpre, hpre需要“规范化”至[0,1]
2:计算 x, y, w, h
3 YOLO V1 训练过程
3.1 训练过程
根据图片的标注GroundTruth边界框,与模型输出的7×7×30的预测结果与进行比较,计算loss和梯度,反向调整参数
3.2 训练样本
·
1:样本标签
图中蓝色、黄色、红色的框就是标注的GT框,类别是狗,自行车,汽车
中心点分别落在蓝色、黄色、红色阴影网格
如对于黄色网格来说,其中自行车的分类概率1,其余19个分类概率是0
在上图中,只有3个网格的分类概率得到确定【正例】;其余(49-3)个网格的分类概率是0【负例】
2:置信度Confidence
1个网格会使用2个Bbox回归预测,最终使用IOU较大的检测物体
3.3 损失函数(网络实际输出值与样本标签值之间的偏差)?????
YOLOv1使用一个联合的目标函数,包括定位误差、类别误差和置信度误差。这在YOLOv3将被更换。
4 YOLO V1总结
每个网格只预测2个Bbox,当物体的长宽比不常见,效果较差
小物体检测问题
原始图片只划分为7x7的网格,当两个物体靠的很近时,只能检测到一个物体