回顾时间:
- 在V1中,我们没有使用锚框,而是简单地将img分割为 7 x 7 的 grid cell, 每个 cell 提供两个预测框,每个框有x,y,w,h,confidence,以及20个class的类别信息。因此输出为7x7x(2x5+20).
- 在V2中,加入了anchor、BN层以及细粒度特征等一系列改进,还对预测框的位置做了限定,要求预测框的中心点只能落在对应anchor所在的cell内。V2将每个img分割成13 x 13的cell,每个cell初始化5个anchor,使用与真值的iou最大的锚框来负责预测obj,每个预测框包含x,y,w,h,confidence,以及20个类别信息。因此输出为13 x 13 x 5 x (5 + 20)
- 在V3中,我们使用Back Bone来进行特征提取,在经过8、16、32倍的特征提取后,得到不同尺度的特征信息,对不同尺度的信息进行拼接。在V3中每个cell产生3个anchor,每个anchor的预测框包含(x,y,w,h,confidence)以及COCO的80个类别,因此最后的输出为三种(输入为416x416):52x52x3x(5+80),26x26x3x(5+80),13x13x3x(5+80),这三个不同尺度的输出分别负责检测不同大小的物体,其感受野分别为8x8、 16x16、 32x32
1.Back Bone(骨干网络)
在深度学习中,"backbone"通常指的是神经网络中负责提取特征的主干部分。它是网络的核心组件,负责将输入数据通过一系列的卷积和池化层进行特征提取和表示。
Backbone神经网络通常是卷积神经网络(Convolutional Neural Network, CNN)的一种形式,具有多个卷积层和池化层,以及其他的激活函数和正则化操作。这些层级的组合允许网络逐渐学习和提取输入数据的不同抽象级别的特征。
在目标检测和图像分类任务中,常见的Backbone神经网络包括:
-
VGGNet: VGGNet是一个经典的深层卷积神经网络,由多个卷积层和池化层组成,其主要特点是层数较深,结构简单一致。
-
ResNet: ResNet是具有残差连接的深度卷积神经网络。它通过引入残差块来解决梯度消失问题,使得网络可以更深,并在训练过程中学习到更好的特征表示。
-
MobileNet: MobileNet是一种轻量级的卷积神经网络,通过深度可分离卷积(depthwise separable convolution)和逐点卷积(pointwise convolution)来减少网络参数量和计算复杂度,适用于移动设备等资源受限的场景。
-
EfficientNet: EfficientNet是一种基于自动模型缩放的神经网络,通过对网络深度、宽度和分辨率进行均衡调整,以获得更好的性能和计算效率。
在YOLO V3中,使用Darknet-53骨干网络作为特征提取器
Darknet-53的性能与ResNet-152性能媲美,但是计算量要小于ResNet-152,FPS也要高于ResNet-152。
2.网络结构
- YOLO V1 网络结构回顾:
- YOLO V2 网络结构回顾:
- YOLO V3 网络结构:
V3 中的输出都是255维的,因为每个cell有3个anchor,每个框有80个类别和5个位置以及大小、置信度信息,因此输出为 3 * 85 = 255 维。
对于三个维度的特征信息,分别将图像分辨率缩小32、16、8倍,再与不同尺度的特征信息进行拼接,即可得到三个维度的输出。
3.V3的特点
(1). 样本标签的改动
所有正样本的标签全部为1,负样本全部为0
由与真值IOU最大的锚框负责预测物体,且将其置信度标签设为1,之前将一个不高的值作为他的标签去训练,这样得到的结果并不好(求其中者得其下)
(2).类别预测
在V1中预测类别使用的是softmax进行预测,但是在img中存在一个物体属于多个类别的情况,因此,使用independent logistic classifiers 对属于各个类别均进行预测
(3).特征金字塔网络
YOLOv3 在 3 个不同的尺度上进行预测(类似于 FPN):
-
1.在最后一个特征图层中得到最高维度的特征信息。
-
2.然后它返回 2 层并将其上采样 2。YOLOv3 然后采用更高分辨率的特征图,并使用逐元素加法将其与上采样的特征图合并。 YOLOv3 在合并的映射上应用卷积滤波器来进行第二组预测。
-
3.再次重复2,这样得到的特征图层就具有良好的高级结构(语义)信息和良好的物体位置分辨率空间信息。
为了确定先验,YOLOv3 应用 k 均值聚类。然后它预选 9 个簇。对于 COCO,anchor 的宽度和高度分别为 (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116× 90),(156×198),(373×326)。这 9 个先验根据其规模分为 3 个不同的组。在检测对象时,每个组都被分配到上面的特定特征图。
4.损失函数
遍历所有的预测框,损失分为3个部分:
- 正样本的坐标: 包括中心点坐标以及预测框宽高的损失
- 正样本置信度和类别: 如果是正样本,那么他的置信度标签为1,否则为 0
- 负样本的置信度: 负样本只会造成置信度的损失