【深度学习】目标检测之YOLOv3算法
YOLO系列目标检测算法官方代码
https://pjreddie.com/darknet/yolo/
YOLOv3
网络结构
Darknet-53:
共有53个卷积层,进行32倍下采样
Darknet-53为了加深网络,也采取的类似ResNet的跳接结构,但和ResNet的残差块结构不同:
- ResNet的下采样过程,在与上一个卷积组邻接的残差块中实现。【深度学习】ResNet系列网络结构
- Darknet-53的下采样过程,是在Residual跳接之前,用一个单独的卷积层实现的。
Darknet-53中所有的Residual都是如上图所示的结构
YOLOv3保留Darknet-53标准结构Avgpool以上的部分(不包括Avgpool)。在此基础上和SSD一样,在三个不同size的Feature Map上接Detection Head。此外,仿照FPN,较深层的Detection Head的Feature Map经过上采样,和较浅层的Detection Head的Feature Map按channel方向进行拼接。
YOLOv3网络结构如下:
anchor的编解码
YOLOv3的编解码和YOLOv2的编解码方式相同:
先验:
- 每个Detection Head的最后一个卷积层的输入Feature Map(也就是使用anchor的Feature Map)的每一个cell的左上角点座标、()
- anchor的width和height,、。注意,YOLOv3中的anchor和YOLOv2、SSD中的anchor都不相同。
SSD中的anchor,width和height是相对于原图像的size进行归一化后的值,其值范围在到之间;
YOLOv2中的anchor,width和height是以使用anchor的Feature Map的width和heigth为基准的绝对的值,其值范围在到之间;
YOLOv3中的anchor,width和height是以初始输入图像(第一个卷积层的输入tensor)的witdh和height为基准的绝对的值,其值范围在到之间。(YOLOv3的anchor的值,除以各自所在的Feature Map的下采样倍数,就和YOLOv2的anchor的值定义相同了)
YOLOv3通过COCO数据集的ground truth box的大小,聚类得到9个anchor的值。每个Detection Head使用其中的三个。具体值如下:
最浅的Detection Head:
(10,13), (16,30), (33,23),
中间的Detection Head:
(30,61), (62,45), (59,119),
最深的Detection Head:
(116,90), (156,198), (373,326)
输出:
和YOLOv2相同,YOLOv3每个cell生成三个anchor(YOLOv2是五个),每个anchor对应自己的输出:4(center_x, center_y, width, height) + 1(置信度) + num_classes(和SSD不同,这个num_classes不包括background,SSD就是通过增加一个background起到YOLO中置信度的作用)
center_x:
center_y:
width:
height:
置信度:
编码方式:
label:
、、、:原始图像上的ground truth box的中心点座标、width以及height归一化后的值(注意计算loss时,、要乘预测所使用的Feature Map的width、height;、要乘初始输入图像的width、height)
置信度label:计算方式和YOLOv2相同。【深度学习】目标检测之YOLOv2算法&6D姿态估计之YOLO-6D算法
损失函数
和YOLOv2相同,计算损失函数前,要先确定哪个anchor负责哪个落入cell中的object的预测,确定方法与YOLOv2相同。【深度学习】目标检测之YOLOv2算法&6D姿态估计之YOLO-6D算法
损失函数计算:
- 第一项:所有负责预测目标的anchor的座标损失()。label是(注意计算loss时,、要乘预测所使用的Feature Map的width、height;、要乘初始输入图像的width、height)。使用均方损失函数。衡量目标定位准确度。前面的系数设置为1
- 第二项:不负责预测目标的anchor的座标损失()。label是cell的左上点、cell的左上点、anchor的、anchor的。因为这样的label对应的实际输出是零。使用均方损失函数。前面的系数设置为1
- 第三项:负责预测目标的anchor的confidence损失。label是。使用binary cross-entropy loss(不使用Softmax)。衡量可能有目标的准确度。前面的系数设置为5
- 第四项:不负责预测目标的anchor的confidece损失。计算,如果计算结果小于0.5,label是零。使用binary cross-entropy loss(不使用Softmax)。前面的系数设置为1
- 第五项:负责预测目标的anchor的类别损失。使用binary cross-entropy loss(不使用Softmax)(在这里相当于多个独立的逻辑分类器,这样的多标签方法有助于对训练数据更好的建模)。
binary cross-entropy loss
二分类的交叉熵损失函数:
对于一个样本:
其中,是label信息,positive是1,negative是0。是网络的输出,也就是结果是positive的概率。
AP(Average Precision)的含义和计算方法
注意,多类别的目标检测任务中,AP是针对单独一类目标而言的
-
正确率(Precision):
判断为True的样本中,真实为True的比例 -
真阳性率(True Positive Rate,TPR),灵敏度(Sensitivity),召回率(Recall):
真实为True的样本中,判断为True的比例
Precision和Recall用到目标检测领域,就是:
假设有一组图片,里面有若干待检测的目标,Precision就代表模型检测出来的目标有多大比例是真正的目标物体;Recall就代表所有真实的目标有多大比例被模型检测出来了。
以Recall为横轴,Precision为纵轴绘制的曲线,就是PR曲线。
AP(Average Precision),就是对PR曲线的纵轴(Precision)的值取平均。所谓11point-AP,就是将R轴平分11个点,对应的P轴的值取平均。
mAP(mean Average Precision)的含义和计算方法
mAP是所有类别的AP值的均值
结语
如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。