YOLO思考(1)
2019-05-05 本文已影响0人
深度学习模型优化
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网格划分是通过最后一个卷积层的输出体现。该卷积层的输出为,特征图的尺寸为,将原图划分成了的网格区域,每个网格预测20个类别的概率,目标框置信度以及两个目标框信息,其中每个目标的中心位置都会转换至网格区域内。
图4 感受野最新的版本中的最后的两个全连接层被替换为了局部全连接层、dropout和1715输出的全连接层。这里的1715为。这里的35包括:
- 20个类别概率
- 3个目标框置信度
- 3个目标框坐标信息
每个类别的真实置信度的计算公式如下: