1. 项目概述
在计算机视觉领域,小目标检测一直是个令人头疼的问题。想象一下,当你试图在航拍图像中识别只有20×20像素大小的车辆,或者在拥挤的监控画面里追踪远处模糊的行人时,传统检测器往往表现不佳。这正是我们团队在开发YOLO26时遇到的核心挑战。
我们提出的ProgLoss+STAL组合方案,本质上是在解决三个关键问题:首先,小目标在特征图上几乎"消失"的问题;其次,训练过程中小目标样本被大目标"淹没"的问题;最后,模型在不同训练阶段对小目标关注度不平衡的问题。这套方案在COCO测试集上将小目标AP(平均精度)从31.7%提升到了38.2%,这个提升幅度在实际工程中意味着可以多检测出近20%的小目标。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术原理深度解析
2.1 STAL:让模型真正"看见"小目标
STAL(Small Target Aware Label Assignment)的核心思想可以用一个类比理解:传统标签分配就像老师在课堂上只提问前排的大个子学生,而STAL则是特意关照后排的小个子学生,确保他们也能获得足够的关注。
具体实现上,STAL包含三个创新点:
-
动态候选样本数量:对于小目标,我们将候选正样本数量从默认的3个增加到5-7个。这相当于在特征图上为小目标拓宽了"接收范围"。
-
尺度感知IoU阈值:传统方法对所有目标使用固定IoU阈值(通常0.5),而STAL对小目标采用更宽松的阈值(0.4-0.45)。这是因为小目标的几个像素偏差就会导致IoU大幅下降。
-
负样本过滤:我们设计了一种基于目标密度的负样本过滤机制,避免在高密度小目标区域过度抑制潜在的正样本。
python复制# STAL核心代码片段
def assign_labels(anchors, gt_boxes, gt_classes):
# 计算所有anchor与gt的IoU
iou_matrix = calculate_iou(anchors, gt_boxes)
# 根据目标尺寸调整参数
gt_areas = (gt_boxes[:, 2] - gt_boxes[:, 0]) * (gt_boxes[:, 3] - gt_boxes[:, 1])
small_target_mask =
