YOLO物体检测系列3:YOLOV3改进解读

news2025/1/18 17:10:28

🎈🎈🎈YOLO 系列教程 总目录

YOLOV1整体解读
YOLOV2整体解读

YOLOV3提出论文:《Yolov3: An incremental improvement》

1、YOLOV3改进

这张图讲道理真的过分了!!!我不是针对谁,在座的各位都是**
在这里插入图片描述
故意将yolov3画到了第二象限

  • 终于到V3了,最大的改进就是网络结构,使其更适合小目标检测
  • 特征做的更细致,融入多持续特征图信息来预测不同规格物体
  • 先验框更丰富了,3种scale,每种3个规格,一共9种
  • softmax改进,预测多标签任务
  1. yolo的思想就是一步预测,速度快,但是一直被质疑效果不好,这次改进了网络结构更加适合小目标检测
  2. yolo主要用的还是cnn,改进的地方还是在cnn上
  3. v1 2个框,v2做了一个聚类有5个框,v3 9个框
  4. 一个物体可能有多标签,比如哈士奇既是狗可别也是哈士奇类别

2、多scale方法与特征融合

  • 为了能检测到不同大小的物体,设计了3个scale

在这里插入图片描述
在v2版本中,将不同尺度的特征融合到了一起来满足多尺寸的物体检测,实际上效果并不好,v3版本中,将物体分为了三个尺寸(13,13)、(26,26)、(52,52),代表大、中、小三种尺寸的物体取预测。
(13,13),对应大物体,3个较大的候选框
(26,26),对应中等物体,3个略小的候选框
(52,52),对应小物体,3个较小的候选框

在yolov2中为了应对对小目标检测效果不好的情况,将最后一层卷积的特征图和倒数第二层做了融合,去预测。
在yolov3版本的做法是:

  1. 最后一层卷积的特征图尺寸是(13,13),记为结果A
  2. 倒数第二层卷积的特征图尺寸是(26,26),将结果A进行上采样至(26,26),融合在一起得到结果B
  3. 倒数第三层卷积的特征图尺寸是(52,52),将结果B进行上采样至(52,52),融合在一起得到结果C
  4. 结果A负责预测大物体,结果B负责预测中物体,结果C负责预测小物体

3、残差连接-为了更好的特征

在这里插入图片描述

  • 从今天的角度来看,基本所有网络架构都用上了残差连接的方法
  • V3中也用了resnet的思想,堆叠更多的层来进行特征提取

当年2016年resnet让深度学习真正变得深了起来,因为很多网络在堆叠到一定程度后,效果不仅没有上升反而下降,加上resnet的残差连接的思想,保证了堆叠不会出现效果下降的情况

4、网络架构

在这里插入图片描述

  • 没有池化和全连接层,全部卷积
  • 下采样通过stride为2实现
  • 3种scale,更多先验框
  • 基本上当下经典做法全融入了
  1. 在v2版本中去掉了所有的全连接层,在v3版本中所有的池化层也全部去掉了
  2. 下采样通过卷积步长为2来实现
  3. 红色部分从上到下依次对应小目标、中目标、大目标

整体就是利用残差网络得到三种不同输出的特征图,这三种不同特征图将之前的信息也融入进来
在这里插入图片描述

85的意思就是80+4+1,4是先验框的x、y、w、h,1是confidence判断是前景还是背景,80就是80个类别,这是自己定义的。

5、先验框改进设计

在这里插入图片描述

  • YOLO-V2中选了5个,这回更多了,一共有9种
  • 13*13特征图上:(116x90),(156x198),(373x326)
  • 26*26特征图上:(30x61),(62x45),(59x119)
  • 52*52特征图上:(10x13),(16x30),(33x23)

(116x90),(156x198),(373x326)对应大物体的先验框,用在13*13的特征图上,其他以此类推

