最近使用YOLOv3进行目标检测,这里总结一下个人对与pytorch版本的YOLOv3的理解,顺便梳理一下思路。
- 网络结构
- 数据预处理方式
- onnx2caffe
代码:https://github.com/ultralytics/yolov3
1 网络结构
YOLOv3的网络结构主要包括三个部分,骨干网络, 类FPN, yolo层:YOLOv3的骨干网络使用的是Darkent53, 网络中大量使用跳层连接,并且为了降低池化层带来的梯度负面效果,直接已使用卷积层的stride=2来实现降采样.作者在实验中发现, darknet53 相较于resnet-152 和resnet-101 ,在分类精度上相差不大,但网络层数较少,且计算速度很快.在新的yolov4中指出, darknet53 在目标检测中,用作特征提取网络效果要强于resnet系列。
为了增强对小目标的检测,YOLOv3使用了类FPN层,使用上采样和融合的做法,在多个尺度的特征图上做检测。
yolo层是对提取的信息进行解码,从而输出检测到的目标信息,(x, y, w, h, score, classses). YOLOv3在每一个尺度, 使用三个预测框进行检测,输出的信息为 3×(5 + classes), 当检测目标的种类为80 时, 输出的维度为 3×(5 + 80) = 255.
2、数据预处理
目前有很多种数据预处理的方法,在训练神经网络时,为了进