ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于yolov3中的Darknet53的详细解析——大概

2021-10-07 15:32:57  阅读:397  来源: 互联网

标签:26 512 yolov3 Darknet53 13 52 128 解析 256


 据上次的xception已经过去半个月了(划水了半个月),上次的xcepion训练慢问题已经解决了,其实就是中间的imagesize没有控制好,这样都能训练也是十分的神奇,这次记录一下整了小半个月的yolov3模型,虽然还没整完但是主体框架已经好了

先看代码

 

 最上面的是配置参数,元组内的是(kernel,kernel_size,stride)例如(32,3,1)代表有32个kernel,size为3,stride为1,日后导入下面的CnnBlock函数

CnnBlock:

 

 可以看到就是普通卷积多了一个Bn和LeakyRelu函数,其他的并没有什么变化

ResidualBlock:

 

 num_repeat即重复的次数,最后通道数先减少一半再还原回来,最终的结果和开始的输入的size一致,可以直接加

有关残差块可以自行看Resnet的论文或者不想看英文的兄弟可以看同济自豪兄的视频

https://www.bilibili.com/video/BV1vb4y1k7BV?spm_id_from=333.999.0.0

 

ScalePrediction:

 

 就是个卷积,第二个CnnBlock最终输出通道数3*(num_class+5)中的3为一个boundingbox的三个anchor,num_class为预测物体的种类数量(即训练的时候物体一共的种类),5为anchor的x,y,长,宽,置信度

最终调整一下位置改为(batch_size,3,imagesize,imagesize,numclass+5)即可

 

接着就是yolov3的主体:

 

 

 

 先看这个_create_conv_layer层:

通过开始的config文件创建layer

元组的就是添加卷积层

列表中的["B",次数]就代表添加的残差块的次数

str中的“S”代表预测,并且将预测结果存入outputs[]的列表中

“U”代表上采样,这里涉及特征金字塔,也可以自行百度FPN

简而言之就是将上层的特征上采样并与下层的特征层cat,然后下层的特征再进行预测

 

最后看forward层:

遇到ScalePrediction就将预测的结果放入output中

但不想破坏x的size,所以直接continue回去

遇到残差块并且repeat的次数为8时就存在route_connection中等着与高层的上采样进行cat

遇到上采样就拿出route_connection中的最后一个进行cat  //看图

 

 

差不多就是这样了

输入在网络中的变化应该是这样子的

config = [
(32, 3, 1), //416*416*3->416*416*32
(64, 3, 2), //416*416*32->208*208*64
["B", 1], //单纯残差 208*208*64
(128, 3, 2), //208*208*64->104*104*128
["B", 2], //不变
(256, 3, 2), //104*104*128->52*52*256
["B", 8], //route_connection[a] a=52*52*256
(512, 3, 2), //52*52*256->26*26*512
["B", 8], //route_con[a,b] b=26*26*512
(1024, 3, 2), //26*26*512->13*13*1024
["B", 4], # To this point is Darknet-53 //不变
(512, 1, 1), //13*13*1024->13*13*512
(1024, 3, 1), //13*13*512->13*13*1024
"S", output[a] a=13*13*512->13*13*1024->13*13*(num+5)*3->(3,13,13,num+5) //3为anchor数,13是image的长和宽,num+5代表识别的种类的概率+boundingbox的x,y,长,宽,置信度 ,后面的"S"同理
(256, 1, 1), 13*13*1024->13*13*256
"U", 13*13*256->26*26*256+26*26*512=26*26*768

(256, 1, 1), 26*26*768->26*26*256
(512, 3, 1), 26*26*256->26*26*512
"S", 26*26*512->26*26*(num+5)*3
(128, 1, 1), 26*26*512->26*26*128
"U", 26*26*128->52*52*128+52*52*256=52*52*384

(128, 1, 1), 52*52*384->52*52*128
(256, 3, 1), 52*52*128->52*52*256
"S", 52*52*256->52*52*(num+5)*3
]

 

最后此代码的来源如下:

https://www.youtube.com/watch?v=Grir6TZbc1M&t=32s

机翻的太难受了,不如当英语听力

 

 

 

 

标签:26,512,yolov3,Darknet53,13,52,128,解析,256
来源: https://www.cnblogs.com/p201921420037/p/15375915.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有