1、yolov3的网络结构
yolov3主要针对小目标检测不足做出的改进
1. 1 网络模型(Darknet-53)
- 由53个卷积层构成,包括1x1和3x3的卷积层,
每个卷积层后包括一个归一化层和一个Leaky ReLU,防止过拟合; - 没有全连接,可以输入任意尺寸的图像;
- 没有池化层,通过conv的stride步长达到下采样的效果;
- Darknet-53中使用了ResNet结构,增加了网络层数,可以提取更多的细节。
1. 2 网络结构图
1.2.1
- DBL:由一个卷积层、一个批归一化层、一个Leaky ReLU组成的基本单元。
- res unit(残差单元):图像经过两个DBL,再与原输入特征进行add; 目的:使得网络提取更深层的特征,同时避免梯度消失和爆炸。
- res(n):表示有 n 个res unit,resn = zero paadding +DBL+n*unit
- y1、y2、y3 :分别表示yolov3的三种不同尺度输出; 每个网格需要预测 3 个 box,5个基本参数,80个类别,3×(5 + 80) = 255
- concat1(拼接):将大感受野的特征进行上采样,然后与中感受野进行维度拼接得到多尺度融合的目的,加强算法对小目标检测的精度。(采用了类似FPN的上采样和融合)
- concat2(拼接):将中感受野的特征进行上采样,然后与小感受野进行维度拼接得到多尺 度融合,加强算法对小目标检测的精度。
- yolov3的整个主干网络Backbone:Darknet53 1+(1+2*1)+(1+2*2)+(1+2*8)+(1+2*8)+(1+2*4)=52
1.2.2 Neck
FPN
1.3 改进之处
1、多尺度检测——上采样 + 维度拼接
2、多标签分类:softmax() 改为logistic()
logistic回归采用sigmod函数
1.4 网络实现
https://www.cnblogs.com/Ldemon/p/16566533.html
GitHub - ultralytics/yolov3: YOLOv3 in PyTorch > ONNX > CoreML > TFLite