当前位置: 首页 > news >正文

YOLOv3学习

YOLOv3仅使用卷积层,使其成为一个全卷积网络(FCN)。文章中,作者提出一个新的特征提取网络,Darknet-53。正如其名,它包含53个卷积层,每个后面跟随着batch normalization层和leaky ReLU层。没有池化层,使用步幅为2的卷积层替代池化层进行特征图的降采样过程,这样可以有效阻止由于池化层导致的低层级特征的损失。

在这里插入图片描述
在没有 padding 的前提下,stride = 2 会让输入的尺寸高度和宽度各自减小一般,在最左列经过 5 次CBL中 stride = 2 的卷积核之后,在第三,四,五 Block层 特征图的尺寸分别为 52,26,13。
C 3 , C 4 , C 5 C_3,C_4,C_5 C3,C4,C5 是对应层输出的特征图,第五个 Block 层输出的特征图经过上采样高度和宽度变为原先 2 倍之后和第四个 Block 层输出的特征图 在通道维度上进行 concatenation 拼接。类似地,第四个 Block 层输出的特征图经过上采样扩大后和第三个Block 层的输出进行拼接。

不论是YOLOv1,还是YOLOv2,都有一个共同的致命缺陷:只使用了最后一个经过32倍降采样的特征图(简称C5特征图)。尽管YOLOv2使用了passthrough技术将16倍降采样的特征图(即C4特征图)融合到了C5特征图中,但最终的检测仍是在C5尺度的特征图上进行的,最终结果便是导致了模型的小目标的检测性能较差。

为了解决这一问题,YOLO作者做了第三次改进,不仅仅是使用了更好的主干网络:DarkNet-53,更重要的是使用了FPN技术与多级检测方法,相较于YOLO的前两代,YOLOv3的小目标的检测能力提升显著。

在3个不同尺度的每个特征图上,YOLOv3在每个网格处放置3个先验框。由于YOLOv3一共使用3个尺度,因此,YOLOv3一共设定了9个先验框,这9个先验框仍旧是使用kmeans聚类的方法获得的。在COCO上,这9个先验框的宽高分别是(10, 13)、(16, 30)、(33, 23)、(30, 61)、(62, 45)、(59, 119)、(116, 90)、(156, 198)、(373, 326)。

Bounding Box Prediction

YOLOv3 predicts an objectness score for each bounding box using logistic regression. This should be 1 if the bounding box prior overlaps a ground truth object by more than any other bounding box prior. If the bounding box prior is not the best but does overlap a ground truth object by more than some threshold we ignore the prediction, following. We use the threshold of 0.5. Unlike [17] our system only assigns one bounding box prior for each ground truth object. If a bounding box prior is not assigned to a ground truth object it incurs no loss for coordinate or class predictions, only objectness.

这段话描述的是YOLOv3模型中对于边界框(bounding box)和对象置信度(objectness score)的处理方式。具体来说:

  1. 对象置信度预测 在YOLOv3中,对于每个ground truth对象,只有与之IoU最高的anchor box的对象置信度分数会被设置为1,表明这个anchor box负责预测该对象。其余的anchor boxes的对象置信度分数会被设置为0,表示它们不负责预测该对象。

  2. 忽略预测 如果一个边界框的先验不是最好的,但仍然与真实对象重叠超过某个阈值(在这里是0.5),那么这个预测将被忽略。这意味着在训练过程中,这种情况下的预测不会对损失函数产生影响。

  3. 单一 Anchor box分配 与其他一些系统不同,YOLOv3为每个真实对象只分配一个anchor box负责预测该目标。

  4. 损失函数 如果一个边界框先验没有被分配给任何真实对象,那么它在坐标或类别预测上不会产生损失,只会在对象置信度上产生损失。这是因为这个边界框没有被用来预测任何具体的对象,所以它的位置和类别是不重要的,只有它的对象置信度是有意义的(应该接近于0,因为它没有检测到任何对象)。

简而言之,这段话描述了YOLOv3中如何处理边界框和对象置信度的预测,以及如何在训练过程中计算损失。

Class Prediction

YOLOv3中的多标签类预测是指模型能够为每个检测到的对象预测多个类别标签,而不是只预测单一的类别。这对于处理那些可能属于多个类别的对象特别有用,例如在某些场景中,一个对象可能既被视为"人"也被视为"运动员"。

在YOLOv3中,这种多标签类预测是通过使用逻辑回归(而不是传统的softmax函数)来实现的。对于每个对象,模型会为每个类别输出一个独立的置信度分数,这个分数表示对象属于该类别的概率。这些置信度分数是独立的,因此一个对象可以同时具有多个高置信度的类别标签。

Predictions Across Scales

