Yolo v3

Yolo v3

1、Yolo v3算法思想

首先通过特征提取层,对输入图像进行特征提取,然后得到一定size的feature map,比如说size是26 ×26,然后就将输入图像分成26×26个grid cell;然后,如果某个ground truth 的 object的中心坐标落入某个grid cell,就由这个grid cell来负责预测该object,每个grid cell都会预测一定数量的bounding box,Yolo v3这里取的是3个,然后这3个bounding box和ground truth 做IOU计算,最大的那个即来预测此object。

2、网络结构

首先是Yolo v3 的网络结构,相比于Yolo v2有以下几点改进:

1、其采用了DarkNet53的网络结构,网络更深

2、借鉴与ResNet引入了residual结构,来防止层数过深而引起的梯度问题

3、预测支路采用全卷积结构,同时利用FPN的思想,将DarkNet53特征提取层与预测支路进行特征融合,提高了对小目标的检测能力

以下是Yolo v3的网络结构图:

Yolo v3_第1张图片
(其中:convolutional是指Conv2d+BN+LeakyReLU)

最后3个预测层的输出:
预测输出1:(C,255,13,13)
预测输出2:(C,255,26,26)
预测输出3:(C,255,52,52)
其中,255 = k*(4+1+c),这里k取3,代表预测边界框的个数;c代表预测的种类,这里采用COCO数据集,取80;4代表的是预测框的4个坐标信息;1是物体预测分数。

3、bounding box的坐标预测方式

下图很好的阐述了这个计算过程:
1、(tx,ty,tw,th)是模型的预测输出
2、(cx,cy)是grid cell 的坐标,比如说 (0,0),(0,1)这样子
3、(pw,ph)是预测前bounding box的size ,这个好像是作者采用聚类的方法得到的一组size
4、(bx,by,bw,bh)便是最终计算得到的bounding box的预测坐标
5、σ 是sigmoid函数,目的是使其放缩到0-1之间,似乎是可以加快收敛
Yolo v3_第2张图片

4、损失函数

1、目标置信度损失
采用的是二值交叉熵损失函数:
在这里插入图片描述
其中,目标置信度即预测目标矩形框中存在目标的概率,o取{0,1},即表示{不存在,存在};c代表预测目标框内存在目标的Sigmoid概率。

2、目标类别损失
采用的也是二值交叉熵损失函数:
Yolo v3_第3张图片
O含义同上述o;C_ij表示预测目标框i存在第j类object的Sigmoid概率。

3、目标定位损失
采用的是均方损失函数:
在这里插入图片描述
其中,l 为前面所说的网络预测所得出的bounding box的坐标(bx,by,bw,bh)。

5、算法性能

不得不说,Yolo在速度这方面是真的赞。
Yolo v3_第4张图片

参考:

参考链接1:YOLO v3网络结构分析
参考链接2:YOLO v3算法笔记

你可能感兴趣的:(Paper,算法)