损失函数篇

损失函数

1、边界框损失函数/回归损失函数bbox_loss

2、分类损失函数cls_loss

3、置信度损失函数obj_loss

YOLOv8损失函数

1、概述

通过YOLOv8-训练流程-正负样本分配的介绍,我们可以知道,经过预处理与筛选的过程得到最终的训练数据:
a. 网络输出值:pred_scores[bx8400xcls_num]、pred_bboxes[bx8400x4]
b. 训练标签值:
target_scoresbx8400xcls_num,在计算损失时与预测结果pred_scores[bx8400xcls_num],计算交叉熵损失,该损失是对每个类别计算BCE Loss,因为类别预测采用的sigmoid分类器。
target_bboxesbx8400x4,在计算损失时,分别与预测的pred_bboxes计算Ciou Loss, 同时与pred_regs(预测的anchors中心点到各边的距离)计算回归DFL Loss。
c. 训练mask值:fg_mask [bx8400],对8400个anchor进行正负样本标记,计算损失过程中通过fg_mask筛选正负样本。

2、损失函数
1、类别分类损失cls_loss

在yolov8中,类别损失最终采用的是交叉熵损失,该方法是我们非常熟知的,不再赘述。

代码如下:
self.bce = nn.BCEWithLogitsLoss(reduction='none')
loss[1] = self.bce(pred_scores,target_scores).sum()/target_scores_sum

其中预测pred_scores: b x 8400 x cls_num; target_scores: b x 8400 x cls_num, 相当于对于每个box,其cls_num个分类都视为二分类,并进行交叉熵运算。

2、边界框回归损失bbox_loss

边框回归,采用的是DFL Loss + CIOU Loss
在这里插入图片描述

target_bboxes /= self.stride_scales
loss[0],loss[2] = self.bbox_loss(pred_regs,pred_bboxes,self.anc_points,target_bboxes,target_scores,target_scores_sum,fg_mask)

DFL loss:

weight = torch.masked_select(target_scores.sum(-1), fg_mask).unsqueeze(-1)
# DFL loss
if self.use_dfl:target_ltrb = self.bbox2reg(anchor_points, target_bboxes, self.reg_max)loss_dfl = self._df_loss(pred_regs[fg_mask].view(-1, self.reg_max + 1), target_ltrb[fg_mask]) * weight

FasterRCNN损失函数

1、由于frcnn的网络结构主要是两个网络组成,损失函数分为四个部分。

RPN分类损失:anchor是否为gt
RPN位置回归损失:anchor位置微调
ROI分类损失:ROI所属类别
ROI位置回归损失:继续对ROI位置微调
四个损失相加就是最后的损失,反向传播,更新参数。

2、RPN损失

1、分类损失:cross_entropy
2、回归损失:smooth L1 loss

3、ROI损失(与RPN类似)

1、分类损失
2、回归损失

在Faster R-CNN模型中,有两个主要的组件:区域提议网络(Region Proposal Network, RPN) 和 Fast R-CNN检测器。这两个组件分别负责生成候选区域(region proposals)和最终的目标检测,它们各自计算并优化不同的损失函数。

RPN的损失
RPN的目标是生成高质量的候选区域,它同时执行分类和回归任务:

分类损失:RPN需要判断每个锚框(anchor)是否包含目标物体,通常使用二元分类(前景vs背景)。损失函数通常采用交叉熵损失(Cross-Entropy Loss),有时也称为Log Loss。对于每个锚框,如果它与任一GT框的重叠超过阈值,则认为它是正样本(前景),否则为负样本(背景)。
回归损失:对于每个前景锚框,RPN需要预测边界框的偏移量,以便更准确地定位目标。回归损失通常采用Smooth L1损失(也称为Huber损失),因为它对大的残差(预测误差)更为稳健。
ROI的损失(Fast R-CNN部分的损失)
Fast R-CNN检测器接收RPN生成的候选区域,然后进行更详细的分类和边界框回归:

分类损失:对于每个候选区域(Region of Interest, ROI),Fast R-CNN需要预测物体的类别。这同样采用交叉熵损失,但是这次是多分类损失,因为它需要区分多个不同的物体类别。
回归损失:类似于RPN的回归损失,Fast R-CNN也需要优化边界框的位置。然而,这里的边界框回归是针对每个类别进行的,因为不同类别的物体可能有不同的形状和比例。这也通常使用Smooth L1损失。
总体损失
在训练过程中,RPN的损失和Fast R-CNN部分的损失会被加权求和,形成总损失函数。这是因为两个部分的目标是相关的,但又各自负责不同的任务。优化整个模型的总损失有助于同时改善区域提议的质量和最终的检测精度。

