2026论文解读,ASAHI:自适应切片助力小目标检测,速度提升25%、精度创新高
向AI转型的程序员都关注公众号 机器学习AI算法工程高分辨率航空图像中的小目标检测一直是计算机视觉领域的硬骨头。无人机航拍和卫星遥感图像动辄 1920×1080 甚至 3000×2500 像素而目标行人、车辆等可能只占几十个像素。传统检测器在这种场景下表现极差——Faster R-CNN 在 VisDrone 数据集上对极小目标的 mAP 仅为6.2%。2026 年 4 月来自都灵理工大学的研究团队在 arXiv 上发表了ASAHIAdaptive Slicing-Assisted Hyper Inference论文提出了一种全新的自适应切片框架在 VisDrone2019 上达到56.8% mAP50推理速度相比基线 SAHI 提升20-25%一举刷新了 SOTA 水平。本文将对这篇论文进行深度解读带你吃透它的核心思想、技术细节和实战用法。一、为什么小目标检测这么难在深入 ASAHI 之前我们先要理解小目标检测的三大痛点痛点1尺度失衡。高分辨率图像中小目标只占图像的极少数像素。经过深度网络的多次下采样后小目标的特征信息几乎消失殆尽。痛点2密集分布与遮挡。无人机俯拍场景下行人、车辆密集排列互相遮挡。传统的 NMS非极大值抑制极易把真正的目标当做重复检测而误删。痛点3成像条件多变。拍摄高度、角度、光照、大气条件等变化导致同一类目标的视觉表现天差地别进一步恶化了特征判别能力。一个令人震惊的数据Faster R-CNN 在 VisDrone2019 上对极小目标面积 32² px的 mAP 仅有6.2%即使在多尺度评估下也只有 38.0%。这说明常规检测器在高分辨率小目标场景下几乎失明。二、SAHI切片推理的奠基之作在 ASAHI 之前最流行的小目标检测方法之一是SAHISlicing Aided Hyper Inference由 Akyon 等人在 2022 年提出ICIP Oral。SAHI 的核心思想非常直观将高分辨率大图切成若干固定尺寸如 512×512的小图块patch在每个小图块上独立运行目标检测将检测结果合并回原始图像坐标通过这种方式小目标在切分后的图块中占据了更大的比例检测器能够提取到更有效的特征。SAHI 的局限固定切片尺寸如 512×512带来严重的冗余计算。当图像尺寸不能被 512 整除时边界图块必须越界延伸到图像外或与相邻图块产生大量不必要的重叠——这些区域被重复检测浪费算力。三、ASAHI从固定尺寸到自适应切片Adaptive Slicing-Assisted Hyper Inference for Enhanced Small Object Detection in High-Resolution Imagery论文地址 https://arxiv.org/html/2604.19233v1ASAHI 的核心洞察极其简洁优雅不再固定切片尺寸而是固定切片数量让尺寸自适应图像分辨率。范式转变SAHI固定切片尺寸如 512×512→ 切片数量随图像分辨率变化 → 冗余计算不可控ASAHI固定切片数量6 或 12 片→ 切片尺寸随图像分辨率自适应 → 精确控制重叠区域ASAHI 框架包含三大核心组件协同工作ASAHI 自适应切片算法 (Adaptive Slicing) SAF 微调策略 CDN 后处理模块3.1 组件一自适应切片算法ASAHI 的自适应切片算法通过三个步骤实现动态切图步骤1分辨率依赖阈值判断。首先计算一个阈值 T决定将图像切成 6 片3×2 网格还是 12 片4×3 网格T r × (4 - 3μ) 1其中 μ 是相邻图块的重叠率本文设为 0.15r 是限制性维度设为 512。代入公式得T 1818。如果 max(W, H) ≤ 1818切成 6 片3列×2行如果 max(W, H) 1818切成 12 片4列×3行步骤2自适应切片尺寸计算。确定切片数量后切片尺寸 p 也由公式计算p max( W/(3-2μ) 1, H/(2-μ) 1 ) 6 片时p max( W/(4-3μ) 1, H/(3-2μ) 1 ) 12 片时步骤3切片坐标确定。根据图像宽高比分配长边和短边的切片长度迭代计算每个切片的起始坐标确保覆盖整张图像且重叠率精确可控。效果验证以 960×540 的图像为例SAHI 的冗余计算率高达 38.72%而 ASAHI 将其近乎完全消除。即使对于 1920×1080 的典型分辨率ASAHI 也能减少 25.92% 的冗余计算。各分辨率下 ASAHI 相比 SAHI 的冗余计算削减幅度图像分辨率 (px)冗余计算削减率960 × 54038.72%1360 × 7652.56%1400 × 105025.61%1920 × 108025.92%2000 × 150024.13%2913 × 24286.99%3.2 组件二SAF 切片辅助微调SAFSlicing-Assisted Fine-tuning是一种训练数据增强策略将原始全分辨率图像和其对应的切片图块同时加入微调数据集全分辨率图像 → 提供全局上下文目标的相对空间位置关系切片图块 → 提供局部细节特征小目标的精细表征所有图像统一缩放到 512 像素保证尺度一致性实验结果表明加入 SAF 后ASAHI 在 VisDrone 验证集上的 mAP50 从 55.5% 提升至56.8%小目标 mAP50_s 从 46.8% 提升至48.5%。3.3 组件三CDN 后处理模块CDNCluster-DIoU-NMS是一个混合后处理算法结合了两个技术的优势Cluster-NMS将 NMS 转化为矩阵操作消除串行依赖实现大幅加速DIoU在 IoU 基础上加入中心点距离惩罚更好区分密集重叠的目标ℒDIoU IoU - ρ²(x, xgt) / c²其中 ρ² 是预测框与真实框中心点的欧氏距离平方c 是两者最小外接矩形的对角线长度。DIoU 损失能有效惩罚中心点偏移过大的预测框。CDN 的工作流程按置信度排序所有检测框计算最高分检测框与其余框的 DIoU 值DIoU 0.5 则标记为抑制矩阵元素置 0否则保留置 1Cluster-NMS 矩阵乘法并行传播抑制决策迭代直至所有框完成处理相比传统 NMSCDN 的 mAP 提升 2.1%速度提升72%3.06 → 5.26 img/s。四、实验结果全面碾压研究团队在 VisDrone2019 和 xView 两大权威遥感数据集上进行了全面评估。VisDrone2019 验证集 SOTA 对比方法mAPmAP75mAP50速度 (img/s)Faster R-CNN12.39.624.92.57DMNet28.217.330.51.87HIT-UAV34.621.755.83.45QueryDet33.919.556.12.75ClusDet32.418.956.21.29FocusDetect42.030.166.10.73TPHSAHI34.927.555.14.67TPHASAHI (ours)36.028.256.85.26与 FocusDetect 相比ASAHI 在 mAP50 上虽然低 9.3%但推理速度是前者的7.2 倍——在工程部署中速度与精度的平衡往往比单一指标更重要。xView 测试集结果方法mAPmAP75mAP50mAP50_sSAHI (512px)16.0711.520.414.9ASAHI (ours)17.512.422.717.3消融实验关键发现配置mAP50mAP50_smAP50_mmAP50_lTPHFI仅全图推理34.221.453.374.4 ASAHI加入自适应切片20.225.266.158.9 FI加入全图推理55.546.768.176.5 PO图块重叠55.546.868.677.6 SAF CDN完整方法56.848.569.672.9可以看到ASAHI 自适应切片带来了最大单步提升mAP50 从 34.2% 跃升至 54.4%20.2%小目标 mAP50_s 从 21.4% 飙升至 46.6%25.2%。SAF 和 CDN 则在基础上进一步优化。五、实战代码用 SAHI 实现切片推理目前 ASAHI 的官方代码尚未完全开源但其基线方法 SAHI 已是一个成熟的 Python 库GitHub 5300 Stars。我们可以基于 SAHI 实践切片推理并手动实现 ASAHI 的核心自适应逻辑。环境安装pip install -U torch sahi ultralytics opencv-pythonSAHI 基础切片推理# 导入 SAHI 核心 APIfrom sahi import AutoDetectionModelfrom sahi.predict import get_sliced_predictionfrom sahi.utils.cv import visualize_object_predictionsimport cv2# 加载检测模型以 YOLOv8 为例detection_model AutoDetectionModel.from_pretrained( model_typeultralytics, model_pathyolov8n.pt, confidence_threshold0.3, devicecuda:0,)# 读取高分辨率图像img_path aerial_image.jpg# SAHI 切片推理固定 256×256 切片20% 重叠result get_sliced_prediction( imageimg_path, detection_modeldetection_model, slice_height256, slice_width256, overlap_height_ratio0.2, overlap_width_ratio0.2,)# 可视化结果visualization visualize_object_predictions( imagecv2.imread(img_path), object_prediction_listresult.object_prediction_list, rect_th2, text_size0.5,)cv2.imwrite(result.jpg, visualization)手动实现 ASAHI 自适应切片逻辑import mathimport cv2import numpy as npfrom typing import List, Tupledef adaptive_slice( img: np.ndarray, overlap_ratio: float 0.15, r: int 512,) - List[Tuple[np.ndarray, Tuple[int, int]]]: ASAHI 自适应切片实现 Args: img: 输入图像 (H, W, C) overlap_ratio: 重叠率 (默认 0.15) r: 限制性维度 (默认 512) Returns: [(patch, (x_start, y_start)), ...] H, W img.shape[:2] mu overlap_ratio # Step 1: 计算阈值 T r * (4 - 3 * mu) 1 # Step 2: 根据分辨率决定切片数量 if max(W, H) T: ncols, nrows 3, 2 # 6 slices else: ncols, nrows 4, 3 # 12 slices # Step 3: 自适应计算切片尺寸 if ncols 3: p max(W / (3 - 2 * mu) 1, H / (2 - mu) 1) else: p max(W / (4 - 3 * mu) 1, H / (3 - 2 * mu) 1) # Step 4: 计算长边和短边切片长度 if ncols 3: l_long W / (3 - 2 * mu) 1 l_short H / (2 - mu) 1 else: l_long W / (4 - 3 * mu) 1 l_short H / (3 - 2 * mu) 1 # 根据宽高比分配切片宽高 if H W: slice_h int(l_long) slice_w int(l_short) else: slice_w int(l_long) slice_h int(l_short) # 计算步长保证覆盖整图 stride_w (W - slice_w) // (ncols - 1) if ncols 1 else 0 stride_h (H - slice_h) // (nrows - 1) if nrows 1 else 0 patches [] for i in range(nrows): for j in range(ncols): x1 j * stride_w y1 i * stride_h x2 min(x1 slice_w, W) y2 min(y1 slice_h, H) patch img[y1:y2, x1:x2] patches.append((patch, (x1, y1))) return patches# 使用示例img cv2.imread(aerial_image.jpg)patches adaptive_slice(img, overlap_ratio0.15)print(fASAHI adaptive slicing: {len(patches)} patches generated)# 对每个 patch 运行检测并合并结果all_boxes []for patch, (x_off, y_off) in patches: results detection_model.predict(patch) for box in results: # 将坐标映射回原始图像坐标系 box.x1 x_off box.y1 y_off box.x2 x_off box.y2 y_off all_boxes.append(box)# 使用 CDNCluster-DIoU-NMS去重final_boxes cluster_diou_nms(all_boxes, threshold0.5)简易 CDN 实现import numpy as npimport torchdef diou(box1: np.ndarray, box2: np.ndarray) - float: 计算两个框的 DIoU x1, y1, x2, y2 box1 x1g, y1g, x2g, y2g box2 # IoU xi1 max(x1, x1g) yi1 max(y1, y1g) xi2 min(x2, x2g) yi2 min(y2, y2g) inter max(0, xi2 - xi1) * max(0, yi2 - yi1) area1 (x2 - x1) * (y2 - y1) area2 (x2g - x1g) * (y2g - y1g) union area1 area2 - inter iou inter / (union 1e-7) # 中心点距离 c1 np.array([(x1 x2) / 2, (y1 y2) / 2]) c2 np.array([(x1g x2g) / 2, (y1g y2g) / 2]) rho2 np.sum((c1 - c2) ** 2) # 最小外接矩形对角线 cx1, cy1 min(x1, x1g), min(y1, y1g) cx2, cy2 max(x2, x2g), max(y2, y2g) c2 (cx2 - cx1) ** 2 (cy2 - cy1) ** 2 1e-7 return iou - rho2 / c2def cluster_diou_nms(boxes: list, scores: list, threshold: float 0.5): Cluster-DIoU-NMS 简化实现 # 按置信度降序排列 idxs np.argsort(scores)[::-1] boxes np.array(boxes)[idxs] n len(boxes) # 构建 DIoU 矩阵 diou_matrix np.zeros((n, n)) for i in range(n): for j in range(n): diou_matrix[i, j] diou(boxes[i], boxes[j]) # Cluster-NMS 风格并行抑制 keep np.ones(n, dtypebool) for i in range(n): if keep[i]: # 抑制与当前框 DIoU threshold 且置信度更低的框 suppressed diou_matrix[i] threshold suppressed[:i1] False keep[suppressed] False return idxs[keep]六、深入理解ASAHI 为什么有效6.1 冗余计算的数学分析假设图像尺寸为 W×H切片尺寸为 p×p重叠率为 μ。SAHI 的冗余区域 Sr 计算公式为Rx p·a - p·μ·(a-1) - WRy p·b - p·μ·(b-1) - HSr Rx·H Ry·W - Rx·Ry其中 a ⌈(W - p·μ) / (p·(1-μ))⌉b 同理。当图像尺寸与切片尺寸不匹配时Rx和 Ry会显著增大。ASAHI 的核心优势在于通过自适应调整切片尺寸 p使得 a 和 b 精确等于预设的行列数3×2 或 4×3从而将 Rx和 Ry降到最低。这也是为什么对于某些恰好匹配 SAHI 尺寸的图像如 1360×765ASAHI 的冗余削减只有 2.56%——因为这些图像的冗余本来就不高。6.2 为什么 SAF 有效SAF 让检测器同时看到两个视角全图视角理解目标的全局分布、空间关系、场景上下文切片视角专注于局部细节放大小目标的特征响应两者互补使得检测器既能看清楚小目标又能理解大场景。6.3 CDN 相比传统 NMS 的改进方法mAPmAP50mAP50_smAP50_m速度 (img/s)标准 NMS33.955.847.468.33.06Soft-NMS32.352.644.365.82.72WBF33.455.146.767.52.88Cl.-GIoU-NMS34.556.348.068.55.17Cl.-CIoU-NMS35.956.848.468.64.87CDN (ours)36.056.848.569.65.26CDN 相比标准 NMSmAP 2.1、速度 72%。相比 Soft-NMSmAP 3.7、速度 93%。这说明 DIoU 的几何感知在密集场景中确实优于纯 IoU 的判别能力。七、局限性与未来方向已知局限• 小目标检测增强以略微降低大目标检测精度为代价mAP50_l 从 77.6% 降至 72.9%• 主要错误来源是类别混淆11.4%和定位误差14%需要更好的表征学习• 切片破坏了大型物体的空间连续性使其被碎片化检测未来方向引入坐标注意力机制Coordinate Attention结合层次化视觉 TransformerSwin、CSWin多模态感知管线融合视觉-语言信息多尺度融合技术以缓解大目标精度损失八、总结ASAHI 提出的自适应切片策略以极小的工程代价核心只需修改几行切片逻辑换来了显著的性能和速度提升。它的精髓在于不要问切片应该多大而是问应该切多少片——这一范式转变消除了固定尺寸切片的固有问题。参考资料Moretti, F., Jin, Y., Mario, G. (2026). Adaptive Slicing-Assisted Hyper Inference for Enhanced Small Object Detection in High-Resolution Imagery. arXiv:2604.19233.Akyon, F. C., Altinuc, S. O., Temizel, A. (2022). Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection. ICIP.SAHI 开源库https://github.com/obss/sahiZhu, X., et al. (2021). TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-captured Scenarios.Zheng, Z., et al. (2020). Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression. AAAI.VisDrone 数据集https://github.com/VisDrone/VisDrone-Dataset阅读过本文的人还看了以下文章14.7M参数小目标AP达到13.9%FSDETR用频空融合重新定义目标检测skill刚开源就斩获 1.7K Starweb-access让AI真正上网Qwen3.5实战教程从0到1掌握本地部署与微调引入小目标注意力模块改进YOLO12用于无人机视角下的岸边人员玩水检测pdf2skill让计算机视觉初学者把PDF文档变成AI技能包next-ai-draw-io 用这款AI 画图几十秒就搞定了10 万文档 RAG 落地实战从 Demo 到生产我踩过的所有坑最强一键抠图19Kstar 的 Rembg 开源神器YOLO12改进引入DINOv3少样本目标检测精度飙升分享训练自定义数据集代码基于DINOv2和SAM2改进的U-Net模型Ultralytics lightly-train简化计算机视觉模型训练无需标签最新视觉大模型 DINOv3论文精读逐段解析医学影像数据集汇总持续更新150个【医学影像分割】UN-SAM一种高效且通用的细胞核分割模型小目标检测难点分析和解决策略【模型高效部署】tensorrtx 深度解读yolov11高性能推理实战案例实时语义分割ENet算法提取书本/票据边缘整理开源的中文大语言模型以规模较小、可私有化部署、训练成本较低的模型为主《大语言模型》PDF下载动手学深度学习-李沐PyTorch版本基于40万表格数据集TableBank用MaskRCNN做表格检测《基于深度学习的自然语言处理》中/英PDFDeep Learning 中文版初版-周志华团队【全套视频课】最全的目标检测算法系列讲解通俗易懂《深度学习入门基于Python的理论与实现》高清中文PDF源码python就业班学习视频从入门到实战项目2019最新《PyTorch自然语言处理》英、中文版PDF源码《21个项目玩转深度学习基于TensorFlow的实践详解》完整版PDF附书代码《深度学习之pytorch》pdf附书源码《Python数据分析与挖掘实战》PDF完整源码不断更新资源深度学习、机器学习、数据分析、python搜索公众号添加datayx