当前位置: 首页 > news >正文

揭阳门户网站开发电商平台建设内容

揭阳门户网站开发,电商平台建设内容,太原seo外包平台,昆山做企业网站一、本文介绍 这篇文章介绍了YOLOv8的重大改进#xff0c;特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体#xff0c;如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU#xff0c;还融合了“Focus”思想#xff0c;创造了一系列新的损失函数。这些组合形式的… 一、本文介绍 这篇文章介绍了YOLOv8的重大改进特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU还融合了“Focus”思想创造了一系列新的损失函数。这些组合形式的损失函数超过了二十余种每种都针对特定的目标检测挑战进行优化。文章会详细探讨这些损失函数如何提高YOLOv8在各种检测任务中的性能包括提升精度、加快收敛速度和增强模型对复杂场景的适应性。本文章主要是为了发最近新出的Inner思想改进的各种EIoU的文章服务其中我经过实验在绝大多数下的效果都要比本文中提到的各种损失效果要好。  InnerIoU YOLOv8改进 | 2023 | InnerIoU、InnerSIoU、InnerWIoU、Foucs等损失函数 专栏回顾 YOLOv8改进有效涨点专栏-持续复现各种最新机制 本位代码地址 文末提供完整代码块-包括EIoU、CIoU、DIoU等七种损失和其Focus变种 目录 一、本文介绍 二、各种损失函数的基本原理  2.1 交集面积和并集面积 2.2 IoU 2.3 SIoU 2.4 WioU 2.5 GIoU 2.6 DIoU 2.7 EIoU 2.8 CIoU 2.9 FocusLoss  三、EIoU、SIoU、EIoU、FocusIoU等损失函数代码块 3.1 代码一 3.2 代码二  四、添加EIoU、SIoU、EIoU、FocusIoU等损失函数到模型中 五、总结 二、各种损失函数的基本原理  2.1 交集面积和并集面积 在理解各种损失函数之前我们需要先来理解一下交集面积和并集面积在数学中我们都学习过集合的概念这里的交集和并集的概念和数学集合中的含义是一样的。 ​ 2.2 IoU 论文地址IoU Loss for 2D/3D Object Detectio 适用场景普通的IoU并没有特定的适用场景 概念: 测量预测边界框和真实边界框之间的重叠度(最基本的边界框损失函数后面的都是居于其进行计算)。 ​ 2.3 SIoU 论文地址SIoU: More Powerful Learning for Bounding Box Regression 适用场景适用于需要高精度边界框对齐的场景如精细的物体检测和小目标检测。 概念: SIoU损失通过融入角度考虑和规模敏感性引入了一种更为复杂的边界框回归方法解决了以往损失函数的局限性SIoU损失函数包含四个组成部分角度损失、距离损失、形状损失和第四个未指定的组成部分。通过整合这些方面从而实现更好的训练速度和预测准确性。 ​ 2.4 WioU 论文地址WIoU: Bounding Box Regression Loss with Dynamic Focusing Mechanism 适用场景适用于需要动态调整损失焦点的情况如不均匀分布的目标或不同尺度的目标检测。 概念:引入动态聚焦机制的IoU变体旨在改善边界框回归损失。 ​ 2.5 GIoU 论文地址GIoU: A Metric and A Loss for Bounding Box Regression 适用场景适合处理有重叠和非重叠区域的复杂场景如拥挤场景的目标检测。 概念: 在IoU的基础上考虑非重叠区域以更全面评估边界框 ​ 2.6 DIoU 论文地址DIoU: Faster and Better Learning for Bounding Box Regression 适用场景适用于需要快速收敛和精确定位的任务特别是在边界框定位精度至关重要的场景。 概念:结合边界框中心点之间的距离和重叠区域。 ​ 2.7 EIoU 论文地址EIoU:Loss for Accurate Bounding Box Regression 适用场景可用于需要进一步优化边界框对齐和形状相似性的高级场景。 概念:EIoU损失函数的核心思想在于提高边界框回归的准确性和效率。它通过以下几个方面来优化目标检测 1. 增加中心点距离损失通过最小化预测框和真实框中心点之间的距离提高边界框的定位准确性。 2. 考虑尺寸差异通过惩罚宽度和高度的差异EIoU确保预测框在形状上更接近真实框。 3. 结合最小封闭框尺寸将损失函数与包含预测框和真实框的最小封闭框的尺寸相结合从而使得损失更加敏感于对象的尺寸和位置。 EIoU损失函数在传统IoU基础上增加了这些考量以期在各种尺度上都能获得更精确的目标定位尤其是在物体大小和形状变化较大的场景中。 ​ 2.8 CIoU 论文地址CIoU:Enhancing Geometric Factors in Model Learning 适用场景适合需要综合考虑重叠区域、形状和中心点位置的场景如复杂背景或多目标跟踪。 概念:综合考虑重叠区域、中心点距离和长宽比。 ​ 2.9 FocusLoss  论文地址:Focal Loss for Dense Object Detection 适用场景适用于需要高精度边界框对齐的场景如精细的物体检测和小目标检测。  Focal Loss由Kaiming He等人在论文《Focal Loss for Dense Object Detection》中提出旨在解决在训练过程中正负样本数量极度不平衡的问题尤其是在一些目标检测任务中背景类别的样本可能远远多于前景类别的样本。 Focal Loss通过修改交叉熵损失增加一个调整因子这个因子降低了那些已经被正确分类的样本的损失值使得模型的训练焦点更多地放在难以分类的样本上。这种方式特别有利于提升小目标或者在复杂背景中容易被忽视的目标的检测性能。简而言之Focal Loss让模型“关注”或“专注”于学习那些对提高整体性能更为关键的样本。 三、EIoU、SIoU、EIoU、FocusIoU等损失函数代码块 3.1 代码一 此代码块块的基础版本来源于Github的开源版本我在其基础上将Inner的思想加入其中形成了各种Inner的思想同时融合各种改良版本的损失函数形成对应版本的InnerIoU、InnerCIoU等损失函数。 import numpy as np import torch, mathclass WIoU_Scale: monotonous: {None: origin v1True: monotonic FM v2False: non-monotonic FM v3}momentum: The momentum of running meaniou_mean 1.monotonous False_momentum 1 - 0.5 ** (1 / 7000)_is_train Truedef __init__(self, iou):self.iou iouself._update(self)classmethoddef _update(cls, self):if cls._is_train: cls.iou_mean (1 - cls._momentum) * cls.iou_mean \cls._momentum * self.iou.detach().mean().item()classmethoddef _scaled_loss(cls, self, gamma1.9, delta3):if isinstance(self.monotonous, bool):if self.monotonous:return (self.iou.detach() / self.iou_mean).sqrt()else:beta self.iou.detach() / self.iou_meanalpha delta * torch.pow(gamma, beta - delta)return beta / alphareturn 1def bbox_iou(box1, box2, x1y1x2y2True, GIoUFalse, DIoUFalse, CIoUFalse, SIoUFalse, EIoUFalse, WIoUFalse, FocalFalse, alpha1, gamma0.5, scaleFalse, eps1e-7):# Returns the IoU of box1 to box2. box1 is 4, box2 is nx4box2 box2.T# Get the coordinates of bounding boxesif x1y1x2y2: # x1, y1, x2, y2 box1b1_x1, b1_y1, b1_x2, b1_y2 box1[0], box1[1], box1[2], box1[3]b2_x1, b2_y1, b2_x2, b2_y2 box2[0], box2[1], box2[2], box2[3]else: # transform from xywh to xyxyb1_x1, b1_x2 box1[0] - box1[2] / 2, box1[0] box1[2] / 2b1_y1, b1_y2 box1[1] - box1[3] / 2, box1[1] box1[3] / 2b2_x1, b2_x2 box2[0] - box2[2] / 2, box2[0] box2[2] / 2b2_y1, b2_y2 box2[1] - box2[3] / 2, box2[1] box2[3] / 2# Intersection areainter (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \(torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0)# Union Areaw1, h1 b1_x2 - b1_x1, b1_y2 - b1_y1 epsw2, h2 b2_x2 - b2_x1, b2_y2 - b2_y1 epsunion w1 * h1 w2 * h2 - inter epsif scale:self WIoU_Scale(1 - (inter / union))# IoU# iou inter / union # ori iouiou torch.pow(inter/(union eps), alpha) # alpha iouif CIoU or DIoU or GIoU or EIoU or SIoU or WIoU: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 or EIoU or SIoU or WIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1c2 (cw ** 2 ch ** 2) ** alpha eps # convex diagonal squaredrho2 (((b2_x1 b2_x2 - b1_x1 - b1_x2) ** 2 (b2_y1 b2_y2 - b1_y1 - b1_y2) ** 2) / 4) ** alpha # center dist ** 2if CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47v (4 / math.pi ** 2) * (torch.atan(w2 / h2) - torch.atan(w1 / h1)).pow(2)with torch.no_grad():alpha_ciou v / (v - iou (1 eps))if Focal:return iou - (rho2 / c2 torch.pow(v * alpha_ciou eps, alpha)), torch.pow(inter/(union eps), gamma) # Focal_CIoUelse:return iou - (rho2 / c2 torch.pow(v * alpha_ciou eps, alpha)) # CIoUelif EIoU:rho_w2 ((b2_x2 - b2_x1) - (b1_x2 - b1_x1)) ** 2rho_h2 ((b2_y2 - b2_y1) - (b1_y2 - b1_y1)) ** 2cw2 torch.pow(cw ** 2 eps, alpha)ch2 torch.pow(ch ** 2 eps, alpha)if Focal:return iou - (rho2 / c2 rho_w2 / cw2 rho_h2 / ch2), torch.pow(inter/(union eps), gamma) # Focal_EIouelse:return iou - (rho2 / c2 rho_w2 / cw2 rho_h2 / ch2) # EIouelif SIoU:# SIoU Loss https://arxiv.org/pdf/2205.12740.pdfs_cw (b2_x1 b2_x2 - b1_x1 - b1_x2) * 0.5 epss_ch (b2_y1 b2_y2 - b1_y1 - b1_y2) * 0.5 epssigma torch.pow(s_cw ** 2 s_ch ** 2, 0.5)sin_alpha_1 torch.abs(s_cw) / sigmasin_alpha_2 torch.abs(s_ch) / sigmathreshold pow(2, 0.5) / 2sin_alpha torch.where(sin_alpha_1 threshold, sin_alpha_2, sin_alpha_1)angle_cost torch.cos(torch.arcsin(sin_alpha) * 2 - math.pi / 2)rho_x (s_cw / cw) ** 2rho_y (s_ch / ch) ** 2gamma angle_cost - 2distance_cost 2 - torch.exp(gamma * rho_x) - torch.exp(gamma * rho_y)omiga_w torch.abs(w1 - w2) / torch.max(w1, w2)omiga_h torch.abs(h1 - h2) / torch.max(h1, h2)shape_cost torch.pow(1 - torch.exp(-1 * omiga_w), 4) torch.pow(1 - torch.exp(-1 * omiga_h), 4)if Focal:return iou - torch.pow(0.5 * (distance_cost shape_cost) eps, alpha), torch.pow(inter/(union eps), gamma) # Focal_SIouelse:return iou - torch.pow(0.5 * (distance_cost shape_cost) eps, alpha) # SIouelif WIoU:if Focal:raise RuntimeError(WIoU do not support Focal.)elif scale:return getattr(WIoU_Scale, _scaled_loss)(self), (1 - iou) * torch.exp((rho2 / c2)), iou # WIoU https://arxiv.org/abs/2301.10051else:return iou, torch.exp((rho2 / c2)) # WIoU v1if Focal:return iou - rho2 / c2, torch.pow(inter/(union eps), gamma) # Focal_DIoUelse:return iou - rho2 / c2 # DIoUc_area cw * ch eps # convex areaif Focal:return iou - torch.pow((c_area - union) / c_area eps, alpha), torch.pow(inter/(union eps), gamma) # Focal_GIoU https://arxiv.org/pdf/1902.09630.pdfelse:return iou - torch.pow((c_area - union) / c_area eps, alpha) # GIoU https://arxiv.org/pdf/1902.09630.pdfif Focal:return iou, torch.pow(inter/(union eps), gamma) # Focal_IoUelse:return iou # IoU 3.2 代码二  代码块二此处是使用Focus时候需要修改的代码如果不适用则不需要修改下面的代码因为利用Focus机制时候返回的类型是元组所以需要额外的处理。  if type(iou) is tuple:if len(iou) 2:# Focus Loss 时返回的是元组类型,进行额外处理loss_iou ((1.0 - iou[0]) * iou[1].detach() * weight).sum() / target_scores_sumelse:loss_iou (iou[0] * iou[1] * weight).sum() / target_scores_sumelse:# 正常的损失函数loss_iou ((1.0 - iou) * weight).sum() / target_scores_sum 四、添加EIoU、SIoU、EIoU、FocusIoU等损失函数到模型中 添加的方法和基础版本的各种损失函数的方法是一样的网上的教程已经满天飞了考虑到大家有的人已经会了有的人还不会所以这里提供我的另一篇博客里面包括YOLOv8改进C2f、Conv、Neck、损失函数、Bottleneck、检测头等各种YOLOv8能够改进的地方的详细过程讲解(里面会教会你如何使用上面的代码块一和代码块二)。所以如果你已经会了可以直接跳过此处如果你还不会我建议你可以看下面的文章我相信能够帮助到你。 修改教程 YOLOv8改进 | 如何在网络结构中添加注意力机制、C2f、卷积、Neck、检测头 五、总结 到此本文的正式分享内容就结束了在这里给大家推荐我的YOLOv8改进有效涨点专栏本专栏目前为新开的平均质量分98分后期我会根据各种最新的前沿顶会进行论文复现也会对一些老的改进机制进行补充目前本专栏免费阅读(暂时大家尽早关注不迷路~)如果大家觉得本文帮助到你了订阅本专栏关注后续更多的更新~ 本专栏其它内容(持续更新)  YOLOv8改进 | DAttention (DAT)注意力机制实现极限涨点 YOLOv8改进 | 如何在网络结构中添加注意力机制、C2f、卷积、Neck、检测头 YOLOv8改进 | ODConv附修改后的C2f、Bottleneck模块代码 YOLOv8改进有效涨点系列-手把手教你添加动态蛇形卷积(Dynamic Snake Convolution) YOLOv8性能评估指标-mAP、Precision、Recall、FPS、IoU YOLOv8改进有效涨点系列-适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention) YOLOv8改进有效涨点系列-多位置替换可变形卷积(DCNv1、DCNv2、DCNv3)  详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署 ​​
http://wiki.neutronadmin.com/news/45968/