损失函数的细节
RPN的分类损失通常使用Sigmoid函数进行二元分类,而Fast R-CNN的分类损失使用Softmax函数进行多分类。
RPN的回归损失和Fast R-CNN的回归损失都采用Smooth L1损失,但Fast R-CNN的回归损失可能在每个类别上都有一个独立的分支,这意味着它实际上是多个Smooth L1损失的组合。
通过这种方式,Faster R-CNN模型能够在训练过程中同时优化区域提议和最终的检测结果,从而实现高效且准确的目标检测。

YOLOv8和RT-DETR(Real-Time DETR)是两种不同的目标检测框架,它们在设计哲学和损失函数的选择上存在一些关键的区别。下面我将概述这两种模型的损失函数及其差异。

YOLOv8的损失函数

YOLOv8是YOLO系列的一个最新版本,它采用了以下几种损失函数:

  1. VFL Loss (Variational Focal Loss):用于分类损失,它结合了交叉熵损失和focal loss的优点,以解决类别不平衡问题,尤其是当小目标数量较少时。

  2. CIOU Loss (Complete Intersection over Union Loss):用于边界框回归,CIOU Loss不仅考虑了IoU(交并比),还考虑了中心点的距离和长宽比,提供了更全面的边界框回归度量。

  3. DFL Loss (Distribution Focal Loss):用于边界框坐标预测的细化,通过预测边界框坐标的分布来进一步优化回归。

RT-DETR的损失函数

RT-DETR是基于Transformer架构的实时目标检测模型,它借鉴了DETR的设计,但进行了优化以实现更快的速度。其损失函数包括:

  1. 分类损失:通常使用交叉熵损失,用于预测每个检测框的类别。

  2. 边界框回归损失:RT-DETR可能使用L1损失或GIoU(Generalized IoU)损失等,用于优化检测框的位置。

  3. 匈牙利匹配算法:这是DETR及其衍生模型的核心特点之一,用于在没有先验假设的情况下匹配预测框和真实框,从而确定哪些预测框应该被哪些真实框监督。

区别

  1. 匹配机制:YOLOv8采用Task-Aligned匹配策略,而RT-DETR则依赖于匈牙利算法进行预测框与真实框的匹配。Task-Aligned匹配考虑了任务的特性来优化匹配过程,而匈牙利算法则是一种全局最优的匹配策略。

  2. 损失函数:YOLOv8使用了更复杂的损失函数组合,如VFL和CIOU Loss,旨在提高小目标检测的性能和边界框回归的准确性。RT-DETR的损失函数相对简单,更侧重于速度和效率。

  3. 架构差异:YOLOv8继承了YOLO的一贯风格,使用卷积神经网络(CNN)进行特征提取和预测,而RT-DETR基于Transformer架构,这在模型结构和计算流程上有本质的不同。

这些区别反映了YOLOv8和RT-DETR在设计上的不同取向,YOLOv8追求在各种场景下的高性能,而RT-DETR则强调实时性和计算效率,两者在特定的应用场景下各有优势。

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

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

相关文章

2024 年最佳 Figma 字体

字体不仅仅是文本字符,它们还塑造了用户体验。从引导用户浏览界面到传达品牌个性,字体对于设计​​至关重要。然而,找到适合您的网站或应用风格的完美字体可能具有挑战性。 但不要害怕,我们会帮助您!请继续关注&#x…

C语言 指针和数组——指针的算术运算

目录 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结  指针变量 – 指针类型的变量,保存地址型数据  指针变量与其他类型…

负载均衡(服务器)

vi /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network 防火墙 systemctl stop firewalld systemctl disable firewalld vi /etc/selinux/config setenforce 0 yum install gcc gcc-c mkdir /lnmp cd /lnmp/ tar -zxvf zlib-1.2.12.tar.gz tar -zxv…

[C++][CMake][CMake基础]详细讲解

目录 1.CMake简介2.大小写?3.注释1.注释行2.注释块 4.日志 1.CMake简介 CMake是一个项目构建工具,并且是跨平台的 问题 – 解决 如果自己动手写Makefile,会发现,Makefile通常依赖于当前的编译平台,而且编写Makefile的…

vue的学习--day3

1、尝试使用json文件模拟增删改查 json server:准备一份自己的数据(这里我用的是老师给的)。 转到d盘,然后打开json文件: 下面模拟增删改查: 借助工具postman或apifox或apipost: 这里我下载了apifox&…

产品公告 | MemFire Cloud 现已支持微信授权登录,为移动应用带来更便捷的认证服务

MemFire Cloud推出的“开箱即用”的后端服务,提供了云数据库、身份验证与授权、云存储、静态托管、实时realtime、自动生成API等功能,本次升级新增/优化功能如下: 标题微信授权登录(移动应用) 为了顺应国内用户的使用…

Elasticsearch:Ingest architectures - 摄取架构

