前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YOLOv8红外小目标检测:Wasserstein Distance Loss,助力小目标涨点(1)

YOLOv8红外小目标检测:Wasserstein Distance Loss,助力小目标涨点(1)

原创
作者头像
AI小怪兽
发布2024-11-11 16:20:35
发布2024-11-11 16:20:35
8940
举报
文章被收录于专栏:YOLO大作战YOLO大作战

文章开始之前,推荐一些别人写的很好的文章!感兴趣的也可以去读一下哦!

今日推荐:Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理

文章链接:Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理-腾讯云开发者社区-腾讯云

这篇文章深入探讨了如何利用 Spring AI 的新功能,特别是全局参数和增强函数调用能力,来构建一个智能化的个人助理系统

💡💡💡本文改进:基于Wasserstein距离的小目标检测评估方法助力红外小目标检测

💡💡💡 Wasserstein Distance Loss | 亲测在红外弱小目标检测涨点明显,map@0.5 从0.755提升至0.784

1. 红外弱小目标数据集

Single-frame InfraRed Small Target

数据集大小:427张,进行3倍数据增强得到1708张,最终训练集验证集测试集随机分配为8:1:1

2.Wasserstein Distance Loss介绍

论文名称:《A Normalized Gaussian Wasserstein Distance for Tiny Object Detection》 作者:Jinwang Wang、Chang Xu、Chang Xu、Lei Yu 论文地址:https://arxiv.org/abs/2110.13389

小目标检测是一个非常具有挑战性的问题,因为小目标只包含几个像素大小。作者证明,由于缺乏外观信息,最先进的检测器也不能在小目标上得到令人满意的结果。作者的主要观察结果是,基于IoU (Intersection over Union, IoU)的指标,如IoU本身及其扩展,对小目标的位置偏差非常敏感,在基于Anchor的检测器中使用时,严重降低了检测性能。 为了解决这一问题,本文提出了一种新的基于Wasserstein距离的小目标检测评估方法。具体来说,首先将BBox建模为二维高斯分布,然后提出一种新的度量标准,称为Normalized Wasserstein Distance(NWD),通过它们对应的高斯分布计算它们之间的相似性。提出的NWD度量可以很容易地嵌入到任何基于Anchor的检测器的Assignment、非最大抑制和损失函数中,以取代常用的IoU度量。

1)分析了 IoU 对微小物体位置偏差的敏感性,并提出 NWD 作为衡量两个边界框之间相似性的更好指标;

2)通过将NWD 应用于基于锚的检测器中的标签分配、NMS 和损失函数来设计强大的微小物体检测器;

3)提出的 NWD 可以显着提高流行的基于锚的检测器的 TOD 性能,它在 AI-TOD 数据集上的 Faster R-CNN 上实现了从 11.1% 到 17.6% 的性能提升;

具体来说,对于6×6像素的小目标,轻微的位置偏差会导致明显的IoU下降(从0.53下降到0.06),导致标签分配不准确。然而,对于36×36像素的正常目标,IoU略有变化(从0.90到0.65),位置偏差相同。此外,图2给出了4条不同目标尺度的IoU-Deviation曲线,随着目标尺度的减小,曲线下降速度更快。值得注意的是,IoU的敏感性来自于BBox位置只能离散变化的特殊性。

Wasserstein distance的主要优点是

  1. 无论小目标之间有没有重叠都可以度量分布相似性;
  2. NWD对不同尺度的目标不敏感,更适合测量小目标之间的相似性。

NWD可应用于One-Stage和Multi-Stage Anchor-Based检测器。此外,NWD不仅可以替代标签分配中的IoU,还可以替代非最大抑制中的IoU(NMS)和回归损失函数。在一个新的TOD数据集AI-TOD上的大量实验表明,本文提出的NWD可以持续地提高所有检测器的检测性能。

AI-TOD数据集上基于IoU的检测器(第1行)和基于NWD的检测器(第2行)的可视化结果上图所示。可以观察到与IoU相比,NWD可显著降低假阴性(FN)。

2.NWD 加入yolov8

2.1 ultralytics/yolo/utils/loss.py加入 Wasserstein

核心源码

代码语言:txt
复制
def Wasserstein(box1, box2, xywh=True):
    box2 = box2.T
    if xywh:
        b1_cx, b1_cy = (box1[0] + box1[2]) / 2, (box1[1] + box1[3]) / 2
        b1_w, b1_h = box1[2] - box1[0], box1[3] - box1[1]
        b2_cx, b2_cy = (box2[0] + box2[0]) / 2, (box2[1] + box2[3]) / 2
        b1_w, b1_h = box2[2] - box2[0], box2[3] - box2[1]
    else:
        b1_cx, b1_cy, b1_w, b1_h = box1[0], box1[1], box1[2], box1[3]
        b2_cx, b2_cy, b2_w, b2_h = box2[0], box2[1], box2[2], box2[3]
    cx_L2Norm = torch.pow((b1_cx - b2_cx), 2)
    cy_L2Norm = torch.pow((b1_cy - b2_cy), 2)
    p1 = cx_L2Norm + cy_L2Norm
    w_FroNorm = torch.pow((b1_w - b2_w)/2, 2)
    h_FroNorm = torch.pow((b1_h - b2_h)/2, 2)
    p2 = w_FroNorm + h_FroNorm
    return p1 + p2

3.结果分析

map@0.5 从原始0.755提升至0.784

layers

parameters

GFLOPs

kb

mAP50

yolov8

168

3005843

8.1

6103

0.755

Wasserstein loss

168

3005843

8.1

6103

0.784

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 红外弱小目标数据集
    • 2.Wasserstein Distance Loss介绍
  • 2.NWD 加入yolov8
    • 2.1 ultralytics/yolo/utils/loss.py加入 Wasserstein
  • 3.结果分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档