6、softmax替代

  • 物体检测任务中可能一个物体有多个标签
  • logistic激活函数来完成,这样就能预测每一个类别是/不是
    在这里插入图片描述
    不管是在检测任务的标注数据集,还是在日常场景中,物体之间的相互覆盖都是不能避免的。因此一个锚点的感受野肯定会有包含两个甚至更多个不同物体的可能,在之前的方法中是选择和锚点IoU最大的Ground Truth作为匹配类别,用softmax作为激活函数。

YOLOv3多标签模型的提出,对于解决覆盖率高的图像的检测问题效果是十分显著的,YOLOv3的效果好很多,不仅检测的更精确,最重要的是被覆盖很多的物体也能很好的在YOLOv3中检测出来。

1、YOLOv3 使用的是logistic 分类器,而不是之前使用的softmax。

2、在YOLOv3 的训练中,便使用了Binary Cross Entropy ( BCE, 二元交叉熵) 来进行类别预测。

原因:
(1)softmax只适用于单目标多分类(甚至类别是互斥的假设),但目标检测任务中可能一个物体有多个标签。(属于多个类并且类别之间有相互关系),比如Person和Women。
(2)logistic激活函数来完成,这样就能预测每一个类别是or不是。

对于原始的输入,在给定的80个类别(假设是80),经过前面的网络提取后,最后的输出经过softmax,得到80个概率值,选取最高的那一个,就是预测结果,如果正确结果有两个(或者更多)

而用BCE来做呢?将所有的结果都进行二分类,即每一个类别都有两个概率值。

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

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

相关文章

《C++ Primer》第3章 字符串、向量和数组(二)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 3.3 标准库类型vector(P86) vector 表示对象的序列,其中所有对象的类型相同,每个对象都有一个与之对应的索引。vector 容纳着其他对象,所以常被称…

Linux内核4.14版本——drm框架分析(11)——DRM_IOCTL_MODE_ADDFB2(drm_mode_addfb2)

目录 1. drm_mode_addfb2 2. drm_internal_framebuffer_create 3. drm_fb_cma_create->drm_gem_fb_create->drm_gem_fb_create_with_funcs 4. drm_gem_fb_alloc 4.1 drm_helper_mode_fill_fb_struct 4.2 drm_framebuffer_init 5. 调用流程图 书接上回,使…

springboot对接postgres

安装postgres 注意:下述链接方式会自动创建数据库steven_russell,若需要创建其他数据库,可以手动执行命令创建数据库 docker run --name postgres \ -p 5432:5432 \ -e POSTGRES_USERsteven_russell \ -e POSTGRES_PASSWORD123456 \ -itd --privilegedtrue postgre…

【卖出看涨期权策略(Short Call)】

卖出看涨期权策略(Short Call) 卖出看涨期权策略又称为卖出无备兑看涨期权,如果一个投资者在不持有标的资产价格的情况下卖出看涨期权,那么这种策略就是卖出无备兑看涨期权策略。这个策略潜在盈利有限,但是亏损无限。 卖出看涨期…

基于SSM的应急资源管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Git - Git Merge VS Git Rebase

文章目录 概述Flow View小结 概述 Git merge和Git rebase是两种不同的版本控制工作流程,它们用于将一个分支的更改合并到另一个分支。它们有不同的工作原理和应用场景,下面是它们的主要区别: 合并的方式: Git Merge:合…

MySQL间隙锁深入分析

概念 什么是间隙锁? MySQL的间隙锁(gap lock)是一种锁定相邻数据间隔的机制。 触发时机? 当使用SELECT…FOR UPDATE或UPDATE语句时,MySQL会获取一个范围锁,包括指定条件内的所有数据行,并且还…

离散数学 学习 之 一阶逻辑基本概念 (一 )

个体词可以 理解为主语 , 3 不是偶数 ,3 就是 个体常项 凡整数都能被 2 整除 , 整数就是 个体变项 上面的谓词是 ( 1 ) 是无理数 ( 2 ) 是有理数 ( 3 ) 与 同岁 &#xf…

四川百幕晟科技:提升店铺质量方法是什么?

