一.原理解析

1.yolov3在yolo、yolov2基础之上进行了优化,使得模型既保提升了一定的性能又在速度上做了折中;结构网络示意图如下:

(注:图片借鉴网上相关领域大佬制作的图片,如有侵权请联系本人删除处理)

2.Backbone网络:Backbone使用了DarkNet-53(模型共有106层),这就是速度下降的主要原由;CBL是网络结构的基础模块,此模块主要讲解BN,BN全称为Batch normalization为批量归一化(批量标准化),和LRN(Local response normalization)区分开;BN主要影响数据集数据分布,这个修正主要影响模型收敛速度;LRN会影响权重参数学习对数据进行量级归拢。下面给出两个概念的公式及注解:

1)BN:

2)LRN:

公式中的a表示卷积层(包括卷积操作和池化操作)后的输出结果,这个输出结果的结构是一个四维数组[batch,height,width,channel],这里可以简单解释一下,batch就是批次数(每一批为一张图片),height就是图片高度,width就是图片宽度,channel就是通道数可以理解成一批图片中的某一个图片经过卷积操作后输出的神经元个数(或是理解成处理后的图片深度)。ai(x,y)表示在这个输出结构中的一个位置[a,b,c,d],可以理解成在某一张图中的某一个通道下的某个高度和某个宽度位置的点,即第a张图的第d个通道下的高度为b宽度为c的点。论文公式中的N表示通道数(channel)。a,n/2,k,α,β分别表示函数中的input,depth_radius,bias,alpha,beta,其中n/2,k,α,β都是自定义的,特别注意一下∑叠加的方向是沿着通道方向的,即每个点值的平方和是沿着a中的第3维channel方向的,也就是一个点同方向的前面n/2个通道(最小为第0个通道)和后n/2个通道(最大为第d-1个通道)的点的平方和(共n+1个点)。而函数的英文注解中也说明了把input当成是d个3维的矩阵,说白了就是把input的通道数当作3维矩阵的个数,叠加的方向也是在通道方向。第i个核在位置(x,y)运用激活函数ReLU后的输出,n是同一位置上临近的kernal map的数目,N是kernal的总数。参数K,n,alpha,belta都是超参数,一般设置k=2,n=5,aloha=1*e-4,beta=0.75。

3.Neck网络:Neck网络也是yolov3算法的主要改变之处之一,采用了多尺寸检测(三个分支),并实现了FPN(通过上采样),这样就区别于两阶算法的单一输出尺寸特征图并实现了特征融合;进而提升了模型对于小目标的效果。FPN结构示意图如下:

4.yolo_head实现了输出结果并进行修正(bbox坐标)等操作,最后会送入损失层计算损失作为最终的输出;对网络输出结果bbox坐标修正公式如下:

(cx,cy):该点所在网格的左上角距离最左上角相差的格子数。
(pw,ph):先验框的边长
(tx,ty):目标中心点相对于该点所在网格左上角的偏移量
(tw,th):预测边框的宽和高

这里说一个注意的trick:在大多数算法里NMS(非极大值抑制)都是在预测阶段执行,在训练阶段一般不会去执行。

5.LOSS层:

S:grid size,即13×13,26×26,52×52

B:box

:如果在i,j处的box有目标,其值为1,否则为0

:如果在i,j处的box没有目标,其值为1,否则为0

注意区分公式里的c和ci的区分一个表示类别标签,一个表示概率。

6.总结:

1)yolov3较之前的两个版本主要优化了实现三个分支网络并实现了FPN,并在最后分类计算时实现了逻辑分类器。

2)在每个网络 分支下实现了每个网格3个anchors。

3)在基础网络Backbone上实现了DarkNet53。

4)由于在计算损失值之前用逻辑分类器代替softmax进而可以实现多类别标签预测。

二.代码流程如下图所示:

yolov3原理解析及代码流程相关推荐

  1. Pix2Pix原理解析以及代码流程

    文章目录 1.网络搭建 2.反向传播过程 3.PatchGAN 4.与CGAN的不同之处 1.网络搭建 class UnetGenerator(nn.Module):""" ...

  2. 【NLP】Doc2vec原理解析及代码实践

    本文概览: 1. 句子向量简介 Word2Vec提供了高质量的词向量,并在一些任务中表现良好.虽然Word2Vec提供了高质量的词汇向量,但是仍然没有有效的方法将它们结合成一个高质量的文档向量.对于一 ...

  3. 如何用Diffusion models做interpolation插值任务?——原理解析和代码实战

    Diffusion Models专栏文章汇总:入门与实战  前言:很多Diffusion models的论文里都演示了插值任务,今天我们讲解一下如何用DDIM/DDPM做interpolation任务 ...

  4. 深入理解ResNet原理解析及代码实现

    github地址:https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py 论文地址:https://arx ...

  5. 深度学习核心技术精讲100篇(九)-Catboost算法原理解析及代码实现

    前言 今天博主来介绍一个超级简单并且又极其实用的boosting算法包Catboost,据开发者所说这一boosting算法是超越Lightgbm和XGBoost的又一个神器. catboost 简介 ...

  6. ORB_SLAM2 原理、论文解读、代码流程

    ORB_SLAM2 原理+论文解读+代码流程 算法原理 Tracking LocalMapping LoopClosing 代码流程 文件的调用关系 重要变量的数据结构 Tracking流程 Loca ...

  7. 【面试必备】奉上最通俗易懂的XGBoost、LightGBM、BERT、XLNet原理解析

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 在非深度学习的机器学习模型中,基于GBDT算法的XGBoost.LightGBM等有着非常优秀的性能,校招算法岗面试中"出镜率"非 ...

  8. 微服务精通之Hystrix原理解析

    前言 经过微服务精通之Ribbon原理解析的学习,我们了解到了服务消费者获取服务提供者实例的过程,在这之后,服务消费者会调用服务提供者的接口.但是在调用接口的过程中,我们经常会遇见服务之间的延迟和通信 ...

  9. 微服务精通之Feign原理解析

    前言 经过微服务精通之Ribbon原理解析的学习,我们了解到了服务消费者获取服务提供者实例的过程,都是通过RestTemplate来实现的,而且,都是模板化操作.那spring cloud是否有哪个组 ...

  10. Pytorch | yolov3原理及代码详解(二)

    阅前可看: Pytorch | yolov3原理及代码详解(一) https://blog.csdn.net/qq_24739717/article/details/92399359 分析代码: ht ...

最新文章

  1. 完全相同的4个小矩形如图所示放置_3个数学难题——走进传奇数学天才的数字游戏...
  2. Facebook计划整合WhatsApp、Instagram和Messenger的基础设施
  3. CVPR 2021 | 港大、牛津提出PAConv: 一种位置自适应卷积,点云分类、分割任务表现SOTA
  4. 同步屏障CyclicBarrier
  5. vue-cli3 本地代理配置
  6. java插入数据库字符串拼接_JAVA字符串怎么连接?
  7. html文件怎么保存链接,如何使用beautifulsoup将链接的html保存在文件中,并对html文件中的所有链接执行相同的操作...
  8. IDLDrawWidaget Activex
  9. matlab判断向量组线性相关性的三种方法
  10. mybatis与hibernate区别
  11. 算法(四)、时间复杂度、排序、查找
  12. 565.数组嵌套(力扣leetcode) 博主可答疑该问题
  13. Python一元二次方程求根
  14. w10打开网络计算机退出,Win10网络发现已关闭怎么办?|Win10启用网络发现方法
  15. 二分类图片标签从0-1改为0-255——将图片位深度从1改为8
  16. 【强化学习】动态规划
  17. thingworx项目-mushup
  18. 《终身成长》学习总结
  19. 共享一个计算属相年份的咚咚-----javascript 代码
  20. 2021 年 8 月全国程序员薪酬出炉:北京18904元位居榜首

热门文章

  1. python内置函数什么意思_python内置函数是什么
  2. 如何使用工具切换设备ip 电脑和手机怎么如何换ip?
  3. 软件测试——selenium环境搭建及自动化测试
  4. 信号分析与处理(1)
  5. OpenGL学习(六)纹理与obj格式模型的读取
  6. 系统篇: ext4 文件系统
  7. 【Unity项目实战】手把手教学:飞翔的小鸟(1)导入素材
  8. 软件测试做简历专业技能这样写,还怕没面试机会?
  9. java计算机毕业设计足球队管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  10. 宽度学习与深度学习中的时空转化问题