---
hide:
  - navigation
tags:
  - changelog
  - release-notes
---

# 📝 更新日志

## 🚀 SAHI v0.12.5 发布说明

此补丁版本完成了从 `0.12.2` 开始的后处理内存优化工作。此前的优化后来被发现只在边界框
较为分散时有效；本版本还修复了测试过程中发现的两个正确性问题。

### 🐛 修复

- **后处理内存占用不再受边界框密集程度影响**
  ([#1417](https://github.com/obss/sahi/pull/1417))。通过为每对相交的边界框存储一条记录来避免
  `N x N` 重叠矩阵，只能在边界框较为分散时节省内存。当边界框大量重叠时，几乎每个边界框都与
  其他边界框相交，相交对数量会接近 `N^2`，所存列表的开销也会接近它所取代的矩阵；而这恰好是
  切片推理在拥挤场景和小目标图像中产生的布局。合并循环每次只读取一行匹配项，NMS 和 greedy NMM
  也只会读取保留下来的边界框所对应的行，因此现在会按需从 STRtree 查询这些行。无论边界框如何布局，
  峰值内存都限制在 `O(N + max_degree)`。NMM 会为每个边界框而不只是保留框读取一行，因此在预计
  相交对列表不会过大时仍会保留该列表。
- **非正数 `match_threshold` 不再构建度量矩阵**
  ([#1417](https://github.com/obss/sahi/pull/1417))。两种度量值都非负，因此每一对边界框都满足
  `metric >= 0`，邻接关系就是完全图。稠密路径此前仍会计算所有重叠度来得出这一结果，导致这个本来
  不需要任何重叠计算的配置反而开销最大，并在 25000 个边界框时重现了
  [#1374](https://github.com/obss/sahi/issues/1374) 中的内存不足问题。现在仅根据分数顺序即可得出结果。
- **NMM 不再将保留框合并到自身** ([#1416](https://github.com/obss/sahi/pull/1416))。
  此前通过让保留框的 `merge_to_keep` 条目保持为 `-1` 来标记它，但 `-1` 同时也用于标记尚未被认领的
  边界框，因此稍后处理的边界框可能会认领一个保留框，并将其加入合并列表。当重复框的分数相同时，
  这会使保留框出现在自身的合并列表中，同一个索引既能作为保留框访问，又能作为被合并框访问。
  现在保留框会指向自身，使其无法再被认领，同时不改变其他结果。
- **零面积边界框不再触发除零警告** ([#1416](https://github.com/obss/sahi/pull/1416))。
  此前度量计算会对每一对边界框执行 `inter / denom`，之后才丢弃无效条目，因此退化边界框会产生
  `RuntimeWarning`。现在会屏蔽除法运算，而不是事后屏蔽结果。

### ⚡ 性能

在密集和分散布局上使用 `IOS / 0.3` 进行后处理：

| 布局 | 边界框数量 | NMS 优化前 | NMS 优化后 | 优化前峰值内存 | 优化后峰值内存 |
| ---- | ---------: | ---------: | ---------: | -------------: | -------------: |
| 密集 | 33337 | 47180 ms | 135 ms | 3416 MB | 4 MB |
| 密集 | 20000 | 15931 ms | 57 ms | 1232 MB | 2 MB |
| 密集 | 10000 | 2717 ms | 25 ms | 311 MB | 1 MB |
| 分散 | 33336 | 539 ms | 188 ms | 65 MB | 4 MB |

- **numba 后端根据边界框密度选择执行路径**
  ([#1418](https://github.com/obss/sahi/pull/1418))。其 NMS 和 greedy NMM 循环此前无论输入如何，
  都会执行穷举式成对扫描。如果只按预测结果数量选择路径，会使拥挤场景的性能倒退，因为 JIT 循环会
  跳过已抑制的候选框，即使输入规模很大也仍有竞争力。因此现在根据邻居数量进行选择，并通过对边界框
  采样来估算该数量。此外，分数排序此前使用本身具有二次复杂度的插入排序，现在改为与其他后端相同的
  `lexsort`，包括分数相同时也能生成完全一致的顺序。

| 每个边界框的平均邻居数（20000 个边界框） | NMS 优化前 | NMS 优化后 | greedy NMM 优化前 | greedy NMM 优化后 |
| ---------------------------------------: | ---------: | ---------: | ----------------: | ----------------: |
| 0.0 | 909 ms | 43 ms | 842 ms | 89 ms |
| 0.8 | 781 ms | 52 ms | 757 ms | 84 ms |
| 5.1 | 495 ms | 118 ms | 479 ms | 151 ms |
| 20.1 | 241 ms | 146 ms | 236 ms | 148 ms |
| 78.9 | 141 ms | 73 ms | 143 ms | 71 ms |

## 🚀 SAHI v0.12.4 发布说明

此补丁版本修复了 `sahi` 命令行界面的问题：在没有预先安装 `matplotlib` 的环境中，该界面此前
无法使用。

### 🐛 修复

- **`matplotlib` 现已声明为依赖项** ([#1414](https://github.com/obss/sahi/pull/1414))。
  `sahi.cli` 会导入 `sahi.scripts.coco_error_analysis`，后者又会在模块级导入 `matplotlib`，
  但 `[project].dependencies` 和所有可选依赖中此前都没有列出 `matplotlib`。由于采用立即导入，
  在全新环境中所有 `sahi` 命令都会失败，包括 `sahi version` 等与绘图无关的命令。这个问题一直
  没有被发现，是因为典型环境通常会随其他软件包一同安装 `matplotlib`。

## 🚀 SAHI v0.12.3 发布说明

此补丁版本启用了 Apple Silicon GPU、增加了土耳其语文档，并清理了自 `0.12.2` 以来积累的
CI 维护事项。

### 🐛 修复

- **设备选择和后处理现在可以检测 Apple MPS**
  ([#1408](https://github.com/obss/sahi/pull/1408))。`select_device()` 此前只检测 CUDA，
  因此即使 Metal 后端可用，macOS 用户也会回退到 CPU。自动选择顺序现在为 CUDA → MPS → CPU；
  当任一 GPU 可用时，都会选择 `torchvision` 后处理后端。检测通过
  `torch.backends.mps.is_available()` 完成；所有受支持的 torch 版本都提供该方法，并且在非
  Apple 构建上会返回 `False`。
- **将 `threading.currentThread()` 替换为 `current_thread()`**
  ([#1392](https://github.com/obss/sahi/pull/1392))，消除了较新 Python 版本中的
  `DeprecationWarning`。

### 📚 文档

- 新增文档的**土耳其语翻译**，并提供与其匹配的构建步骤和 `zensical` 配置
  ([#1401](https://github.com/obss/sahi/pull/1401)、
  [#1402](https://github.com/obss/sahi/pull/1402)、
  [#1404](https://github.com/obss/sahi/pull/1404))。
- 修正多语言子路径链接 ([#1403](https://github.com/obss/sahi/pull/1403))。
- 后端文档现在同时列出 MPS 和 CUDA ([#1410](https://github.com/obss/sahi/pull/1410))。

### 🧹 维护与 CI

- 新增设备选择和后处理后端解析测试 ([#1409](https://github.com/obss/sahi/pull/1409))。
- 将 `astral-sh/setup-uv` 从 8.3.2 升级到 9.0.0
  ([#1399](https://github.com/obss/sahi/pull/1399))，将 `actions/setup-python` 从 6.3.0
  升级到 7.0.0 ([#1400](https://github.com/obss/sahi/pull/1400))，并将
  `actions/checkout` 从 7.0.0 升级到 7.0.1
  ([#1398](https://github.com/obss/sahi/pull/1398))。
- 将 `twine` 的版本要求放宽到 `>=5.1.1,<8.0.0`
  ([#1406](https://github.com/obss/sahi/pull/1406))。

### ⚡ 性能

在 Apple M2 Pro 上使用 `IOU` 度量进行 NMS，取 5 次运行中的最佳成绩：

| 边界框数量 | numpy | numba | torchvision (MPS) |
| ---------: | ----: | ----: | ----------------: |
| 100 | 0.14 ms | 0.02 ms | 1.44 ms |
| 500 | 1.53 ms | 0.36 ms | 1.42 ms |
| 1000 | 5.46 ms | 1.40 ms | 1.45 ms |
| 5000 | 81.37 ms | 34.16 ms | 4.05 ms |
| 20000 | 1237.70 ms | 462.56 ms | 11.75 ms |

当边界框数量少于约 500 个时，`numba` 仍然更快，但此时差异仅约为一毫秒。

**完整更新日志**：
<https://github.com/obss/sahi/compare/0.12.2...0.12.3>

## 🚀 SAHI v0.12.2 发布说明

此补丁版本修复了对大量预测结果进行后处理时的内存不足和严重性能下降问题，同时包含自 `0.12.1`
以来积累的模型、打包和文档修复。

### 🐛 修复

- **后处理不再为大型输入分配 `N x N` 矩阵**
  ([#1395](https://github.com/obss/sahi/pull/1395))。v0.11 使用 shapely `STRtree`，只比较
  相邻的边界框；v0.12 将其替换为稠密矩阵，无论边界框如何布局，时间和空间复杂度都是 `O(N^2)`。
  TorchVision 后端没有输入规模保护，会在 GPU 上构建七个 `N x N` 张量，因此最先耗尽内存。
  greedy 循环只会使用 `matrix >= match_threshold` 的结果，而不会使用度量值本身，因此现在会根据
  STRtree 报告的相交对直接构建经过阈值过滤的邻接关系，并以 CSR 格式存储。修复
  [#1374](https://github.com/obss/sahi/issues/1374)。
- 支持按类名加载本地 **RF-DETR** 模型，并修正 Roboflow 文档
  ([#1394](https://github.com/obss/sahi/pull/1394))。
- MMDetection 的 `has_mask` 现在可以处理 `RepeatDataset`
  ([#1387](https://github.com/obss/sahi/pull/1387))。
- 在 `import_utils` 中强制执行**依赖项和最低版本检查**
  ([#1377](https://github.com/obss/sahi/pull/1377))。
- 所有 **OpenCV 发行包**保持相同版本，避免安装相互冲突的软件包
  ([#1393](https://github.com/obss/sahi/pull/1393))。

### 📚 文档

- 更新并补全中文翻译 ([#1371](https://github.com/obss/sahi/pull/1371))。
- 文档默认使用 **YOLO26**，并链接至 Ultralytics YOLO26 页面
  ([#1386](https://github.com/obss/sahi/pull/1386))；CLI 模型列表中也加入了 YOLO26
  ([#1378](https://github.com/obss/sahi/pull/1378))。

### 🧹 维护与 CI

- 将 `astral-sh/setup-uv` 从 8.2.0 升级到 8.3.2
  ([#1389](https://github.com/obss/sahi/pull/1389))，并更新 `actions/checkout` / `actions/cache`
  ([#1385](https://github.com/obss/sahi/pull/1385))。
- 将 `build` 的版本要求放宽到 `>=0.10,<1.6`
  ([#1382](https://github.com/obss/sahi/pull/1382))。

### ⚡ 性能

33337 个边界框，使用 `IOS` 度量，阈值为 `0.3`。优化前后的输出相同
（`greedy_nmm` 生成 6571 个预测结果，`nmm` 生成 4639 个预测结果）。

CPU（Intel Core i7-13850HX）：

| 后端 | greedy_nmm 优化前 | 优化后 | nmm 优化前 | 优化后 |
| ---- | -----------------: | -----: | ---------: | -----: |
| numpy | 15.88s | 0.18s | 27.06s | 0.21s |
| torchvision | 6.22s | 0.18s | 17.34s | 0.21s |
| numba | 1.53s | 1.55s | 18.56s | 0.22s |

CUDA（RTX 4000 Ada Laptop，12 GB）：

| 后端 | greedy_nmm 优化前 | 优化后 | nmm 优化前 | 优化后 |
| ---- | -----------------: | -----: | ---------: | -----: |
| numpy | 15.93s | 0.26s | 27.00s | 0.21s |
| torchvision | OOM，4.14 GiB | 0.17s | OOM，4.14 GiB | 0.23s |
| numba | 1.09s | 1.09s | 18.82s | 0.22s |

少于 2000 个边界框的输入以及任何非正数阈值仍使用速度更快的稠密路径。

**完整更新日志**：
<https://github.com/obss/sahi/compare/0.12.1...0.12.2>

## 🚀 SAHI v0.12.0 发布说明

这是 SAHI 迄今为止规模最大的版本之一。自 `0.11.34` 以来共包含 **95 个提交**
（同时纳入了 `0.11.35`/`0.11.36` 热修复版本），带来了重新设计的后处理引擎、
真正的批量推理、无 PyTorch 核心、新增的开放词汇和分割模型，以及全面重构的文档。

### 🚀 关键更新

#### ⚡ 批量推理、无 PyTorch 核心与加速后处理后端

- **批量推理** -- 端到端批量处理切片，大幅提升 GPU 吞吐量
  ([#1336](https://github.com/obss/sahi/pull/1336))。
- **无 PyTorch 核心** -- 核心切片和后处理流程不再硬依赖 PyTorch；只需安装所用后端需要的依赖
  ([#1336](https://github.com/obss/sahi/pull/1336))。
- **可插拔后处理后端** -- NMS/NMM 可以在以下后端运行：
  **NumPy**（无重型依赖）、**Numba**（JIT 加速 CPU）或
  **TorchVision**（GPU）；系统会根据当前环境自动选择
  ([#1336](https://github.com/obss/sahi/pull/1336))。

#### 🧠 新增模型支持

- **GroundingDINO (HuggingFace)** -- 通过 SAHI 的切片流程进行零样本、文本提示驱动的开放词汇检测，
  并提供专用的演示 notebook
  ([#1361](https://github.com/obss/sahi/pull/1361))。
- **HuggingFace 通用分割**
  ([#1360](https://github.com/obss/sahi/pull/1360))。
- **RF-DETR-Seg** 分割模型
  ([#1315](https://github.com/obss/sahi/pull/1315))。
- **YOLOE** 检测模型 ([#1268](https://github.com/obss/sahi/pull/1268))。
- **YOLO-World** 开放词汇检测
  ([#1267](https://github.com/obss/sahi/pull/1267))。
- 在 Ultralytics 后端、CLI、文档和 notebooks 中支持 **YOLO26**
  ([#1321](https://github.com/obss/sahi/pull/1321),
  [#1322](https://github.com/obss/sahi/pull/1322),
  [#1356](https://github.com/obss/sahi/pull/1356))。

#### 🎚️ 更精细的切片与后处理控制

- 在 `get_sliced_prediction` 中新增 **`force_postprocess_type`**
  ([#1346](https://github.com/obss/sahi/pull/1346))。
- 所有预测 API 均支持在每次调用时覆盖 **`confidence_threshold`**
  ([#1352](https://github.com/obss/sahi/pull/1352))。
- Python API 和 CLI 中的 `get_sliced_prediction` 均支持**进度条和进度回调**
  ([#1255](https://github.com/obss/sahi/pull/1255))。

#### 📚 文档

- 文档迁移至 **Zensical**，并全面清理代码类型标注和格式
  ([#1344](https://github.com/obss/sahi/pull/1344))。
- 新增**中文 (zh) 翻译**并保持同步
  ([#1253](https://github.com/obss/sahi/pull/1253),
  [#1332](https://github.com/obss/sahi/pull/1332),
  [#1347](https://github.com/obss/sahi/pull/1347))。
- 新增 API 参考、后处理后端指南、安全政策和行为准则
  ([#1257](https://github.com/obss/sahi/pull/1257),
  [#1272](https://github.com/obss/sahi/pull/1272),
  [#1349](https://github.com/obss/sahi/pull/1349))。

### ✨ 性能与改进

- **显著加速后处理** -- NMS、NMM 和 GREEDYNMM 现使用 shapely `STRtree` 空间索引，
  大幅加速包含大量切片或检测结果的图像合并
  ([#1248](https://github.com/obss/sahi/pull/1248))。
- 加速 `read_image_as_pil`，提高切片吞吐量
  ([#1353](https://github.com/obss/sahi/pull/1353))。
- 改进预测和切片过程中的性能与资源管理
  ([#1263](https://github.com/obss/sahi/pull/1263))。
- 提升 `nms` 性能，并正确处理空预测结果
  ([#1288](https://github.com/obss/sahi/pull/1288))。
- 使用轻量级内置函数 `yolo_bbox_to_voc_bbox` 替代 `pybboxes`
  ([#1320](https://github.com/obss/sahi/pull/1320))，并移除 `pybboxes` 和
  固定版本的 `opencv-python` 约束
  ([#1325](https://github.com/obss/sahi/pull/1325))。

### 🐞 Bug 修复

- 修复空 `shapely_annotation.multipolygon` 导致边界框为空的问题
  ([#1140](https://github.com/obss/sahi/pull/1140))。
- 修复 Detectron2 模型的无效分割掩码
  ([#1262](https://github.com/obss/sahi/pull/1262))。
- 修正 `BoundingBox` 中的边距计算
  ([#1286](https://github.com/obss/sahi/pull/1286))。
- 修复 `read_image_as_pil` 对 CHW 格式图像的处理
  ([#1287](https://github.com/obss/sahi/pull/1287))。
- 校验 `get_slice_bboxes` 中的重叠率（必须小于 `1.0`）
  ([#1285](https://github.com/obss/sahi/pull/1285))。
- 修正 `RTDetrDetectionModel` 中模型路径无效时的错误消息
  ([#1266](https://github.com/obss/sahi/pull/1266))。
- 修复后处理模块中不正确的类型标注
  ([#1327](https://github.com/obss/sahi/pull/1327))。
- Ultralytics 模型支持更多格式，并改进任务处理
  ([#1321](https://github.com/obss/sahi/pull/1321))。
- 新增 `pywinpty`，提升 Windows 开发兼容性
  ([#1319](https://github.com/obss/sahi/pull/1319))。

### 🧹 维护与 CI

- 将所有 GitHub Actions 固定到提交 SHA，提升供应链安全性
  ([#1351](https://github.com/obss/sahi/pull/1351))。
- 新增多操作系统 CI 矩阵，并使用更清晰的工作流名称
  ([#1334](https://github.com/obss/sahi/pull/1334))。
- CI 和文档升级至 Python 3.12/3.13
  ([#1259](https://github.com/obss/sahi/pull/1259),
  [#1260](https://github.com/obss/sahi/pull/1260))。
- 移除已弃用的 YOLOv5 辅助函数、旧版 `requirements.txt`、MMDet 工作流和未使用的 Netlify 配置
  ([#1326](https://github.com/obss/sahi/pull/1326),
  [#1342](https://github.com/obss/sahi/pull/1342),
  [#1341](https://github.com/obss/sahi/pull/1341),
  [#1335](https://github.com/obss/sahi/pull/1335))。
- 将依赖更新至 `numpy<3.0`、`torchvision 0.23.0`，并纳入大量 Dependabot 依赖更新
  （现在也覆盖 pip）。

### 🙌 新贡献者

- @vinnik-dmitry07 在 [#1140](https://github.com/obss/sahi/pull/1140) 中首次贡献
- @nikvo1 在 [#1248](https://github.com/obss/sahi/pull/1248) 中首次贡献
- Christopher Field (@volks73) 在 [#1262](https://github.com/obss/sahi/pull/1262) 中首次贡献
- Haotian Gong (@ZephyrKeXiner) 在 [#1253](https://github.com/obss/sahi/pull/1253) 中首次贡献
- Yogendra Singh (@yogendrasinghx) 在 [#1326](https://github.com/obss/sahi/pull/1326) 中首次贡献
- Ivan Buldakov (@ibuldakov) 在 [#1315](https://github.com/obss/sahi/pull/1315) 中首次贡献
- Vignesh Suresh (@srikrishnavignesh) 在 [#1360](https://github.com/obss/sahi/pull/1360) 中首次贡献
- Ömer Günaydın (@siromermer) 在 [#1361](https://github.com/obss/sahi/pull/1361) 中首次贡献

**完整更新日志**：
<https://github.com/obss/sahi/compare/0.11.34...0.12.0>

## 🚀 SAHI v0.11.31 发布说明

我们很高兴地宣布 SAHI v0.11.31 版本，包含重要的 Bug 修复和改进！

## 🆕 更新内容

- 使 Category 不可变并添加测试 - @gboeer 在
  <https://github.com/obss/sahi/pull/1206>
- 更新 greedy_nmm 的文档字符串 - @kikefdezl 在
  <https://github.com/obss/sahi/pull/1205>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1208>

## 🙌 新贡献者

- @kikefdezl 在 <https://github.com/obss/sahi/pull/1205> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.30...0.11.31>

## 🚀 SAHI v0.11.30 发布说明

我们很高兴地宣布 SAHI v0.11.30 版本，改进了性能追踪、增强了测试基础设施，并提升了开发者体验！

### 📈 里程碑

- **引用 SAHI 的学术论文达到 400 篇！**
  ([#1168](https://github.com/obss/sahi/pull/1168))

### 🚀 关键更新

#### ⚡️ 性能与监控

- **修复了 `get_sliced_prediction` 中的后处理耗时追踪** -- 现在可以正确分离切片、预测和后处理的耗时，实现准确的性能监控
  ([#1201](https://github.com/obss/sahi/pull/1201)) - 感谢 @Toprak2！

#### 🧩 框架更新

- **重构 Ultralytics 支持**，增加 ONNX 模型支持和更好的兼容性
  ([#1184](https://github.com/obss/sahi/pull/1184))
- **更新 TorchVision 支持**至最新 API
  ([#1182](https://github.com/obss/sahi/pull/1182))
- **改进 Detectron2 支持**，优化配置处理以防止 KeyError 问题
  ([#1116](https://github.com/obss/sahi/pull/1116)) - 感谢 @Arnesh1411！
- **新增 Roboflow 框架支持**，用于 Roboflow Universe 的 RF-DETR 模型
  ([#1161](https://github.com/obss/sahi/pull/1161)) - 感谢 @nok！
- **移除 deepsparse 集成**，该框架已停止维护
  ([#1164](https://github.com/obss/sahi/pull/1164))

#### 🧪 测试基础设施

- **测试套件迁移至 pytest**
  ([#1187](https://github.com/obss/sahi/pull/1187))
    - 通过更好的并行执行加速测试
    - 扩展 Python 版本覆盖（3.8、3.9、3.10、3.11、3.12）
    - 更新至更新的 PyTorch 版本以实现更好的兼容性测试
    - 改进测试组织和可维护性
- **重构 MMDetection 测试**以提高可靠性
  ([#1185](https://github.com/obss/sahi/pull/1185))

#### 💻 开发者体验

- **新增 Context7 MCP 集成**，用于 AI 辅助开发
  ([#1198](https://github.com/obss/sahi/pull/1198))
    - SAHI 的文档现已在 [Context7 MCP](https://context7.com/obss/sahi) 中建立索引
    - 为 AI 编码助手提供最新的、版本特定的代码示例
    - 包含 [llms.txt](https://context7.com/obss/sahi/llms.txt) 文件，用于 AI 可读文档
    - 查看 [Context7 MCP 安装指南](https://github.com/upstash/context7#%EF%B8%8F-installation) 将 SAHI 文档集成到您的 AI 工作流程中

### 🛠️ 改进

#### 🧹 代码质量与安全性

- **不可变边界框**，用于线程安全操作
  ([#1194](https://github.com/obss/sahi/pull/1194),
  [#1191](https://github.com/obss/sahi/pull/1191)) - 感谢 @gboeer！
- **增强类型提示和文档字符串**
  ([#1195](https://github.com/obss/sahi/pull/1195)) - 感谢 @gboeer！
- **预测分数运算符重载**，支持直观的分数比较
  ([#1190](https://github.com/obss/sahi/pull/1190)) - 感谢 @gboeer！
- **PyTorch 现为软依赖**，提高灵活性
  ([#1162](https://github.com/obss/sahi/pull/1162)) - 感谢 @ducviet00！

### 🏗️ 基础设施与稳定性

- **改进依赖管理**和文档
  ([#1183](https://github.com/obss/sahi/pull/1183))
- **增强 pyproject.toml 配置**，实现更好的包管理
  ([#1181](https://github.com/obss/sahi/pull/1181))
- **优化 CI/CD 工作流**，用于 MMDetection 测试
  ([#1186](https://github.com/obss/sahi/pull/1186))

### 🐛 Bug 修复

- 修复 CUDA 设备选择，支持 cuda:0 以外的设备
  ([#1158](https://github.com/obss/sahi/pull/1158)) - 感谢 @0xf21！
- 修正参数命名，将 'confidence' 改为 'threshold' 以保持一致性
  ([#1180](https://github.com/obss/sahi/pull/1180)) - 感谢 @nok！
- 修复设备选择函数中的正则表达式格式
  ([#1165](https://github.com/obss/sahi/pull/1165))
- 解决未安装 PyTorch 时的 torch 导入错误
  ([#1172](https://github.com/obss/sahi/pull/1172)) - 感谢 @ducviet00！
- 修复 `AutoDetectionModel.from_pretrained` 的模型实例化问题
  ([#1158](https://github.com/obss/sahi/pull/1158))

### 📦 依赖项

- 将 OpenCV 包从 4.10.0.84 更新至 4.11.0.86
  ([#1171](https://github.com/obss/sahi/pull/1171)) - 感谢 @ducviet00-h2！
- 移除已停止维护的 matplotlib-stubs 依赖
  ([#1169](https://github.com/obss/sahi/pull/1169))
- 清理未使用的配置文件
  ([#1199](https://github.com/obss/sahi/pull/1199))

### 📚 文档

- 新增 context7.json 以改进 AI 工具集成
  ([#1200](https://github.com/obss/sahi/pull/1200))
- 更新 README 中的贡献者信息
  ([#1175](https://github.com/obss/sahi/pull/1175),
  [#1179](https://github.com/obss/sahi/pull/1179))
- 新增 Roboflow+SAHI Colab 教程链接
  ([#1177](https://github.com/obss/sahi/pull/1177))

### 🙏 致谢

特别感谢所有让此版本成为可能的贡献者：@nok、@gboeer、@Toprak2、@Arnesh1411、@0xf21、@ducviet00、@ducviet00-h2、@p-constant 和 @fcakyon！

---

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.24...0.11.30>

## 🚀 SAHI v0.11.29 发布说明

### 🆕 更新内容

- 使边界框不可变 - @gboeer 在
  <https://github.com/obss/sahi/pull/1194>
- 改进类型提示和文档字符串 - @gboeer 在
  <https://github.com/obss/sahi/pull/1195>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1196>

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.28...0.11.29>

## 🚀 SAHI v0.11.28 发布说明

### 🆕 更新内容

- 为预测分数添加运算符重载 - @gboeer 在
  <https://github.com/obss/sahi/pull/1190>
- 改进 detectron2 支持 - @Arnesh1411 在
  <https://github.com/obss/sahi/pull/1116>
- 为边界框使用不可变参数 - @gboeer 在
  <https://github.com/obss/sahi/pull/1191>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1192>

### 🙌 新贡献者

- @Arnesh1411 在 <https://github.com/obss/sahi/pull/1116> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.27...0.11.28>

## 🚀 SAHI v0.11.27 发布说明

## 🆕 更新内容

- 修复：将推理方法中的 'confidence' 更新为 'threshold' - @nok 在
  <https://github.com/obss/sahi/pull/1180>
- 更新 README.md - @nok 在 <https://github.com/obss/sahi/pull/1179>
- 改进 pyproject.toml - @fcakyon 在 <https://github.com/obss/sahi/pull/1181>
- 重构依赖管理和部分文档 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1183>
- 更新：重构 ultralytics 支持 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1184>
- 重构 mmdet 测试 - @fcakyon 在 <https://github.com/obss/sahi/pull/1185>
- 更新 torchvision 支持至最新 API - @fcakyon 在
  <https://github.com/obss/sahi/pull/1182>
- 优化 mmdet 工作流触发条件 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1186>
- 迁移测试至 pytest - @fcakyon 在
  <https://github.com/obss/sahi/pull/1187>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1188>

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.26...0.11.27>

## 🚀 SAHI v0.11.26 发布说明

### 🆕 更新内容

- 将 opencv 包从 `4.10.0.84` 升级至 `4.11.0.86` - @ducviet00-h2 在
  <https://github.com/obss/sahi/pull/1171>
- 新增 Roboflow 框架（RFDETR 模型）- @nok 在
  <https://github.com/obss/sahi/pull/1161>
- 将新贡献者添加到 readme - @fcakyon 在
  <https://github.com/obss/sahi/pull/1175>
- 将 roboflow+sahi colab 链接添加到 readme - @fcakyon 在
  <https://github.com/obss/sahi/pull/1177>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1176>

### 🙌 新贡献者

- @ducviet00-h2 在 <https://github.com/obss/sahi/pull/1171> 中首次贡献
- @nok 在 <https://github.com/obss/sahi/pull/1161> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.25...0.11.26>

## 🚀 SAHI v0.11.25 发布说明

### 🆕 更新内容

- 更新 readme 中的 sahi 引用 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1168>
- 移除已停止维护的 matplotlib-stubs - @fcakyon 在
  <https://github.com/obss/sahi/pull/1169>
- 修复 torch 导入错误 - @ducviet00 在
  <https://github.com/obss/sahi/pull/1172>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1173>

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.24...0.11.25>

## 🚀 SAHI v0.11.24 发布说明

### 🆕 更新内容

- 修复拼写错误和脚本 URL - @gboeer 在
  <https://github.com/obss/sahi/pull/1155>
- 修复 CI 工作流 bug - @Dronakurl 在 <https://github.com/obss/sahi/pull/1156>
- `[文档]` 修复拼写错误 - @gboeer 在 <https://github.com/obss/sahi/pull/1157>
- 移除 deepsparse 集成 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1164>
- 修复：使 PyTorch 不再是硬依赖 - @ducviet00 在
  <https://github.com/obss/sahi/pull/1162>
- 修复：支持指定 cuda:0 以外的设备 - @0xf21 在
  <https://github.com/obss/sahi/pull/1158>
- 修复：修正 select_device 函数中的正则表达式格式 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1165>
- 为 yolov8onnx 添加 TensorrtExecutionProvider - @p-constant 在
  <https://github.com/obss/sahi/pull/1091>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1166>

### 🙌 新贡献者

- @gboeer 在 <https://github.com/obss/sahi/pull/1155> 中首次贡献
- @ducviet00 在 <https://github.com/obss/sahi/pull/1162> 中首次贡献
- @0xf21 在 <https://github.com/obss/sahi/pull/1158> 中首次贡献
- @p-constant 在 <https://github.com/obss/sahi/pull/1091> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.23...0.11.24>

## 🚀 SAHI v0.11.23 发布说明

### 🆕 更新内容

- 修复(CI)：numpy 依赖修复 #1119 - @Dronakurl 在
  <https://github.com/obss/sahi/pull/1144>
- 修复：Predict 无法在源目录中找到 TIF 文件 - @dibunker 在
  <https://github.com/obss/sahi/pull/1142>
- 修复 demo Notebooks 中的拼写错误 - @picjul 在
  <https://github.com/obss/sahi/pull/1150>
- 修复：修复多边形修复和空多边形问题，见 #1118 - @mario-dg 在
  <https://github.com/obss/sahi/pull/1138>
- 改进包 CI 日志 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1151>

### 🙌 新贡献者

- @dibunker 在 <https://github.com/obss/sahi/pull/1142> 中首次贡献
- @picjul 在 <https://github.com/obss/sahi/pull/1150> 中首次贡献
- @mario-dg 在 <https://github.com/obss/sahi/pull/1138> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.22...0.11.23>

## 🚀 SAHI v0.11.22 发布说明

### 🆕 更新内容

- 改进对最新 mmdet (v3.3.0) 的支持 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1129>
- 改进对最新 yolov5-pip 和 ultralytics 版本的支持 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1130>
- 支持最新的 huggingface/transformers 模型 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1131>
- 重构 coco 到 yolo 的转换，更新文档 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1132>
- 升级版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/1134>

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.21...0.11.22>

### 📚 核心文档文件

#### 📦 [预测工具](predict.md)

- 执行目标检测推理的详细指南
- 标准和切片推理示例
- 批量预测用法
- 推理时的类别排除
- 可视化参数和导出格式
- 各模型集成的交互式示例（YOLOv8、MMDetection 等）

#### ✂️ [切片工具](slicing.md)

- 大图像和数据集切片指南
- 图像切片示例
- COCO 数据集切片示例
- 交互式示例 notebook 参考

#### 🐒 [COCO 工具](coco.md)

- 处理 COCO 格式数据集的全面指南
- 数据集创建和操作
- COCO 数据集切片
- 数据集拆分（训练集/验证集）
- 类别筛选和更新
- 基于面积的筛选
- 数据集合并
- 格式转换（COCO ↔ YOLO）
- 数据集采样工具
- 统计计算
- 结果验证

#### 💻 [CLI 命令](cli.md)

- SAHI 命令行界面完整参考
- 预测命令
- FiftyOne 集成
- COCO 数据集操作
- 环境信息
- 版本检查
- 自定义脚本用法

#### 👁️ [FiftyOne 集成](fiftyone.md)

- 使用 FiftyOne 可视化和分析预测的指南
- 数据集可视化
- 结果探索
- 交互式分析

#### 📓 交互式示例

所有文档文件都配有 [demo 目录](../../demo/) 中的交互式 Jupyter notebook：

- `slicing.ipynb` - 切片操作演示
- `inference_for_ultralytics.ipynb` - YOLOv8/YOLO11/YOLO26 集成
- `inference_for_ultralytics_yoloe.ipynb` - YOLOE 集成
- `inference_for_yolov5.ipynb` - YOLOv5 集成
- `inference_for_mmdetection.ipynb` - MMDetection 集成
- `inference_for_detectron2.ipynb` - Detectron2 集成
- `inference_for_huggingface.ipynb` - HuggingFace 模型集成
- `inference_for_groundingdino.ipynb` - GroundingDINO 零样本检测
- `inference_for_torchvision.ipynb` - TorchVision 模型集成
- `inference_for_rtdetr.ipynb` - RT-DETR 集成
- `inference_for_roboflow.ipynb` - Roboflow RF-DETR 集成

### 🚦 快速上手

如果您是 SAHI 新用户：

1. 从[预测工具](predict.md)开始，了解基本推理
2. 探索[切片工具](slicing.md)，学习处理大图像
3. 查看 [CLI 命令](cli.md)，了解命令行用法
4. 深入 [COCO 工具](coco.md)，学习数据集操作
5. 尝试 [demo 目录](../../demo/) 中的交互式 notebook，获取实践经验

## 🚀 SAHI v0.11.21 发布说明

### 🆕 更新内容

- 使用预训练或自定义模型在推理时排除类别 - @gguzzy 在
  <https://github.com/obss/sahi/pull/1104>
- pyproject.toml、pre-commit、ruff、uv 和类型问题修复 #1119 - @Dronakurl 在
  <https://github.com/obss/sahi/pull/1120>
- 在 predict 文档中添加类别排除示例 - @gguzzy 在
  <https://github.com/obss/sahi/pull/1125>
- 添加 OBB 示例 - @fcakyon 在 <https://github.com/obss/sahi/pull/1126>
- 修复 predict 函数中的类型提示拼写错误 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1111>
- 移除 numpy<2 上限限制 - @weiji14 在
  <https://github.com/obss/sahi/pull/1112>
- 修复 readme 中的 CI 徽章 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1124>
- 修复 pyproject.toml 中的版本 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1127>

### 🙌 新贡献者

- @Dronakurl 在 <https://github.com/obss/sahi/pull/1120> 中首次贡献
- @gguzzy 在 <https://github.com/obss/sahi/pull/1104> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.20...0.11.21>

## 🚀 SAHI v0.11.20 发布说明

### 🆕 更新内容

- 添加 yolo11 和 ultralytics OBB 任务支持 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1109>
- 支持最新 opencv 版本 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1106>
- 简化 yolo 检测模型代码 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1107>
- 固定 shapely>2.0.0 - @weiji14 在 <https://github.com/obss/sahi/pull/1101>

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.19...0.11.20>

## 🚀 SAHI v0.11.19 发布说明

### 🆕 更新内容

- 修复 CI actions - @fcakyon 在 <https://github.com/obss/sahi/pull/1073>
- 更新 mmdet 模型的 has_mask 方法（处理边界情况）- @ccomkhj 在
  <https://github.com/obss/sahi/pull/1066>
- 处理另一个自相交的边界情况 - @sergiev 在
  <https://github.com/obss/sahi/pull/982>
- 更新 README.md - @fcakyon 在 <https://github.com/obss/sahi/pull/1077>
- 移除无法正常工作的 yolonas 支持 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1097>
- 移除 yolonas 支持（第二部分）- @fcakyon 在
  <https://github.com/obss/sahi/pull/1098>
- 更新 mmdet 模型的 has_mask 方法（处理 ConcatDataset）- @ccomkhj 在
  <https://github.com/obss/sahi/pull/1092>

### 🙌 新贡献者

- @ccomkhj 在 <https://github.com/obss/sahi/pull/1066> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.18...0.11.19>

## 🚀 SAHI v0.11.18 发布说明

### 🆕 更新内容

- 添加 yolov8 mask 支持，mask 处理速度提升 4-5 倍 - @mayrajeo 在
  <https://github.com/obss/sahi/pull/1039>
- 修复 mmdet 模型的 has_mask 方法 - @Alias-z 在
  <https://github.com/obss/sahi/pull/1054>
- 修复切片 COCO 时的 `TypeError: 'GeometryCollection' object is not subscriptable` 问题 - @Alias-z 在
  <https://github.com/obss/sahi/pull/1047>
- 支持 opencv-python 4.9 版本 - @iokarkan 在
  <https://github.com/obss/sahi/pull/1041>
- 为 numpy 依赖添加上限 - @fcakyon 在
  <https://github.com/obss/sahi/pull/1057>
- 添加更多单元测试 - @MMerling 在 <https://github.com/obss/sahi/pull/1048>
- 升级 CI actions - @fcakyon 在 <https://github.com/obss/sahi/pull/1049>

### 🙌 新贡献者

- @iokarkan 在 <https://github.com/obss/sahi/pull/1041> 中首次贡献
- @MMerling 在 <https://github.com/obss/sahi/pull/1048> 中首次贡献
- @Alias-z 在 <https://github.com/obss/sahi/pull/1047> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.16...0.11.18>

## 🚀 SAHI v0.11.16 发布说明

## 🚀 SAHI v0.11.15 发布说明

## 🚀 SAHI v0.11.14 发布说明

### 🆕 更新内容

- 支持 Deci-AI YOLO-NAS 模型 - @ssahinnkadir 在
  <https://github.com/obss/sahi/pull/874>
- Detectron2 模型的显著速度提升 - @MyosQ 在
  <https://github.com/obss/sahi/pull/865>
- 支持 ultralytics>=8.0.99 - @eVen-gits 在
  <https://github.com/obss/sahi/pull/873>
- 文档拼写错误和缺失值修复 - @Hamzalopode 在
  <https://github.com/obss/sahi/pull/859>
- 更新版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/876>
- 更新 black 版本 - @fcakyon 在 <https://github.com/obss/sahi/pull/877>

### 🙌 新贡献者

- @Hamzalopode 在 <https://github.com/obss/sahi/pull/859> 中首次贡献
- @eVen-gits 在 <https://github.com/obss/sahi/pull/873> 中首次贡献
- @MyosQ 在 <https://github.com/obss/sahi/pull/865> 中首次贡献

**完整更新日志**：<https://github.com/obss/sahi/compare/0.11.13...0.11.14>

## 🚀 SAHI v0.11.13 发布说明

## 🚀 SAHI v0.11.12 发布说明

## 🚀 SAHI v0.11.11 发布说明

## 🚀 SAHI v0.11.10 发布说明

## 🚀 SAHI v0.11.9 发布说明

## 🚀 SAHI v0.11.8 发布说明

## 🚀 SAHI v0.11.7 发布说明

## 🚀 SAHI v0.11.6 发布说明

## 🚀 SAHI v0.11.5 发布说明

## 🚀 SAHI v0.11.4 发布说明

## 🚀 SAHI v0.11.3 发布说明

## 🚀 SAHI v0.11.2 发布说明

## 🚀 SAHI v0.11.1 发布说明