抖店是抖音旗下的移动电子商务平台,为商家提供在线销售和促销的机会。在抖店,经验值是商家评价和信誉的重要指标之一。反映了平台上商户的服务质量和用户满意度。那么,如何查看自己在抖店手机上的体验分数呢? 1、如何查看抖店手机…

C# 随机数生成 Mersenne Twister 马特赛特旋转演算法 梅森旋转算法

NuGet安装MathNet.Numerics 引用: using MathNet.Numerics.Random; /// <summary>/// 包括lower&#xff0c;不包括upper/// </summary>/// <param name"lower"></param>/// <param name"upper"></param>/// <para…

老师如何私发成绩?

尊敬的各位老师&#xff0c;大家好&#xff01;你是否曾经为繁琐的成绩管理和与学生家长的沟通而感到头疼&#xff1f;是否希望有一个简单方便的工具&#xff0c;能够帮助你私发成绩、管理班级和与家长交流&#xff1f;那么&#xff0c;易查分将是你的最佳选择&#xff01;易查…

destoon根据标题删除重复数据

因为采集数据比较庞大&#xff0c;难免出现重复数据&#xff0c;所以写了一个根据标题进行删除重复数据的mysql命令&#xff0c;需要的朋友可以使用。 DELETE from destoon_article_36 where title in (SELECT * from (SELECT title FROM destoon_article_36 GROUP BY title …

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目 前言一. 相交链表&#xff08;邻接图和DFS&#xff09; 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 相交链表&#xff08;邻接图和DFS&#xff09; 原题链接 public int reachableNodes(int n, int[][] ed…

超强干货,Pytest自动化测试框架fixture固件使用,0-1精通实战

前言 如果有以下场景&#xff1a;用例 1 需要先登录&#xff0c;用例 2 不需要登录&#xff0c;用例 3 需要先登录。很显然无法用 setup 和 teardown 来实现了 fixture 可以让我们自定义测试用例的前置条件 fixture 的优势 命名方式灵活&#xff0c;不局限于 setup 和teard…

黑马JVM总结(七)

&#xff08;1&#xff09;StringTable_编译器优化 “a”“b”对应#4&#xff1a;是去常量池中找ab的这个符号 astore 5&#xff1a;是把这个存入编号为5的局部变量 “ab”对应的指令 #4&#xff0c;跟“a”“b”对应#4下面弄是一样的 在执行s3“ab”这行个代码时&#xf…

【Python】从入门到上头—mysql数据库操作模块mysql-connector和PyMySQL应用场景 (15)

mysql-connector MySQL官方提供了mysql-connector-python驱动 安装驱动 python -m pip install mysql-connector连接数据库获取连接 import mysql.connectordb mysql.connector.connect(host"localhost", #ipuser"root", #用户名passwd"root",…

Python的命令行参数

Python的命令行参数&#xff0c;提供了很多有用的功能&#xff0c;可以方便调试和运行&#xff0c;通过man python就能查看&#xff0c;以下是一些常用参数使用实例和场景: 1. -B参数 在import时候&#xff0c;不产生pyc或者pyo文件: 比如有程序main.py如下: from Hello im…

SSM - Springboot - MyBatis-Plus 全栈体系(七)

第二章 SpringFramework 四、SpringIoC 实践和应用 3. 基于 注解 方式管理 Bean 3.4 实验四&#xff1a;Bean 属性赋值&#xff1a;基本类型属性赋值&#xff08;DI&#xff09; Value 通常用于注入外部化属性 3.4.1 声明外部配置 application.properties catalog.nameM…

UG\NX二次开发 获取装配部件的相关信息UF_ASSEM_ask_component_data

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 获取装配部件的相关信息UF_ASSEM_ask_component_data 包括:零件名称、引用集名称、实例名称、组件的位置、坐标系矩阵、转换矩阵。 效果: 代…

Docker基础学习

Docker 学习目标&#xff1a; 掌握Docker基础知识&#xff0c;能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用应用的安装 掌握docker迁移与备份相关命令 能够运用Dockerfile编写创建容器的脚本 能够…