深度学习 基本理论 3 :之物体检测(Anchor base/NMS/softmax/损失函数/BCE/CE/zip

1、 Anchor base和Anchor free

1.1 Anchor base

  1. Anchor base,译为基于锚点的一个物体检测方法,也可以叫做基于一组预定义的框
  2. 模型会预测每个锚点是否存在对象,并预测需要对锚点进行的调整以更好地适应该对象
  3. Anchor base物体检测方法:Fast R-CNN、SSD、YOLO、RetinaNet

1.2 Anchor Free

  1. Anchor Free,无锚点方法则不依赖于预定义的锚点框
  2. 直接在图像的每个空间位置预测对象的存在或对象的特征
  3. CenterNet、CornerNet、FCOS 、DETR

2、NMS基本流程

非极大值抑制(Non-Maximum Suppression, NMS),是当物体检测中同一个物体最后预测出多个候选框的情况,采用NMS后可以有效解决这个问题。

  1. 收集所有边界框
  2. 根据置信度(即预测该框的概率)进行排序
  3. 取出最高置信度的框,与其他所有的框计算IOU
  4. 如果计算出某一个IOU的值,超过设定的阈值(假设是0.5),则认为这个框是重复的,则删除这两个框中置信度比较低的那一个
  5. 重复3-4过程,最终剩下的框全部都是预测的边界框
  6. 这个过程也就是说,置信度最高的那一个框永远都不会被移除,且其他的框也只会与这个框计算IOU值

3、常用的损失函数

3.1 回归

MSE:预测值与真实值差值的平方
MAE:预测值与真实值差值的绝对值

3.2 分类

CE:Cross-EnTropy,二元交叉熵,【(y标签对应的值)乘以(p预测正类别的概率值取对数)的相反数】+【1-(y标签对应的值)乘以(1-p预测正类别的概率值取对数)】的相反数,然后会累加样本数,再除以样本数的就是损失的均值

BCE:Binary Cross-EnTropy,多元交叉熵,(y标签对应的值)乘以(p预测该类别的概率值取对数)的相反数,然后会累加每个类别和样本数,再除以样本数的就是损失的均值

4、BCE和CE除了预测种类个数的区别还有其他区别吗?

BCE通常与sigmoid激活函数一起使用,最后输出是单个神经元,输出预测为正类的概率
CE通常与softmax激活函数一起使用,最后输出是多个神经元,输出每个类别的概率分布

5、两个list变成对应的字典,一个是key一个是values

# Given two lists, one for keys and the other for values, we will convert them into a dictionary.
keys = ['key1', 'key2', 'key3']
values = [1, 2, 3]# Creating the dictionary using zip function
dictionary = dict(zip(keys, values))

6、zip怎么理解和使用

zip 是 Python 中一个非常有用的内置函数,它用于将多个可迭代对象(如列表、元组等)中的元素配对,创建一个新的迭代器。其工作原理可以通过以下几个要点来理解:

  1. 配对元素zip 函数将多个可迭代对象中的对应元素组合在一起,形成一个个元组。例如,如果有两个列表 list1 = [1, 2, 3]list2 = ['a', 'b', 'c']zip(list1, list2) 会生成 [(1, 'a'), (2, 'b'), (3, 'c')]

  2. 不同长度处理:如果可迭代对象的长度不同,zip 会停止于最短的输入序列的末尾。例如,如果一个列表有 3 个元素,另一个列表有 4 个元素,那么 zip 生成的迭代器将只包含 3 个元组

  3. 转换为其他数据结构:虽然 zip 返回的是一个迭代器,但你可以将其转换为列表或字典等其他数据结构。例如,list(zip(list1, list2))dict(zip(list1, list2))

  4. 多个迭代对象zip 不仅限于两个迭代对象,它可以接受任意数量的迭代对象

  5. 解压缩:使用 * 运算符,可以将 zip 的结果“解压缩”回多个独立的序列

下面展示 zip 函数的基本用法:

# 将两个列表压缩成一个由元组组成的列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = list(zip(list1, list2))
print(zipped)  # 输出: [(1, 'a'), (2, 'b'), (3, 'c')]# 将两个列表转换为字典
keys = ['key1', 'key2', 'key3']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print(dictionary)  # 输出: {'key1': 1, 'key2': 2, 'key3': 3}# 解压缩
pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*pairs)
print(numbers)  # 输出: (1, 2, 3)
print(letters)  # 输出: ('a', 'b', 'c')

7、除了交并比(即IOU)还有没有其他计算两个候选框的重叠程度方法

除了交并比(IoU)之外,确实存在其他几种方法来评估和处理目标检测中的边界框重叠情况。这些方法各有特点,适用于不同的场景和需求。以下是一些常见的替代方法:

  1. 交集面积(Intersection Area):直接计算两个边界框的交集面积。
  2. 中心距离(Center Distance)
    • 计算两个边界框中心点之间的距离。
    • 适用于判断边界框是否足够接近,可能用于跟踪或者一些需要边界框位置精确度的应用

8. GIOU:广义交并比

