Yolo底层原理学习--(第二篇)

一,IOU置信度与非极大值抑制NMS

在第一篇文章中我们讲到,对于一张图片,在前向传播的过程后(也就是卷积,池化,全连接等等),会生成许许多多个预测框,那么怎么从这么多预测框筛选出最好的几个框来达到预测功能呢?这里就需要用到IOU和非极大值抑制。


(1)IOU:

什么是IOU?

(1.1)训练阶段:

在模型训练阶段IOU会首先筛选置信度小于阈值的检测框,接着将剩下的预测框与人工标注的真实框做IOU匹配,用来判断是否正确检测到了目标,为后面的反向传播做准备

(1.2)推理预测阶段:

用于非极大值抑制,

推理阶段计算IoU的主要目的是筛选重叠的预测框,避免重复检测同一个目标。具体步骤如下:

  1. 按置信度排序:将所有预测框按置信度从高到低排序。
  2. 选择最高置信度的框:保留置信度最高的框作为有效检测。
  3. 计算IoU:计算该框与其他所有未处理的框的IoU。
  4. 抑制重叠框
    • 如果某个框与当前最高置信度框的IoU超过阈值(如0.5),则认为它们检测的是同一个目标,因此丢弃置信度较低的框
      这里是什么意思呢?就是说因为一个物体必然会占据7*7个小方格中的许多个,都是有效检测的,如果采取只保留置信度最高的,那么如果图片里面有多个同类物体,那么只能检测一个类别物体中的一个,所以我们采用IoU超过阈值(如0.5)舍弃的方法,因为如果两个同类物体虽然置信度都很高,但是彼此不重叠,所以iou值很低,不会被删除,这样既能获取最高的置信度框,又能避免删去同类的其他物体,而这就是非极大值抑制
    • 重复上述过程,直到处理完所有框。

ps:类别置信度=(确实有目标物体的前提下)置信度×类别概率

后处理阶段=IOU+NMS 

二,关于YOLOV2的改进点 

在yolov1的基础上,yolov2进行了许多改进,让我们来看看吧~

改进点有:

2.1 引入批归一化(Batch Normalization, BN)层

问题来源:如下图左边:

当我们在进行数据输入时,我们知道,很多数据的量纲是不统一的。如果此时大小较小的数据 

更为重要,那很明显w1的值就要很大,但是由于梯度下降时渐进的,这时参数更新可能需要很多步才能到达最优点。而如果我们进行归一化操作(如右图),那么梯度更新将变得不那么复杂。也就是说,归一化后的数据分布更稳定,网络在训练时更容易找到最优解,从而加快收敛速度。

当然,加入BN层还有其他好处。


2.1.1 BN层计算步骤


2.2 采用高分辨率网络训练 

相较于yolov1,yolov2先用低分辨率进行训练,之后再用实际检测需要的高分辨率数据进行再训练,有效提高了准确率。

 2.3 删去全连接层 -->convolutional

 

(1)最后的几个全连接层以及前面的最后一个pool层被删去,这有利于获得更高分辨率的图片。

(2)采用416*416进行输入的原因是最后的输出是13*13是奇数矩阵,原来是偶数矩阵的弊端是,按照统计规律,图片目标物体位于中心的可能性较大,这时物体中心点很可能位于映射边框上,使得模型难以区分该点是属于哪一格子里的。

(3)采用解耦合的好处,原来的格子是2个检测框,每个格子的类别概率同属2个检测框,这样会使得两个检测框只能检测同一种物体。而解耦合能使得每个检测框都有自己独立的类别检测概率,从而实现一个格子里面可以检测出多种物体。


2.3.1 采用anchor锚框

 怎么理解这个锚框呢?就是我们考虑到yolo模型通过主干网络提取的信息来确定框框的大小还是有点难的,所以我们给他点“提示”,我们先设定了大小,长宽比不同的box(共9个,后面会通过聚类算法减成5个),之后模型基于此anchor等比例缩放(而不是从0开始画),就能比较好的结合获取到的全局特征,检测出物体并正确画框。


