Ultralytics Docs: YOLO26とSAHIを使用したスライス推論#
YOLO26 と SAHI (Slicing Aided Hyper Inference) の使用方法に関する Ultralytics ドキュメントへようこそ。この包括的なガイドでは、YOLO26 とともに SAHI を実装するために必要なすべての基本知識を提供することを目的としています。SAHI とは何か、なぜ大規模アプリケーションにおいてスライス推論が不可欠なのか、そして オブジェクト検出 パフォーマンスを向上させるためにこれらの機能を YOLO26 に統合する方法について詳しく掘り下げます。
SAHIの紹介#
SAHI(Slicing Aided Hyper Inference)は、大規模画像や高解像度画像向けに物体検出アルゴリズムを最適化するために設計された革新的なライブラリです。その中心的な機能は、画像を扱いやすいスライスに分割し、各スライスで物体検出を実行した後、結果を繋ぎ合わせることにあります。SAHIはYOLOシリーズを含むさまざまな物体検出モデルと互換性があり、計算リソースの最適化を確保しながら柔軟性を提供します。
Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀
SAHIの主な特徴#
- シームレスな統合: SAHIはYOLOモデルと簡単に統合できるため、コードを大幅に変更することなく、スライスと検出を開始できます。
- リソース効率: 大きな画像を小さなパーツに分割することで、SAHIはメモリ使用量を最適化し、リソースが限られたハードウェアでも高品質な検出を実行可能にします。
- 高精度: SAHI は、ステッチング処理中にスマートアルゴリズムを採用して重なり合う検出ボックスを統合することにより、検出精度を維持します。
スライス推論とは#
スライス推論とは、大規模画像や高解像度画像を小さなセグメント(スライス)に分割し、これらのスライスに対して物体検出を行い、最後にスライスを再構成して元の画像上の物体位置を特定する手法を指します。この手法は、計算リソースが限られている場合や、メモリの問題を引き起こす可能性のある極めて高解像度な画像を扱う場合に非常に有効です。
スライス推論の利点#
-
計算負荷の軽減: 画像スライスが小さいため処理が高速化され、メモリ消費も抑えられるため、低スペックなハードウェアでも円滑な動作が可能になります。
-
検出品質の維持: 各スライスは独立して扱われるため、対象物を捉えるのに十分なスライスサイズであれば、物体検出の品質は低下しません。
-
拡張性の向上: この手法により、画像サイズや解像度が異なる場合でも物体検出を容易に拡張できるため、衛星画像から医療診断まで、幅広いアプリケーションに最適です。
| YOLO26 without SAHI | YOLO26 with SAHI |
|---|---|
![]() | ![]() |
インストールと準備#
インストール#
まずは、最新バージョンのSAHIとUltralyticsをインストールします。
pip install -U ultralytics sahiモジュールのインポートとリソースのダウンロード#
テスト画像をダウンロードする方法は以下の通りです。
from sahi.utils.file import download_from_url
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
"demo_data/terrain2.png",
)YOLO26を使用した標準推論#
モデルのインスタンス化#
YOLO26モデルは次のようにインスタンス化して物体検出に使用できます。
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="yolo26n.pt",
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)標準予測の実行#
画像パスを使用して標準推論を実行します。
from sahi.predict import get_prediction
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
result.export_visuals(export_dir="demo_data/", hide_conf=True)結果の可視化#
予測されたバウンディングボックスとマスクをエクスポートして可視化します。
from PIL import Image
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()YOLO26を使用したスライス推論#
スライスサイズとオーバーラップ率を指定してスライス推論を実行します。
from PIL import Image
from sahi.predict import get_sliced_prediction
result = get_sliced_prediction(
"demo_data/small-vehicles1.jpeg",
detection_model,
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)
# Export results
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()予測結果の処理#
SAHI は PredictionResult オブジェクトを提供します。これはさまざまなアノテーション形式に変換できます。
# Access the object prediction list
object_prediction_list = result.object_prediction_list
# Convert to COCO annotation and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]バッチ予測#
画像ディレクトリに対するバッチ予測は以下の通りです。
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="yolo26n.pt",
model_device="cpu", # or 'cuda:0'
model_confidence_threshold=0.4,
source="path/to/dir",
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)これで、標準推論とスライス推論の両方でYOLO26とSAHIを使用する準備が整いました。
引用と謝辞#
研究や開発業務でSAHIを使用する場合は、元のSAHIの論文を引用し、著者を明記してください。
@article{akyon2022sahi,
title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
journal={2022 IEEE International Conference on Image Processing (ICIP)},
doi={10.1109/ICIP46576.2022.9897990},
pages={966-970},
year={2022}
}コンピュータビジョン コミュニティのためにこの貴重なリソースを作成および維持してくださった SAHI 研究グループに感謝いたします。SAHIとその作成者の詳細については、SAHI GitHub リポジトリ をご覧ください。
よくある質問 (FAQ)#
物体検出のスライス推論のために、YOLO26をSAHIと統合するにはどうすればよいですか?#
Ultralytics YOLO26とSAHI(Slicing Aided Hyper Inference)を統合してスライス推論を行うと、高解像度画像を扱いやすいサイズに分割することで物体検出タスクが最適化されます。このアプローチにより、メモリ使用量が改善され、高い検出精度が確保されます。開始するには、ultralyticsライブラリとsahiライブラリをインストールする必要があります。
pip install -U ultralytics sahi次に、テスト画像をダウンロードします。
from sahi.utils.file import download_from_url
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
"demo_data/terrain2.png",
)より詳細な手順については、スライス推論ガイド を参照してください。
大規模画像の物体検出にYOLO26とSAHIを使用すべき理由は何ですか?#
大規模画像の物体検出にUltralytics YOLO26とSAHIを併用することには、いくつかの利点があります。
- 計算負荷の軽減: 小さなスライスは処理が高速でメモリ消費も少ないため、リソースの限られたハードウェアでも高品質な検出を実行できます。
- 検出精度の維持: SAHIはインテリジェントなアルゴリズムを使用して重なり合うボックスをマージし、検出品質を維持します。
- 拡張性の向上: 画像サイズや解像度に応じて物体検出タスクを拡張できるため、衛星画像解析や医療診断など、さまざまなアプリケーションに最適です。
ドキュメントで スライス推論の利点 について詳しく学びましょう。
YOLO26とSAHIを使用する際に、予測結果を可視化できますか?#
はい、YOLO26とSAHIを使用する際の予測結果を可視化できます。結果をエクスポートして可視化する方法は以下の通りです。
from PIL import Image
result.export_visuals(export_dir="demo_data/", hide_conf=True)
processed_image = Image.open("demo_data/prediction_visual.png")
processed_image.show()このコマンドは、視覚化された予測を指定されたディレクトリに保存するため、画像を読み込んでノートブックやアプリケーションで表示できます。詳細なガイドについては、標準推論セクション をご確認ください。
SAHIはYOLO26の物体検出を改善するためにどのような機能を提供しますか?#
SAHI(Slicing Aided Hyper Inference)は、Ultralytics YOLO26の物体検出を補完するいくつかの機能を提供します。
- シームレスな統合: SAHIはYOLOモデルと容易に統合でき、コードの修正を最小限に抑えられます。
- リソース効率: 大きな画像を小さなスライスに分割し、メモリ使用量と速度を最適化します。
- 高い精度: ステッチングプロセス中に重なり合う検出ボックスを効果的にマージすることで、高い検出精度を維持します。
より深く理解するために、SAHI の主な機能 についてお読みください。
YOLO26とSAHIを使用した大規模推論プロジェクトはどのように処理すればよいですか?#
YOLO26とSAHIを使用した大規模推論プロジェクトを処理するには、以下のベストプラクティスに従ってください。
- 必要なライブラリのインストール: ultralyticsとsahiの最新バージョンがインストールされていることを確認します。
- スライス推論の設定: プロジェクト固有の最適なスライス寸法とオーバーラップ率を決定します。
- バッチ予測の実行: SAHIの機能を使用して画像ディレクトリに対するバッチ予測を実行し、効率を向上させます。
バッチ予測の例:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="path/to/yolo26n.pt",
model_device="cpu", # or 'cuda:0'
model_confidence_threshold=0.4,
source="path/to/dir",
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)より詳細な手順については、バッチ予測 に関するセクションをご覧ください。