我们提供各种采集架构,以满足各种用例和网络配置的需求。 要将数据采集到 Elasticsearch,请使用最符合你的需求和用例的选项。对于许多用户和用例来说,最简单的方法是使用 Elastic Agent 采集数据并将其发送到 Elasticsearch。Elastic Agent…

深度学习——深度学习中感受野的计算

感受野 在卷积神经网络(CNN)中,感受野(Receptive Field) 是一个非常重要的概念。它描述了网络中某一层的输出(通常是特征图上的一个像素点)所对应的输入图像上的空间范围。这个范围代表了该输出…

SARscape——地理编码与辐射定标

目录 一、算法原理1、概述2、参考文献 二、软件操作三、结果展示1、原始图像2、处理结果 一、算法原理 1、概述 SAR系统观测到的是电磁波入射地球表面后反射(后向散射)的雷达脉冲的强度和相位信息。这个信息编码到雷达坐标系统下,即斜距坐标…

数据结构之二叉树概念

数据结构之二叉树 二叉树简介分类普通二叉树平衡二叉树满二叉树二叉搜索树(二叉排序树、二叉查找树),平衡二叉树红黑树 B树类型B树(B-树、B_树)B树B*树 二叉树 简介 二叉树(Binary Tree) :是一种非常重要…

头歌资源库(19)在排序数组中查找元素的首尾位置

一、 问题描述 二、算法思想 该问题可以通过二分查找的思想来解决。 首先,我们可以使用二分查找找到目标值在数组中的任意一个位置(即该位置的值等于目标值)。假设找到的位置为mid。 接下来,我们需要在mid的左边和右边分别找到…

UNIAPP_顶部导航栏右侧添加uni-icons图标,并绑定点击事件,自定义导航栏右侧图标

效果 1、导入插件 uni-icons插件:https://ext.dcloud.net.cn/plugin?nameuni-icons 复制 uniicons.ttf 文件到 static/fonts/ 下 仅需要那个uniicons.ttf文件,不引入插件、单独把那个文件下载到本地也是可以的 2、配置页面 "app-plus":…

Python爬虫+数据分析+数据可视化图形-爬取高校排名数据

①本文主要使用python 爬取了中国大学排名前30的大学信息,并进行了数据处理及分析,是一个比较经典的python爬虫和分析项目 ②主要内容:爬虫数据预处理数据可视化分析 完整代码请看这里拿👇↓↓↓

Mac本地部署大模型-单机运行

前些天在一台linux服务器(8核,32G内存,无显卡)使用ollama运行阿里通义千问Qwen1.5和Qwen2.0低参数版本大模型,Qwen2-1.5B可以运行,但是推理速度有些慢。 一直还没有尝试在macbook上运行测试大模型&#xf…

我这个经验好找嵌入式的工作吗?

大家好,我是麦鸽。最近网友的提问,这样的经验,好找嵌入式的工作吗? 下面是网友的情况: 本人目前大二机器人工程,未来想要入职嵌入式行业,有robomaster比赛经验本人负责电控,但是由于…

基因组学系列3:基因分型Phasing与单倍型参考序列HRC

1. 基因分型Phasing概念 基因分型,也称为基因定相、单倍体分型、单倍体构建等,即将一个二倍体(或多倍体)基因组上的等位基因(或杂合位点)正确定位到父亲或母亲的染色体上,最终使得来自同一亲本…

相亲交友APP系统婚恋交友社交软件开发语音视频聊天平台定制开发-婚恋相亲交友软件平台介绍——app小程序开发定制

互联网飞速发展的时代,相亲交友软件成为了许多年轻人首选的相亲方式,越来越多的单身男女希望在婚恋交友软件平台上寻找灵魂伴侣,相亲交友软件因此具有很高的市场价值。 多客婚恋相亲交友系统是一款定位高端,到手就能运营的成熟婚恋…

软件测评中心▏软件验收测试方法和测试内容简析

在当今数字化转型的浪潮下,软件验收测试变得越来越重要。软件验收测试,顾名思义,是对软件进行验收的过程中进行的一项测试。它用于确保软件在满足需求、达到预期效果后才能正式交付给客户使用。软件验收测试是一项全面、系统的测试过程&#…

sublime 3 背景和字体颜色修改

sublime 4 突然抽风,每次打开都显示 “plugin_host-3.3 has exited unexpectedly, some plugin functionality won’t be available until Sublime Text has been restarted” 一直没调好,所以我退回到sublime 3了。下载好了软件没问题,但是一…

Zabbix 配置grafana对接

zabbix对接grafana简介 Zabbix与Grafana对接可以实现更加丰富和美观的数据可视化,可以让您利用Grafana强大的可视化功能来展示Zabbix收集的数据。 zabbix插件的两种安装方式 使用grafana-cli 命令进行安装在grafana管理页面中进入Administration/Plugins and dat…