コンテンツにスキップ

Ultralytics ドキュメント: SAHIとYOLO26を用いたスライス推論

Colabでスライス推論用のSAHIを開く

UltralyticsのYOLO26とSAHI (Slicing Aided Hyper Inference) の使用方法に関するドキュメントへようこそ。この包括的なガイドは、YOLO26とSAHIを実装するために必要なすべての重要な知識を提供することを目的としています。SAHIとは何か、なぜスライス推論が大規模アプリケーションにとって重要なのか、そしてこれらの機能をYOLO26と統合してオブジェクトdetect性能を向上させる方法について深く掘り下げていきます。

SAHIによる小規模物体向けタイル型推論

SAHI入門

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



見る: Ultralytics YOLO26を用いたSAHI (Slicing Aided Hyper Inference) による推論

SAHIの主な機能

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

Sliced Inferenceとは何ですか?

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

Sliced Inferenceの利点

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

  • 検出品質の維持: 各スライスは独立して処理されるため、スライスが対象物をキャプチャするのに十分な大きさであれば、物体検出の品質が低下することはありません。

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

SAHIなしのYOLO26SAHIありのYOLO26
SAHIなしのYOLO26SAHIありのYOLO26

インストールと準備

インストール

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

pip install -U ultralytics sahi

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

必要なモジュールをインポートし、YOLO26モデルといくつかのテスト画像をダウンロードする方法は次のとおりです。

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo26n_model

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_model(model_path)

# 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による標準推論

モデルのインスタンス化

オブジェクトdetectのためにYOLO26モデルをこのようにインスタンス化できます。

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="ultralytics",
    model_path=model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

標準予測の実行

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

from sahi.predict import get_prediction
from sahi.utils.cv import read_image

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result_with_np_image = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

結果の可視化

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

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

YOLO26によるスライス推論

スライスディメンションとオーバーラップ率を指定して、スライス推論を実行します。

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

予測結果の処理

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

これで、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リポジトリをご覧ください。

よくある質問

オブジェクトdetectにおけるスライス推論のために、YOLO26をSAHIとどのように統合できますか?

Ultralytics YOLO26とSAHI (Slicing Aided Hyper Inference) を統合してスライス推論を行うことで、高解像度画像を管理しやすいスライスに分割し、オブジェクトdetectタスクを最適化します。このアプローチにより、メモリ使用量が改善され、高いdetect精度が保証されます。開始するには、UltralyticsとSAHIライブラリをインストールする必要があります。

pip install -U ultralytics sahi

次に、YOLO26モデルとテスト画像をダウンロードします。

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo26n_model

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

より詳細な手順については、Sliced Inferenceガイドを参照してください。

大規模画像でのオブジェクトdetectにSAHIとYOLO26を使用するべき理由は何ですか?

大規模画像でのオブジェクトdetectにUltralytics YOLO26とSAHIを使用することには、いくつかの利点があります。

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

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

YOLO26とSAHIを使用する際に、予測結果を可視化できますか?

はい、YOLO26とSAHIを使用する際に予測結果を可視化できます。結果をエクスポートして可視化する方法は次のとおりです。

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

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

SAHIはYOLO26のオブジェクトdetectを改善するためにどのような機能を提供しますか?

SAHI (Slicing Aided Hyper Inference) は、オブジェクト detect 用の Ultralytics YOLO26 を補完するいくつかの機能を提供します。

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

より深く理解するには、SAHIの主要な機能についてお読みください。

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

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

  1. 必要なライブラリのインストール: ultralyticsとsahiの最新バージョンがインストールされていることを確認してください。
  2. Sliced Inferenceの構成: 特定のプロジェクトに最適なスライスディメンションとオーバーラップ率を決定します。
  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,
)

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



📅 2年前に作成 ✏️ 7日前に更新
glenn-jocherRizwanMunawarpderrengerCoderUniUltralyticsAssistantMatthewNoyce

コメント