因此,基于convolutional+anchor,我们最后的输出将变成13×13×125.其中125=(5(5个框)*25(每个框都有独立的x,y,w,h,c+20个类别,且每个框都有anchor辅助)

 

同时,作者还采用聚类分析来自动设定anchor锚框,极大提高了准确性。

 2.3.2 引入了新的网络架构Darknet-19

 2.4 采用了passthrough

这里就是说为了能够保留细节信息,我们将某一阶段卷积之后图像先通过passthrough(也就是说如果最后输出是13*13*m,那么我们就要将该图像变换成13*13*4*n(n代表通道数,可以和m不一样),然后将该图像与最后输出的特征图进行contact操作,这样最后输出的图像既有特征提取的,也保留了细节信息。

 

2.5 多尺度训练 

 ok,that's all。知识疯狂涌进脑子,消化不过来了

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

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

相关文章

国内短剧CSP系统开发:技术架构与合规实践全解析

一、行业背景与政策驱动2025年,中国网络微短剧行业迎来法治化转型的关键期。国家广播电视总局《关于进一步统筹发展和安全促进网络微短剧行业健康繁荣发展的通知》明确实施"分类分层审核"制度,将微短剧划分为重点微短剧(投资≥100万…

http请求访问响应慢问题解决的基本思路

一、明确问题现象:先确定 “慢” 的特征在排查前,需先收集基础信息,缩小问题范围:是否所有请求都慢? 还是仅特定接口(如带数据库操作的接口)、特定时间段(如高峰期)、特定…

Vue.js的核心概念

Vue.js的核心概念可归纳为以下关键点,结合最新技术演进与实践场景:一、响应式数据绑定‌双向绑定机制‌:通过Object.defineProperty(Vue 2)或Proxy(Vue 3)实现数据劫持,自动追踪依赖…

新手小白做一个简单的微服务

我不太懂微服务框架,自己跟了个视频尝试做一套简单的微服务框架,跟着做的时候,发现这个视频很适合初学者 https://www.bilibili.com/video/BV1684y1T7oW/?spm_id_from333.337.search-card.all.click&vd_source61882010e50d6b158eb87c148…

C语言笔记4:错题整理

#1.1 编程题 判断101-500之间有多少个素数&#xff0c;放入数组中&#xff0c;遍历数组输出所有素数&#xff0c; 素数&#xff1a; 除了1和它本身以外不再有其他的因数。 具体实现 就用DeepSeek了 以下是AI生成代码&#xff1a; #include <stdio.h> #include <math.h…

Mysql join语句

join 语句用于实现多表查询。 Index Nested-Loop Join select * from a join b on a.idb.id。对于两张表 a 和 b&#xff0c;Mysql 优化器会选择其中一张表执行全表扫描&#xff0c;称为驱动表。对于驱动表每一数据行&#xff0c;在被驱动表查询数据&#xff0c;将结果组合返回…

Spring AI 系列之三十 - Spring AI Alibaba-其它模型

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

【Flutter3.8x】flutter从入门到实战基础教程(五):Material Icons图标的使用

flutter给我们内置准备了很多图标&#xff0c;这些图标可以使我们在没有设计师的前提下&#xff0c;也能做出自己满意的app icon网站 https://material.io/tools/icons/进入网站后&#xff0c;点击我们需要的图标&#xff0c;然后滑动找到flutter的tab选项&#xff0c;就可以看…

算法训练营day38 动态规划⑥ 322. 零钱兑换、279.完全平方数、139.单词拆分、多重背包

动态规划的第六篇&#xff01;背包问题总结篇&#xff01; 322. 零钱兑换 题目中说每种硬币的数量是无限的&#xff0c;可以看出是典型的完全背包问题。但是如何找最小的“组合”呢&#xff1f;&#xff08;通过dp数组的不同定义 与 递推公式&#xff09; 确定dp数组以及下标的…

vue+element 实现下拉框共享options

背景 用户的需求总是多样的&#xff0c;这不用户想做个下拉连选&#xff0c;每选一个基金&#xff0c;下方表格多一行&#xff0c;选择对应的重要性&#xff0c;任务&#xff1b;问题 其他都好弄&#xff0c;任务是远程搜索&#xff0c;选择人的单选下拉&#xff0c;如果每个下…

centos服务器安装minio

1.创建目录和下载文件 #创建相关文件夹 mkdir -p /home/minio mkdir -p /home/minio/bin mkdir -p /home/minio/data#进入上面创建的bin目录下 cd /home/minio/bin#下载minio&#xff08;最新版minio无法通过页面的控制台配置accesskey建议选择2024年的版本操作&#xff09; ht…

【云故事探索】NO.16:阿里云弹性计算加速精准学 AI 教育普惠落地

智能精准学寒雪老师 X 阿里云弹性计算&#xff1a;以坚实算力底座&#xff0c;实现 AI 一对一教育普惠的愿景 【导语】 当全球首个 K12 教育超级智能体“寒雪老师”在深夜为万千学子答疑解惑&#xff0c;支撑其流畅互动的&#xff0c;是阿里云弹性计算 15 年淬炼的坚实算力底座…

forge篇——配置

从这篇文章开始,我们开始研究forge代码,以下是forge源代码和代码解析 ForgeConfigSpec 类详细解析 ForgeConfigSpec 是 Minecraft Forge 模组开发中的核心配置类,基于 NightConfig 库实现,提供了类型安全、验证和自动纠正功能。以下是关键部分的详细解释: 1. 类定义与基…

全新发布|知影-API风险监测系统V3.3,AI赋能定义数据接口安全新坐标

7月31日&#xff0c;全知科技「知影-API风险监测系统V3.3」版本正式上线。在版本发布直播中&#xff0c;全知科技资深产品经理裴向南系统讲解了V3.3版本的核心亮点、能力升级与后续产品规划方向。作为全知科技自主研发的核心产品&#xff0c;「知影-API风险监测系统」自2017年起…

动作捕捉技术重塑具身智能开发:高效训练与精准控制的新范式

具身智能&#xff08;Embodied AI&#xff09;是指智能体通过与环境交互实现感知、学习和决策的能力&#xff0c;其核心在于模拟人类或生物的形态与行为。具身智能的发展意义在于突破传统AI的局限性&#xff0c;使机器能够适应复杂多变的真实场景&#xff0c;从而在工业制造、医…

【Andriod Studio】勾选不了Android SDK,提示unavailable

首先&#xff0c;直接说结论——网络&#xff08;代理&#xff09;有问题 先看第一个文章里面说的&#xff0c;https://blog.csdn.net/weixin_53485880/article/details/128200878 要确定自己没有开启代理&#xff08;就是Set proxy里选cancel&#xff09;&#xff0c;安装SDK…

数据结构与算法——字典(前缀)树的实现

参考视频&#xff1a;左程云--算法讲解044【必备】前缀树原理和代码详解 类实现&#xff1a; class Trie {private:class TrieNode {public:int pass;int end;vector<TrieNode*> nexts;TrieNode(): pass(0), end(0), nexts(26, nullptr) {}};TrieNode* root; // 根指针…

STORM代码阅读笔记

默认的 分辨率是 [160,240] &#xff0c;基于 Transformer 的方法不能做高分辨率。 Dataloader 输入是 带有 pose 信息的 RGB 图像 eval datasets ## 采样帧数目 20 num_max_future_frames int(self.timespan * fps) ## 每次间隔多少个时间 timesteps 取一个context image n…

2025电赛G题-发挥部分-参数自适应FIR滤波器

&#xff08;1&#xff09;测评现场提供由RLC元件&#xff08;各1个&#xff09;组成的“未知模型电路”。 按照图3所示&#xff0c;探究装置连接该电路的输入和输出端口&#xff0c;对该电路进行 自主学习、建模&#xff08;不可借助外部测试设备&#xff09;&#xff0c;2分钟…

Linux基础 -- 内核快速向用户态共享内核变量方案之ctl_table

系统化、可直接上手的 /proc/sys sysctl 接口使用文档。内容涵盖&#xff1a;机制原理、适用场景、ctl_table 字段详解、常用解析器&#xff08;proc_handler&#xff09;完整清单与选型、最小样例到进阶&#xff08;范围校验、毫秒→jiffies、字符串、数组、每网络命名空间&a…