摘要:本文将详细介绍Yolov3的网络结构相关内容。
Yolov3 网络结构
在博客“Yolo发展历史及网络结构”中我们已经详细的解释了Yolov1的网络结构,并简要的提到了Yolov2与Yolov3对于网络结构的改进,本篇博客将详细介绍Yolov3的网络结构,内容比较简单。
Yolov3网络结构图
从图中可以看出,Yolov3主要有以下几部分组成:
- 输入
- 基础网络:基础网络是可以根据具体的需求选择,作者原文用的是自己设计的:Darknet-53
- YOLOv3网络的三个分支:Y1,Y2,Y3
网络部件介绍
DBL: 如图1左下角所示,也就是代码中的Darknetconv2d_BN_Leaky,是yolo_v3的基本组件。就是卷积+BN+Leaky relu。对于v3来说,BN和leaky relu已经是和卷积层不可分离的部分了(最后一层卷积除外),共同构成了最小组件。
resn:n代表数字,有res1,res2, … ,res8等等,表示这个res_block里含有多少个res_unit。这是yolo_v3的大组件,yolo_v3开始借鉴了ResNet的残差结构,使用这种结构可以让网络结构更深(从v2的darknet-19上升到v3的darknet-53,前者没有残差结构)。对于res_block的解释,可以在图1的右下角直观看到,其基本组件也是DBL。
concat:张量拼接。将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。
YOLOv3网络的三个分支
多尺度检测-Y1
适用目标:大目标
路径:绿色线标注
输出维度:13×13×255
输出维度具体解释:13×13:图片大小;255=(80+5)×3;80:识别物体种类数;5=x,y,w,h和c(置信度);3:每个点预测3个bounding box。
多尺度检测-Y2
适用目标:中目标
路径:黄色线标注
输出维度:26×26×255
输出维度具体解释:26×26:图片大小;255=(80+5)×3;80:识别物体种类数;5=x,y,w,h和c(置信度);3:每个点预测3个bounding box。
多尺度检测-Y3
适用目标:小目标
路径:紫色线标注
输出维度:52×52×255
输出维度具体解释:52×52:图片大小;255=(80+5)×3;80:识别物体种类数;5=x,y,w,h和c(置信度);3:每个点预测3个bounding box。