在YOLOv3中,多尺度预测指的是使用不同尺寸的特征图(feature maps)来进行目标检测。这些特征图分别对应于网络中不同深度的层,每个层捕获了图像的不同尺度的信息。通过这种方式,模型能够同时检测图像中不同尺寸的对象,从而提高了检测的准确性和鲁棒性。

YOLO的多尺度训练是一种技术,用于提高模型在不同大小的对象上的性能。在训练过程中,输入图像的尺寸会在一定范围内随机变化,这样模型就能够学习在不同尺度上识别对象。

YOLOv3在 3 个不同的尺度上预测边界框。使用与特征金字塔网络相似的概念从这些尺度中提取特征[8]。在基本特征提取器中,作者添加了几个卷积层。最后一层预测了一个3维张量编码边界框、对象和类预测。在使用COCO[10]的实验中,作者在每个尺度上预测3个边界框,因此对于4个边界框偏移量,1个物体预测和80个类别预测,张量是 N × N × [ 3 ∗ ( 4 + 1 + 80 ) ] N × N ×[3∗(4 + 1 + 80)] N×N×[3(4+1+80)]

这段话描述了YOLOv3在三个不同尺度上预测边界框的方法,以及它是如何利用特征金字塔网络(Feature Pyramid Networks,FPN)的概念来提取特征的。具体来说:

  1. 多尺度预测 YOLOv3在三个不同的尺度上预测边界框。这意味着模型能够检测不同大小的对象。

  2. 特征提取 模型从基础特征提取器中添加了几个卷积层,最后一个卷积层预测一个三维张量,该张量编码了边界框、对象置信度和类别预测。在COCO数据集上的实验中,每个尺度预测3个边界框,因此张量的维度是 N × N × [ 3 × ( 4 + 1 + 80 ) ] N × N × [3 × (4 + 1 + 80)] N×N×[3×(4+1+80)],其中4代表边界框的偏移量1代表对象置信度预测80代表类别预测

  3. 特征融合 接着,模型将前两层的特征图上采样2倍,并将其与网络更早层的特征图通过连接(concatenation)合并。这样做可以从上采样的特征中获取更有意义的语义信息,同时从早期的特征图中获取更细粒度的信息。然后,模型添加了一些卷积层来处理这个合并的特征图,并最终预测一个类似的张量

  4. 重复操作 模型再次重复这个设计,以预测最后一个尺度的边界框。因此,第三个尺度的预测受益于之前的所有计算以及网络早期的细粒度特征。

  5. 边界框先验 模型仍然使用 k-means 聚类来确定边界框先验。模型选择了9个聚类和3个尺度,然后在尺度之间均匀地划分聚类。在COCO数据集上,9个聚类的尺寸分别是: ( 10 × 13 ) , ( 16 × 30 ) , ( 33 × 23 ) , ( 30 × 61 ) , ( 62 × 45 ) , ( 59 × 119 ) , ( 116 × 90 ) , ( 156 × 198 ) , ( 373 × 326 ) (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326) (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)

总的来说,这段话描述了YOLOv3是如何在不同的尺度上预测边界框,并利用特征融合来提高模型对不同大小对象的检测能力的。

Feature Extractor

使用一种新的网络提取特征 Darknet 53

在这里插入图片描述
过去,YOLO在处理小物体时遇到了困难。然而,现在作者看到了这一趋势的逆转。通过新的多尺度预测,作者看到YOLOv3具有相对较高的APS性能。但是,它在中型和大型对象上的性能相对较差。要弄清这件事的真相,还需要更多的调查。

相关文章:

YOLOv3学习

YOLOv3仅使用卷积层,使其成为一个全卷积网络(FCN)。文章中,作者提出一个新的特征提取网络,Darknet-53。正如其名,它包含53个卷积层,每个后面跟随着batch normalization层和leaky ReLU层。没有池…...

oracle实现批量插入

一、Dao层(增加Parm参数) void insert(Param("list") List<TicketInfo> ticketInfos); 二、Mapper层(加入条件判断值是否为空) insert all<foreach collection"list" item"item" index"index">into 表名<trim prefix…...

游戏客户端开发

1、LOL里面用到的是什么同步机制&#xff1f; 2、网络不好的情况下人物会出现瞬移等情况&#xff0c;怎样避免&#xff1f; 3、游戏里面有没有涉及数据存储&#xff0c;如存档之类的&#xff1f;、 4、如果让你设计存档&#xff0c;会如何着手&#xff1f; 5、以二进制方式…...

电商API接口苏宁易购获得suning商品详情页实时数据API请求接入演示

要接入苏宁易购的API接口获取商品详情页实时数据&#xff0c;你需要遵循以下步骤&#xff1a; 注册成为开放平台的开发者&#xff0c;获取ApiKey和ApiSecret。 使用ApiKey和ApiSecret获取访问令牌&#xff08;AccessToken&#xff09;。 使用AccessToken调用苏宁易购的API接口…...

