YOLO系列学习(YOLOv3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bernice_lying

# YOLO:You only look once#

     方法如其名,仅需看一次图像,即可预测存在的物体和相对应的坐标位置,它追求“秒识”体验,有着“fast & accurate”的检测表现。它的建模思想是将检测问题转化为回归问题。

官方源码: http://pjreddie.com/yolo/


接上篇和上上篇博客,下面将介绍YOLO系列第三部YOLOv3:

## YOLO-v3

【参考】
1. https://www.cnblogs.com/makefile/p/YOLOv3.html

【效果】

YOLO系列学习(YOLOv3)_第1张图片
图1 COCO数据集上各种方法的测试时间和mAP性能比较


【改进点】
  1. 金字塔特征融合
  2. 更好的分类器:类别预测损失的替换
  3. 更好的分类网络:更强更深的特征提取网络
(1)Bounding Box 预测
       YOLOv3继续使用YOLOv2的Bounding Box预测策略,使用维数聚类获得先验bounding box;训练时使用均方误差损失函数;若记偏移真值为tg,预测值为tp,则对应的梯度应为tg-tp。
       物体存在的置信度使用逻辑回归策略预测。当某个先验bounding box与物体真实标注的交叠比其他先验更多时,它对应的物体存在置信度得分应为1.若先验不是最好的,但交叠超出了我们之前是设定的阈值(如0.5),就忽略这个预测。我们对每个真实物体仅用一个先验bounding box,若先验未分配有一个真实物体,则其坐标和类别预测损失不计,只计物体存在的损失。 

(2)类别预测
损失函数选择:二值交叉熵损失(独立的logistic分类器)

原因:softmax损失有类间互斥的表现,不利于有包含属性关系的数据分类(overlapping labels(i.e. Woman and Person))。因此使用多标签分类方法可以更好地模拟数据。


(3)基于多尺度的预测
思想:特征金字塔网络Feature Pyramid Network。
目的:获取更丰富的语义信息和更细粒度的特征信息。
细节:
  • 每个尺度后面是如何预测的?在获取特征图后,添加几个卷积层,最后一层卷积用于预测3-d张量,张量编码bounding box的坐标信息(tx,ty,tw,th)+ 物体存在置信度 + 类别预测值。(COCO实验中,张量为N×N×[3×(4+1+80)])。
  • 多尺度预测:YOLOv3在3个不同尺度上进行3种box预测。Anchor仍用k-means方法获得bounding box先验中心,然后均分给3个尺度。聚类结果(9个聚类中心,3种尺度):(10×13); (16×30); (33×23); (30×61); (62×45); (59×119); (116×90); (156×198); (373×326).
尺度1:在特征提取网络后添加一些卷积层,输出张量;
尺度2:对尺度1的倒数第二层卷积层上采样(×2),再与最后一个16×16分辨率的特征图逐点相加(Element-wise addition),再接上一些卷积层(对融合的特征信息进一步处理),输出张量,比尺度1增大2倍;
尺度3:类同尺度2,使用32×32大小的特征图。

YOLO系列学习(YOLOv3)_第2张图片

图2 YOLOv3网络结构图


(4)特征提取器
更强更深的网络:Darknet-53

特点:

  • 使用1×1+3×3卷积层堆叠结构,其中1×1用于特征压缩;
  • 引入shortcut connections/残差模块;
  • 将max pooling替换成2步长的3×3卷积;
  • 更深了。
效果:
YOLO系列学习(YOLOv3)_第3张图片

训练策略:
  • 无难例挖掘
  • 多尺度训练
  • 大量数据扩增
  • BN
  • all the standard stuff

【其他研究(一些不起作用的尝试)】

  1. 使用正常的anchor box预测机制(x,y偏移量和w,h预测) + 线性激活,但会导致模型稳定性下降,效果不好;
  2. 对x,y偏移量使用线性激活,而不是Logistic激活,会导致mAP下降;
  3. 使用Focal loss,导致mAP下降2个百分点。可以对比一下Focal loss和YOLO的预测损失设计思路来分析;
  4. 一对IOU阈值来判定正标签。这里指的一对IOU指的是像Faster RCNN所用的,如[0.3,0.7]这样的,若IOU>0.7,则判定为正样本,IOU<0.3,判定为负样本,介于0.3和0.7的忽略它们。但是!在YOLOv3实验的时候,作者发现这种设置得不到好的结果,在论文中IOU阈值是单值0.5.

本博文内有博主的一些理解和思考,若有不同见解欢迎在讨论区分享,若有疑问也请在下方留言。


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bernice_lying

你可能感兴趣的:(目标检测方法)