diff --git a/docs/zh/README.md b/docs/zh/README.md index 2e5ae643c..64e349ebb 100644 --- a/docs/zh/README.md +++ b/docs/zh/README.md @@ -8,7 +8,7 @@

- teaser + teaser

@@ -22,6 +22,7 @@ Context7 MCP llms.txt ci + arXiv Open In Colab HuggingFace Spaces Sliced/tiled inference DeepWiki @@ -36,23 +37,23 @@ SAHI 通过启用**切片推理**来检测大图像中的小物体,从而帮
-🌐 [English](README.md) | 🇨🇳 [简体中文](docs/zh/README.md) +🌐 [English](../../README.md) | 🇨🇳 [简体中文](README.md)
| 命令 | 描述 | |---|---| -| [predict](https://github.com/obss/sahi/blob/main/docs/cli.md#predict-command-usage) | 使用任意 [ultralytics](https://github.com/ultralytics/ultralytics)/[mmdet](https://github.com/open-mmlab/mmdetection)/[huggingface](https://huggingface.co/models?pipeline_tag=object-detection&sort=downloads)/[torchvision](https://pytorch.org/vision/stable/models.html#object-detection) 模型进行切片或标准视频 / 图像预测 - 参见 [命令行指南](docs/cli.md#predict-command-usage) | -| [predict-fiftyone](https://github.com/obss/sahi/blob/main/docs/cli.md#predict-fiftyone-command-usage) | 使用任意支持的模型进行切片或标准预测,并在 [fiftyone应用](https://github.com/voxel51/fiftyone) 中探索结果 - [了解更多](docs/fiftyone.md) | -| [coco slice](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-slice-command-usage) | 自动切片 COCO 标注和图像文件 - 参见 [切片工具](docs/slicing.md) | +| [predict](https://github.com/obss/sahi/blob/main/docs/cli.md#predict-command-usage) | 使用任意 [ultralytics](https://github.com/ultralytics/ultralytics)/[mmdet](https://github.com/open-mmlab/mmdetection)/[huggingface](https://huggingface.co/models?pipeline_tag=object-detection&sort=downloads)/[torchvision](https://pytorch.org/vision/stable/models.html#object-detection) 模型进行切片或标准视频 / 图像预测 - 参见 [命令行指南](cli.md#predict-command-usage) | +| [predict-fiftyone](https://github.com/obss/sahi/blob/main/docs/cli.md#predict-fiftyone-command-usage) | 使用任意支持的模型进行切片或标准预测,并在 [fiftyone应用](https://github.com/voxel51/fiftyone) 中探索结果 - [了解更多](fiftyone.md) | +| [coco slice](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-slice-command-usage) | 自动切片 COCO 标注和图像文件 - 参见 [切片工具](slicing.md) | | [coco fiftyone](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-fiftyone-command-usage) | 在 [fiftyone ui](https://github.com/voxel51/fiftyone) 中探索 COCO 数据集的多个预测结果,按错误检测数量排序 | -| [coco evaluate](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-evaluate-command-usage) | 针对给定的预测和真实数据评估 COCO 的类级别 AP 和 AR - 查看 [COCO 工具](docs/coco.md) | -| [coco analyse](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-analyse-command-usage) | 计算并导出多种错误分析图表 - 参见 [complete guide](docs/README.md) | +| [coco evaluate](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-evaluate-command-usage) | 针对给定的预测和真实数据评估 COCO 的类级别 AP 和 AR - 查看 [COCO 工具](coco.md) | +| [coco analyse](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-analyse-command-usage) | 计算并导出多种错误分析图表 - 参见 [完整指南](../README.md) | | [coco yolo](https://github.com/obss/sahi/blob/main/docs/cli.md#coco-yolo-command-usage) | 将任意 COCO 数据集自动转换为 [ultralytics](https://github.com/ultralytics/ultralytics) 格式 | ### 社区认可 -[📜 引用 SAHI 的出版物列表(当前超过 400 篇)](https://scholar.google.com/scholar?hl=en&as_sdt=2005&sciodt=0,5&cites=14065474760484865747&scipsc=&q=&scisbd=1) +[📜 引用 SAHI 的出版物列表(当前超过 600 篇)](https://scholar.google.com/scholar?hl=en&as_sdt=2005&sciodt=0,5&cites=14065474760484865747&scipsc=&q=&scisbd=1) [🏆 使用 SAHI 的竞赛获奖者列表](https://github.com/obss/sahi/discussions/688) @@ -119,7 +120,7 @@ pip install inference>=0.51.5 rfdetr>=1.6.2 ### 教程 -- [SAHI 简介](https://medium.com/codable/sahi-a-vision-library-for-performing-sliced-inference-on-large-images-small-objects-c8b086af3b80) - 请查阅 [完整的文档](docs/README.md) 以了解高级用法。 +- [SAHI 简介](https://medium.com/codable/sahi-a-vision-library-for-performing-sliced-inference-on-large-images-small-objects-c8b086af3b80) - 请查阅 [完整的文档](../README.md) 以了解高级用法。 - [官方论文](https://ieeexplore.ieee.org/document/9897990) (ICIP 2022 oral) @@ -147,7 +148,7 @@ pip install inference>=0.51.5 rfdetr>=1.6.2 - [COCO 数据集转换](https://medium.com/codable/convert-any-dataset-to-coco-object-detection-format-with-sahi-95349e1fe2b7) -- [切片操作 notebook 示例](demo/slicing.ipynb) +- [切片操作 notebook 示例](../../demo/slicing.ipynb) - `YOLOX` + `SAHI` 示例: sahi-yolox @@ -177,7 +178,7 @@ pip install inference>=0.51.5 rfdetr>=1.6.2 sahi-predict -请在 [CLI 文档](docs/cli.md#predict-command-usage) 中查找关于使用 `sahi predict` 命令的详细信息,并查阅 [prediction API](docs/predict.md) 以了解高级用法。 +请在 [CLI 文档](cli.md#predict-command-usage) 中查找关于使用 `sahi predict` 命令的详细信息,并查阅 [预测 API](predict.md) 以了解高级用法。 请在 [视频推理教程](https://github.com/obss/sahi/discussions/626) 中查找关于视频推理的详细信息。 @@ -191,13 +192,11 @@ pip install inference>=0.51.5 rfdetr>=1.6.2 sahi-fiftyone -探索 [FiftyOne 集成](docs/fiftyone.md) 以实现交互式可视化与检查。 +探索 [FiftyOne 集成](fiftyone.md) 以实现交互式可视化与检查。 ### 其他实用工具 -请查阅全面的 COCO 工具指南,了解 YOLO 格式转换、数据集切片、子采样、筛选、合并与分割等操作。 - -请查阅 [完整的 COCO 工具指南](docs/coco.md) 了解 YOLO 格式转换、数据集切片、子采样、筛选、合并与分割等操作。了解更多关于 [切片工具](docs/slicing.md) ,以实现对图像和数据集切片参数的精细控制。 +请查阅 [完整的 COCO 工具指南](coco.md) 了解 YOLO 格式转换、数据集切片、子采样、筛选、合并与分割等操作。了解更多关于 [切片工具](slicing.md) ,以实现对图像和数据集切片参数的精细控制。 ##
引用
如果您在您的工作中使用了这个包,请如下文引用: @@ -227,7 +226,7 @@ pip install inference>=0.51.5 rfdetr>=1.6.2 ##
贡献者
-欢迎贡献!请参阅我们的 [贡献指南](CONTRIBUTING.md) 来开始使用. 感谢所有贡献者🙏! +欢迎贡献!请参阅我们的 [贡献指南](../../CONTRIBUTING.md) 来开始使用. 感谢所有贡献者🙏!

diff --git a/docs/zh/cli.md b/docs/zh/cli.md new file mode 100644 index 000000000..dd4db4dd6 --- /dev/null +++ b/docs/zh/cli.md @@ -0,0 +1,361 @@ +# CLI 命令 + +SAHI 提供了一套全面的命令行工具用于目标检测任务。本指南涵盖所有可用命令,附有详细的示例和选项说明。 + +## `predict` 命令用法 + +对图像或视频执行切片推理,以更好地检测小目标。 + +### 基本用法 + +```bash +sahi predict --source image/file/or/folder --model_path path/to/model --model_config_path path/to/config +``` + +该命令会使用默认参数进行切片推理,并将预测可视化结果导出到 `runs/predict/exp` 文件夹。 + +### 视频输入支持 + +SAHI 支持使用相同的命令结构进行视频推理: + +```bash +sahi predict --model_path yolo26s.pt --model_type ultralytics --source video.mp4 +``` + +#### 实时视频可视化 + +使用 `--view_video` 参数在推理过程中查看视频渲染: + +```bash +sahi predict --model_path yolo26s.pt --model_type ultralytics --source video.mp4 --view_video +``` + +**键盘控制:** + +- **`D`** - 前进 100 帧 +- **`A`** - 后退 100 帧 +- **`G`** - 前进 20 帧 +- **`F`** - 后退 20 帧 +- **`Esc`** - 退出查看器 + +> **提示:** 如果 `--view_video` 运行较慢,可以添加 `--frame_skip_interval=20` 来跳过 20 帧的间隔。 + +### 高级切片参数 + +自定义切片行为以获得最佳检测效果: + +```bash +sahi predict --slice_width 512 --slice_height 512 \ + --overlap_height_ratio 0.1 --overlap_width_ratio 0.1 \ + --model_confidence_threshold 0.25 \ + --source image/file/or/folder \ + --model_path path/to/model \ + --model_config_path path/to/config +``` + +#### 模型配置 + +**检测框架:** + +- `--model_type mmdet` - 用于 MMDetection 模型 +- `--model_type ultralytics` - 用于 Ultralytics/YOLOv5/YOLO11 模型 +- `--model_type huggingface` - 用于 HuggingFace 模型 +- `--model_type torchvision` - 用于 Torchvision 模型 + +**置信度阈值:** + +- `--model_confidence_threshold 0.25` - 设置检测的最低置信度 + +#### 后处理选项 + +**后处理类型:** + +- `--postprocess_type GREEDYNMM` - 贪心非最大合并(默认) +- `--postprocess_type NMS` - 标准非最大抑制 + +**匹配指标:** + +- `--postprocess_match_metric IOS` - 交集与较小面积之比 +- `--postprocess_match_metric IOU` - 交并比(默认) + +**其他选项:** + +- `--postprocess_match_threshold 0.5` - 设置匹配阈值 +- `--postprocess_class_agnostic` - 后处理时忽略类别 ID + +#### 导出选项 + +**可视化导出:** + +- `--novisual` - 禁用预测可视化导出 +- `--visual_export_format JPG` - 设置导出格式(JPG、PNG 等) + +**数据导出:** + +- `--export_pickle` - 导出预测 pickle 文件 +- `--export_crop` - 导出裁剪后的检测结果 + +#### 推理模式 + +默认情况下,SAHI 执行多阶段推理(同时进行标准推理和切片推理): + +- `--no_sliced_prediction` - 禁用切片推理(仅标准推理) +- `--no_standard_prediction` - 禁用标准推理(仅切片推理) + +### COCO 数据集评估 + +使用 COCO 标注文件进行预测评估: + +```bash +sahi predict --dataset_json_path dataset.json \ + --source path/to/coco/image/folder \ + --model_path path/to/model +``` + +预测结果会以 COCO JSON 格式导出到 `runs/predict/exp/results.json`。之后你可以使用: + +- `sahi coco evaluate` - 计算 COCO 评估指标 +- `sahi coco analyse` - 生成详细的误差分析图 + +### 进度报告 + +启用进度条来跟踪推理进度: + +```bash +sahi predict --model_path path/to/model --source images/ \ + --slice_width 512 --slice_height 512 --progress_bar +``` + +> **注意:** `--progress_bar` 参数控制 CLI 的可视化进度(tqdm)。`progress_callback` 参数仅在 Python API 中可用,不作为 CLI 选项暴露。 + +--- + +## `predict-fiftyone` 命令用法 + +执行切片推理并使用 FiftyOne App 交互式可视化结果。 + +### 基本用法 + +```bash +sahi predict-fiftyone --image_dir image/file/or/folder \ + --dataset_json_path dataset.json \ + --model_path path/to/model \ + --model_config_path path/to/config +``` + +该命令会使用默认参数进行切片推理,并启动 FiftyOne App 进行交互式探索。 + +### 其他参数 + +支持 [`sahi predict`](#predict-命令用法) 命令的所有参数。 + +--- + +## `coco fiftyone` 命令用法 + +使用 FiftyOne UI 在 COCO 数据集上可视化和比较多个检测结果。 + +### 基本用法 + +你需要先将预测结果转换为 [COCO result JSON 格式](https://cocodataset.org/#format-results)。可以使用 [`sahi predict`](#predict-命令用法) 来生成该格式。 + +```bash +sahi coco fiftyone --image_dir dir/to/images \ + --dataset_json_path dataset.json \ + cocoresult1.json cocoresult2.json +``` + +该命令会打开 FiftyOne 应用,可视化数据集并按误检排序比较两个检测结果。 + +### 选项 + +- `--iou_threshold 0.5` - 设置用于 FP/TP 分类的 IOU 阈值 + +--- + +## `coco slice` 命令用法 + +将大图像及其 COCO 格式标注切片为更小的块。 + +### 基本用法 + +```bash +sahi coco slice --image_dir dir/to/images \ + --dataset_json_path dataset.json +``` + +对图像和 COCO 标注进行切片,并导出到输出文件夹。 + +### 参数 + +**切片尺寸:** + +- `--slice_size 512` - 设置切片的高度和宽度(默认:512) + +**重叠率:** + +- `--overlap_ratio 0.2` - 设置高度/宽度的重叠比例(默认:0.2) + +**过滤:** + +- `--ignore_negative_samples` - 排除没有标注的图像 + +**输出:** + +- `--out_dir output/folder` - 指定输出目录 + +--- + +## `coco yolo` 命令用法 + +将 COCO 格式数据集转换为 YOLO 格式,用于 Ultralytics 训练。 + +> **Windows 用户:** 请以**管理员身份**打开 Anaconda prompt 或 Windows CMD,以正确创建符号链接。 + +### 基本用法 + +```bash +sahi coco yolo --image_dir dir/to/images \ + --dataset_json_path dataset.json \ + --train_split 0.9 +``` + +将 COCO 数据集转换为 YOLO 格式,并导出到 `runs/coco2yolo/exp` 文件夹。 + +### 参数 + +- `--train_split 0.9` - 设置训练集划分比例(默认:0.9) +- `--out_dir output/folder` - 指定输出目录 + +--- + +## `coco evaluate` 命令用法 + +计算预测结果的 COCO 评估指标(mAP、mAR)。 + +### 基本用法 + +你需要先将预测结果转换为 [COCO result JSON 格式](https://cocodataset.org/#format-results)。可以使用 [`sahi predict`](#predict-命令用法) 来生成该格式。 + +```bash +sahi coco evaluate --dataset_json_path dataset.json \ + --result_json_path result.json +``` + +计算 COCO 评估指标并将结果导出到输出文件夹。 + +### 参数 + +**指标类型:** + +- `--type bbox` - 评估边界框检测(默认) +- `--type mask` - 评估实例分割掩码 + +**评分选项:** + +- `--classwise` - 除整体指标外,额外计算每个类别的分数 + +**检测数量限制:** + +- `--proposal_nums "[10 100 500]"` - 设置每张图像的最大检测数(默认:[100, 300, 1000]) + +**IOU 阈值:** + +- `--iou_thrs 0.5` - 指定 IOU 阈值(默认:0.50:0.95 和 0.5) + +**输出:** + +- `--out_dir output/folder` - 指定输出目录 + +--- + +## `coco analyse` 命令用法 + +生成 COCO 预测的详细误差分析图。 + +### 基本用法 + +你需要先将预测结果转换为 [COCO result JSON 格式](https://cocodataset.org/#format-results)。可以使用 [`sahi predict`](#predict-命令用法) 来生成该格式。 + +```bash +sahi coco analyse --dataset_json_path dataset.json \ + --result_json_path result.json \ + --out_dir output/directory +``` + +生成全面的误差分析图并导出到指定文件夹。 + +### 参数 + +**分析类型:** + +- `--type bbox` - 分析边界框检测(默认) +- `--type segm` - 分析实例分割掩码 + +**附加图表:** + +- `--extraplots` - 生成额外的 mAP 柱状图和标注面积统计 + +**面积区间:** + +- `--areas "[1024 9216 10000000000]"` - 定义分析的面积区间(默认:COCO 的小/中/大面积) + +--- + +## `env` 命令用法 + +显示与 SAHI 相关的已安装包版本。 + +### 用法 + +```bash +sahi env +``` + +### 输出示例 + +```text +06/19/2022 21:24:52 - INFO - sahi.utils.import_utils - torch version 2.1.2 is available. +06/19/2022 21:24:52 - INFO - sahi.utils.import_utils - torchvision version 0.16.2 is available. +06/19/2022 21:24:52 - INFO - sahi.utils.import_utils - ultralytics version 8.3.86 is available. +06/19/2022 21:24:52 - INFO - sahi.utils.import_utils - transformers version 4.49.0 is available. +06/19/2022 21:24:52 - INFO - sahi.utils.import_utils - timm version 0.9.1 is available. +06/19/2022 21:24:52 - INFO - sahi.utils.import_utils - fiftyone version 0.14.2 is available. +``` + +--- + +## `version` 命令用法 + +显示当前安装的 SAHI 版本。 + +### 用法 + +```bash +sahi version +0.11.22 +``` + +--- + +## 自定义脚本 + +所有脚本都可以从 [scripts 目录](https://github.com/obss/sahi/tree/main/scripts) 下载,并根据你的需求进行修改。 + +通过 pip 安装 SAHI 后,所有脚本都可以从任意目录调用: + +```bash +python script_name.py +``` + +--- + +## 更多资源 + +想要深入了解?以下是一些有用的资源: + +- **[预测工具文档](predict.md)** - 预测参数和可视化的详细说明 +- **[切片工具指南](slicing.md)** - 切片操作的深入探索 +- **[COCO 工具文档](coco.md)** - COCO 格式操作的全面示例 +- **[交互式示例 Notebook](../../demo/)** - CLI 命令的实践示例 +- **[模型文档](../models/)** - 各框架的模型集成指南 diff --git a/docs/zh/coco.md b/docs/zh/coco.md index 76fd42bde..55098ec23 100644 --- a/docs/zh/coco.md +++ b/docs/zh/coco.md @@ -207,7 +207,6 @@ coco = Coco.from_coco_dict_or_path("coco.json") area_filtered_coco = coco.get_area_filtered_coco(min=50) # 过滤掉包含面积小于50大于10000的标注图像 area_filtered_coco = coco.get_area_filtered_coco(min=50, max_val=10000) -过滤掉 # 根据每个类别独立的面积区间来筛选图像 intervals_per_category = { "human": {"min": 20, "max": 10000}, diff --git a/docs/zh/fiftyone.md b/docs/zh/fiftyone.md index 13a6a1cd6..1ae108d34 100644 --- a/docs/zh/fiftyone.md +++ b/docs/zh/fiftyone.md @@ -1,8 +1,8 @@ # Fiftyone 工具 -- 通过 FiftyOne 应用来探索COCO数据集: +## 通过 FiftyOne 应用探索 COCO 数据集 -支持版本: `pip install fiftyone>=0.14.2<0.15.0` +支持版本:`pip install fiftyone>=0.14.2<0.15.0` ```python from sahi.utils.fiftyone import launch_fiftyone_app @@ -14,7 +14,7 @@ session = launch_fiftyone_app(coco_image_dir, coco_json_path) session.close() ``` -- 将预测结果转换为 FiftyOne 检测格式: +## 将预测结果转换为 FiftyOne 检测格式: ```python from sahi import get_sliced_prediction @@ -33,12 +33,12 @@ result = get_sliced_prediction( fiftyone_detections = result.to_fiftyone_detections() ``` -- 在 Fiftyone UI 中探索检测结果: +## 在 Fiftyone UI 中探索检测结果 ```bash sahi coco fiftyone --image_dir dir/to/images --dataset_json_path dataset.json cocoresult1.json cocoresult2.json ``` -该操作将打开一个 FiftyOne 应用,用于可视化给定的数据集和 2 个检测结果 +该操作将打开一个 FiftyOne 应用,用于可视化给定的数据集和 2 个检测结果。 使用 `--iou_threshold 0.5` 参数来指定用于判断 FP/TP 的 IOU 阈值。 diff --git a/docs/zh/index.md b/docs/zh/index.md index f64e417d8..04a140623 100644 --- a/docs/zh/index.md +++ b/docs/zh/index.md @@ -40,12 +40,12 @@ hide: SAHI(Slicing Aided Hyper Inference,切片辅助超推理)是一个提供了通用的切片辅助推理与微调流程,专门用于小目标检测的开源框架。 在监控等应用场景中,检测小目标或远处物体是一项重大挑战,因为它们仅由少量像素表示,缺乏足够的细节,传统检测器难以识别。 -SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意目标检测器结合使用,而无需额外的微调。 +SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意目标检测器结合使用,而无需额外的微调。 在 Visdrone 和 xView 航拍目标检测数据集上的实验评估表明,SAHI 可以使 FCOS、VFNet 和 TOOD 检测器的 AP 分别提高 6.8%、5.1% 和 5.3%。在结合切片辅助微调后,精度可进一步提升,累计提升分别达到 12.7%、13.4% 和 14.5%。该技术已成功集成到 Detectron2、MMDetection 和 YOLOv5 等模型中。

-- ⏱️ **快速开始** +- :material-clock-fast:{ .lg .middle }   **快速开始** *** @@ -53,9 +53,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 快速开始](quick-start.md) + [:octicons-arrow-right-24: 快速开始](quick-start.md) -- 🖼️ **预测** +- :material-image:{ .lg .middle }   **预测** *** @@ -63,9 +63,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 了解更多](predict.md) + [:octicons-arrow-right-24: 了解更多](predict.md) -- ✂️ **切片** +- :material-content-cut:{ .lg .middle }   **切片** *** @@ -73,9 +73,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 了解更多](slicing.md) + [:octicons-arrow-right-24: 了解更多](slicing.md) -- 🗂️ **COCO 工具** +- :material-database:{ .lg .middle }   **COCO 工具** *** @@ -83,9 +83,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 了解更多](coco.md) + [:octicons-arrow-right-24: 了解更多](coco.md) -- 💻 **命令行工具** +- :material-console:{ .lg .middle }   **命令行工具** *** @@ -93,7 +93,7 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 了解更多](cli.md) + [:octicons-arrow-right-24: 了解更多](cli.md)
@@ -103,7 +103,7 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意
-- 📓 **切片** +- :material-notebook:{ .lg .middle }   **切片** *** @@ -111,9 +111,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/slicing.ipynb/) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/slicing.ipynb) -- 📓 **Ultralytics** +- :material-notebook:{ .lg .middle }   **Ultralytics** *** @@ -121,9 +121,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/inference_for_ultralytics.ipynb) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/inference_for_ultralytics.ipynb) -- 📓 **YOLOv5** +- :material-notebook:{ .lg .middle }   **YOLOv5** *** @@ -131,9 +131,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/inference_for_yolov5.ipynb) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/inference_for_yolov5.ipynb) -- 📓 **MMDetection** +- :material-notebook:{ .lg .middle }   **MMDetection** *** @@ -141,9 +141,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/inference_for_mmdetection.ipynb) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/inference_for_mmdetection.ipynb) -- 📓 **HuggingFace** +- :material-notebook:{ .lg .middle }   **HuggingFace** *** @@ -151,9 +151,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/inference_for_huggingface.ipynb) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/inference_for_huggingface.ipynb) -- 📓 **TorchVision** +- :material-notebook:{ .lg .middle }   **TorchVision** *** @@ -161,9 +161,9 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/inference_for_torchvision.ipynb) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/inference_for_torchvision.ipynb) -- 📓 **RT-DETR** +- :material-notebook:{ .lg .middle }   **RT-DETR** *** @@ -171,6 +171,6 @@ SAHI 通过一种独特的方法解决了这一问题,该方法可以与任意 *** - [➡️ 打开 Notebook](../notebooks/inference_for_rtdetr.ipynb) + [:octicons-arrow-right-24: 打开 Notebook](../notebooks/inference_for_rtdetr.ipynb)
diff --git a/docs/zh/predict.md b/docs/zh/predict.md index bcfe629fb..b96b684d7 100644 --- a/docs/zh/predict.md +++ b/docs/zh/predict.md @@ -11,6 +11,10 @@ detection_model = AutoDetectionModel.from_pretrained(model_type='mmdet',...) # f detection_model = AutoDetectionModel.from_pretrained(model_type='ultralytics',...) # for YOLOv8/YOLO11/YOLO12 models detection_model = AutoDetectionModel.from_pretrained(model_type='huggingface',...) # for HuggingFace detection models detection_model = AutoDetectionModel.from_pretrained(model_type='torchvision',...) # for Torchvision detection models +detection_model = AutoDetectionModel.from_pretrained(model_type='rtdetr',...) # for RT-DETR models +detection_model = AutoDetectionModel.from_pretrained(model_type='yoloe',...) # for YOLOE models +detection_model = AutoDetectionModel.from_pretrained(model_type='yolov5',...) # for YOLOv5 models +detection_model = AutoDetectionModel.from_pretrained(model_type='yolo-world',...) # for YOLOWorld models # get sliced prediction result result = get_sliced_prediction( @@ -66,9 +70,46 @@ result = predict( overlap_width_ratio=0.2, export_pickle=False, export_crop=False, + progress_bar=False, ) ``` + +## 进度条 + +提供了两个选项来控制和接收切片推理过程中的进度更新: + +- `progress_bar` (bool):设为 True 时,在切片处理过程中显示 tqdm 进度条。适用于终端和 notebook 中的可视化反馈。默认为 False。 +- `progress_callback` (callable):一个回调函数,在每个切片(或切片组)处理完成后被调用。该回调接收两个整数参数:`(current_slice_index, total_slices)`。可用于集成自定义进度报告(例如,更新 GUI 元素或将进度记录到文件)。 + +使用回调的示例: + +```python +from sahi.predict import get_sliced_prediction +from sahi import AutoDetectionModel + +# 初始化模型 +detection_model = AutoDetectionModel.from_pretrained(...) + +def my_progress_callback(current, total): + print(f"已处理 {current}/{total} 个切片") + +result = get_sliced_prediction( + image, + detection_model, + slice_height=512, + slice_width=512, + overlap_height_ratio=0.2, + overlap_width_ratio=0.2, + progress_bar=False, # 禁用 tqdm 进度条 + progress_callback=my_progress_callback, # 使用回调接收进度更新 +) +``` + +!!! tip "提示" + - `progress_bar` 和 `progress_callback` 可以同时使用。当两者都提供时,tqdm 进度条会显示,同时回调函数也会在每个切片组处理后被调用。 + - `progress_callback` 使用从 1 开始的索引(即第一次调用为 `(1, total)`)。 + - 在推理时排除自定义类别: ```python diff --git a/docs/zh/quick-start.md b/docs/zh/quick-start.md index 93b2ce4c3..ad5726046 100644 --- a/docs/zh/quick-start.md +++ b/docs/zh/quick-start.md @@ -5,77 +5,80 @@ hide: # 快速开始 -欢迎来到SAHI!本指南将帮助你快速上手库的核心功能,包括安装、进行预测以及使用命令行工具。 +欢迎来到 SAHI!本指南将帮助你快速上手库的核心功能,包括安装、进行预测以及使用命令行工具。 -# 1. 安装 +## 1. 安装 -``` -# 安装 SAHI +通过 pip 安装 SAHI。如果你需要做目标检测,建议同时安装 `ultralytics`。 -通过 pip 安装 SAHI。如果你需要做目标检测,建议同时安装’ultralytics‘。 -``` -![PyPI - Python Version](https://img.shields.io/pypi/pyversions/sahi?logo=python&logoColor=gold) +!!! example "安装" -## 1.1 Pip 安装(推荐) +

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/sahi?logo=python&logoColor=gold)

