YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS

一、背景:

传统的非极大值抑制(NMS)算法在目标检测中存在一个问题,即当一个物体的检测框与具有最高得分的检测框M有重叠(在预定义的重叠阈值内)时,会将该检测框的得分设置为零,从而导致该物体可能被遗漏,降低了平均精度。为了解决这个问题,作者提出了Soft-NMS算法。

本文将YOLOv11默认的NMS修改成GIoU-NMSDIoU-NMSCIoU-NMSSIoU-NMSEIou-NMS


专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!

### 关于YOLOv11中的非极大值抑制(NMS) 在目标检测领域,非极大值抑制(Non-Maximum Suppression, NMS)是一项关键技术,用于消除冗余的边界框并保留最可能的目标位置[^2]。尽管当前并未提及具体针对YOLOv11的内容,但从已有版本来看,NMS通常作为模型预测后的后处理阶段的一部分。 #### 非极大值抑制的工作原理 NMS通过比较多个候选框之间的交并比(Intersection over Union, IoU),筛选出具有最高置信度分数的边界框,并移除与其高度重叠的其他框。这一过程可以分为以下几个逻辑部分: 1. **按置信度排序**:将所有预测框按照其置信度得分降序排列。 2. **选取最佳框**:选择置信度最高的框作为初始的最佳框。 3. **计算IoU**:对于剩余的所有框,逐一计算它们与当前最佳框的IoU值。 4. **剔除高重叠框**:设定一个阈值(如0.5),如果某个框的IoU超过该阈值,则将其视为冗余框并删除。 5. **迭代执行**:重复上述步骤直到所有框被处理完毕。 以下是基于Python的一个简单实现示例: ```python def non_max_suppression(boxes, scores, iou_threshold=0.5): # 获取索引列表 indices = sorted(range(len(scores)), key=lambda k: scores[k], reverse=True) keep = [] while len(indices) > 0: current_index = indices.pop(0) keep.append(current_index) suppress = [] # 存储需要压制的索引 for other_idx in indices: iou = calculate_iou(boxes[current_index], boxes[other_idx]) if iou >= iou_threshold: suppress.append(other_idx) # 移除受抑制的索引 indices = [idx for idx in indices if idx not in suppress] return keep ``` 此函数接受输入参数`boxes`表示一组边界框坐标,`scores`代表对应的置信度评分,以及可选参数`iou_threshold`定义了判定两个框是否冲突的标准。 #### YOLO系列中NMS的应用情况 虽然未提供关于YOLOv11的具体细节,但在先前版本如YOLOv8中已经观察到替换主干网络会对性能产生显著影响[^1]。因此推测,在更高阶版次里,诸如HGNetV2这样的改进型架构可能会进一步优化特征提取能力从而间接提升NMS的效果表现。 另外值得注意的是实际部署环境也会影响最终效果比如采用CUDA工具包加速GPU运算时路径设置的重要性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Limiiiing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值