Skip to main content

Ultralytics Docs: YOLO26とSAHIを用いたスライス推論の利用

Open SAHI for Sliced Inference In Colab

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

SAHI tiled inference for small objects

SAHIの紹介

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



Watch: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLO26

SAHIの主な特徴

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

スライス推論とは何か?

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

スライス推論の利点

  • 計算負荷の低減: 小さな画像スライスは処理が高速でメモリ消費も少ないため、ローエンドのハードウェアでもよりスムーズな動作が可能です。

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

  • 拡張性の向上: この手法により、さまざまなサイズや解像度の画像にわたって物体検出を容易にスケーリングできるため、衛星画像から医療診断に至るまで、幅広い用途に理想的です。

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 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)

結果の可視化

予測されたBBoxとマスクをエクスポートして可視化します:

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, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[: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は重なり合うボックスをマージするインテリジェントなアルゴリズムを使用し、検出品質を保持します。
  • 拡張性の向上: さまざまな画像サイズや解像度にわたって物体検出タスクを拡張できるため、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は高い検出精度を維持します。

より深い理解を得るには、SAHIの主な特徴.

をお読みください。

YOLO26とSAHIを使用した大規模推論プロジェクトをどのように管理すればよいですか?

  1. YOLO26とSAHIを使用した大規模推論プロジェクトを管理するには、以下のベストプラクティスに従ってください:必要なライブラリのインストール
  2. : ultralyticsとsahiの最新バージョンを使用していることを確認してください。スライス推論の設定
  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,
)

バッチ予測の例:バッチ予測.

コメント