YOLO V3 详解

news2024/11/23 2:22:41

YOLO V3

论文链接:YOLOv3: An Incremental Improvement

主要改进

  1. Anchor: 9个大小的anchor,每个尺度分配3个anchor。
  2. Backbone改为Darknet-53, 引入了残差模块
  3. 引入了FPN,可以进行多个尺度的训练,同时对于小目标的检测有了一定的提升 (因为有3个不同大小的feature map 用来做检测)。
  4. Loss function的改进。

Network structure improvement

Backbone: Darknet-53

分别要下采样 32, 16, 8。因此输入的图片尺度一定要是32的倍数。改进点在于引进了残差模块

在这里插入图片描述

FPN-多尺度学习

论文链接: Feature Pyramid Networks for Object Detection

Backbone是一个全卷积的网路结构,不含有全连接层,所以可以适用于各种不同尺度的输入大小。

在这里插入图片描述

多尺度的含义:

  • 3个尺度的feature map 来预测大目标和小目标。
  • 通过上采样的方法将深层的特征与浅层的特征相融合。
  • 比如,52×52的特征是由darknet浅层的细粒度像素级别的特征和深层的语义全局的特征的融合。

Loss Function

预测框分为三种:

  1. 正样本: 与GT的IOU最大
  2. 负样本: 与GT的IOU < 0.5
  3. 忽略样本:与GT的IOU > 0.5 但不是最大的。
    忽略样本不参与loss的计算。

正负样本

  • YOLO v3 只选取与groud truth的IOU最大的预测框进行拟合。而前面两个版本只是按照置信度标签及IOU值进行拟合。
  • 区别于前面版本的YOLO,置信度标签 (objectness score)是预测框和ground truth的IOU值, YOLO v3 对于正样本的置信度标签直接设为1。这样的好处在于,如果是用IOU值作为置信度标签,对于一些IOU值较低的样本不能很好的学习,同时对于小目标IOU对于像素的偏移很敏感。

Loss Function

  • 正样本对于分类和定位学习产生贡献,而负样本只对置信度学习产生贡献。
  • 多标签范式不再使用softmax来进行分类(即假设所有的类别都是互斥的,同一个框只可能属于一个类)。而使用对于每个类别都进行二分类任务,这样的好处在于对于同一个框可能可以存在不同的标签 (e.g. 学生、人).

