位置: IT常识 - 正文

YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

编辑:rootadmin
YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

推荐整理分享YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

💡该教程为改进入门指南,属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀

💡本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列:YOLOv7改进IoU损失函数:YOLOv7涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数、打造全新YOLOv7检测器。

重点:🔥🔥🔥有不少同学已经反应有效涨点!!! 🌟其他改进内容:CSDN原创YOLO进阶目录 | 《芒果改进YOLO进阶指南》推荐!

最全《芒果书📚》改进目录:YOLOv5改进、YOLOv7改进(芒果书系列)目录一览|原创YOLO改进模型全系列目录 | 人工智能专家老师联袂推荐

文章目录解析|YOLOv7网络模型源代码训练推理教程解析总结|YOLO系列期刊创新点总结核心代码改进改进核心代码改进α-IoU核心代码SIoU改进EIoU改进GIoU改进α-IoU改进代码直接运行解析|YOLOv7网络模型源代码训练推理教程解析手把手调参最新 YOLOv7 模型 推理部分(一)🌟手把手调参最新 YOLOv7 模型 训练部分(二)🌟总结|YOLO系列期刊创新点总结

💡🎈☁️:国庆假期浏览了几十篇YOLO改进英文期刊,总结改进创新的一些相同点(期刊创新点持续更新)

💡🎈☁️:国庆假期看了一系列图像分割Unet、DeepLabv3+改进期刊论文,总结了一些改进创新的技巧

核心代码改进YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

以下SIoU、EIoU、GIoU、α-IoU改进,代码均在博主开源的YOLOAir中有写

改进核心代码

在YOLOv5中,使用以下函数替换原有的utils/metrics.py文件中的bbox_iou函数

如果在YOLOv7中,使用以下函数替换原有的utils/general.py文件中的bbox_iou函数

def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, EIoU=False, SIoU=False, eps=1e-7): # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 box2 = box2.T # Get the coordinates of bounding boxes if x1y1x2y2: # x1, y1, x2, y2 = box1 b1_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 xyxy b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 # Intersection area inter = (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 Area w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps union = w1 * h1 + w2 * h2 - inter + eps iou = inter / union if CIoU or DIoU or GIoU or EIoU or SIoU: cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height if CIoU or DIoU or EIoU or SIoU: # 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 distance squared if DIoU: #DIoU return iou - rho2 / c2 # DIoU elif CIoU: #CIoU https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) with torch.no_grad(): alpha = v / (v - iou + (1 + eps)) return iou - (rho2 / c2 + v * alpha) # CIoU elif SIoU:# SIoU s_cw = (b2_x1 + b2_x2 - b1_x1 - b1_x2) * 0.5 s_ch = (b2_y1 + b2_y2 - b1_y1 - b1_y2) * 0.5 sigma = torch.pow(s_cw ** 2 + s_ch ** 2, 0.5) sin_alpha_1 = torch.abs(s_cw) / sigma sin_alpha_2 = torch.abs(s_ch) / sigma threshold = pow(2, 0.5) / 2 sin_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) ** 2 rho_y = (s_ch / ch) ** 2 gamma = angle_cost - 2 distance_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) return iou - 0.5 * (distance_cost + shape_cost) else:# EIoU w_dis=torch.pow(b1_x2-b1_x1-b2_x2+b2_x1, 2) h_dis=torch.pow(b1_y2-b1_y1-b2_y2+b2_y1, 2) cw2=torch.pow(cw , 2)+eps ch2=torch.pow(ch , 2)+eps return iou-(rho2/c2+w_dis/cw2+h_dis/ch2) else: c_area = cw * ch + eps # convex area return iou - (c_area - union) / c_area # GIoU https://arxiv.org/pdf/1902.09630.pdf return iou # IoU改进α-IoU核心代码def bbox_alpha_iou(box1, box2, x1y1x2y2=False, GIoU=False, DIoU=False, CIoU=False, alpha=2, eps=1e-9): # Returns tsqrt_he IoU of box1 to box2. box1 is 4, box2 is nx4 box2 = box2.T # Get the coordinates of bounding boxes if x1y1x2y2: # x1, y1, x2, y2 = box1 b1_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 xyxy b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 # Intersection area inter = (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 Area w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps union = w1 * h1 + w2 * h2 - inter + eps # change iou into pow(iou+eps) # iou = inter / union iou = torch.pow(inter/union + eps, alpha) # beta = 2 * alpha if GIoU or DIoU or CIoU: cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 c2 = (cw ** 2 + ch ** 2) ** alpha + eps # convex diagonal rho_x = torch.abs(b2_x1 + b2_x2 - b1_x1 - b1_x2) rho_y = torch.abs(b2_y1 + b2_y2 - b1_y1 - b1_y2) rho2 = ((rho_x ** 2 + rho_y ** 2) / 4) ** alpha # center distance if DIoU: return iou - rho2 / c2 # DIoU elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) with torch.no_grad(): alpha_ciou = v / ((1 + eps) - inter / union + v) # return iou - (rho2 / c2 + v * alpha_ciou) # CIoU return iou - (rho2 / c2 + torch.pow(v * alpha_ciou + eps, alpha)) # CIoU else: # GIoU https://arxiv.org/pdf/1902.09630.pdf # c_area = cw * ch + eps # convex area # return iou - (c_area - union) / c_area # GIoU c_area = torch.max(cw * ch + eps, union) # convex area return iou - torch.pow((c_area - union) / c_area + eps, alpha) # GIoU else: return iou # torch.log(iou+eps) or iouSIoU改进

