paper: You Only Look Once: Unified, Real-Time Object Detection
slide:官方slide介绍,很详细
原理
7x7x(5x2+30)
维的数据。
5x2+20
,因为属于20个目标类别的概率是依赖于cell,而独立于bbox的loss函数
如何准备数据标签?如何训练?
训练数据是VOC的数据格式,只是在计算loss时会做编码处理
网络结构如下图
训练时原模型是ImageNet是预训练,然后增加多个1x1
的卷积层,并将尺寸扩大到448x448
测试时的网络输出是什么?
7x7x30
,依次存储的是每个cell的[x,y,w,h,c],最后的20位是分类的概率信息缺点?
与SSD的区别
4xKxMxN
)和confidence(CxKxMxN
)作为两个分支分别输出,而yolo v1是融合到一起了,即最后的输出reshape到30(5x2+20)
个SxS
的FM,对于每个位置,包括两个框的坐标和confidence,同时包括该cell的conditional class probabilitiespaper: YOLO9000: Better, faster, stronger
增加BN层: Better
High resolution classifier: Better
448x448
的分辨率上训练,然后再放到detection任务上微调(v1中,先在224x224
的图像上训练,再在448x448
的图像上微调)Multi-scale train: Better
Fine-grained feature: Better
13x13
,将前面26x26
的fm结合过来)Convolution with anchor box: Better
448x448
缩小为416x416
,以保证最后的feature map只有一个奇数中心点(因为网络是缩小32倍,前者最后的特征图是14x14
,后者是13x13
)YoloV2中的anchor box
如v1,v2将fm分成MxM
的cell,每个cell也预测B个bbox(v2中是13x13
的cell,每个cell预测5个不同aspect ratio的bbox)
每个bbox包含4个坐标值(xywh,xy是相对于每个cell的,wh是相对于anchor box的w和h,也就是作者说的Directly location prediction),1个confidence score(该cell包含物体的概率),20个类别得分。而一个cell预测5个bbox,因此输出维度为125
anchor如何打标签的呢?
anchor的选择
// 宽和高,作者文中阐述了,选择的anchor多是高瘦的bbox
[0.57273, 0.677385],
[1.87446, 2.06253],
[3.33843, 5.47434],
[7.88282, 3.52778],
[9.77052, 9.16828].
预测的过程:假设网络输出的预测结果是\( (t_x, t_y, t_w, t_h, t_o) \), 每个cell相对于图像左上角的距离为\( (c_x, c_y) \),anchor box(paper中的prior box)的宽高为\( p_w, p_h \),则实际对应的结果为:
\[ d_x = \sigma(t_x) + c_x \]
\[ d_y = \sigma(t_y) + c_y, \]
\[ d_w = p{_w}e^{t_w}, \]
\[ d_h = p{_h}e^{t_h}, \]
\[ P(object) * IoU(b, object) = t_o \]
如作者文中所述,引入anchor,yolov2的mAP从69.5降低到了69.2,但是recall从81%提升到了88%
Loss
Yolov2的网络结构见yolov2 网络结构
本文中还引入一个利用层级分类方法实现的更强的YOLO9000,这里不做详细阐述了
原文:https://www.cnblogs.com/xiangs/p/12706756.html