Yolo系列算法-理论部分-YOLOv3

0. 写在前面

        YOLO系列博客,紧接上一篇Yolo系列算法-理论部分-YOLOv2-CSDN博客

1. YOLOv3-定型之作

        2018年,Redmon团队推出YOLOv3的网络模型,将骨干网络(backbone)由darknet-19替换成darknet-53网络,加入特征金字塔网络结构,解决多尺度检测的问题,在分类模块中使用逻辑回归代替了softmax,在兼顾实时性的基础上还保证目标检测的准确性。

        同时作者也提供了轻量级tiny-darknet,YOLO系列开始走向工程化的路线,轻量化的模型让目标检测算法在计算性能弱一些的芯片中运行成为了可能。

2. 网络结构

        YOLOv3的骨干网络有了较大的升级,将ResNet残差网络思想,将darknet-19改进为darknet-53;卷积层主要使用1×1和3×3的卷积核,每个卷积层之后都会加上批量归一化和Leaky ReLU(主要是为了防止过拟合)。卷积层、批量归一化层以及Leaky ReLU共同组成darknet-53中的基本卷积单元DBL,其中包含53个DBL,网络结构细节如下图所示。

        说明:

  1.  DBL:Conv(卷积)+BN(批量归一化)+LeakyReLU组成基本卷积单元
  2. res unit:输入通过两个DBL后,再与原输入进行add,常规的残差单元,目的是为了让网络可以提取更深层的特征,同时避免出现梯度消失或爆炸;
  3. resn:n表示n个res unit,所以resn = Zero Padding + DBL + n × res unit;
  4. concat:将darknet-53的中间层和后面的某一层的上采样进行张量拼接,达到多尺度特征融合的目的。这与残差层的add操作不一样,拼接会扩充张量的维度,而add直接相加不改变张量维度
  5. Y1、Y2、Y3:分别表示YOLOv3三种尺度的输出。

        改进

  1. 没有采用最大池化层,转而采用步长为2的卷积层进行下采样;
  2. 为了防止过拟合,在每个卷积层之后加入BN+Leaky ReLU
  3. 引入残差网络的思想,让网络可以提取深层的特征,同时避免出现梯度消失或爆炸;
  4. 网络的中间层和后面某一层的上采样进行张量拼接,实现多尺度特征融合的功能
3. 核心提升详解
        1. 多尺度Anchors

        YOLOv3选择三种不同shape的Anchors,同时每种Anchors具有三种不同的尺度,一共9种不同大小的Anchors,(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116×90)、(156×198)、(373×326)。

        借助特征金字塔的思想,三种不同尺度的网络输出Y1、Y2和Y3,目的是预测不同尺度的目标,由于在每一个尺度网格都负责预测3个边界框,且COCO数据集有80个类,所以网络输出的张量应该是:N×N×[3 × (4 + 1 + 80)]。由下采样次数不同,得到的N不同,最终Y1、Y2和Y3的shape分别为:[13,13,255]、[26,26,255]和[52,52,255]

        2.损失函数

        损失函数中,位置损失部分并没有改变,置信度损失和类别预测损失改为了交叉熵的损失计算方法

        3. 多标签分类

        将YOLOv2网络结构中用于分类的softmax层修改为逻辑分类器,v2中算法认定一个目标只会从属于一个类别,根据网络输出类别得分最大值,将其归为某一类。然而在一些复杂场景中,单一目标可能从属于多个类别。

        例如,在交通场景中,目标既是汽车又是卡车,单标签分类的方法就满足不了要求。

        逻辑分类器是对每一个类别都进行二分类,使用sigmoid函数,将其约束到0-1,如果某一个特征图输出经过该函数处理后的值大于设定的阈值,那么就认定目标框所对应的目标属于该类。

4. 性能表现

        YOLOv3在COCO数据集上测试结果,在满足检测精度差不多的情况下,有着更快的推理速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/461445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python循环2/5】for循环的复杂应用

目录 序言 导入1 累加 练习 导入2 计数器 练习 导入3 if判断 总结 序言 昨天,我们学习了 for 循环遍历列表、字典等数据的方式。今天我们会学习,for 循环与“累加” 、if 判断和“计数器”的结合运用。 导入1 在前面的学习中,我们学…

计算机网络——物理层(数据交换方式)

计算机网络——数据交换方式 提高数据交换方式的必要性电路交换电路交换原理电路交换的阶段建立阶段通信阶段和连接拆除阶段 电路交换的优缺点报文交换什么是报文报文交换的阶段报文交换的优缺点 分组交换分组交换的阶段分组交换的优缺点 数据交换方式的选择数据报方式数据报方…

VS Code上,QT基于cmake,qmake的构建方法(非常详细)

VS Code上,QT基于cmake,qmake的构建方法 1 前言2 QT基于cmake的构建方法2.1 VS Code关键插件安装2.2 系统环境变量配置2.3 VS Code中,环境变量配置2.4 Cmake新建一个新的Porject 3 QT基于qmake的构建方法 1 前言 最近,由于认证了github的学生…

尺寸小又薄的整流桥IBS

1. 整流桥功能介绍 整流桥在电子领域中扮演着至关重要的角色,为各种电子设备和电路提供了稳定的电源。整流桥的主要作用是将交流电信号转换为直流电信号。当交流电信号通过整流桥时,它会使得只有一个方向的电流能够通过,从而实现了将交流电信…