参考上面的核心代码

将iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True)替换为iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, SIoU=True)EIoU改进

参考上面的核心代码

将iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True)替换为iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, EIoU=True)GIoU改进

参考上面的核心代码

将iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True)替换为iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, GIoU=True)α-IoU改进

参考上面的核心代码

bbox_alpha_iou将iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True)替换为iou = bbox_alpha_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True)

以上是yolov5的改进

yolov7 将 tbox[i] 改为 selected_tbox

比如 iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) 改为iou = bbox_iou(pbox.T, selected_tbox, x1y1x2y2=False, CIoU=True)

代码直接运行python train.py cfg yolov7.yaml即可
本文链接地址:https://www.jiuchutong.com/zhishi/300622.html 转载请保留说明!

上一篇:【一起学Rust | 框架篇 | Viz框架】轻量级 Web 框架——Viz(rust 入门教程)

下一篇:Python实现朴素贝叶斯分类器(用python编写素数)

  • 企业为什么要选择网络营销(企业为什么要选址)

    企业为什么要选择网络营销(企业为什么要选址)

  • 苹果13录屏怎么把声音录进去(苹果13怎么录屏)

    苹果13录屏怎么把声音录进去(苹果13怎么录屏)

  • iphone8p64g够用吗

    iphone8p64g够用吗

  • 手机联系人黑名单在哪里查看(手机联系人黑名单查询方法)

    手机联系人黑名单在哪里查看(手机联系人黑名单查询方法)

  • 闲鱼一键转卖什么意思(闲鱼一键转卖怎么赚钱?)

    闲鱼一键转卖什么意思(闲鱼一键转卖怎么赚钱?)

  • Word如何删除页眉和页脚(word如何删除页脚上的一道横线)

    Word如何删除页眉和页脚(word如何删除页脚上的一道横线)

  • word退格会删除上一行的字(word退格会删除前面的文字是怎么回事)

    word退格会删除上一行的字(word退格会删除前面的文字是怎么回事)

  • 对方2g在线是什么意思(对方显示2g在线是啥情况)

    对方2g在线是什么意思(对方显示2g在线是啥情况)

  • boss账号被锁定了多久才能解封(boss账号被锁定能申诉回来吗)

    boss账号被锁定了多久才能解封(boss账号被锁定能申诉回来吗)

  • 淘宝两颗黄钻什么意思(淘宝两颗黄钻花了多少钱)

    淘宝两颗黄钻什么意思(淘宝两颗黄钻花了多少钱)

  • 无线反充是什么意思(无线反充是支持哪些手机)

    无线反充是什么意思(无线反充是支持哪些手机)

  • 第一次用ipad电池要用完吗(第一次用ipad电量)

    第一次用ipad电池要用完吗(第一次用ipad电量)

  • 在soul被对方拉黑了还能联系吗(在soul被对方拉黑了又取消,他能看到我的留言嚒)

    在soul被对方拉黑了还能联系吗(在soul被对方拉黑了又取消,他能看到我的留言嚒)

  • 不换套餐可以用5g网络吗(手机套餐不变换手机号可以吗)

    不换套餐可以用5g网络吗(手机套餐不变换手机号可以吗)

  • 主机红灯一直闪正常吗(主机红灯一直闪,显示器有画面,但是动不了)

    主机红灯一直闪正常吗(主机红灯一直闪,显示器有画面,但是动不了)

  • airpods没有盒子可以连接吗(airpods没有盒子怎么关闭)

    airpods没有盒子可以连接吗(airpods没有盒子怎么关闭)

  • 微博怎么查看离线缓存(微博离线在哪看)

    微博怎么查看离线缓存(微博离线在哪看)

  • 天猫v榜在哪里看(天猫v榜的东西怎么样)

    天猫v榜在哪里看(天猫v榜的东西怎么样)

  • 荣耀手环4上市日期(荣耀手环4发布)

    荣耀手环4上市日期(荣耀手环4发布)

  • 手机qq收藏误删怎么恢复(手机qq收藏误删还能恢复吗)

    手机qq收藏误删怎么恢复(手机qq收藏误删还能恢复吗)

  • vivox27pro什么时候上市(vivox27pro什么时候开售)

    vivox27pro什么时候上市(vivox27pro什么时候开售)

  • 抖音怎么制作合拍视频(抖音怎么制作合拍视频让别人合拍)

    抖音怎么制作合拍视频(抖音怎么制作合拍视频让别人合拍)

  • 手机上可以改wifi密码吗(手机上可以改wife密码么)

    手机上可以改wifi密码吗(手机上可以改wife密码么)

  • iwatch4蜂窝支持的城市(iwatch4蜂窝版可以离手机多远)

    iwatch4蜂窝支持的城市(iwatch4蜂窝版可以离手机多远)

  • 手机如何合成视频(手机如何合成视频片段)

    手机如何合成视频(手机如何合成视频片段)

  • word2007怎么打印(word2007怎么打印在一张a4纸上)

    word2007怎么打印(word2007怎么打印在一张a4纸上)

  • 网络电缆没有插好怎么解决(网络电缆没有插好是哪根线)

    网络电缆没有插好怎么解决(网络电缆没有插好是哪根线)

  • 在Win7系统中,电脑网络出现感叹号怎么解决?(在win7系统中如何让电脑恢复出厂设置方法)

    在Win7系统中,电脑网络出现感叹号怎么解决?(在win7系统中如何让电脑恢复出厂设置方法)

  • 普通增值税税率多少
  • 已申报税额是指啥
  • 装修费用摊销是当月还是次月
  • 年报资产总额是期末余额吗
  • 研发加计扣除减免税
  • 本年本期累计
  • 长期股权投资成本法核算
  • 通用机打发票税率在哪改
  • 办理金税盘需要多少钱
  • 废品残料回收入库
  • 土地返还款土地增值税处理
  • 公司注销后是不是就不再接受诉讼
  • 收回代扣社保怎么处理
  • 税费是哪个会计科目?
  • 先进行税务登记还是先注册开户银行账号
  • 以前的员工怎么交社保
  • 无票收入可以存钱吗
  • 公司向股东借款需要股东会决议吗
  • 小规模纳税人企业所得税优惠政策最新2023
  • 业务招待住宿费发票可以抵扣进项税吗
  • windows10你需要trustedinstaller提供的权限才能更改
  • 如何让windows8.1更流畅
  • 电脑桌面换壁纸的软件
  • 微信小程序实现发红包
  • 直系亲属股权转让免征个人所得税
  • PHP:Memcached::getResultMessage()的用法_Memcached类
  • win7命令行模式
  • 不能加载axf文件
  • 员工的医药费
  • 银行代发工资会计科目怎么写
  • php消息队列kafka
  • php时间戳转换中国标准时间
  • 即征即退增值税属于政府补助吗
  • vue移动端pc端适配方案
  • elementui中文网
  • Yii2实现同时搜索多个字段的方法
  • py转换成exe后打开没用
  • chage -l命令
  • 购买电脑做什么分录
  • 稿酬的支付方式
  • 新会计准则分录大全
  • 新购固定资产怎么填写申报表
  • 专票开户行少写一个字
  • 工会经费按工资总额的
  • python dup函数
  • 理财收益缴纳增值税吗
  • 政府会计业务活动费用会计分录
  • 转入固定资产清理会计科目
  • 应付账款主要账户有哪些
  • 医院要发票
  • 研发部门的房租可以资本化
  • 跨年发生退货
  • 汇算清缴补交所得税的分录
  • 多交增值税可以不退吗
  • 装修属于营业费用还是管理费用
  • 仓储费计入哪个部门的费用
  • 新单位成立需要做什么工作
  • 公司费用报销单样本
  • sql server 2000安装包
  • 史上最简单的不读书法成甲
  • mysql处理海量数据
  • dell bios密码忘记
  • 微软在印度的投资
  • u深度u盘启动盘制作工具无法进入电脑
  • ubuntu搭建tftp服务器
  • Ubuntu Server Rsync服务端与Windows cwRsync客户端实现数据同步配置教程
  • 微软推送Win11226x1.2050
  • 怎样彻底关闭win11安全中心
  • 利用命令查看虚拟机的信息
  • win10自带邮箱无法使用126
  • javascript语句大全
  • 有道词典encountered an improper argument
  • js模拟用户输入
  • jquery点击a标签
  • swift协议范型
  • 控件begininvoke
  • Python中的多行注释文档编写风格汇总
  • 随子女定居外省好吗
  • 小微企业减半征收房产税
  • 安全生产管理局和应急局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设