今天看啥  ›  专栏  ›  深度学习模型优化

YOLO思考(1)

深度学习模型优化  · 简书  ·  · 2019-05-05 02:01

1 目标检测问题分析

无论是以R-CNN、Fast R-CNN和Faster R-CNN为主的two-stage目标检测方法,还是以YOLO和SSD为主的one-stage目标检测方法,其核心都是找到RoI,并对RoI中的目标进行分类,以及对RoI的边框进行回归修正。如图1所示。

图1 检测框架

甚至于最新的CornerNet算法,不断地提升候选框提取效率、候选框有效率、候选框精准度以及与分类框架的融合。如图2 所示。

图2 Cornet Net

主要是为了解决两个核心问题:

  • 目标分类。
  • 目标定位修正。

2 YOLO训练框架

这里先抛出darknet,因为华盛顿大学的兄弟在做YOLO的时候用的就是darknet,这是个用C编写的深度学习框架,当然功能和caffe、tensorflow、pytorch没法比,但是作为一个菜鸟,我依然对这个框架不是很理解。这个就需要时间去打磨了。有兴趣的读者可以去看下darknet的中文注释。

3 YOLO网络架构

3.1 YOLO V1

YOLO V1使用darknet的前20个卷积层,然后接着一个全局池化和一个全连接层,构建一个预训练模型。该预训练模型来提高backbone的性能。

图3 YOLO V1框架

由图3可知,Darknet的完整框架包括(24卷积层+2全连接层)。输入是​的图像,输出是​。这里的输出通道可以表述为 ​ 包括:

  • 20表示20个类别的概率(VOC数据集的类别数为20个)
  • ​两个目标框,即为两个​有8个元素
  • 2表示两个目标框的置信度

RoI网格划分是通过最后一个卷积层的输出体现。该卷积层的输出为​,特征图的尺寸为​,将原图划分成了7\times 7​的网格区域,每个网格预测20个类别的概率,目标框置信度以及两个目标框信息,其中每个目标的中心位置都会转换至网格区域内。

图4 感受野

最新的版本中的最后的两个全连接层被替换为了局部全连接层、dropout和1715输出的全连接层。这里的1715为7\times 7 \times 35。这里的35包括:

  • 20个类别概率
  • 3个目标框置信度
  • 3个目标框坐标信息
图5 局部全连接层

每个类别的真实置信度的计算公式如下:
Confidence\_object = P(object) \times IOU_{truth}^{pred} \\ Confidence\_class_i = Confidence\_object \times P(class_i | object)




原文地址:访问原文地址
快照地址: 访问文章快照