收藏 | Yolov3和Yolov4核心内容、代码梳理

论坛 期权论坛     
选择匿名的用户   2021-5-23 01:20   30   0
<div id="js_content">
<p style="text-align: center">点上方蓝字<strong>计算机视觉联盟</strong>获取更多干货</p>
<p style="text-align: center">在右上方<strong> ··· </strong>设为星标 ★,与你不见不散</p>
<p>仅作学术分享,不代表本公众号立场,侵权联系删除<br></p>
<p>转载于:知乎江大白,https://zhuanlan.zhihu.com/p/144059763</p>
<p style="text-align: center"><strong>AI博士笔记系列推荐</strong></p>
<p style="text-align: center"><strong><a href="http://mp.weixin.qq.com/s?__biz&#61;MzU2NTc5MjIwOA%3D%3D&amp;chksm&#61;fcb71194cbc0988259f32b0b7a77fe7830c477c9c9a4fcb00f2e366c97d776574c2bc949e993&amp;idx&#61;1&amp;mid&#61;2247486763&amp;scene&#61;21&amp;sn&#61;da878ccafba79932be8eeca955697477#wechat_redirect">周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接</a></strong></p>
<p>从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗。<br></p>
<p>在此,将项目中需要了解的Yolov3、Yolov4系列相关知识点以及相关代码进行完整的汇总,希望和大家共同学习探讨。</p>
<p><strong>文章目录</strong></p>
<blockquote>
  <p>1. 论文汇总<br>2. Yolov3核心基础内容<br>2.1 网络结构可视化<br>2.2 网络结构图<br>2.3 核心基础内容<br>3. Yolov3相关代码<br>3.1 python代码<br>3.2 C&#43;&#43;代码内容<br>3.3 python版本的Tensorrt代码<br>3.4 C&#43;&#43;版本的Tensorrt代码<br>4. Yolov4核心基础内容<br>4.1 网络结构可视化<br>4.2 网络结构图<br>4.3 核心基础内容<br>4.3.1 输入端创新<br>4.3.2 Backbone创新<br>4.3.3 Neck创新<br>4.4.4 Prediction创新<br>5. Yolov4相关代码<br>5.1 python代码<br>5.2 C&#43;&#43;代码<br>5.3 python版本的Tensorrt代码<br>5.4 C&#43;&#43;版本的Tensorrt代码</p>
</blockquote>
<p>论文汇总</p>
<ul><li><p>Yolov3论文名:《Yolov3: An Incremental Improvement》</p></li><li><p>Yolov3论文地址:https://arxiv.org/pdf/1804.02767.pdf</p></li><li><p>Yolov4论文名:《Yolov4: Optimal Speed and Accuracy of Object Detection》</p></li><li><p>Yolov4论文地址:https://arxiv.org/pdf/2004.10934.pdf</p></li></ul>
<p>YOLOV3核心基础内容</p>
<p><strong>2.1 网络结构可视化</strong></p>
<p>Yolov3是目标检测Yolo系列非常非常经典的算法,不过很多同学拿到Yolov3或者Yolov4的cfg文件时,并不知道如何直观的可视化查看网络结构。如果纯粹看cfg里面的内容,肯定会一脸懵逼。<br></p>
<p>其实可以很方便的用netron查看Yolov3的网络结构图,一目了然。</p>
<p>这里不多说,如果需要安装,可以移步大白的另一篇文章:《网络可视化工具netron详细安装流程》</p>
<p>https://blog.csdn.net/nan355655600/article/details/106245563</p>
<p>如果不想安装,也可以直接点击此链接</p>
<p>https://blog.csdn.net/nan355655600/article/details/106246355</p>
<p>查看Yolov3可视化流程图。</p>
<p><strong>2.2 网络结构图</strong></p>
<p><img src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-550bd24b12a48f7381c1c402659d6c2e"></p>
<p>绘制网络结构图受到Yolov3另一位作者文章的启发,包括下面Yolov4的结构图,确实,从总体框架上先了解了Yolov3的流程,再针对去学习每一小块的知识点,会事半功倍。</p>
<p>上图三个蓝色方框内表示Yolov3的三个基本组件:</p>
<ol><li><p>CBL:Yolov3网络结构中的最小组件,由Conv&#43;Bn&#43;Leaky_relu激活函数三者组成。</p></li><li><p>Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。</p></li><li><p>ResX:由一个CBL和X个残差组件构成,是Yolov3中的大组件。每个Res模块前面的CBL都起到下采样的作用,因此经过5次Res模块后,得到的特征图是608-&gt;304-&gt;152-&gt;76-&gt;38-&gt;19大小。</p></li></ol>
<p>其他基础操作:</p>
<ol><li><p>Concat:张量拼接,会扩充两个张量的维度,例如26*26*256和26*26*512两个张量拼接,结果是26*26*768。Concat和cfg文件中的route功能一样。</p></li><li><p>add:张量相加,张量直接相加,不会扩充维度,例如104*104*128和104*104*128相加,结果还是104*104*128。add和cfg文件中的shortcut功能一样。</p></li></ol>
<p>Backbone中卷积层的数量:</p>
<p>每个ResX中包含1&#43;2*X个卷积层,因此整个主干网络Backbone中一共包含1&#43;(1&#43;2*1)&#43;(1&#43;2*2)&#43;(1&#43;2*8)&#43;(1&#43;2*8)&#43;(1&#43;2*4)&#61;52,再加上一个FC全连接层,即可以组成一个Darknet53分类网络。不过在目标检测Yolov3中,去掉FC层,不过为了方便称呼,仍然把Yolov3的主干网络叫做Darknet53结构。</p>
<p><strong>2.3 核心基础内容</strong></p>
<p>Yolov3是2018年发明提出的,这成为了目标检测one-stage中
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP