目标检测之YOLOv2算法分析

news2024/11/18 9:30:07

要点

Batch Normalization
  • 训练

batchsize=64,某一层的某一个神经元会输出64个响应值,对这64个响应值求均值,标准差,然后标准化,对标准化的结果乘 λ + β \lambda + \beta λ+β,其中 λ \lambda λ β \beta β是需要训练的参数,并且每一个神经元都有一组 λ \lambda λ β \beta β
如此操作,即可把神经元的输出限制在 N ( 0 , 1 ) N(0,1) N(0,1)标准高斯分布之中。

  • 测试

与训练进行相同处理,只不过不再需要训练均值 u u u、方差 σ \sigma σ λ \lambda λ β \beta β参数,这两个参数的值由训练期间的全部 λ \lambda λ β \beta β求出,如 u t e s t = E ( u b a t c h ) u_{test}=E(u_{batch}) utest=E(ubatch), σ = n n − 1 E ( σ b a t c h 2 ) \sigma=\frac{n}{n-1}E(\sigma_{batch}^2) σ=n1nE(σbatch2).

使用batch normalization可以加快训练收敛,改善梯度,尽可能不处于饱和区,如使用sigmoid激活函数,在(0,+1)(-1,0)之间处于不饱和。

Anchor
  • 将一张图片划分为 13 ∗ 13 13*13 1313的网格,即169个grid cell,每一个grid cell设置固定数量(n=5)与大小的anchor,每一个anchor的长宽等大小不同,并且与真实框IOU最大的anchor负责预测该grid cell负责的检测对象。anchor的原理类似于RCNN中存在的候选框,存在anchor,只需要每次训练预测框相对于anchor的偏移量即可。
  • 在预测阶段,输出的向量对每一个anchor都有预测对象类别概率值,相对于yolov1只有每个grid cell才有类别概率。一个grid cell有5个anchor,每个anchor有 ( x , y , w , h , c o n f i d e n c e , 20   k i n d s   o f   c l a s s e s ) (x,y,w,h,confidence,20 \space kinds \space of \space classes) x,y,w,h,confidence,20 kinds of classes
细粒度特征

passthrough 层,将高分辨率的特征图与低分辨率的特征图融合在一起,实现多尺度的检测效果,启发于SSD检测。
例如一张特征图矩阵,大小为4*4*3,按照下方方式进行重组
在这里插入图片描述
图中通道数变为4倍,大小为原来的1/4, 4 ∗ 4 ∗ 3 4*4*3 443 --> 2 ∗ 2 ∗ 12 2*2*12 2212
将经过处理得到的特征图与原特征图经过卷积处理结果进行融合。
在实际的yolov2中,网络层中有一个 26 ∗ 26 ∗ 512 26*26*512 2626512的特征图,一方面进行使用64个 1 ∗ 1 1*1 11卷积,得到 26 ∗ 26 ∗ 64 26*26*64 262664的特征图,然后将该 26 ∗ 26 ∗ 64 26*26*64 262664的特征图送入 passthrough 层,得到 13 ∗ 13 ∗ 256 13*13*256 1313256的特征图;另一方面继续进行卷积,最后得到 13 ∗ 13 ∗ 1024 13*13*1024 13131024的特征图,将 13 ∗ 13 ∗ 1024 13*13*1024 13131024特征图与 13 ∗ 13 ∗ 256 13*13*256 1313256特征图进行合并,得到 13 ∗ 13 ∗ 1280 13*13*1280 13131280特征图,再输入到网络中即可。

损失函数

在这里插入图片描述

上式中求和的 i , j , k i,j,k i,j,k表示 13 ∗ 13 13*13 1313grid cell的每一个 a n c h o r k anchor_k anchork;

第一行为anchor与真实框的IOU交并比是否满足给定阈值,满足则计算,否则不计算该项。 − b i j k 0 -b_{ijk}^{0} bijk0表示该预测框不负责预测物体的置信度,越小越好。

第二行为判断是否是前12800次迭代,是则优化anchor与预测框的位置信息,使每一个anchor确定不同的自身作用,模型稳定。

第三行为负责检测物体的anchor进行该计算:其中的三个表达式分别为真实框与预测框的定位误差,真实框与anchor的IOU值和预测框置信度的误差,真实框的类别与预测框的类别误差。

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

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

相关文章

Windows平台RTMP、RTSP播放器录像模块精细化控制

技术背景 上篇文章,我们介绍了Unity平台RTMP、RTSP播放器录像功能,这里,我们详细的介绍下,做个RTSP或RTMP拉流端录像模块有哪些需要考虑的技术点? 在我们常规的考量,RTMP或RTSP流录制,无非就是…

在gitee上新建仓库并上传文件

一、进入到自己gitee的个人主页,点击图示新建仓库 二、根据图示操作,最后点击创建 三、如果没有配置git全局设置,需要配置一下(配置过的可以跳过这一步) 四、打开你要上传的文件,在里面右击鼠标,点击如图所示 五、输入…

spring之Bean的循环依赖问题

文章目录一、Bean的循环依赖之Set注入模式下1、Husband类2、Wife类3、Spring配置文件4、测试类5、测试结果6、结论二、Bean的循环依赖之构造方法注入模式下1、Husband类2、Wife类3、Spring配置文件4、测试类5、运行结果三、Spring解决循环依赖的机理三级缓存(面试常…

PyQt5 基本布局管理 及 信号槽机制

一:布局设计 & 信号槽机制 效果实现如下: 对于窗口整体设计左右布局 对于左边布局,包括有水平布局(用户信息 左上方一块)垂直布局(多个按钮 左下方一块) 对于右边布局,主要是窗口切换,通过按下左边布局的左下方侧按…

SQLAlchemy连接MySQL及记录的查询、更新、删除、多表关联查询

SQLAlchemy是Python的ORM库,支持多种数据库。 建立连接 连接MySQL要用到Engine,Engine集成了连接池pool和方言Dialect(支持不通数据库的SQL语法),最后都统一成标准DBAPI。 from sqlalchemy import create_engine en…

TypeScript

现在说起TypeScript想必大家都不会陌生的,当初从碎片信息中了解TypeScript,我认为他的变量声明和Rust语言有几分相似,是一门比较严格的语言,今天正式的来学习他 JavaScript易学习,易用,以至于大多数人对于…

软件体系结构 思维导图

软件体系结构 思维导图 软件体系结构思维导图 源文件放在 GitHub 仓库 使用 Xmind 即可打开查看 课程评价 比较抽象和理论化,如果光看 PPT 肯定看不懂,得听课或者看视频 后面实验试图基于 SpringBoot 去实战教学,可惜没系统学过只能照搬…

Kafka Consumer开发

Kafka Consumer - 消费者 跟生产者一样,消费者也属于kafka的客户端,不过kafka消费者是从kafka读取数据的应用,侧重于读数据。一个或多个消费者订阅kafka集群中的topic,并从broker接收topic消息,从而进行业务处理。今天…

一种嵌入式项目的参数保存方案

设计背景 嵌入式项目中,为了保证系统的正常运转,通常需要保存一部分数据至非易失存储设备如flash中。此处提供了一种通用的方案用于快速在项目中集成参数保存功能,该方案有以下几点特征: 接口简便,方便快速集成以及使用…

东北大学2023分布式操作系统实验

1.实验目的 建立伪分布式(有条件的可以建立分布式环境)的Hadoop环境,并成功运行示例程序。 2.Hadoop简介 2.1 Hadoop项目基础结构 在其核心,Hadoop主要有两个层次,即: 加工/计算层(MapReduce)存储层(Ha…

Python pandas有几千个库函数,你用过几个?(1)

对Python的 pandas 库所有的内置元类、函数、子模块等全部浏览一遍,然后挑选一些重点学习一下。我安装的库版本号为1.3.5,如下: >>> import pandas as pd >>> pd.__version__ 1.3.5 >>> print(pd.__doc__)pandas…

C++ STL vector list set map容器循环通过迭代器删除元素注意事项

先说说写这篇博客的原因吧,同事转部门了,把他手头的工作交接给了我。他以前维护的一个模块,会将外部输入的数据缓存起来分段处理,处理完了就会清除缓存数据,最近出现了一个bug,缓存数据一直不清除&#xff…

【SpringMVC】非注解的处理器映射器和适配器

项目目录 1.导入的依赖 pom.xml <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><…

【K3s】第2篇 一篇文章学习实践K3s部署安装

目录 1、docker安装 2、docker-compose安装 3、K3s安装 3.1 k3s与install.sh文件准备 3.2 k3s 安装步骤 4、查看k3s部署状态 1、docker安装 方式一 https://fanjufei.blog.csdn.net/article/details/123500511https://fanjufei.blog.csdn.net/article/details/123500511 …

12.24

接口测试 ​ <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width…

Unity3D异步加载场景SceneManager.LoadSceneAsync()卡住,并不异步,获取process直接到0.9的问题

问题阐述&#xff1a; 一般来说&#xff0c;在加载场景的时候&#xff0c;会因为所加载资源的大小、复杂度、电脑配置等因素导致加载过程耗费一定的时间。虽然这个加载时间是不可避免的&#xff0c;但是在这一小段卡着的时间里如果就这样卡着的话会大大降低玩家体验。 所以很多…

(matlab编程基础)数组的基本操作

目录 1、数组寻址 2、数组元素删除 3、数组查找和排序 &#xff08;1&#xff09;数组查找 &#xff08;2&#xff09;数组排序 4、数组运算 5、数组操作函数 数组操作主要从以下5部分进行介绍:数组寻址、数组元素的删除、数组查找和排序、数组运算和数组操作函数。 1、…

PS CS6视频剪辑基本技巧(五)添加logo、动画和画中画

系列讲座导读 PS CS6视频剪辑基本技巧&#xff08;一&#xff09;CS6可以实现的视频剪辑功能 PS CS6视频剪辑基本技巧&#xff08;二&#xff09;视频剪接和添加图片 PS CS6视频剪辑基本技巧&#xff08;三&#xff09;添加声音和字幕 PS CS6视频剪辑基本技巧&#xff08;四&am…

RMQ - ST表

RMQ - ST表 1、RMQ 简介 RMQ (Range Minimum / Maximum Query) 问题是指&#xff1a;对于长度为 nnn 的数列 AAA&#xff0c;回答若干询问 (A,i,j)(A, i, j)(A,i,j) (1≤i,j≤n)(1≤i,j≤n)(1≤i,j≤n)&#xff0c;返回数列 A 中区间在 [i,j][i,j][i,j] 中的最小 (大) 值所在…

Vue2.0全面教程

Vue2.0 学习视频地址 文章目录Vue2.01.vue 简介1.1.什么是vue1.2.vue的两个特性1.2.1.数据驱动视图1.2.2.双向数据绑定1.3.MVVM概述1.4.MVVM工作原理2.vue的基本使用2.1.基本使用步骤2.2.基本代码与MVVM的对应关系3.vue的调试工具3.1.安装vue-devtool调试工具3.2.配置Chrome浏…