obss/sahi
Framework agnostic sliced/tiled inference + interactive ui + error analysis plots
什么是 SAHI?
SAHI(Slicing‑Aided Hyper Inference)は、非常に大きな画像や動画上でオブジェクト検出およびインスタンスセグメンテーションモデルを実行しやすくする軽量なPythonライブラリです。コアとなるアイデアは「スライス推論(sliced inference)」です:入力画像は自動的に重複するタイルに分割され、各タイルは標準的な検出器に供給され、結果が再び統合されます。これにより、低解像度の全体画像しか見られない場合に小さなオブジェクトが見逃されてしまうという一般的な問題を解決します。
主な機能(READMEに記載)
| 機能 | 機能の説明 |
|---|---|
| スライス推論 | 大きな画像を自動的にタイルに分割し、サポートされている検出器を各タイルに適用し、検出結果を再統合します。 |
| フレームワーク非依存 | Ultralytics YOLO(v5, v8, YOLO‑X, YOLO‑Eなど)、MMDetection、Detectron2、HuggingFace 🤗 Transformers、TorchVision、Roboflow / RF‑DETR、GroundingDINOに対応します。 |
| CLIツール | sahi predict、predict‑fiftyone、coco slice、coco evaluate、coco analyse、coco yoloなど、迅速なコマンドライン操作とデータセット処理が可能。 |
| FiftyOne統合 | FiftyOneアプリで予測結果やエラー分析を視覚化できます。 |
| COCOユーティリティ | COCOデータセットをスライス、フォーマット変換、AP/ARの評価、エラー分析プロットの生成が可能。 |
| 動画対応 | 同じスライスロジックを動画フレームに適用し、リアルタイムまたはバッチ推論が可能。 |
| 事前学習済みモデル対応 | 追加コードなしで、サポートされているライブラリのモデルチェックポイントを指定するだけで利用可能。 |
| 豊富なドキュメントとノートブック | 主要な検出器ごとにColabノートブック、完全なドキュメントサイト、および方法を説明する論文(ICIP 2022)を提供。 |
インストール(簡単)
pip install sahi # コアライブラリ
# オプション – 使用したい検出器をインストール、例:
# pip install ultralytics>=8.3 # YOLOファミリー
# pip install torch torchvision # TorchVisionモデル用
# pip install transformers timm # HuggingFaceモデル用
# pip install yolov5==7.0.14 # YOLOv5
# pip install mim && mim install mmdet==3.3.0 # MMDetection
READMEには、PyTorch、CUDA、各検出フレームワークのバージョンマッチングに関する詳細な手順も記載されています。
クイックスタート例(ドキュメントより)
from sahi import AutoDetectionModel, get_sliced_prediction
# サポートされている任意のモデルを選択 – ここではultralyticsのYOLOv8を使用
model = AutoDetectionModel.from_pretrained(
model_type="yolov8",
model_path="yolov8n.pt",
confidence_threshold=0.3,
device="cuda:0",
)
result = get_sliced_prediction(
"large_image.jpg",
detection_model=model,
slice_height=512,
slice_width=512,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)
# 統合された検出結果を視覚化またはエクスポート
result.save("output.jpg")
同じワークフローは動画(各フレームでget_sliced_predictionを実行)および他のサポートされているバックエンドでも動作します。
SAHIを使うべき場面
- 衛星画像や航空写真:1枚の画像が数万ピクセル以上に及ぶことがあり、車両、船、動物などの小さなオブジェクトが見逃されやすい。
- 医療画像(例:全スライド病理画像):高解像度スキャンをダウンサンプリングせずに処理する必要がある。
- 監視動画:多数のフレームにわたり小さなオブジェクトを効率的に検出したい。
- ベンチマーク/研究:COCOデータセットをスライス、AP/ARを評価、エラー分析プロットを生成するツールを提供。
- 迅速なプロトタイピング:既存の検出器コードを書き換える必要なし。SAHIのCLIまたはPython APIでラップするだけ。
リソース
- 論文:Slicing Aided Hyper Inference(ICIP 2022) – DOI 10.1109/ICIP46576.2022.9897990
- ドキュメント:https://github.com/obss/sahi/tree/main/docs
- Colabノートブック:主要な検出器ごとに用意(README内のリンク参照)。
- HuggingFace Spaceデモ – https://huggingface.co/spaces/fcakyon/sahi-yolox
- コミュニティ:600件以上の引用、コンペティション優勝、エラー分析用のディスカッションフォーラム。
結論:SAHIは、自動的にスライス・予測・統合を行うことで、どんな主流のオブジェクト検出モデルでも巨大な画像や動画ストリームに適用できる、実用的で積極的にメンテナンスされているオープンソースライブラリです。AI/ML(コンピュータビジョン)分野に特化しており、開発者向けにCLIの利便性とPython APIの両方を提供しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト