yolov算法详解_yolo系列之yolo v3【深度解析】

论坛 期权论坛     
选择匿名的用户   2021-5-23 01:20   0   0
<div style="font-size:16px;">
<p>yolo系列之yolo v3【深度解析】</p>
<p>发布时间:2018-09-12 16:24,</p>
<p>浏览次数:4222</p>
<p>, 标签:</p>
<p>yolo</p>
<p>版权申明:转载和引用图片,都必须经过书面同意。获得留言同意即可</p>
<p>本文使用图片多为本人所画,需要高清图片可以留言联系我,先点赞后取图</p>
<p>这篇博文比较推荐的yolo v3代码是qwe的keras版本,复现比较容易,代码相对来说比较容易理解。同学们可以结合代码和博文共同理解v3的精髓。</p>
<p>github地址:https://github.com/qqwweee/keras-yolo3</p>
<p>基于tensorflow的实现代码可以参考:</p>
<p>https://github.com/wizyoung/YOLOv3_TensorFlow</p>
<p>&lt;&gt;前言</p>
<p>前言就是唠唠嗑,想直接看干货可以跳过前言,直接看Yolo v3。</p>
<p>yolo_v3是我最近一段时间主攻的算法,写下博客,以作分享交流。</p>
<p>看过yolov3论文的应该都知道,这篇论文写得很随意,很多亮点都被作者都是草草描述。很多骚年入手yolo算法都是从v3才开始,这是不可能掌握yolo精髓的,因为v3很多东西是保留v2甚至v1的东西,而且v3的论文写得很随心。想深入了解yolo_v3算法,是有必要先了解v1和v2的。以下是我关于v1和v2算法解析所写的文章:</p>
<p>v1算法解析:《yolo系列之yolo v1</p>
<p>》</p>
<p>v2算法解析:《yolo系列之yolo v2</p>
<p>》</p>
<p>yolo_v3作为yolo系列目前最新的算法,对之前的算法既有保留又有改进。先分析一下yolo_v3上保留的东西:</p>
<p>* “分而治之”,从yolo_v1开始,yolo算法就是通过划分单元格来做检测,只是划分的数量不一样。</p>
<p>* 采用&#34;leaky ReLU&#34;作为激活函数。</p>
<p>* 端到端进行训练。一个loss function搞定训练,只需关注输入端和输出端。</p>
<p>* 从yolo_v2开始,yolo就用batch normalization作为正则化、加速收敛和避免过拟合的方法,把BN层和leaky</p>
<p>relu层接到每一层卷积层之后。</p>
<p>* 多尺度训练。在速度和准确率之间tradeoff。想速度快点,可以牺牲准确率;想准确率高点儿,可以牺牲一点速度。</p>
<p>yolo每一代的提升很大一部分决定于backbone网络的提升,从v2的darknet-19到v3的darknet-53。yolo_v3还提供替换backbone——tiny</p>
<p>darknet。要想性能牛叉,backbone可以用Darknet-53,要想轻量高速,可以用tiny-darknet。</p>
<p>总之,yolo就是天生“灵活”,所以特别适合作为工程算法。</p>
<p>当然,yolo_v3在之前的算法上保留的点不可能只有上述几点。由于本文章主要针对yolo_v3进行剖析,不便跑题,下面切入正题。</p>
<p>&lt;&gt;YOLO v3</p>
<p>网上关于yolo v3算法分析的文章一大堆,但大部分看着都不爽,为什么呢?因为他们没有这个玩意儿:</p>
<p>图1. yolo_v3结构图</p>
<p>yolo系列里面,作者只在v1的论文里给出了结构图,而v2和v3的论文里都没有结构图,这使得读者对后两代yolo结构的理解变得比较难。but,对于yolo学习者来说,脑子里没有一个清晰的结构图,就别说自己懂yolo了。上图是我根据官方代码和官方论文以及模型结构可视化工具等经过好几个小时画出来的,修订过几个版本。所以,</p>
<p>上图的准确性是可以保证的。</p>
<p>这里推荐的模型结构可视化工具是:Netron</p>
<p>netron方便好用,可以直观看到yolo_v3的实际计算结构</p>
<p>,精细到卷积层。But,要进一步在人性化的角度分析v3的结构图,还需要结合论文和代码。对此,我是下了不少功夫。</p>
<p>上图表示了yolo_v3整个yolo_body的结构,没有包括把输出解析整理成咱要的[box, class, score]。对于把输出张量包装成[box,</p>
<p>class, score]那种形式,还需要写一些脚本,但这已经在神经网络结构之外了(我后面会详细解释这波操作)。</p>
<p>为了让yolo_v3结构图更好理解,我对图1做一些补充解释:</p>
<p>DBL: 如图1左下角所示,也就是代码中的Darknetconv2d_BN_Leaky,是yolo_v3的基本组件。就是卷积&#43;BN&#43;Leaky</p>
<p>relu。对于v3来说,BN和leaky relu已经是和卷积层不可分离的部分了(最后一层卷积除外),共同构成了最小组件。</p>
<p>resn:n代表数字,有res1,res2, …</p>
<p>,res8等等,表示这个res_block里含有多少个res_unit。这是yolo_v3的大组件,yolo_v3开始借鉴了ResNet的残差结构,使用这种结构可以让网络结构更深(从v2的darknet-19上升到v3的darknet-53,前者没有残差结构)
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

下载期权论坛手机APP