本文主要介绍YOLOv2的原理,以及相关tricks,
目标检测是识别图像中的所有对象以及它们的类标签和边界框的任务。包括效果比较好的网络,SSD,YOLO,fasterCNN,retinanet等网络,按照目标检测分类可以分为one stage网络和two stage网络,这里我们介绍one stage网络YOLOv2, 它是目标目标检测中相对来说运行比较快的网络。
下面是YOLOv2的网络结构:链接
Yolo v2: You Only Look Once
如下一张图片,我们需要分别出人和自行车以及电视机,并将其使用框进行框出。
对YOLO算法,我们需要将图片分为NXN的方格,这里为13x13
在每个方格,Yolo网络(下面讨论)预测了5个不同纵横比的框,如下图。
对于每个框,Yolo网络预测其在方格内的中心位置、框的宽度、高度、图像的宽度、高度和该框中有任何物体的置信度,以及属于每一个M类的概率。
然而,并不是每个边界框都有一个对象。根据这些预测,要找到最后的边框,我们需要执行以下两个步骤:
- 删除没有对象的边框。删除预测信任分数低于0.24阈值的边界框
- 在有对象的框中,通过非极大值抑制的方法移除具有相同对象的冗余的框
Yolo v2: 网络结构
和YOLOv1相比v2更新了backbone,使用的darknet19网络,主要改进是使用1x1代替了全连接层,让特征图的每个位置共享参数,然后利用卷积核输出更多的特征,你补参数组合的多样性。darknet19和YOLOv1的backbone相比参数更少,运行速度更快,效果也比较好。darknet结构如下图所示:
下面主要介绍下YOLOv2和v1相比的一些改进以及相关tricks。
如上图所示为相关tricks。
(1)Batch Normalization
作者使用batch normalization可以减少网络的过拟合,起到正则化的效果。在网络中每个卷积层后面都添加了batch normalization,并使网络效果有了加大提升mAP提升了2.4%.效果还是挺明显了。
(2)High Resolution Classifier
在训练网络时作者使用了更高的分辨率的图片。将原来的224*224的图像改为448*448图像,使网络的mAP提升了4%.(3)Convolutionlal With Anchor Boxes
在检测模型中,YOLOv2不是采448*448图片作为输入,而是采用416*416大小。因为YOLOv2模型下采样的总步长为32,对于416*416大小的图片,最终得到的特征图大小为13*13,维度是奇数,这样特征图恰好只有一个中心位置。对于一些大物体,它们中心点往往落入图片中心位置,此时使用特征图的一个中心点去预测这些物体的边界框相对容易些。所以在YOLOv2设计中要保证最终的特征图有奇数个位置。YOLOv2使用了anchor boxes之后,每个位置的各个anchor box都单独预测一套分类概率值。使用anchor boxes之后,YOLOv2的mAP有稍微下降(0.2%),YOLOv2的召回率大大提升,由原来的81%升至88% (4)Fine-Grained Features
|