-安装或更新 `sahi`: + === "Pip 安装(推荐)" -```bash -pip install sahi -``` + 安装或更新 `sahi` 包,运行 `pip install -U sahi`。更多详情请访问 [Python Package Index (PyPI)](https://pypi.org/project/sahi/)。 -更多详情请访问 [Python Package Index (PyPI)](https://pypi.org/project/sahi/)。 + [![PyPI - Version](https://img.shields.io/pypi/v/sahi?logo=pypi&logoColor=white)](https://pypi.org/project/sahi/) + [![Downloads](https://static.pepy.tech/badge/sahi)](https://www.pepy.tech/projects/sahi) -[![PyPI - Version](https://img.shields.io/pypi/v/sahi?logo=pypi&logoColor=white)](https://pypi.org/project/sahi/) [![Downloads](https://static.pepy.tech/badge/sahi)](https://www.pepy.tech/projects/sahi) + ```bash + # 从 PyPI 安装 sahi 包 + pip install sahi + ``` -你也可以直接从 GitHub 安装最新开发版本(确保已安装 Git 命令行工具): + 你也可以直接从 [Sahi GitHub 仓库](https://github.com/obss/sahi) 安装最新开发版本。确保已安装 Git 命令行工具,然后运行: -```bash -pip install git+https://github.com/obss/sahi.git@main -``` + ```bash + # 从 GitHub 安装 sahi 包 + pip install git+https://github.com/obss/sahi.git@main + ``` -## 1.2 Conda 安装 + === "Conda 安装" -Conda 也可以作为 pip 的替代工具: + Conda 可以作为 pip 的替代包管理器。更多详情请访问 [Anaconda](https://anaconda.org/conda-forge/sahi)。用于更新 conda 包的 Sahi feedstock 仓库位于 [GitHub](https://github.com/conda-forge/sahi-feedstock/)。 -```bash -conda install -c conda-forge sahi -``` + [![Conda Version](https://img.shields.io/conda/vn/conda-forge/sahi?logo=condaforge)](https://anaconda.org/conda-forge/sahi) + [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/sahi.svg)](https://anaconda.org/conda-forge/sahi) + [![Conda Recipe](https://img.shields.io/badge/recipe-sahi-green.svg)](https://anaconda.org/conda-forge/sahi) + [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/sahi.svg)](https://anaconda.org/conda-forge/sahi) -更多详情请访问 [Anaconda](https://anaconda.org/conda-forge/sahi)。 | 更新 Conda 包的 feedstock 仓库:[GitHub](https://github.com/conda-forge/sahi-feedstock/)。 + ```bash + # 使用 conda 安装 sahi 包 + conda install -c conda-forge sahi + ``` -> ⚠️ 注意 -> 如果你在 CUDA 环境下安装,建议同时安装 `ultralytics`、`pytorch` 和 `pytorch-cuda`,这样 Conda 可以自动解决依赖冲突。或者在必要时最后安装 `pytorch-cuda` 来覆盖 CPU 版本的 `pytorch`: -> -> ```bash -> conda install -c pytorch -c nvidia -c conda-forge pytorch torchvision pytorch-cuda=11.8 ultralytics -> ``` + !!! note -## 1.3 Git 克隆(开发或尝试最新版) + 如果你在 CUDA 环境下安装,建议在同一条命令中安装 `ultralytics`、`pytorch` 和 `pytorch-cuda`,这样 conda 可以自动解决依赖冲突。或者在必要时最后安装 `pytorch-cuda` 来覆盖 CPU 版本的 `pytorch`。 + ```bash + # 使用 conda 同时安装所有包 + conda install -c pytorch -c nvidia -c conda-forge pytorch torchvision pytorch-cuda=11.8 ultralytics + ``` -如果你想参与开发或尝试最新源码: + === "Git 克隆" -```bash -git clone https://github.com/obss/sahi -cd sahi -pip install -e . -``` + 如果你想参与开发或尝试最新源代码,请克隆 [Sahi GitHub 仓库](https://github.com/obss/sahi)。克隆后,进入目录并使用 pip 的 `-e` 选项以可编辑模式安装。 + + [![GitHub last commit](https://img.shields.io/github/last-commit/obss/sahi?logo=github)](https://github.com/obss/sahi) + [![GitHub commit activity](https://img.shields.io/github/commit-activity/t/obss/sahi)](https://github.com/obss/sahi/commits/main) + [![GitHub contributors](https://img.shields.io/github/contributors/obss/sahi)](https://github.com/obss/sahi/graphs/contributors) + + ```bash + # 克隆 sahi 仓库 + git clone https://github.com/obss/sahi -

- - GitHub last commit - - - GitHub commit activity - - - GitHub contributors - -

+ # 进入克隆的目录 + cd sahi -更多依赖信息请查看 [pyproject.toml](https://github.com/obss/sahi/blob/main/pyproject.toml)。 + # 以可编辑模式安装,用于开发 + pip install -e . + ``` -# 2. 使用 Python 的切片预测 + +更多依赖信息请查看 `sahi` 的 [pyproject.toml](https://github.com/obss/sahi/blob/main/pyproject.toml) 文件。 + +## 2. 使用 Python 的切片预测 切片推理(Sliced Inference)是 SAHI 的核心功能,可以在大图像中检测小目标。以下是使用 Python API 的简单示例: @@ -107,20 +110,22 @@ result.export_visuals(export_dir="demo_data/") # 获取预测对象列表 predictions = result.object_prediction_list ``` -# 3. 使用命令行的切片预测 + +## 3. 使用命令行进行预测 SAHI 还提供了功能强大的命令行工具,可以无需编写任何 Python 代码即可快速进行预测。 ```bash sahi predict --model_path yolo26n.pt --model_type ultralytics --source /path/to/images/ --slice_height 512 --slice_width 512 ``` + 该命令会对指定目录下的所有图片进行切片推理,并保存预测结果。 -# 下一步 +## 下一步 你现在已经了解了 SAHI 的基础用法!想要深入学习,可以参考以下资源: * **预测深入**:更多高级预测选项,请参见[预测工具指南](predict.md)。 -* **演示示例**:在 [demo目录](../../demo/) 中查看交互式 notebook,实践不同模型的使用。 -* **COCO 工具**: 学习如何创建、操作和转换数据集,请参见[COCO 工具指南](coco.md)。 -* **所有 CLI 命令**: 完整命令列表请参见[CLI 文档](cli.md)。 \ No newline at end of file +* **演示示例**:在 [demo 目录](../../demo/) 中查看交互式 notebook,实践不同模型的使用。 +* **COCO 工具**:学习如何创建、操作和转换数据集,请参见 [COCO 工具指南](coco.md)。 +* **所有 CLI 命令**:完整命令列表请参见 [CLI 文档](cli.md)。