当前位置:首页 > 科技  > 软件

YOLOv8 中的损失函数解析

来源: 责编: 时间:2024-05-16 09:04:55 324观看
导读介绍YOLO长期以来一直是目标检测任务的首选模型之一。它既快速又准确。此外,其API简洁易用。运行训练或推断作业所需的代码行数有限。在2023年下半年,YOLOv8在框架中引入了姿态估计后,该框架现在支持最多四个任务,包括分

0A428资讯网——每日最新资讯28at.com

介绍

YOLO长期以来一直是目标检测任务的首选模型之一。它既快速又准确。此外,其API简洁易用。运行训练或推断作业所需的代码行数有限。在2023年下半年,YOLOv8在框架中引入了姿态估计后,该框架现在支持最多四个任务,包括分类、目标检测、实例分割和姿态估计。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

在本文中,我们将详细介绍YOLOv8中使用的五个损失函数。请注意,我们将仅讨论YOLOv8仓库中配置的默认损失函数。此外,我们还将仅关注代表性参数,跳过一些标量和常数以进行归一化或缩放,以便更好地理解。YOLOv8中对应的任务和损失函数可见于图1。接下来我们将分别对每一个进行讨论。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

IoU损失

0A428资讯网——每日最新资讯28at.com

cw = b1_x2.maximum(b2_x2) - b1_x1.minimum(b2_x1)  # convex (smallest enclosing box) widthch = b1_y2.maximum(b2_y2) - b1_y1.minimum(b2_y1)  # convex heightif CIoU or DIoU:  # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1  c2 = cw ** 2 + ch ** 2 + eps  # convex diagonal squared  rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4  # center dist ** 2    if CIoU:  # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47     v = (4 / math.pi ** 2) * (torch.atan(w2 / h2) - torch.atan(w1 / h1)).pow(2)     with torch.no_grad():       alpha = v / (v - iou + (1 + eps))     return iou - (rho2 / c2 + v * alpha)  # CIoU

当考虑评估边界框准确度的方式时,交并比(IoU)指标可能是大多数人首先想到的一个指标。IoU度量了预测的边界框与实际边界框之间的重叠程度。它也可以作为一个损失函数,只需将IoU转换为1-IoU。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

在YOLOv8中,修订后的版本,完全IoU(CIoU)¹被应用于衡量预测边界框与实际边界框之间的差异。CIoU是一个综合性指标,它考虑了边界框之间的三个属性:0A428资讯网——每日最新资讯28at.com

  • 重叠比
  • 中心点之间的距离
  • 长宽比 

0A428资讯网——每日最新资讯28at.com

CIoU的方程可在图2右侧找到。重叠比、中心点距离和长宽比这三个因素分别由方程中的各项表示。方程中涉及的关键参数在左侧的图中进行了说明,其中p和g表示预测和实际情况,b、w和h分别是相应边界框的中心、宽度和高度。参数c是包围边界框的对角线(灰色虚线矩形)而ρ是欧氏距离。除了分类任务外,IoU损失在YOLOv8中的所有其他任务中都会应用。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

分布焦点损失(DFL)

def _df_loss(pred_dist, target):    """Return sum of left and right DFL losses."""    # Distribution Focal Loss (DFL) proposed in Generalized Focal Loss https://ieeexplore.ieee.org/document/9792391    tl = target.long()  # target left    tr = tl + 1  # target right    wl = tr - target  # weight left    wr = 1 - wl  # weight right    return (F.cross_entropy(pred_dist, tl.view(-1), reduction='none').view(tl.shape) * wl +            F.cross_entropy(pred_dist, tr.view(-1), reduction='none').view(tl.shape) * wr).mean(-1, keepdim=True)

另一个与边界框相关的损失函数是分布焦点损失(DFL)²。DFL关注的是边界框回归的分布差异。YOLOv8中的网络不是直接预测边界框,而是预测边界框的概率分布。它旨在解决边界模糊或部分遮挡的挑战性对象。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

关键点损失

0A428资讯网——每日最新资讯28at.com