数据类型转换篇(二)

文章目录 7.11 float()7.12 hex()7.13 int()7.14 list()7.15 oct()7.16 ord()7.17 repr()7.18 set()7.19 str()7.20 tuple() 7.11 float() float() 是 Python 的内置函数&#xff0c;用于将一个数值或数值表示的字符串转换成浮点数&#xff08;floating point number&#xff…...

新零售SaaS架构:线上商城系统架构设计

零售商家为什么要建设线上商城&#xff1f; 传统的实体门店服务范围有限&#xff0c;只能吸引周边500米以内的消费者。因此&#xff0c;如何拓展服务范围&#xff0c;吸引更多的消费者到店&#xff0c;成为了店家迫切需要解决的问题。 缺乏忠实顾客&#xff0c;客户基础不稳&a…...

Word文档密码设置:Python设置、更改及移除Word文档密码

给Word文档设置打开密码是常见的Word文档加密方式。为Word文档设置打开密码后&#xff0c;在打开该文档时&#xff0c;需要输入密码才能预览及编辑&#xff0c;为Word文档中的信息提供了有力的安全保障。如果我们需要对大量的Word文档进行加密、解密处理&#xff0c;Python是一…...

jar读取目录配置、打包jar后无法获取目录下的配置

jar读取目录配置、打包jar后无法获取目录下的配置 jar读取目录配置、打包jar后无法获取目录下的配置。java打成jar包后获取不到配置文件路径。解决项目打成jar包上线无法读取配置文件。打包jar后无法读取resource下的配置文件 场景 需要读取 src/main/resources/mapper下的所…...

python第三次项目作业

打印课堂上图案 判断一个数是否是质数&#xff08;素数&#xff09; 设计一个程序&#xff0c;完成(英雄)商品的购买&#xff08;界面就是第一天打印的界面&#xff09; 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票&a…...

架构之安全性维度

流程安全性 安全基本原则&#xff1a;可用性 完整性 机密性 CIA 安全框架&#xff1a;zachman P2DR Sabsa IPDRR IATF 安全评估方法&#xff1a;安全测试&#xff1a; SAST静态测试、 IAST交互测试 安全扫描 危险模型&#xff1a;攻击树分析 DREAD风险评估 渗透测试&#xff1a…...

odoo字段访问控制

在 Odoo 中&#xff0c;可以通过几种方式实现字段的访问控制&#xff0c;包括通过模型安全规则、记录规则和字段属性来限制字段的访问。 1. 使用模型安全规则 模型安全规则&#xff08;也称为访问控制列表&#xff0c;ACLs&#xff09;允许你定义哪些用户组可以对哪些模型进行…...

mysql的基本知识点-操作数据库表

创建数据库&#xff1a; CREATE DATABASE database_name;创建一个名字为database_name的数据库&#xff1b; 删除数据库&#xff1a; DROP DATABASE database_name;删除名字为database_name的数据库&#xff1b; 在执行删除数据库操作前&#xff0c;请确保你确实想要删除数据…...

基于Springboot的疫情物资管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情物资管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…...

【postgresql 基础入门】表的约束(一)主键与外键,数据的实体完整性与参照完整性,外键引用数据被修改时的动作触发

主键与外键-表的约束(一) ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 系列文章…...

centos 7 添加启动脚本

centos 7 java 开机启动 在CentOS 7上配置Java应用程序开机启动&#xff0c;可以通过创建一个systemd服务单元来实现。以下是步骤和示例代码&#xff1a; 创建一个新的systemd服务文件。 sudo vi /etc/systemd/system/your-java-app.service 在该文件中添加以下内容&#xff…...

java入门基础掌握知识

Java基础入门 Java一门 高级 编程语言 Java是 sun 公司研发的&#xff0c;现在属于 oracle 公司 Java之父是 詹姆斯.高斯林 Java主要是来做 企业级 应用开发的 Java的三大技术体系是&#xff1a; 技术体系说明Java SE(Java Standard Edition):标准版Java技术的核心和基础…...

Harbor高可用(nginx和keepalived)

Harbor高可用&#xff08;nginx和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;nginx和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设置时…...

[数据集][目标检测]牛羊检测数据集VOC+YOLO格式3393张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3393 标注数量(xml文件个数)&#xff1a;3393 标注数量(txt文件个数)&#xff1a;3393 标注…...

命令提示符——CMD基础操作介绍

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…...

vue2 自定义 v-model (model选项的使用)

效果预览 model 选项的语法 每个组件上只能有一个 v-model。v-model 默认会占用名为 value 的 prop 和名为 input 的事件&#xff0c;即 model 选项的默认值为 model: {prop: "value",event: "input",},通过修改 model 选项&#xff0c;即可自定义v-model …...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...