Ultralytics ドキュメントYOLO11 、スライス推論にSAHIを使用する
Ultralytics SAHI(Slicing Aided Hyper Inference)とYOLO11 の使い方のドキュメントへようこそ。この包括的なガイドは、YOLO11 とともに SAHI を実装するために必要なすべての重要な知識を提供することを目的としています。SAHIとは何か、なぜスライス推論が大規模なアプリケーションに不可欠なのか、そしてどのようにこれらの機能をYOLO11 と統合し、オブジェクト検出性能を向上させるかについて深く掘り下げます。
SAHIの紹介
SAHI (Slicing Aided Hyper Inference)は、大規模かつ高解像度の画像に対する物体検出アルゴリズムを最適化するために設計された革新的なライブラリです。SAHIのコア機能は、画像を管理可能なスライスに分割し、各スライスに対して物体検出を実行し、結果をつなぎ合わせることにあります。SAHIは、YOLO シリーズを含む様々な物体検出モデルと互換性があるため、計算リソースの最適利用を保証しながら柔軟性を提供します。
見るんだ: SAHI(スライシング支援超推論)を使った推論Ultralytics YOLO11
SAHIの主な特徴
- シームレスな統合:SAHIは、YOLO モデルと簡単に統合できます。つまり、多くのコードを変更することなく、スライスと検出を開始できます。
- リソース効率:大きな画像を小さなパーツに分割することで、SAHIはメモリ使用量を最適化し、限られたリソースのハードウェアで高品質の検出を実行できます。
- 高精度:SAHIは、スティッチング処理中に重複する検出ボックスをマージするスマートなアルゴリズムを採用することで、検出精度を維持しています。
スライス推論とは?
スライス推論とは、大きな画像や高解像度の画像をより小さなセグメント(スライス)に分割し、そのスライス上でオブジェクト検出を行い、スライスを再コンパイルして元の画像上のオブジェクトの位置を再構築することです。このテクニックは、計算リソースが限られている場合や、メモリの問題につながるような非常に高解像度の画像を扱う場合に非常に有効です。
スライス推論の利点
-
計算負荷の軽減:小さな画像スライスは処理速度が速く、メモリ消費量も少ないため、ローエンドのハードウェアでもスムーズな操作が可能です。
-
検出品質の維持:各スライスは独立して処理されるため、対象物を捉えるのに十分な大きさのスライスであれば、物体検出の品質が低下することはない。
-
拡張性の向上:この技術により、さまざまなサイズや解像度の画像に対して、対象物の検出をより簡単に拡大縮小できるようになり、衛星画像から医療診断まで、幅広い用途に最適です。
YOLO11 SAHIなし | YOLO11 SAHIと |
---|---|
インストールと準備
インストール
まずは、SAHIとUltralytics の最新バージョンをインストールしてください:
モジュールのインポートとリソースのダウンロード
ここでは、必要なモジュールをインポートし、YOLO11 モデルといくつかのテスト画像をダウンロードする方法を説明します:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_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",
)
標準推論YOLO11
モデルをインスタンス化する
YOLO11 、このようにオブジェクト検出用のモデルをインスタンス化することができる:
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
# 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)
結果を可視化する
予測されたバウンディングボックスとマスクをエクスポートして視覚化します:
スライス推論YOLO11
スライス寸法とオーバーラップ比を指定してスライス推論を行う:
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/yolo11n.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,
)
以上である!これで、YOLO11 、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リポジトリをご覧ください。
よくあるご質問
物体検出におけるスライス推論のために、YOLO11 をSAHIと統合するには?
Ultralytics YOLO11 を SAHI (Slicing Aided Hyper Inference) と統合してスライス推論を行うことで、高解像度画像のオブジェクト検出タスクを、管理可能なスライスに分割することで最適化します。このアプローチは、メモリ使用量を改善し、高い検出精度を保証します。使い始めるには、ultralytics と sahi ライブラリをインストールする必要があります:
次に、YOLO11 モデルとテスト画像をダウンロードします:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_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",
)
より詳細な手順については、スライス推論ガイドを参照してください。
なぜSAHIとYOLO11 、大きな画像の物体検出に使う必要があるのか?
SAHI をUltralytics YOLO11 と併用することで、大きな画像の物体検出にいくつかの利点がある:
- 計算負荷の軽減:小さなスライスは処理速度が速く、メモリ消費量も少ないため、限られたリソースのハードウェアで高品質の検出を実行することが可能です。
- 検出精度の維持:SAHIは、インテリジェントなアルゴリズムを使用して、重複するボックスをマージし、検出品質を維持します。
- 拡張性の向上:異なる画像サイズや解像度で物体検出タスクをスケーリングすることで、SAHIは衛星画像解析や医療診断などのさまざまなアプリケーションに最適です。
スライス推論の利点については、ドキュメントをご覧ください。
SAHIでYOLO11 、予測結果を可視化できますか?
はい、YOLO11 を SAHI と一緒に使用すると、予測結果を視覚化できます。結果をエクスポートして可視化する方法は以下の通りです:
from IPython.display import Image
result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")
This command will save the visualized predictions to the specified directory, and you can then load the image to view it in your notebook or application. For a detailed guide, check out the Standard Inference section.
YOLO11 オブジェクト検出を改善するために、SAHIはどのような機能を提供していますか?
SAHI (Slicing Aided Hyper Inference) は、Ultralytics YOLO11 、物体検出を補完するいくつかの機能を提供する:
- シームレスな統合:SAHIは、YOLO モデルと簡単に統合でき、最小限のコード調整で済みます。
- リソース効率:大きな画像を小さなスライスに分割し、メモリ使用量と速度を最適化します。
- 高精度:スティッチングの過程で重なり合った検出ボックスを効果的にマージすることで、SAHIは高い検出精度を維持します。
詳しくは、SAHIの主な特徴をご覧ください。
YOLO11 、SAHIを使った大規模な推論プロジェクトをどのように扱えばいいのか?
YOLO11 、SAHIを使用して大規模な推論プロジェクトを処理するには、以下のベストプラクティスに従ってください:
- 必要なライブラリをインストールする:ultralytics と sahi の最新版があることを確認してください。
- スライス推論の設定特定のプロジェクトに最適なスライス寸法とオーバーラップ比率を決定します。
- バッチ予測の実行:SAHIの機能を使用して、画像のディレクトリに対してバッチ予測を実行し、効率を向上させます。
バッチ予測の例:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="path/to/yolo11n.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,
)
より詳細な手順については、バッチ予測のセクションをご覧ください。