loss[1] += self.keypoint_loss(pred_kpt, gt_kpt, kpt_mask, area)area:bounding box areaclass KeypointLoss(nn.Module):  def forward(self, pred_kpts, gt_kpts, kpt_mask, area):        """Calculates keypoint loss factor and Euclidean distance loss for predicted and actual keypoints."""        d = (pred_kpts[..., 0] - gt_kpts[..., 0]) ** 2 + (pred_kpts[..., 1] - gt_kpts[..., 1]) ** 2        kpt_loss_factor = (torch.sum(kpt_mask != 0) + torch.sum(kpt_mask == 0)) / (torch.sum(kpt_mask != 0) + 1e-9)        # e = d / (2 * (area * self.sigmas) ** 2 + 1e-9)  # from formula        e = d / (2 * self.sigmas) ** 2 / (area + 1e-9) / 2  # from cocoeval        return kpt_loss_factor * ((1 - torch.exp(-e)) * kpt_mask).mean()

在YOLOv8中,首次将姿态估计任务纳入到框架中。姿态由一组关键点的坐标和顺序定义。关键点损失监控了预测和实际关键点之间的相似性。两个对应关键点之间的欧几里得距离是关键点损失的主要组成部分。此外,每个关键点都带有一个权重σ,定义了关键点的重要性,默认值为1/关键点数。例如,如果姿态有四个关键点,则所有关键点的权重为1/4 = 0.25。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

关键点目标损失

0A428资讯网——每日最新资讯28at.com

import torch.nn as nnloss[2] = nn.BCEWithLogitsLoss(pred_kpt[..., 2], kpt_mask.float())

在大多数姿态估计训练中,我们可以定义每个关键点的可见性。Python脚本中的参数kpt_mask携带了我们在标签中定义的可见性(1/0)。关键点目标损失计算关键点存在的距离。在YOLOv8中,距离由预测值和实际值的二元交叉熵(BCE)测量。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

分类损失和掩码损失

0A428资讯网——每日最新资讯28at.com

import torch.nn as nnloss[3] = nn.BCEWithLogitLoss(pred_scores, target_scores.to(dtype)).sum() / target_scores_sum  # BCE

分类损失是涉及到所有任务的唯一损失函数。无论我们是在进行分类、目标检测、分割还是姿态估计,图像或特定对象的类别(例如猫、狗、人等)的推断结果之间的距离都是通过二元交叉熵(BCE)计算的。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

它还适用于实例分割中的掩码损失。掩码损失将每个像素视为一个对象,并计算相关的BCE值。在图5中计算了一个3x3的预测掩码和相应的掩码损失。0A428资讯网——每日最新资讯28at.com

0A428资讯网——每日最新资讯28at.com

总损失

# yolo/cfg/default.yaml...box: 7.5  # box loss gaincls: 0.5  # cls loss gain (scale with pixels)dfl: 1.5  # dfl loss gainpose: 12.0  # pose loss gainkobj: 1.0  # keypoint obj loss gain...

好了,以上我们已经介绍了所有六个损失。在网络应用反向传播并更新其参数之前,将损失与相应的权重相加。权重在配置文件default.yaml中定义,如上所示。如果您想在训练阶段动态调整权重,您可以考虑直接在存储库中使用下面提供的代码片段。0A428资讯网——每日最新资讯28at.com

loss[0] *= self.hyp.box  # box gainloss[1] *= self.hyp.pose / batch_size  # pose gainloss[2] *= self.hyp.kobj / batch_size  # kobj gainloss[3] *= self.hyp.cls  # cls gainloss[4] *= self.hyp.dfl  # dfl gainreturn loss.sum() * batch_size, loss.detach()

0A428资讯网——每日最新资讯28at.com

总结 

YOLO是一个为目标检测任务而知名的框架。除了在效率和准确性方面的表现之外,它还在不断更新最新的研究成果。这是一个让计算机视觉从业者跟踪和学习入选技术的好框架。损失函数在模型训练中起着重要作用,并决定了最终的准确性。0A428资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-88330-0.htmlYOLOv8 中的损失函数解析

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 什么锁比读写锁性能更高?

下一篇: 2024 Vue 联邦大会,全明星阵容!探讨 Vue 的未来和问题

标签:
  • 热门焦点
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 电视息屏休眠仍有网络上传 爱奇艺被质疑“薅消费者羊毛”

    记者丨宁晓敏 见习生丨汗青出品丨鳌头财经(theSankei) 前不久,爱奇艺发布了一份亮眼的一季报,不仅营收和会员营收创造历史最佳表现,其运营利润也连续6个月实现增长。自去年年初
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页“充值中心”入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 信通院:小米、华为等11家应用商店基本完成APP签名及验签工作

    中国信通院表示,目前,小米、华为、OPPO、vivo、360手机助手、百度手机助手、应用宝、豌豆荚和努比亚等9家应用商店,以及抖音和快手2家新型应用分发平
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
Top