计算机视觉人工智能【免费下载链接】sahiFramework agnostic sliced/tiled inference interactive ui error analysis plots项目地址https://gitcode.com/gh_mirrors/sa/sahi点击查看免费下载SAHISliced Aided Hyper Inference是一个框架无关的切片推理sliced/tiled inference工具库它先把大图像切成相互重叠的小切片在每个切片上独立运行目标检测器再把各切片的检测结果合并回完整图像坐标系从而让原本被下采样到只剩几个像素的小目标保持足够尺寸被可靠检测且无需重新训练。本篇以 SAHI 官方中文快速入门文档 docs/zh/quick-start.md 为主线带你从安装、Python API 预测、结果读取到 CLI 批处理完整跑通第一条切片推理管线并结合仓库源码剖析每一步背后的实现细节。读完本文你将能够在一台 CPU 机器上直接对航拍图、卫星图等大分辨率图像执行小目标检测并导出可视化与 COCO 格式结果用于评估。SAHI 的切片推理效果可以从仓库自带的示例数据直观感受下面的 demo/demo_data/small-vehicles1.jpeg 是一张典型的航拍小目标车辆样例图也是快速入门文档中演示代码所下载的测试图像demo/demo_data/prediction_visual.png 则是调用result.export_visuals()后生成的预测可视化结果可以看到切片合并后输出的检测框标注。切片推理解决的核心问题标准目标检测器在推理前会把输入图像缩放到固定分辨率例如 640×640。当原始图像是大尺寸航拍照片或卫星图时小目标会被下采样到仅几个像素从而彻底消失、无法检测。SAHI 的思路分三步详见 docs/guides/sliced-inference.md切片把大图按网格切成与模型输入尺寸匹配的小切片切片之间设置重叠区域确保落在切片边界上的目标在至少一个切片内完整可见推理对每个切片独立执行检测器推理并可选地对整图再做一次标准预测perform_standard_predTrue默认开启以捕获被切片切开的大目标合并将各切片上的预测框按偏移量映射回整图坐标系再通过后处理默认 GREEDYNMM合并重复框、消除伪影。在 sahi/predict.py 中get_sliced_prediction函数完整实现了上述流程先调用slice_image生成SliceImageResult内部包含每个切片的图像数组、起始像素坐标与 COCO 元信息再对每个切片执行推理并用shift_amount与full_shape把预测框搬回原图位置最后统一做后处理合并。整个调用链清晰且可独立验证相关行为在 tests/test_predict.py 中有完整覆盖。1. 安装 SAHI 与检测框架sahi本身不捆绑任何检测器因此需要为所用框架选择对应的 extra 一起安装pip install sahi[ultralytics]从 pyproject.toml 中的 optional-dependencies 可以确认可用的 extra 包括extra用途说明ultralyticsYOLOv8 / YOLO11 / YOLO26 等 Ultralytics 模型ultralytics8.0.0transformersHuggingFace Transformers 检测/零样本检测模型transformers4.49.0yolov5经典 YOLOv5yolov56.0.0,8.0.0torchvisionTorchVision 内置检测模型依赖sahi[torch]与torchvisiontorchPyTorch 本体按 Python 版本选择对应 wheelonnxONNX / ONNXRuntime用于导出与加速numbaNumba 后端加速numba0.59.0roboflowRoboflow RF-DETR 检测/分割模型inference与rfdetrall一次性安装上述全部 extra体积较大按需选用Conda 用户可以先执行conda install -c conda-forge sahi再单独安装所选的深度学习框架。安装完成后可以通过sahi version查看版本、sahi env查看当前环境中 torch、ultralytics、transformers 等相关包的版本参见 docs/cli.md。2. 获取切片预测结果以下代码可以在纯 CPU 环境下端到端运行它会先下载一张示例航拍图Ultralytics 会在首次使用时自动下载yolo26n.pt权重from sahi import AutoDetectionModel from sahi.predict import get_sliced_prediction from sahi.utils.file import download_from_url download_from_url( https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg, demo_data/small-vehicles1.jpeg, ) detection_model AutoDetectionModel.from_pretrained( model_typeultralytics, model_pathyolo26n.pt, confidence_threshold0.25, devicecpu, # 或 cuda:0 ) result get_sliced_prediction( demo_data/small-vehicles1.jpeg, detection_model, slice_height512, slice_width512, overlap_height_ratio0.2, overlap_width_ratio0.2, )download_from_url位于 sahi/utils/file.py若目标路径已存在则不会重复下载父目录会自动创建。AutoDetectionModel.from_pretrained统一模型加载入口AutoDetectionModel.from_pretrained实现在 sahi/auto_model.py是 SAHI 与所有检测框架交互的统一入口。它根据model_type查表sahi/auto_model.py选择对应的模型类再以相同的关键字参数构造模型实例之后该模型即可无缝用于切片推理、批量推理或 CLI。常用参数说明参数默认值含义model_type必填框架名ultralytics、mmdet、detectron2、huggingface、huggingface_segmentation、torchvision、rtdetr、libreyolo、yolov5、yoloe、yolo-world、roboflow等同时兼容yolov8、yolov11、yolo11、yolo26等 Ultralytics 别名见 sahi/auto_model.pymodel_pathNone权重文件路径或模型名如yolo26n.ptconfidence_threshold0.3置信度阈值低于该值的预测被丢弃deviceNone推理设备如cpu、cuda:0、mpsconfig_pathNone配置文件路径MMDetection、Detectron2 等需要category_mappingNone类别 ID 到名称的映射如{0: car}键为字符串category_remappingNone推理后按类别名重新映射类别 IDimage_sizeNone覆盖模型输入分辨率mask_threshold0.5掩码像素阈值分割模型load_at_initTrue是否在初始化时立即加载权重devicecpu让示例在没有 GPU 的环境也能运行如果有 NVIDIA GPU改成cuda:0即可显著提速。get_sliced_prediction切片推理核心参数get_sliced_prediction的完整签名与默认值定义在 sahi/predict.py关键参数如下参数默认值含义image必填图像路径、numpy 数组或 PIL Imagedetection_model必填由AutoDetectionModel.from_pretrained构造的模型slice_height/slice_widthNone每个切片的像素尺寸。若未提供且auto_slice_resolutionTrue则根据图像分辨率与横竖方向自动计算见 sahi/slicing.py 的分档逻辑低/中/高/超高分辨率overlap_height_ratio/overlap_width_ratio0.2相邻切片的重叠比例取值须小于 1.0。例如 512 的切片配 0.2 的重叠率意味着 102 像素的重叠带见 sahi/slicing.pyperform_standard_predTrue是否在切片推理之外再对整图做一次标准预测以提升大目标召回postprocess_typeGREEDYNMM合并策略GREEDYNMM默认贪心合并取平均、NMM、NMS严格抑制、LSNMS位置敏感 NMSpostprocess_match_metricIOS重叠度量IOS交与较小面积之比合并更激进或IOU交并比更保守postprocess_match_threshold0.5判定两个框为同一目标的匹配阈值越低合并越多postprocess_class_agnosticFalseTrue 时合并忽略类别 IDverbose10 不输出1 打印切片数量2 额外打印切片/推理/后处理耗时batch_size1每批处理的切片数增大可提升 GPU 利用率Ultralytics 模型支持原生 GPU 批处理其余框架回退为串行见 sahi/predict.pyprogress_barFalse是否显示 tqdm 进度条progress_callbackNone每个切片处理完后回调(current_slice, total_slices)便于接入自定义进度上报confidence_thresholdNone仅本次调用生效的置信度阈值覆盖调用结束后自动恢复模型原阈值tests/test_predict.py 验证了即使推理抛异常阈值也会被恢复两个值得注意的自动行为sahi/predict.py当模型置信度阈值低于LOW_MODEL_CONFIDENCE0.1时后处理会自动切换为NMSIOU避免低阈值下合并操作把边界框放大可通过force_postprocess_typeTrue关闭该自动切换当检测模型是 Ultralytics 的 OBB旋转框输出时后处理强制使用NMS。3. 读取结果get_sliced_prediction返回一个PredictionResult对象定义于 sahi/prediction.py。所有检测结果存放在result.object_prediction_list中每一项是一个ObjectPrediction包含category.name类别名、score.value置信度与bbox边界框for pred in result.object_prediction_list: print(pred.category.name, pred.score.value, pred.bbox.to_xyxy()) # 写入 demo_data/prediction_visual.png result.export_visuals(export_dirdemo_data/) # COCO 格式的字典可直接保存为 JSON coco_predictions result.to_coco_predictions(image_id1)各 API 的语义与实现位置pred.bbox.to_xyxy()返回[x1, y1, x2, y2]形式的整图坐标框实现在 sahi/annotation.py另有to_xywh()可转换为[x, y, w, h]sahi/annotation.py。切片上的框在合并阶段已通过shift_amount平移到整图坐标因此这里拿到的就是最终坐标。pred.score.valuePredictionScore包装的置信度数值sahi/prediction.py支持与阈值直接比较。result.export_visuals(export_dir..., file_name..., text_size..., rect_th..., hide_labels..., hide_conf...)把预测框绘制到原图上默认输出prediction_visual.pngsahi/prediction.py。result.to_coco_predictions(image_id1)导出包含image_id、bbox、score、category_id的 COCO 预测字典列表可直接json.dump保存供 sahi coco evaluate 等工具评估。同类导出还有to_coco_annotations()不含 score、to_fiftyone_detections()FiftyOne 可视化。另外PredictionResult.image_width/image_height记录原始图尺寸durations_in_seconds记录切片、推理、后处理各阶段耗时可用于性能剖析。图像尺寸接近模型输入时改用 get_prediction如果图像尺寸已经接近模型输入尺寸直接调用get_prediction完全跳过切片实现在 sahi/predict.pyfrom sahi.predict import get_prediction result get_prediction( demo_data/small-vehicles1.jpeg, detection_model, )get_prediction额外支持shift_amount、full_shape、exclude_classes_by_name/exclude_classes_by_id按名称或 ID 排除类别、confidence_threshold单次覆盖等参数其中排除类别功能同样适用于切片推理。4. 使用 CLI 执行同样的操作SAHI 的 CLI 由 sahi/cli.py 中的fire.Fire应用暴露sahi命令入口注册在 pyproject.tomlsahi sahi.cli:app。下面的命令与上面的 Python 示例等价对demo_data/目录下的所有图像执行切片推理sahi predict --model_type ultralytics --model_path yolo26n.pt --source demo_data/ --slice_height 512 --slice_width 512运行结束后预测可视化写入runs/predict/exp目录project默认runs/predict、name默认exp重复运行会自动递增目录名参见 sahi/utils/file.py 的increment_path与 sahi/predict.py。更多常用 CLI 参数详见 docs/cli.md推理模式--no_sliced_prediction仅整图标准推理、--no_standard_prediction仅切片推理默认两者都执行。后处理--postprocess_type GREEDYNMM|NMS、--postprocess_match_metric IOS|IOU、--postprocess_match_threshold 0.5、--postprocess_class_agnostic。导出控制--novisual不导出可视化、--visual_export_format JPG、--export_pickle、--export_crop导出每个检测目标裁剪图。进度条--progress_barCLI 不暴露progress_callback该参数仅存在于 Python API。视频输入--source video.mp4支持视频推理配合--view_video实时预览与--frame_skip_interval跳帧加速。配合 COCO 数据集导出评估结果添加--dataset_json_path dataset.json后predict会按 COCO 标注的顺序遍历--source目录下的图像并把预测结果导出为 COCO 格式的result.json到运行目录runs/predict/exp/result.json见 sahi/predict.py同时还会在visuals_with_gt子目录中生成叠加了真实标注绿色与模型预测红色的对比可视化。得到result.json后即可继续使用 CLI 生态工具做闭环评估sahi coco evaluate --dataset_json_path dataset.json --result_json_path result.json sahi coco analyse --dataset_json_path dataset.json --result_json_path result.json --out_dir output/directorycoco evaluate计算 mAP/mAR 等 COCO 指标coco analyse生成误差分析图此外还有sahi coco slice对 COCO 数据集切片并导出新的 COCO 标注、sahi coco yoloCOCO 转 YOLO 格式用于训练等实用命令docs/cli.md。5. 底层原理切片、推理、合并的源码级调用链从源码可以看清get_sliced_prediction的完整工作流sahi/predict.py切片调用slice_imagesahi/slicing.py。它先把图像读成 numpy 数组由get_slice_bboxessahi/slicing.py按网格生成每个切片的[x_min, y_min, x_max, y_max]坐标边界切片会被裁剪到图像范围内每个切片记录其左上角starting_pixel供后续坐标回移使用。重叠量按overlap_ratio × slice_size取整计算。推理切片按batch_size分组调用detection_model.perform_batch_inference批量推理再以shift_amountbatch_shifts、full_shape[h, w]调用convert_original_predictions把每个切片上的预测框平移回整图坐标sahi/predict.py。合并当启用perform_standard_pred且切片数大于 1 时先对整图再做一次标准预测sahi/predict.py随后把所有预测统一交给所选后处理器默认GreedyNMMPostprocesspostprocess_type映射表见 sahi/predict.py合并重复框。若设置了merge_buffer_length还会在切片推理过程中分批后处理以降低内存占用。在测试侧tests/test_predict.py 用small-vehicles1.jpeg验证了切片推理输出的类别分布应检测到car且没有person/truck误检tests/test_predict.py 则验证了batch_size1与batch_size4产生完全一致的预测结果说明批处理不会改变检测质量只影响吞吐。下一步切片推理工作原理如何选择切片大小、重叠率和合并策略以及何时不需要切片推理。模型集成HuggingFace、MMDetection、Detectron2、TorchVision、RT-DETR、RF-DETR 等各框架的接入示例与特有参数。预测工具批量推理、进度条、类别排除与可视化导出选项。CLI 命令所有命令与参数含视频推理、COCO 评估、FiftyOne 可视化。交互式 Notebooks可在 Colab 直接运行的示例。赞分享计算机视觉人工智能【免费下载链接】sahiFramework agnostic sliced/tiled inference interactive ui error analysis plots项目地址https://gitcode.com/gh_mirrors/sa/sahi点击查看免费下载相关推荐SAHI 切片推理Sliced Inference原理与实战破解大图小目标检测难题SAHI 切片推理Sliced Inference原理与实战破解大图小目标检测难题 导读 本文系统讲解 SAHI 框架中「切片推理」Sliced / T计算机视觉人工智能10倍提升小目标检测SAHI切片推理与YOLO模型协同优化实战指南10倍提升小目标检测SAHI切片推理与YOLO模型协同优化实战指南 SAHISliced Inference是一个框架无关的切片推理工具专为解决大图像中计算机视觉人工智能SAHI 切片辅助推理Slicing Aided Hyper Inference完整实战指南面向大图像小目标检测的轻量级视觉库SAHI 切片辅助推理Slicing Aided Hyper Inference完整实战指南面向大图像小目标检测的轻量级视觉库 导读 SAHISlici计算机视觉人工智能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考