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数据集上测试结果,在满足检测精度差不多的情况下,有着更快的推理速度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在CasaOS系统玩客云中安装内网穿透工具实现远程访问内网主机下载资源

文章目录 1. CasaOS系统介绍2. 内网穿透安装3. 创建远程连接公网地址4. 创建固定公网地址远程访问 2月底,玩客云APP正式停止运营,不再提供上传、云添加功能。3月初,有用户进行了测试,局域网内的各种服务还能继续使用,但…

unity学习(60)——选择角色界面--MapHandler2-MapHandler.cs

1.新建一个脚本&#xff0c;里面有static变量loadingPlayerList using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Assets.Scripts.Model {internal class LoadData{public static List<Pl…

Go-知识select

Go-知识select 1. select 的特性1.1 chan读写1.2 返回值1.3 default 2. select 经典使用2.1 永久阻塞2.2 快速检错2.3 限时等待 3. 实现原理3.1 数据结构3.2 实现逻辑3.3 原理总结 4. 总结4.1 大概原理4.2 参数4.3 返回值 一个小活动&#xff1a; https://developer.aliyun.com…

springboot基于SpringBoot的学生请假管理系统的设计与实现

摘 要 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对学生请假管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上…

江科大stm32学习笔记【6-2】——定时器定时中断定时器外部时钟

一.定时器定时中断 1.原理 2.硬件 3.程序 此时CK_PSC72M&#xff0c;定时1s&#xff0c;也就是定时频率为1Hz&#xff0c;所以可以PSC7200-1,ARR10000-1。 Timer.c: #include "stm32f10x.h" // Device headerextern uint16_t Num;//声明跨文件的…

力扣经典题:分割平衡字符串

大佬的代码非常简洁 int balancedStringSplit(char * s){short i0,count0,sign0;while(s[i]){signs[i]L?sign1:sign-1;if(sign0) count;}return count; }

Transformer代码从零解读【Pytorch官方版本】

文章目录 1、Transformer大致有3大应用2、Transformer的整体结构图3、如何处理batch-size句子长度不一致问题4、MultiHeadAttention&#xff08;多头注意力机制&#xff09;5、前馈神经网络6、Encoder中的输入masked7、完整代码补充知识&#xff1a; 1、Transformer大致有3大应…

第十四届蓝桥杯省赛真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A \mathrm{A} A : 特殊日期试题 B: 与或异或试题 C : \mathrm{C}: C: 平均试题 D: 棋盘试题 E : \mathrm{E}: E: 互质数的个数试题 F: 阶乘的和试题 G: 小蓝的旅行计划试题 H: 太阳试题 I: 高塔试题 J \mathrm{J} J : 反异或 01 串 发现…

ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件)

ChatGPT编程—实现小工具软件(批量替换文本、批量处理图像文件) 今天借助[小蜜蜂AI][https://zglg.work]网站的ChatGPT编程实现一个功能&#xff1a;批量处理文件及其内容&#xff0c;例如批量替换文本、批量处理图像文件等。 环境&#xff1a;Pycharm 2021 系统&#xff1a…

NVENC 视频编码器 API 编程指南 ( 中文转译 )

基于 NVIDIA Kepler™ 和更高版本 GPU 架构的 NVIDIA GPU 包含基于硬件的 H.264/HEVC/AV1 视频编码器&#xff08;以下简称 NVENC&#xff09;。NVENC 硬件采用 YUV/RGB 作为输入&#xff0c;并生成符合H.264/HEVC/AV1 标准的视频比特流。可以使用 NVIDIA 视频编解码器 SDK 中提…

挑战杯 机器视觉人体跌倒检测系统 - opencv python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器视觉人体跌倒检测系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&…

蓝桥:硬币兑换(python)

问题描述&#xff1a; 小蓝手中有2023种不同面值的硬币,这些硬币全部是新版硬币,其中第i(1≤i≤2023)种硬币的面值为i,数量他为i个。硬币兑换机可以进行硬币兑换&#xff0c;兑换规则为:交给硬币兑换机两个新版硬币coin1和coin2,硬币兑换机会兑换成一个面值为coin1十coin2的旧…

使用C语言计算1/1-1/2+1/3-1/4+...+1/99-1/100

观察算式&#xff0c;发现分子都是1&#xff0c;分母从1~100&#xff0c;所以可以使用for循环产生1~100之间的数。 另一个问题是&#xff0c;如何产生正负交替的符号&#xff1f;很简单&#xff0c;这个符号本质上就是往每一项前面乘一个系数&#xff1a;一或者负一。所以只需…

008:安装Docker

安装Docker 如果不太熟悉Linux命令&#xff0c;不想学习Linux命令&#xff0c;可以直接看文末NAS面板章节&#xff0c;通过面板&#xff0c;像使用Window一样操作NAS。 一、安装 Docker 1.安装 Docker wget -qO- https://get.docker.com/ | sh2.启动 Docker 服务 sudo sys…

算法练习:二分查找

目录 1. 朴素二分查找2. 在排序数组中查找元素的第一个和最后一个位置3. 搜索插入位置4. x的平方根5. 山脉数组的峰值索引6. 寻找峰值7. 寻找旋转排序数组中的最小值8. 点名 1. 朴素二分查找 题目信息&#xff1a; 题目链接&#xff1a; 二分查找二分查找的使用前提为数据具有&…

掌握高级设计原则:Java中的过滤器模式解析与实战演练,构建灵活且可扩展的系统架构

过滤器模式是一种结构型设计模式&#xff0c;它允许开发者使用不同的标准来过滤一组对象&#xff0c;并通过逻辑运算以解耦的方式将它们联系起来。 过滤器模式的核心在于提供了一个处理对象的机制&#xff0c;这个机制可以根据一个或多个标准来决定哪些对象应该被接受、哪些应…

解析KafkaConsumer类的神奇之道

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 解析KafkaConsumer类的神奇之道 前言KafkaConsumer双线程设计主线程&#xff08;消费线程&#xff09;&#xff1a;心跳线程&#xff1a;示例代码&#xff1a; KafkaConsumer线程不安全线程安全的替代…

jetson nano——编译一些包的网址导航,pyside2,qt(持续更新)

目录 1.PySide2下载地址2.tesserocr下载地址3.Qt下载地址4.OpenSSL官网5.latex编译器下载地址5.1MikTex5.2TeX Live 1.PySide2下载地址 https://download.qt.io/official_releases/QtForPython/pyside2/ 如下图&#xff1a; 2.tesserocr下载地址 https://github.com/simonflue…

PTA冰岛人

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

行业突破!四信实现低延时摄像头弱网状态100ms以内实时传输

随着人工智能、大数据、区块链等技术在城市中快速发展&#xff0c;人们日常生活中已经离不开网络的支撑&#xff0c;而实现“人与人”、“人与物”及“物与物”之间高速连接应用的“时延”&#xff0c;是网络支撑中最重要的存在。 以城市生活例子为例&#xff0c;当网络延时出现…