Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics Docs: YOLO26とSAHIを使用したスライス推論#

Open SAHI for Sliced Inference In Colab

Ultralyticsドキュメントへようこそ。ここでは、YOLO26をSAHI(Slicing Aided Hyper Inference)で使用する方法を解説します。この包括的なガイドは、YOLO26と併用してSAHIを実装するために必要な知識を提供することを目的としています。SAHIとは何か、大規模アプリケーションでスライス推論がなぜ重要なのか、そしてこれらの機能をYOLO26に統合して物体検出性能を向上させる方法について詳しく説明します。

SAHI tiled inference for small objects

Link to this sectionSAHIの紹介#

SAHI(Slicing Aided Hyper Inference)は、大規模画像や高解像度画像向けに物体検出アルゴリズムを最適化するために設計された革新的なライブラリです。その中心的な機能は、画像を扱いやすいスライスに分割し、各スライスで物体検出を実行した後、結果を繋ぎ合わせることにあります。SAHIはYOLOシリーズを含むさまざまな物体検出モデルと互換性があり、計算リソースの最適化を確保しながら柔軟性を提供します。



Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀

Link to this sectionSAHIの主な特徴#

  • シームレスな統合: SAHIはYOLOモデルと簡単に統合できるため、コードを大幅に変更することなく、スライスと検出を開始できます。
  • リソース効率: 大きな画像を小さなパーツに分割することで、SAHIはメモリ使用量を最適化し、リソースが限られたハードウェアでも高品質な検出を実行可能にします。
  • 高い精度: SAHIは、ステッチングプロセス中に重なり合う検出ボックスをマージするインテリジェントなアルゴリズムを採用することで、検出精度を維持します。

Link to this sectionスライス推論とは#

スライス推論とは、大規模画像や高解像度画像を小さなセグメント(スライス)に分割し、これらのスライスに対して物体検出を行い、最後にスライスを再構成して元の画像上の物体位置を特定する手法を指します。この手法は、計算リソースが限られている場合や、メモリの問題を引き起こす可能性のある極めて高解像度な画像を扱う場合に非常に有効です。

Link to this sectionスライス推論の利点#

  • 計算負荷の軽減: 画像スライスが小さいため処理が高速化され、メモリ消費も抑えられるため、低スペックなハードウェアでも円滑な動作が可能になります。

  • 検出品質の維持: 各スライスは独立して扱われるため、対象物を捉えるのに十分なスライスサイズであれば、物体検出の品質は低下しません。

  • 拡張性の向上: この手法により、画像サイズや解像度が異なる場合でも物体検出を容易に拡張できるため、衛星画像から医療診断まで、幅広いアプリケーションに最適です。

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

Link to this sectionインストールと準備#

Link to this sectionインストール#

まずは、最新バージョンのSAHIとUltralyticsをインストールします。

pip install -U ultralytics sahi

Link to this sectionモジュールのインポートとリソースのダウンロード#

テスト画像をダウンロードする方法は以下の通りです。

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",
)

Link to this sectionYOLO26を使用した標準推論#

Link to this sectionモデルのインスタンス化#

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'
)

Link to this section標準予測の実行#

画像パスを使用して標準推論を実行します。

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)

Link to this section結果の可視化#

予測されたバウンディングボックスとマスクをエクスポートして可視化します。

from PIL import Image

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

Link to this sectionYOLO26を使用したスライス推論#

スライスサイズとオーバーラップ率を指定してスライス推論を実行します。

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()

Link to this section予測結果の処理#

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]
追加のエクスポート形式

PredictionResult can also convert detections to imantics and FiftyOne objects with result.to_imantics_annotations() and result.to_fiftyone_detections(). These methods require the respective packages, so install them first with pip install imantics fiftyone.

Link to this sectionバッチ予測#

画像ディレクトリに対するバッチ予測は以下の通りです。

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を使用する準備が整いました。

Link to this section引用と謝辞#

研究や開発業務で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リポジトリをご覧ください。

Link to this sectionよくある質問 (FAQ)#

Link to this section物体検出のスライス推論のために、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",
)

詳細な手順については、スライス推論ガイドを参照してください。

Link to this section大規模画像の物体検出にYOLO26とSAHIを使用すべき理由は何ですか?#

大規模画像の物体検出にUltralytics YOLO26とSAHIを併用することには、いくつかの利点があります。

  • 計算負荷の軽減: 小さなスライスは処理が高速でメモリ消費も少ないため、リソースの限られたハードウェアでも高品質な検出を実行できます。
  • 検出精度の維持: SAHIはインテリジェントなアルゴリズムを使用して重なり合うボックスをマージし、検出品質を維持します。
  • 拡張性の向上: 画像サイズや解像度に応じて物体検出タスクを拡張できるため、衛星画像解析や医療診断など、さまざまなアプリケーションに最適です。

スライス推論の利点の詳細については、ドキュメントをご覧ください。

Link to this sectionYOLO26と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()

このコマンドを実行すると、可視化された予測結果が指定したディレクトリに保存され、画像をロードしてノートブックやアプリケーションで確認できます。詳細なガイドについては、標準推論セクションを確認してください。

Link to this sectionSAHIはYOLO26の物体検出を改善するためにどのような機能を提供しますか?#

SAHI(Slicing Aided Hyper Inference)は、Ultralytics YOLO26の物体検出を補完するいくつかの機能を提供します。

  • シームレスな統合: SAHIはYOLOモデルと容易に統合でき、コードの修正を最小限に抑えられます。
  • リソース効率: 大きな画像を小さなスライスに分割し、メモリ使用量と速度を最適化します。
  • 高い精度: ステッチングプロセス中に重なり合う検出ボックスを効果的にマージすることで、高い検出精度を維持します。

詳細については、SAHIの主な特徴をご覧ください。

Link to this sectionYOLO26とSAHIを使用した大規模推論プロジェクトはどのように処理すればよいですか?#

YOLO26とSAHIを使用した大規模推論プロジェクトを処理するには、以下のベストプラクティスに従ってください。

  1. 必要なライブラリのインストール: ultralyticsとsahiの最新バージョンがインストールされていることを確認します。
  2. スライス推論の設定: プロジェクト固有の最適なスライス寸法とオーバーラップ率を決定します。
  3. バッチ予測の実行: 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,
)

詳細な手順については、バッチ予測のセクションをご覧ください。

コメント