【数据结构练习题】栈——1.括号匹配 2.逆波兰表达式求值 3.出栈入栈次序匹配 4.最小栈

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ 文件目录 前言1.括号匹配1.1问题描述1.2解题思路1.3画图解释1.4代码实现2.逆波兰表达式求值 2.1问题描述2.2解题思路2.3画图解释2.4代码解释3.出栈入栈次序匹配 3.1问题描述3.2思路分析3.3画图解释3.…

金融知识分享系列之:MACD指标精讲

金融知识分享系列之:MACD指标精讲 一、MACD指标二、指标原理三、MACD指标参考用法四、MACD计算步骤五、MACD分析要素六、根据快线DIF位置判断趋势七、金叉死叉作为多空信号八、快线位置交叉信号九、指标背离判断行情反转十、差离值的正负十一、差离值的变化十二、指…

KBP210-ASEMI新能源专用整流桥KBP210

编辑:ll KBP210-ASEMI新能源专用整流桥KBP210 型号:KBP210 品牌:ASEMI 封装:KBP-4 正向电流(Id):2A 反向耐压(VRRM):1000V 正向浪涌电流:6…

中整协与成都艺星联合主办的“面部馒化修复注射技术培训班”圆满落下帷幕

在追求医疗美容学科深度的道路上,Yestar成都艺星再次成为行业先锋,近日,由中整协与成都艺星整形美容医院联合主办的“面部馒化修复注射技术培训班”在Yestar成都艺星圆满落下帷幕。本次培训班以其严谨的学术精神和对临床治疗思路的深入解读&a…

在idea中配置tomcat服务器,部署一个项目(下载教程加链接)

第一步:把Tomcat下载好 ww​​​​​​​Apache Tomcat - Welcome! 链接如上:进去后在左边找到Tomcat8点击进去后 找到图下内容 第二步: 打开这个文件点击bin进去 会出现一个黑色框框,也就是服务器 完成后就可以在浏览器输入…

Redis 搭建主从集群

文章目录 1. 主从集群架构1.1 准备实例和配置1.2 启动1.3 开启主从关系1.4 测试 2. 主从同步原理2.1 全量同步2.2 增量同步repl_backlog原理 2.3 主从同步优化小结 单节点的 Redis 并发能力有限,要进一步提高 Redis 的并发能力,就需要搭建主从集群&#…

2024年无人直播是否已经成为新趋势,商家使用矩图AI无人直播月增长5万+

无论是 个体商户、企业经营者、电商从业者、想创业赚钱的朋友;也不管你是做餐饮还是非餐饮;亦或是抖音小时达外卖。这篇文章,请勿必看完,对你的业绩增长是有绝对的帮助。 无人直播的发展经历了几个时代,现在已经到了4.0的时代,更安…

刷题DAY24 | LeetCode 77-组合

1 回溯法理论基础 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。 1.1 回溯法的效率 回溯法的性能如何呢&#xff0…

深入探索Java并发编程:ArrayBlockingQueue详解

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在Java的并发编程世界中,java.util.concurrent包为我们提供了多种用于线程间安全通信的数据结构,其中Arra…

PTA冰岛人

作者 陈越 单位 浙江大学 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的姓…

【研发日记】Matlab/Simulink技能解锁(二)——在Matlab Function编辑窗口Debug

文章目录 前言 行断点 条件断点 按行步进 Watch Value 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 行断点 当Matlab Function出现异常时,如果能确定大致的代码段,就可以在相应的行上设置一…

为什么单线程的 Redis 能那么快?

大家好我是苏麟 , 给大家找一些好的文章看看 . 原文文章 : 03 高性能IO模型:为什么单线程Redis能那么快? (lianglianglee.com) Redis 为什么用单线程? 要更好地理解 Redis 为什么用单线程,我们就要先了解多线程的开销。 多线程的…

算法打卡day18|二叉树篇07|Leetcode 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

算法题 Leetcode 530.二叉搜索树的最小绝对差 题目链接:530.二叉搜索树的最小绝对差 大佬视频讲解:二叉搜索树的最小绝对差视频讲解 个人思路 因为是在二叉搜索树求绝对差,而二叉搜索树是有序的,那就把它想成在一个有序数组上求最值&…

CVE-2019-5782:kArgumentsLengthType 设置偏小导致优化阶段可以错误的去除 CheckBound 节点

文章目录 环境搭建漏洞分析笔者初分析笔者再分析漏洞触发源码分析 漏洞利用总结 环境搭建 sudo apt install pythongit reset --hard b474b3102bd4a95eafcdb68e0e44656046132bc9 export DEPOT_TOOLS_UPDATE0 gclient sync -D// debug version tools/dev/v8gen.py x64.debug ni…

分布式调用与高并发处理(二)| Dubbo

文章目录 Dubbo概念_什么是分布式系统单机架构集群架构分布式架构单机、集群和分布式的区别 Dubbo概念_什么是RPCRPC两个作用:常见 RPC 技术和框架: Dubbo概念_简介Dubbo能做什么Dubbo支持的协议 Dubbo概念_核心组件注册中心Registry服务提供者Provider服…

Cartwheel——文本生成3D动作或动画的工具

一个强大的文本转3D动画平台,用户只需通过输入文字提示即可生成视频、游戏、电影、广告、社交或VR项目所需的3D动画角色。 Cartwheel 是一个功能强大的文本到动画平台。只需键入即可为您的视频、游戏、电影、广告、社交或 VR 项目制作角色动画 定位: 定位于为用户提供简单…