Ultralytics YOLO27:
Get Started

スライス推論でYOLO26を使用する#

Open SAHI for Sliced Inference In Colab

このガイドでは、YOLO26でSAHI(スライス支援型ハイパー推論)を使用する方法を説明します。SAHIとは何か、大規模なアプリケーションでスライス推論が重要な理由、パフォーマンスを高めるためにこれらの機能をYOLO26と統合する方法を詳しく解説します。物体検出のパフォーマンスを高める方法も紹介します。

SAHIの概要#

SAHI(スライス支援型ハイパー推論)は、大規模かつ高解像度の画像に対する物体検出アルゴリズムを最適化するために設計された革新的なライブラリです。画像を扱いやすいサイズのスライスに分割し、各スライスで物体検出を実行した後、結果を再び結合することを中核機能としています。SAHIはYOLOシリーズを含むさまざまな物体検出モデルと互換性があり、柔軟性を提供しながらコンピューティングリソースを効率的に活用できます。



視聴: Ultralytics YOLO26でSAHIを使用して小さな物体を検出する方法 | スライス支援型ハイパー推論 🚀

SAHIの主な機能#

  • シームレスな統合:SAHIはYOLOモデルと簡単に統合できるため、大幅なコード変更をせずにスライスと検出を開始できます。
  • リソース効率:大きな画像を小さな部分に分割することでメモリ使用量を最適化し、リソースが限られたハードウェアでも高品質な検出を実行できます。
  • 高い精度:SAHIは、結果を結合する際に重複する検出ボックスをスマートなアルゴリズムで統合し、検出精度を維持します。

スライス推論とは何ですか?#

スライス推論とは、大きな画像または高解像度の画像を小さなセグメント(スライス)に分割し、それぞれのスライスで物体検出を実行した後、スライスを再構成して元の画像上の物体の位置を復元する手法です。この技術は、コンピューティングリソースが限られている場合や、メモリの問題につながる可能性のある極めて高解像度の画像を扱う場合に非常に有効です。

スライス推論のメリット#

  • 計算負荷の軽減:小さな画像スライスは処理が速く、使用するメモリも少ないため、低性能なハードウェアでもスムーズに動作します。

  • 検出品質の維持:各スライスを個別に処理するため、対象物を捉えるのに十分な大きさがあれば、物体検出の品質は低下しません。

  • スケーラビリティの向上:この手法により、さまざまなサイズや解像度の画像に対して物体検出を簡単にスケールできます。そのため、衛星画像から医療診断まで、幅広い用途に適しています。

SAHIなしのYOLO26SAHIありのYOLO26
YOLO26 without SAHIYOLO26 with SAHI

インストールと準備#

インストール#

始めるには、SAHIとUltralyticsの最新バージョンをインストールします:

pip install -U ultralytics sahi

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

テスト画像をダウンロードする方法は次のとおりです:

from sahi.utils.file import download_from_url

# テスト画像をダウンロード
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",  # または '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

# 予測画像を開く
processed_image = Image.open("demo_data/prediction_visual.png")

# 予測画像を表示する
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,
)

# 結果をエクスポート
result.export_visuals(export_dir="demo_data/", hide_conf=True)

# 予測画像を開く
processed_image = Image.open("demo_data/prediction_visual.png")

# 予測画像を表示する
processed_image.show()

予測結果の処理#

SAHIはPredictionResultオブジェクトを提供しており、さまざまなアノテーション形式に変換できます:

# オブジェクトの予測リストにアクセスする
object_prediction_list = result.object_prediction_list

# COCOアノテーション形式とCOCO予測形式に変換する
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
その他のエクスポート形式

PredictionResultでは、result.to_imantics_annotations()とresult.to_fiftyone_detections()を使用して、検出結果をimanticsオブジェクトやFiftyOneオブジェクトに変換することもできます。これらのメソッドを使用するには、それぞれのパッケージが必要です。まずpip install imantics fiftyoneでインストールしてください。

バッチ予測#

画像ディレクトリ内のファイルをバッチ予測するには:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="yolo26n.pt",
    model_device="cpu",  # または '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リポジトリをご覧ください。

よくある質問#

  • スライス推論でUltralytics YOLO26とSAHI(スライス支援型ハイパー推論)を統合すると、高解像度画像を扱いやすいサイズのスライスに分割し、物体検出タスクを最適化できます。この方法により、メモリ使用量が改善され、高い検出精度を維持できます。まず、ultralyticsライブラリとsahiライブラリをインストールします:

    pip install -U ultralytics sahi

    次に、テスト画像をダウンロードします:

    from sahi.utils.file import download_from_url
    
    # テスト画像をダウンロード
    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",
    )

    詳しい手順については、スライス推論ガイドをご覧ください。

  • 大きな画像の物体検出にUltralytics YOLO26とSAHIを使用すると、次のようなメリットがあります:

    • 計算負荷の軽減:小さなスライスは処理が速く、使用するメモリも少ないため、リソースが限られたハードウェアでも高品質な検出を実行できます。
    • 検出精度の維持:SAHIは重複するボックスをインテリジェントなアルゴリズムで統合し、検出品質を維持します。
    • スケーラビリティの向上:画像のサイズや解像度に応じて物体検出タスクをスケールできるため、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(スライス支援型ハイパー推論)は、物体検出においてUltralytics YOLO26を補完する次のような機能を提供します:

    • シームレスな統合:SAHIはYOLOモデルと簡単に統合でき、コードの調整は最小限で済みます。
    • リソース効率:大きな画像を小さなスライスに分割することで、メモリ使用量と処理速度を最適化します。
    • 高い精度:SAHIは、結果を結合する際に重複する検出ボックスを効果的に統合し、高い検出精度を維持します。

    理解を深めるには、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",  # または '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,
    )

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

コメント