目标检测之YOLOv3算法分析

news2024/9/18 15:33:33
基本原理

特征网络
在这里插入图片描述

输入输出
输入 416 ∗ 416 ∗ 3 416*416*3 4164163大小的图片(不唯一,但图片大小必为32的倍数),输出3个尺度的feature map,分别为 13 ∗ 13 ∗ 255 13*13*255 1313255 26 ∗ 26 ∗ 255 26*26*255 2626255 52 ∗ 52 ∗ 255 52*52*255 5252255,即分成 13 ∗ 13 13*13 1313, 26 ∗ 26 26*26 2626, 52 ∗ 52 52*52 5252个grid cell.
每个grid cell生成3个anchor,每个anchor对应一个预测框,每个预测框有 5 + 80 5+80 5+80个参数, { ( x , y , w , h , c ) , 80   k i n d s   o f   c l a s s } \{(x,y,w,h,c),80 \space kinds \space of \space class\} {x,y,w,h,c,80 kinds of class}

输出分析
(该图取自知乎博主)
在这里插入图片描述

13 ∗ 13 ∗ 255 13*13*255 1313255 26 ∗ 26 ∗ 255 26*26*255 2626255 52 ∗ 52 ∗ 255 52*52*255 5252255分别预测大,中,小物体。
13 ∗ 13 ∗ 255 13*13*255 1313255为下采样32倍得到的特征;
26 ∗ 26 ∗ 255 26*26*255 2626255为下采样16倍与 13 ∗ 13 13*13 1313一次上采样结合得到的特征;
52 ∗ 52 ∗ 255 52*52*255 5252255为下采样8倍与 26 ∗ 26 26*26 2626一次上采样结合得到的特征;

正负样本
正样本为anchor与真实框的IOU大于指定阈值,且最大IOU的anchor;
负样本为anchor与真实框IOU小于指定阈值的anchor。

损失函数
由正样本的坐标损失、置信度损失和类别损失,负样本的置信度损失构成。
λ c o o r d ∑ i = 0 S 2 ∑ J = 0 B 1 i , j o b j [ ( b x − b x ^ ) 2 + ( b y − b y ^ ) 2 + ( b w − b w ^ ) 2 + ( b h − b h ^ ) 2 ] + ∑ i = 0 S 2 ∑ J = 0 B 1 i , j o b j [ − l o g ( p c ) + ∑ i = 1 n B C E ( c i , c i ^ ) ] + λ n o o b j ∑ i = 0 S 2 ∑ J = 0 B 1 i , j n o o b j [ − l o g ( 1 − p c ) ] \lambda_{coord} \sum_{i=0}^{S^2}\sum_{J=0}^{B}1_{i,j}^{obj}[(b_x-\hat{b_x})^2+(b_y-\hat{b_y})^2+(b_w-\hat{b_w})^2+(b_h-\hat{b_h})^2]\\+\sum_{i=0}^{S^2}\sum_{J=0}^{B}1_{i,j}^{obj}[-log(p_c)+\sum_{i=1}^{n}BCE(c_i,\hat{c_i})]\\+\lambda_{noobj}\sum_{i=0}^{S^2}\sum_{J=0}^{B}1_{i,j}^{noobj}[-log(1-p_c)] λcoordi=0S2J=0B1i,jobj[(bxbx^)2+(byby^)2+(bwbw^)2+(bhbh^)2]+i=0S2J=0B1i,jobj[log(pc)+i=1nBCE(ci,ci^)]+λnoobji=0S2J=0B1i,jnoobj[log(1pc)]
S 2 S^2 S2为grid cell的总数, B B B为每一个grid cell的anchor数目。
第一行为计算正样本的坐标与真实框的坐标损失;
第二行为计算正样本的置信度和类别损失, 1 i , j o b j 1_{i,j}^{obj} 1i,jobj表示是否为正样本; − l o g ( p c ) -log(p_c) log(pc)中,若 p c p_c pc越接近于1,则 − l o g ( p c ) -log(p_c) log(pc)越接近于0;类别损失中,对于检测的80类,每一个类别进行二叉熵损失运算。
第三行为负样本的置信度损失, − l o g ( 1 − p c ) -log(1-p_c) log(1pc) p c p_c pc越接近于0,该式越小,接近于0

性能
在这里插入图片描述

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

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

相关文章

RV1126笔记十九:吸烟行为检测及部署<六>

若该文为原创文章,转载请注明原文出处。 模型测试 一、pt文件测试 pt文件是在windows下训练生成的,测试环境为py3.8 1、首先查看虚拟环境列表,然后切换于是py3.8的虚拟环境。 conda env list // 查看虚拟环境列表 conda activate yolo // 切换虚拟环境 2…

leetcode:1739. 放置盒子【找规律!】

目录题目截图题目分析ac code总结题目截图 题目分析 样例有规律,它希望我们先按每层1, 3, 6这样叠起来,比如能跌i层那么至少有i * ( i 1) // 2个底层多出来的东西再做考虑多出来的东西考虑1 2 3…能加到多少个比如说如果多出来3个的话,放…

【小5聊】Asp.Net Core3.1基础之跨域设置以及设置不对的地方

最近微软的.Net Core平台更新换代速度非常快,还没把2.1整熟悉,就把2.1淘汰了。 目前最新版本已经到了7.0,.net core3.1还在长期维护范围内,估计能用一段时间。 所以,.net core2.1升级到3.1,跨域方法的设置也…

gerber 文件格式 [一]

在电路设计这块, 目前还绕不开 gerber 文件的工程交互, 所以来了解一下. 目前官网的文档gerber-layer-format-specification-revision-2022-02_en.pdf. gerber 文件是一个ascii码的命令文档, 格式比较简单,主要命令有下面这些 命令名称说明G04注释对文档生成没有影响MO模式设…

基于天鹰算法改进的DELM预测-附代码

天鹰算法改进的深度极限学习机DELM的回归预测 文章目录天鹰算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机(DELM)原理3.天鹰算法4.天鹰算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考:https:…

一文弄懂 React HOC

1. 提出问题 1.HOC 能解决什么问题? 2.HOC 的使用场景? 2. HOC 能解决什么问题? 1.拦截组件渲染,包括是否渲染组件、懒加载组件 2.往组件的 props 中混入所需的东西,比如给非 Route 组件的 props 混入 history 对象…

node.js+uni计算机毕设项目交流微信小程序LW(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

信号量和共享内存

信号量 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线…

Joplin插件推荐-持续更新

背景 之前因为印象笔记、语雀等笔记软件使用起来都不满足自己的需求,所以后面自己调研后使用了Joplin这个开源笔记软件 ,项目主页: https://joplinapp.org 。目前搭建在自己的服务器上。最近发现有很多好用的插件。所以记录分享一下。 总插…

# LowCode 低代码建表工具

LowCode 低代码建表工具 需求描述 将数据库的表映射为实体类&#xff0c;服务启动时&#xff0c;扫描表相关的实体类&#xff0c;根据实体类模型在数据库创建相关的表 依赖 主要依赖&#xff1a;使用 Sprintboot、druid、spring-jdbc、mybatis <!-- https://mvnreposit…

为啥这些开源的网络框架这么强

hi&#xff0c; 大家好&#xff0c;我是大师兄&#xff0c;今天分享一下网络编程下半部分内容&#xff0c;主要分享开源网络io框架用到了哪些核心技术&#xff0c;使他们如此流行&#xff0c;这些技术值得我们学习&#xff0c;可以增加我们编程技巧和优化思路。只有掌握更多技能…

【类和对象(上)】

Quitters never win and winners never quit. 目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5.类的作用域 6.类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 结构体内存对齐规则 8.this指针 …

理解 Proxy 和 Reflect

03_02_理解 Proxy 和 Reflect 一、开始之前: 为什么还会有这一篇文章呢&#xff1f;不是手写mini-vue吗&#xff1f;其实可以理解成支线任务、番外篇&#xff0c;是对主线内容的补充。 这一篇文章可能文字比较多&#xff0c;理论知识比较多&#xff0c;参考了4本书相关的章节…

九、Express 基本使用(简)

前一篇内容讲到Express框架的安装以及对Express项目的目录文件有一定的认识了解之后&#xff0c;使用Express创建了最基本的一个Web服务器&#xff0c;接下来进行对Express框架的一些内容来做一个基本的使用&#xff1b; 创建 Web 服务器 node 或 nodemon 执行app.js文件&#…

踩坑了、踩到一个特别无语的常识坑

大家好 踩坑了啊&#xff0c;又踩坑了啊&#xff01; 这次踩到一个特别无语的常识坑。知道真相的那一刻&#xff0c;人就是整个麻掉。 先上个代码&#xff1a; private static double calculate(double a, int b) {return a / b; } 复制代码 你先别问为什么计算不用 BigDec…

RxJS初认识

概念&#xff1a; RxJS的运行就是Observable和Observer之间的互动游戏。 Observable就是“可以被观察的对象”&#xff0c;即“可被观察者”&#xff0c;而Observer就是‘观察者’&#xff0c;连接两者的桥梁就是Observable对象的函数subscribe。 RxJS中的数据流就是Observable…

第二十三章 数论——质数(1)(超级详细的推导)

第二十三章 数论——质数一、什么是质数二、质数的判断1、试除法&#xff08;朴素版&#xff09;2、试除法&#xff08;优化版&#xff09;三、分解质因数1、什么是质因数2、算术基本定理3、分解质因数&#xff08;1&#xff09;问题&#xff08;2&#xff09;思路&#xff08;…

RepNAS: 基于NAS的结构重参数化技术

1. 介绍 在过去几年里&#xff0c;NAS技术取得了长足进展。然而&#xff0c;由于搜索约束与实际推理之间的差异导致高效网络搜索仍极具挑战性。为搜索一个具有高性能、低推理延迟的模型&#xff0c;已有方案往往在算法中添加计算复杂度约束。然而&#xff0c;推理速度会受多种…

【强化学习笔记】马尔可夫过程、马尔可夫奖励过程

文章目录1.马尔可夫过程1.1.随机过程1.2.马尔可夫性质1.3.马尔可夫过程2. 马尔可夫奖励过程2.1.回报2.2.价值函数3.马尔可夫决策过程1.马尔可夫过程 马尔可夫过程&#xff08;Markov process&#xff09; 指具有 马尔可夫性质 的 随机过程 &#xff0c;也被称为马尔可夫链&…

C++GUI之wxWidgets(4)-编写应用涉及的类和方法(2)-wxDialog,wxCloseEvent

目录wxDialog包含类继承具体描述模态和无模态支持样式此类发出的事件wxWindow:&#xff1a;Close()wxCloseEvent具体描述使用此类的事件wxDialog 包含 #include <wx/dialog.h>类继承 描述主 具体描述 对话框是一个带有标题栏的窗口&#xff0c;有时还有一个系统菜单…