(Generalized Intersection over Union, GIoU),GIoU 在 IoU 的基础上增加了对边界框的尺寸和形状差异的考量,首先计算常规的 IoU,然后找到包含两个边界框的最小闭合区域(通常是一个更大的矩形)

在IoU的计算中,只有当两个边界框存在重叠时,IoU的值才会大于0。这意味着如果两个框不重叠,IoU将始终为0,即使这两个框非常接近。这就是IoU的一个局限性,因为它无法区分“完全不重叠但非常接近”的情况和“相距很远”的情况。

  1. 计算常规IoU:首先计算两个边界框之间的标准IoU。
  2. 找到最小闭合区域:接着,找到能够同时包含这两个边界框的最小闭合矩形区域。
  3. 计算GIoU:GIoU的值是标准IoU减去最小闭合区域与两边界框并集的面积差占最小闭合区域面积的比例。公式可以表示为:

G I o U = I o U − ∣ C − U ∣ ∣ C ∣ GIoU = IoU - \frac{|C - U|}{|C|} GIoU=IoUCCU, 其中,C 是最小闭合区域的面积,U是两边界框并集的面积。

这种计算方式允许GIoU在没有重叠的情况下提供比0更丰富的信息。此时,GIoU不仅表明两个框之间没有重叠(IoU为0),而且还提供了关于它们相对位置和大小的信息。GIoU的值可能小于0,如果两个框完全不重叠但相对较接近,其值将接近0;如果两个框相距很远,其值将更小。

9、DIOU 距离交并比

(Distance Intersection over Union, DIoU)

  • 基本概念:DIoU 除了考虑 IoU 外,还加入了两个边界框中心点之间的距离。
  • 计算方法
    • 计算两个边界框中心点的欧氏距离。
    • 根据中心点距离和 IoU 计算 DIoU。
  • 优点:DIoU 在调整边界框对齐和重叠的同时,还能保持中心点的一致性,特别适用于需要精确中心对齐的应用

10、CIOU完整交并比

(Complete Intersection over Union, CIoU)

  • 基本概念:CIoU 是目前最全面的变体,它考虑了 IoU、中心点距离以及长宽比的一致性。
  • 计算方法
    • 计算 IoU 和两个边界框中心点的距离。
    • 加入对边界框长宽比的考量。
    • 综合这三个因素来计算 CIoU。
  • 优点:CIoU 通过考虑更多的几何因素,能够更准确地评估和优化边界框的位置、尺寸和形状。

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

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

相关文章

2.4 DEVICE GLOBAL MEMORY AND DATA TRANSFER

在当前的CUDA系统中,设备通常是带有自己的动态随机存取存储器(DRAM)的硬件卡。例如,NVIDIA GTX1080具有高达8 GB的DRAM,称为全局内存。我们将互换使用全局内存和设备内存这两个术语。为了在设备上执行内核,…

西电期末1032.模式匹配

一.题目 二.分析与思路 遍历判断 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int n;scanf("%d",&n);int num[n];for(int i0;i<n;i){scanf("%d",&num[i]);}int ans0;//个数for(int i0;i<n-2;i){if(num[i]3&&nu…

【Docker】数据卷容器

多个容器进行数据交换 这里引入一个数据卷容器的概念 以下介绍容器A与容器B进行数据交换的原理 假如容器A要与容器 B 进行数据交换&#xff0c; 首先创建一个容器C&#xff0c;将他挂载到数据卷&#xff0c;然后再将容器A与容器B挂载到容器C&#xff0c;这样做相当于容器A与…

【EAI 006】ChatGPT for Robotics:将 ChatGPT 应用于机器人任务的提示词工程研究

论文标题&#xff1a;ChatGPT for Robotics: Design Principles and Model Abilities 论文作者&#xff1a;Sai Vemprala, Rogerio Bonatti, Arthur Bucker, Ashish Kapoor 作者单位&#xff1a;Scaled Foundations, Microsoft Autonomous Systems and Robotics Research 论文原…

YOLOv5改进 | 注意力篇 | ACmix注意力与卷积混合的模型(轻量化注意力机制)

一、本文介绍 本文给大家带来的改进机制是ACmix自注意力机制的改进版本,它的核心思想是,传统卷积操作和自注意力模块的大部分计算都可以通过1x1的卷积来实现。ACmix首先使用1x1卷积对输入特征图进行投影,生成一组中间特征,然后根据不同的范式,即自注意力和卷积方式,分别…

使用 MONAI 加载和保存各种格式的医学图像

本教程属于实战&#xff0c;手把手教你加载各种医学图像数据&#xff08;nii.gz, .dcm, .png等&#xff09;。并学会查看医学图像数据的元数据&#xff08;shape, affine, orientation&#xff09;。学会使用monai全方位了解你的数据&#xff0c;并把它用于之后的深度学习训练。…

Leetcod面试经典150题刷题记录 —— 链表篇

