Yolov3理论的详细解释
先来看看yolov3的结构,先附上一张整体结构图。
让我们从上到下的过一遍YOLOV3的流程。
1.一个位置,当输入图像时,图像的大小不是正方形。为了方便后面的计算,我们先把它换算成能被32整除的平方。为什么是32?整个网络要经过16次缩放变换(步长为2的卷积运算{而不是池化}),最终的特征图大小为11*11或12或65438+。每次转换的正方形图像不是固定大小的,增强了网络适应不同大小图像的能力。
2.位置b,?conv2d是卷积+批量归一化+Leaky_relu激活的组合。用批量归一化代替正则化来提高模型的收敛速度。Leaky_relu的软路径激活解决了relu激活时负数不学习的问题。
?来自位置A的416*416*3的图像经过32次卷积运算(32个卷积核)*3(卷积核大小3*3),步长为1,变换为416 * 416 * 32。
3.在B到C的过程中,我们看到图像大小由416*416变为208*208,中间有一个步长为2的卷积层来代替池层。这比简单地使用池层要好。
4.c位置,这里是卷积和剩余连接的结合。yolov3的剩余连接是同一模块内的剩余连接,只有形状相同才能进行连接。
?C位以下的resnet层就不解释了,原理和连接都是一样的。越往下,特征图的尺寸越小,特征核的层数越多。
5.我们来看看E位的大小是13 * 1024,D位的大小是26*26*512。越下层越能识别大物体,上层越能识别小物体。我们把上下两层加在一起,这样它就可以同时识别大物体和小物体。如何融合上下两层,即E层和D层?我们采样了E层,改成26*26*256,这样就可以和D层首尾拼接了。
6.拼接后我们看到位置F,注意位置F的大小?(batch_size,26,26,75),分类号是70,但这里是75,多出来的五个是,x,y,w,h,conf(一个对象是不是的判断)。
7.YOLO层是从标签的目标值中减去预测值以找出损失的层。
Yolov3 * * *有三个YOLO层分别训练网络。为什么有三个?较小的特征地图具有较大的视场,而焦大大学的特征地图具有较小的视场,因此yolo3具有识别大目标和小目标的能力。同时,一个点可以是一个分类,也可以是另一个分类。
8.嗯,pytorch执行loss.back(),传播回来,开始训练。