专栏首页AI研习社专栏 | 目标检测算法之YOLOv3及YOLOV3-Tiny

专栏 | 目标检测算法之YOLOv3及YOLOV3-Tiny

以下文章来源于GiantPandaCV,作者BBuf

前言

昨天稍微填上了YOLOv2损失函数的坑,然后我在知乎关注了一个有趣的问题,地址是:https://www.zhihu.com/question/357005177 。这是我在上面写的一个回答:

因此,这一节我们只用关注YOLOv3算法本身,训练的时候将它的损失函数认为和YOLOv2一样就好,Darknet以及很多开源代码都是这样来做的。

算法原理

YOLOv3应该是现在YOLO系列应用的最广泛的算法了,基本就很少有人做工程还用V2了。而YOLOv3的算法原理也很简单,就引入了2个东西,一个是残差模型,一个是FPN架构。FPN我们已经介绍过了,推文在这:目标检测算法之FPN 残差结构后面梳理经典网络的时候应该会再介绍一遍。

残差模型Darknet-53

YOLOv3在YOLOv2提出的Darknet-19的基础上引入了残差模块,并进一步加深了网络,改进后的网络有53个卷积层,命名为Darknet-53,网络结构如下:

同时为了说明Darknet-53的有效性,作者给出了在TitanX上,使用相同的条件将的图片分别输入到以Darknet-19,Resnet-101,以及Resnet-152以及Darknet-53为基础网络的分类模型总,实验结果如下表:

从结果来看,Darknet-53比ResNet-101的性能更好,而且速度是其1.5倍,Darknet-53与ResNet-152性能相似但速度几乎是其2倍。同时,Darknet-53相比于其它网络结构实现了每秒最高的浮点数计算量,说明其网络结构可以更好的利用GPU。

YOLOV3结构

一张非常详细的结构图,其中YOLOv3有三个输出,维度分别是: 这里的75介绍过,代表的,其中20代表的是COCO数据集目标类别数,5代表的是每个目标预测框的,3代表的是某一个特征图的Anchor,也即先验框的数目。所以YOLOv3一共有9个Anchor,不过被平均分在了3个特征层中,这也实现了多尺度检测。。。一不小心就讲完了?

多尺度检测?

上一节讲完了。。。总结一下,YOLOv3借鉴了FPN的思想,从不同尺度提取特征。相比YOLOv2,YOLOv3提取最后3层特征图,不仅在每个特征图上分别独立做预测,同时通过将小特征图上采样到与大的特征图相同大小,然后与大的特征图拼接做进一步预测。用维度聚类的思想聚类出9种尺度的anchor box,将9种尺度的anchor box均匀的分配给3种尺度的特征图。

补充:YOLOv3-Tiny

或许对于速度要求比较高的项目,YOLOV3-tiny才是我们的首要选择,这个网络的原理不用多说了,就是在YOLOv3的基础上去掉了一些特征层,只保留了2个独立预测分支,具体的结构图如下:

这个是工程下更加常用的。

后记

YOLOv3和YOLOv3-Tiny就讲完了,感觉就是水文,后面有机会就更新一下如何使用NCNN部署YOLOv3或者YOLOv3-tiny模型,如果我还记得住这件事情的话,哈哈。顺便说一句,目标检测系列的讲解还远远没有结束,不信可以看我公众号work那一栏里面的深度学习里的目标检测学习路线,还有超多坑需要慢慢填!!!如果看到这里,不妨在右下角点个在看吧,谢谢。

本文分享自微信公众号 - AI研习社(okweiwu),作者:BBuf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 计算资源有限的人如何在深度学习领域成长?

    结合自己学习Deep Learning以来的经验来谈谈自己的感受吧,实验室刚开始也只有单卡的机器,现在工作了有机会使用更多的计算资源。

    AI研习社
  • Github 项目推荐 | 英特尔的深度学习扩展包 —— iDeep

    iDeep 是英特尔的深度学习扩展包,用于收集加速深度学习操作(如卷积,解卷积,relu 等)的模块。iDeep 使用英特尔 MKL-DNN 作为加速引擎。

    AI研习社
  • 数学来了 | 讲真,点积才是线性代数之光啊

    历史长河里,世世代代的教授和教科书撰写人,总是用荒谬复杂的矩阵计算,掩盖数学真实的简洁模样。

    AI研习社
  • 目标检测算法之YOLOv3及YOLOv3-Tiny

    昨天稍微填上了YOLOv2损失函数的坑,然后我在知乎关注了一个有趣的问题,地址是:https://www.zhihu.com/question/35700517...

    BBuf
  • 基于决策树的工业数据分类——数据智能

    在机器学习这个层面,将所要处理的数据看做是树的根,相应的选取数据的特征作为一个个节点(决策点),每次选取一个节点将数据集分为不同的数据子集,可以...

    用户7623498
  • 开源虚拟化管理平台Ovirt简介和配置环境搭建

    Ovirt是一个开源的虚拟化管理平台,是redhat 虚拟化管理平台RHEV的开源版本。

    力哥聊运维与云计算
  • 简单技巧绕过人机身份验证(Captcha)

    今天分享的Writeup是作者在目标网站漏洞测试中发现的一种简单的人机身份验证(Captcha)绕过方法,利用Chrome开发者工具对目标网站登录页面进行了简单...

    FB客服
  • Angular FormBuilder的工作原理

    如果Component的模板实现里,form的属性formGroup,即中括号属性后面的值checkoutForm2实际上不存在,那么在页面渲染之前会报错:ER...

    Jerry Wang
  • LeetCode 813. 最大平均值和的分组(DP)

    我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。 计算我们所能得到的最大分数是多少。

    Michael阿明
  • 软件测试职业发展:软件测试人员该何去何从

    王豆豆

扫码关注云+社区

领取腾讯云代金券