yolov系列
基于候选框检测的R-CNN系列方法主要是通过region proposal产生大量的可能包含待检测目标的默认框 ,再用分类器去判断每个bounding box里是否包含有物体,以及物体所属类别的概率。YOLO将目标检测任务当做一个回归(regression)问题来处理,使用单个神经网络,直接从一整张图像来预测出 bounding box 的坐标以及 box 中包含目标类别的概率(class probabilities)。
一.yolov1
1.1yolov1的功能
输入一张图片,输出其中所包含的对象,以及每个对象的位置(包含该对象的矩形框)。
1.2yolov1的检测过程
(1)首先YOLOv1将输入图片分成 S x S 大小的网格;
(2)每个网格预测一个类别信息和 B 个 bounding boxes的信息:
注意:训练开始阶段,YOLO并没有预先设置B个bounding box的大小和形状,也没有对每个bounding box分别输出一个对象的预测。网络预测的bounding box可能都是乱来的,但总是选择IOU相对好一些的那个,随着训练的进行,每个bounding box会逐渐擅长对某些情况的预测。
类别信息:该网络内的目标预测为每个类别的概率,如果有C类,就是一个c维向量,
每个bounding boxes要预测坐标位置和一个confidence值:
坐标位置:(Center_x,Center_y,width,height)
confidence含有所预测的box中含有object的置信度和这个box预测有多准的两重信息:
表示box中含有object的置信度,
表示box与真实位置的IOU
注意:IOU是在训练阶段计算的,测试阶段不需要(也无法)计算IOU。
一个bounding box的置信度Confidence意味着它 是否包含对象且位置准确的程度。置信度高表示这里存在一个对象且位置比较准确,置信度低表示可能没有对象 或者 即便有对象也存在较大的位置偏差。
(3) 根据(2)可以预测出S x SxB个目标窗口,
每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
然后根据阈值去除可能性比较低的目标窗口;
(4)最后NMS去除冗余窗口即可。
1.3网络结构
网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。并且使用了大量的1x1的卷积用来降低上一层的layer到下一层的特征空间。最后输出层用线性函数做激活函数,最后输出层用线性函数做激活函数。
举例说明
注意:训练前最重要的一步,将标签decode到7×7×30的向量
在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。
输入与输出的映射关系:
输出的每一维上向量的内容:
1.4损失函数
损失就是网络实际输出值与样本标签值之间的偏差。
YOLOv1全部使用了均方差(mean squared error)作为损失(loss)函数。由三部分组成:坐标误差、IOU误差和分类误差。
其中代表第i个cell的第j个Bounding Box 对检测该物体负责。在论文的例子里,只有三个物体,因此只有3个该项为1;
而意味着存在对象的网格才计入误差,只有3。
对于相等的误差值,大物体误差对检测的影响应小于小物体误差对检测的影响。这是因为,相同的位置偏差占大物体的比例远小于同等偏差占小物体的比例。YOLO将物体大小的信息项(w和h)进行求平方根来改进这个问题,但并不能完全解决这个问题。
1.5优缺点
(1)优点
(1.1) 检测物体非常快:因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
(1.2) YOLO可以很好的避免背景错误,产生false positives:不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
(1.3) YOLO可以学到物体的泛化特征:当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。
(2)缺点
(2.1) YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
(2.2) YOLO容易产生物体的定位错误。
(2.3) YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。