Leetcod面试经典150题刷题记录-系列Leetcod面试经典150题刷题记录——数组 / 字符串篇Leetcod面试经典150题刷题记录 —— 双指针篇Leetcod面试经典150题刷题记录 —— 矩阵篇Leetcod面试经典150题刷题记录 —— 滑动窗口篇Leetcod面试经典150题刷题记录 —— 哈希表篇Leetcod面…

pytorch安装

pytoch安装 1. 准备工作1.1 需要提前安装的软件 2. 安装pyTorch我遇到的问题 3. 显卡测试4. CPU与GPU切换方法4.1 创建张量4.2 第一种切换方法4.3 第二种切换方法 1. 准备工作 1.1 需要提前安装的软件 Anaconda 史上最全最详细的Anaconda安装教程CUDA CUDA安装教程&#xff0…

让充电器秒供多个快充口,乐得瑞推出1拖2功率分配快充线方案

随着PD3.1协议的市场应用越来越多&#xff0c;一些充电器的Type-C接口的输出功率达到百瓦及以上&#xff0c;如何充分利用好这类充电器设备&#xff0c;乐得瑞电子推出1拖2快充线缆解决方案&#xff0c;支持智能功率分配策略支持私有快充协议。 如上图是乐得瑞1拖2功率分配快充…

MySQL 8.0中新增的功能(二)

资源管理 MySQL现在支持创建和管理资源组&#xff0c;并允许将在服务器内运行的线程分配给特定的组&#xff0c;以使线程根据该组可用的资源执行。通过组属性&#xff0c;可以对其资源进行控制&#xff0c;从而允许或限制组中线程的资源消耗。数据库管理员可以根据不同的工作负…

程序员必备的面试技巧

程序员的面试过程通常涉及技术能力的评估以及软技能的考察。以下是一些面试技巧&#xff0c;旨在帮助程序员在面试中表现出色&#xff1a; 技术准备 掌握基础知识 在技术面试和日常开发工作中&#xff0c;对编程语言的基础知识有深入的理解是非常重要的。这不仅包括语言本身…

WWDG---窗口看门狗

一.简介 窗口看门狗跟独立看门狗一样&#xff0c;也是一个递减计数器不断的往下递减计数&#xff0c;必须在一个窗口的上限值&#xff08;用户定义&#xff09;和下限值&#xff08;0X40&#xff0c;固定不能变&#xff09;之间喂狗不会复位&#xff0c;在上限值之前和下限值之…

Flink自定义Source模拟数据流

maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

OpenCV | 光流估计

光流估计 光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”&#xff0c;根据各个像素点的速度的速度矢量特征&#xff0c;可以对图像进行动态分析&#xff0c;例如目标跟踪 高度恒定&#xff1a;同一点随着时间的变化&#xff0c;其亮度不会发生改变。小运动&…

ProtoBuf一些踩坑记录

一、Protobuf学习基础 学习的资料很多也很全&#xff0c;这里添加几个链接进行Protobuf的基础学习的链接&#xff0c;链接中的案例使用C编辑&#xff1a; 链接&#xff1a;Protobuf介绍及简单使用(上&#xff09;_google_protobuf_version-CSDN博客 Protobuf介绍及简单使用(下&…

MFC综合实验二学习记录

文章目录 如何确定消息映射宏中命令对应的菜单项资源虚函数和纯虚函数的区别&#xff1f;MFC中什么是UPDATE_COMMAND_UI 消息如何查看控件对应的成员变量模态对话框的理解HGDIOBJ" 类型的值不能用于初始化 "CBrush *" 类型的实体错误MFC编程中CDC类型和HDC类型有…

TOP 9 安卓手机系统和应用程序修复工具,可修复各种Android 系统问题

您的新 Android 手机可能因其令人兴奋的性能而印象深刻。然而&#xff0c;随着时间的推移&#xff0c;您可能会发现系统有些地方与以前不太一样。您可能会遇到屏幕无响应、 Android应用程序崩溃、连接问题、电池耗尽等现象。 好吧&#xff0c;在这些情况下您不必感到不安&…

centos通过yum安装redis

1. 安装yum添加epel源(此步根据环境&#xff0c;如果有源则可跳过&#xff0c;在阿里去可跳过&#xff09; yum install epel-release 2 使用yum安装Redis yum install redis 出现如下图所示的内容&#xff0c;默认的安装路径是在 /usr/bin目录下&#xff1a; 文件安装路径…

三、C#面向对象编程(接口与实现)

在C#中&#xff0c;接口是一种定义方法但不包含实现的方式&#xff0c;可以被多个类实现以支持不同的行为。通过接口&#xff0c;我们可以定义一组标准的成员&#xff0c;让类遵循特定的契约。 下面是一个关于接口和实现的简单示例&#xff1a; // 定义一个接口 public inter…

特发性震颤的原因有哪些?

特发性震颤是一种神经系统疾病&#xff0c;其症状主要表现为身体部位的不自主地震颤&#xff0c;常常影响手部、头部和声音。特发性震颤的病因较为复杂&#xff0c;可能涉及到多种因素。 首先&#xff0c;遗传因素是特发性震颤的主要原因之一。研究表明&#xff0c;特发性震颤…