1.论文出处
论文:YOLOv3: An Incremental Improvement
论文地址:https://arxiv.fenshishang.com/abs/1804.02767
2.网络结构
CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。
Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
ResX:由一个CBL和X个残差组件构成,是Yolov3中的大组件。每个Res模块前面的CBL都起到下采样的作用。
Concat:张量拼接,会扩充两个张量的维度,例如26x26x256和26x26x512两个张量拼接,结果是26x26x768。Concat和cfg文件中的route功能一样。
Backbone中卷积层的数量:
每个ResX中包含1+2*X个卷积层,因此整个主干网络Backbone中一共包含1+(1+2x1)+(1+2x2)+(1+2x8)+(1+2x8)+(1+2x4)=52,再加上一个FC全连接层,即可以组成一个Darknet53分类网络。不过在目标检测Yolov3中,去掉FC层,不过为了方便称呼,仍然把Yolov3的主干网络叫做Darknet53结构。
3. YOLOv3的设计思想
YOLOv3算法的基本思想可以分成两部分:
1.按一定规则在图片上产生一系列的候选区域,然后根据这些候选区域与图片上物体真实框之间的位置关系对候选区域进行标注。跟真实框足够接近的那些候选区域会被标注为正样本,同时将真实框的位置作为正样本的位置目标。偏离真实框较大的那些候选区域则会被标注为负样本,负样本不需要预测位置或者类别。
2.使用卷积神经网络提取图片特征并对候选区域的位置和类别进行预测。这样每个预测框就可以看成是一个样本,根据真实框相对它的位置和类别进行了标注而获得标签值,通过网络模型预测其位置和类别,将网络预测值和标签值进行比较,就可以建立起损失函数。
4.产生候选区域
4.1生成锚框
实现思想:
Step1:将原图划分成mxn个小方块区域。
Step2:在每个小方块的中心生成一系列的锚框。
将原始图片划分成m×n个区域,如下图所示,原始图片高度H=640, 宽W=480,如果我们选择小块区域的尺寸为32×32。则m和n分别为m=640/32=20,n=480/32=15。将原始图像分成20行15列的小方块区域。
以每个小方块为中心,生成一些列锚框。上图左代表在图片中第10行第4列小方块位置生成