在YOLOv3中,Loss分为三个部分:

  • 一个是xywh部分带来的误差,也就是bbox带来的loss
  • 一个是置信度带来的误差,也就是obj带来的loss
  • 最后一个是类别带来的误差, 也就是class带来的loss
    在代码中分别对应lbox, lobj, Icls,yolov3中使用的loss公式如下:
    l b o x = λ coord  ∑ i = 0 S 2 ∑ j = 0 B 1 i , j o b j ( 2 − w i × h i ) [ ( x i − x i ^ ) 2 + ( y i − y i ^ ) 2 + ( w i − w ^ i ) 2 + ( h i − h i ^ ) 2 ] l c l s = λ class  ∑ i = 0 S 2 ∑ j = 0 B 1 i , j obj  ∑ c ∈  classes  p i ( c ) log ⁡ ( p ^ i ( c ) ) l o b j = λ noobj  ∑ i = 0 S 2 ∑ j = 0 B 1 i , j n o o b j ( c i − c ^ i ) 2 + λ o b j ∑ i = 0 S 2 ∑ j = 0 B 1 i , j o b j ( c i − c ^ i ) 2 l o s s = l b o x + l o b j + l c l s \begin{aligned} l b o x &=\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{o b j}\left(2-w_{i} \times h_{i}\right)\left[\left(x_{i}-\hat{x_{i}}\right)^{2}+\left(y_{i}-\hat{y_{i}}\right)^{2}+\left(w_{i}-\hat{w}_{i}\right)^{2}+\left(h_{i}-\hat{h_{i}}\right)^{2}\right] \\ l c l s &=\lambda_{\text {class }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{\text {obj }} \sum_{c \in \text { classes }} p_{i}(c) \log \left(\hat{p}_{i}(c)\right) \\ l o b j &=\lambda_{\text {noobj }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{n o o b j}\left(c_{i}-\hat{c}_{i}\right)^{2}+\lambda_{o b j} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{o b j}\left(c_{i}-\hat{c}_{i}\right)^{2} \\ l o s s &=l b o x+l o b j+l c l s \end{aligned} lboxlclslobjloss=λcoord i=0S2j=0B1i,jobj(2wi×hi)[(xixi^)2+(yiyi^)2+(wiw^i)2+(hihi^)2]=λclass i=0S2j=0B1i,jobj c classes pi(c)log(p^i(c))=λnoobj i=0S2j=0B1i,jnoobj(cic^i)2+λobji=0S2j=0B1i,jobj(cic^i)2=lbox+lobj+lcls
    其中:
    S S S: 代表grid size
    B B B: box
    1 i , j o b j 1_{i, j}^{o b j} 1i,jobj : 如果在i,j 处的box有目标,其值为 1 ,否则为 0
    1 i , j noobj  1_{i, j}^{\text {noobj }} 1i,jnoobj  : 如果在i,j 处的box没有目标,其值为 1 ,否则为 0

Focal Loss

为什么YOLO v3使用focal loss效果不好?
Focal loss解决单阶段目标检测,正负样本不均衡,有用的负样本较少的问题。相当于挖掘负样本信息。而YOLO v3对于负样本的IOU阈值设置为0.5过高,因此负样本中其实存在一些疑似正样本的样本,对于这些样本,focal loss基于过高的noise权重会导致效果不好。

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

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

相关文章

【微服务】RestClient操作文档

为了与索引库操作分离&#xff0c;我们再增加一个测试类&#xff0c;做两件事情&#xff1a; 初始化RestHighLevelClient我们的酒店数据在数据库&#xff0c;需要利用IHotelService去查询&#xff0c;所以注入这个接口 package cn.itcast.hotel;import cn.itcast.hotel.pojo.…

【车载开发系列】UDS诊断---电控单元复位 ($0x11)

【车载开发系列】UDS诊断—电控单元复位&#xff08;$0x11&#xff09; UDS诊断---电控单元复位&#xff08;$0x11&#xff09;【车载开发系列】UDS诊断---电控单元复位&#xff08;$0x11&#xff09;一.概念定义二.应用场景三.报文格式1&#xff09;请求2&#xff09;肯定响应…

js文字提示层案例分析

前言 &#x1f496;js文字提示层在项目中比较常见&#xff0c;今天初次学习记录一下 功能介绍 在一段文本中鼠标触及红色字体&#xff0c;下方显示一个文字提示信息&#xff0c;鼠标离开红色字体区域&#xff0c;文字提示层消失。 知识点 onmouseover&#xff1a;鼠标指针移…

平衡搜索树——B-树小记

文章目录B- 树系列定义插入规则代码B-树结点定义查找key在结点哪个子树插入分裂B- 树系列 定义 B-树是一棵多叉 平衡 搜索树(不是二叉树&#xff0c;B-树中每个结点中可以有多个key&#xff0c;也有多个孩子) B-树中每个结点在实现时人为规定一个key的上限(KEY_LIMIT 4) B-…

Mysql语法五:idea连接数据库和jdbc

目录 1.连接数据库 1.1.下载驱动包 1.2&#xff1a;连接数据库 2.jdbc编程 2.1&#xff1a;何为jdbc 2.2&#xff1a;jdbc的使用。 2.2.1&#xff1a;直接插入操作 2.2.2&#xff1a;利用&#xff1f;进行插入 2.2.3&#xff1a;修改操作 2.2.4&#xff1a;删除操作 …

算法基础:动态规划

目录 动态规划之禅 多种纬度解决Fibonacci 数列 什么是Fibonacci数列 朴素递归方案 朴素递归的问题 Fib自上而下、备忘录方案 Fib自下而上法 动态规划之禅 动态规划是算法基础部分中最有趣的一个了&#xff0c;我想了很多天&#xff0c;怎么用很短的一些话把动态规划像之…

onnx删除无用属性

这里写自定义目录标题在推理onnx模型时&#xff0c;报了一个错&#xff0c;如下&#xff1a;InvalidGraph: [ONNXRuntimeError] : 10 : INVALID_GRAPH : This is an invalid model. In Node, ("Conv_0", Conv, "", -1) : ("x": tensor(float),&q…

DPVS时间轮移植

DPDK自带的定时器采用跳表实现&#xff0c;时间复杂度是O(logn)&#xff0c;当有大量事件要定时触发时&#xff0c;比如会话session老化&#xff0c;效率并不高。因此DPVS采用了O(1)复杂度的时间轮。0. 概述 a. 添加定时器事件的核心是 static int __dpvs_timer_sched(struct…

为何 SPARK 在应用 GPU 后表现更出色

什么是 APACHE SPARK&#xff1f; 伴随数据的巨量增长&#xff0c;Apache Spark 已成为分布式横向扩展数据处理的热门框架之一&#xff0c;可以在本地和云端数以百万计的服务器上运行。 Apache Spark 是应用于大型数据处理的快速通用分析引擎&#xff0c;可在 YARN、Apache Mes…

程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器

作为程序员&#xff0c;变量命名应该是我们编程的开端&#xff0c;也是我们每天都必须需要做的事情。变量命名规范的重要性&#xff0c;相信大家都知道非常重要&#xff0c;良好的代码风格&#xff0c;带来好处有&#xff1a; 1、具有良好的可读性&#xff1b; 2、维护代码时…

【独立篇】React UI组件库

文章目录1、React UI组件库1.1、material-ui&#xff08;国外&#xff09;1.2、ant-design&#xff08;国内蚂蚁金服-antd&#xff09;2、AntD的简单使用2.1、CODE2.2、Result1、React UI组件库 1.1、material-ui&#xff08;国外&#xff09; 官网: http://www.material-ui.…

硬件定义软件?还是,软件定义硬件?

文章目录**1 软件和硬件****1.1 软件和硬件的定义****1.2 “硬件定义软件”和“软件定义硬件”的定义****1.3 CPU&#xff0c;软件和硬件解耦****1.4 CPU的软硬件定义****2 硬件定义软件****2.1 系统从软件逐步到硬件****2.2 硬件架构决定了软件设计****2.2.1 ASIC的硬件定义**…

【车辆配送】基于模拟退火 (SA)求解车辆配送 (VPR) (Matlab代码实现)

目录 1 车辆配送问题 2 模拟退火法 3 实现结果 4 参考文献 5 Matlab代码实现 1 车辆配送问题 式(9)~( 12)中, 为配送车辆到达需求点i的时间;为需求点i到需求点j的运输成本;、分别为配送车辆提前到达需求点i的或者滞后到达需求点i的单位时间内的等待成本以及惩罚成本。该数…

基于vue项目的代码优化

前言 项目上线后其整体性能的优良是用户也是研发人员所关注的。项目优化非常重要&#xff0c;一丝一毫的提升都是对用户的负责。因此我们在开发中就应该注重细节&#xff0c;优化工作从日常开发做起。本篇文章就分享一些在日常开发中代码层面的优化手段。 开发常用优化手段 …

04-Docker-容器数据卷

目录 一、坑&#xff01;&#xff01;&#xff01;&#xff01; 二、什么是容器卷 三、容器卷的作用 四、容器卷案例 1、宿主vs容器之间映射添加容器卷 五、容器卷ro和rw规则 一、坑&#xff01;&#xff01;&#xff01;&#xff01; 容器卷记得加入 --privilegedtrue …

2022-11-30 Github Forking 工作流模式

Forking 工作流 fork 操作是在个人远程仓库新建一份目标远程仓库的副本&#xff0c;流程如下&#xff1a; 比如在 GitHub 上操作时&#xff0c;在项目的主页点击 fork 按钮&#xff08;页面右上角&#xff09;&#xff0c;即可拷贝该目标远程仓库。 假设开发者 A 拥有一个远程仓…

HTML网页设计制作大作业(游戏主题)---电竞

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游戏官网 | 游戏网站 | 电竞游戏 | 游戏介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 …

《MongoDB》Mongo Shell中的基本操作-文档查询

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 来个关注吧&#xff0c;点个赞…

在Word、WPS中插入AxMath公式导致行间距异常的解决办法

引言 我最近需要写一些文章&#xff0c;在排版时发现AxMath插入的公式竟然会导致行间距异常&#xff0c;如下图所示&#xff1a; 查遍互联网&#xff0c;最有效的办法竟然要取消文档网格对齐&#xff0c;这对于一些严格要求的场合是非常不利的&#xff0c;经过我的尝试&#…

xss-labs/level15

因为前一关打不开了 所以直接跳到15关来 查看源代码 他的输出点位于属性值处 所以要想通过<script></script>实现弹窗效果的话 那么就要逃离属性值 那么势必要闭合引号 根据以上的分析 我们做出如下构造 "><script>alert(xss)</script>// …