相关文章:

  • 网站安全维护网站备案号信息查询
  • python3 网站开发入门怎么查网站备案接入商
  • 网站的内连接如何做做网站员培训
  • 国外网站做淘宝客长春网站网站建设
  • 娄星区建设局网站wordpress contactus
  • 绍兴网站建设公司哪家专业wordpress 用户枚举
  • 新乡营销型网站建设wordpress 模板语言包
  • 网站建设完工报告中国移动网络优化做什么的
  • 如何学会建网站东莞厂房招标平台
  • vue做单页面网站ftp上传安装wordpress
  • 网站建设阶段性工作重点百度不抓取网站
  • 如何做优秀的视频网站昆明做商城网站多少钱
  • 集团公司做网站的好处有什么青岛网站设计
  • 连云港网站建设开发郴州网站建设公司
  • 公司的网站如何建设方案电商培训内容有哪些
  • 徐州市建设银行网站常州网站推广优化
  • 东莞网站建设服务协议东莞网络营销网络推广系统
  • 绵阳 网站建设网站建设 总体思路
  • 深圳做三网合一网站互联网公司薪酬体系
  • 重庆企业网站开发服务营销手机网站版面
  • 网站建设的要点山东青岛68元建网站
  • 网站外链如何做分类列表页wordpress
  • 上海好的高端网站建设服务公司济南企业自助建站
  • 建设网站要注意事项酷家乐装修设计软件app下载
  • 如何让本机做网站让内网访问产品介绍网站设计
  • 网站备案 邮寄资料新版新白娘子传奇小青最后和谁在一起了
  • wordpress可以做企业网站网站后台程序怎么做
  • 沈阳制作网站企业资深的食品行业网站开发
  • 重庆网站公司推荐360易托管建站工具
  • 德州做网站公司电话投资项目