高解像度タイル分割
tile=True を使用すると、高解像度画像をモデル入力サイズにリサイズする前に、重複するウィンドウに分割して処理できます。これにより、画像全体をリサイズすると失われる可能性のある小さな物体のディテールを保持できます。追加パッケージは不要です。
タイル分割では、通常の学習、検証、予測パイプラインを使用します。予測では、元画像ごとに Results オブジェクトが1つ返されます。検証では、元のアノテーションと照合して評価する前に予測を統合し、学習損失はタイルごとに計算します。
使用方法#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(data="aerial.yaml", tile=True, imgsz=640)
metrics = model.val(data="aerial.yaml", tile=True, imgsz=640)
results = model.predict("large-image.tif", tile=640, imgsz=640, batch=8)yolo predict model=yolo26n.pt source=large-image.tif tile=640 imgsz=640 batch=8tile=True は imgsz をウィンドウサイズとして使用します。tile=1024 などの正の整数を指定すると、imgsz とは独立してウィンドウサイズを設定できます。tile=False がデフォルトです。ウィンドウは20%重複し、最後のウィンドウは画像の境界に揃えられます。小さな画像では、画像全体を覆う単一のウィンドウが使用されます。
batch は、予測中にモデルが同時に処理するタイルの数を制御します。既存のバックエンドが、最後の不完全なバッチを含む固定エクスポートバッチサイズを処理します。エクスポート済みモデルは通常の入力グラフを保持し、タイル分割はPythonの予測パイプラインで実行されます。
動画の場合は、メモリ使用量を一定範囲に保つために結果をストリーム出力し、既存の予測オプションを使って結果を保存または表示します。
for result in model.predict("video.mp4", tile=640, stream=True, save=True):
print(result.boxes)yolo predict model=yolo26n.pt source=video.mp4 tile=640 save=Trueタスクとモデル#
| タスク | 画像全体の出力 |
|---|---|
| Detect | iou、agnostic_nms、max_det を使用して、ボックスをソース座標に戻し、重複を抑制します。 |
| Segment | 同じボックス選択を適用し、選択したマスクをソース画像上に配置します。 |
| セマンティック | クラスマップをつなぎ合わせ、重複領域では最も中央に位置するタイルを選択します。 |
| 深度 | 各タイルの中心に近づくほど重みを大きくして、重複する深度マップをブレンドします。 |
| 分類 | タイルの確率を平均します。 |
| 姿勢推定 | ボックス選択を適用し、対応するキーポイントを元に戻します。 |
| OBB | 回転ボックスを元に戻し、回転NMSを使用します。 |
共有パイプラインは、YOLOタスクモデル、YOLO-World、YOLOE、RT-DETR、FastSAMの予測に対応します。YOLOEのビジュアルプロンプトは元画像全体から埋め込まれ、各タイルで再利用されます。FastSAMでは、マスクをソース座標に統合した後、プロンプトに基づいてマスクを選択します。SAM予測器は独自のプロンプトおよびクロップ生成パイプラインを保持しており、tile は受け付けません。
トレーニング中、ボックスとポリゴンは各ウィンドウに合わせてクロップされ、OBBのクリッピングでは向きが維持され、ウィンドウ外のキーポイントは可視性を失います。元のバウンディングボックス面積の10%未満しか残っていないインスタンスは削除されます。空のウィンドウは負例として保持されます。セマンティックターゲットと深度ターゲットには、画像と同じウィンドウが使用されます。
パフォーマンスと品質#
- タイル分割では、画像全体を使った推論よりも多くのモデルフォワード処理が実行されます。利用可能なメモリの範囲内で必要なディテールを保持できる、最大のタイルサイズとバッチサイズを選択してください。
- 連続するタイルでは、デコード済みのソース画像を再利用します。
cache="ram"を使用すると、学習時にソース画像を一度だけ保存します。cache="disk"は既存の画像キャッシュを使用します。学習ではタイルをシャッフルするため、圧縮された大きなソース画像ではキャッシュが特に役立ちます。 - ソース画像と同じサイズのマスクや高密度マップには、元画像のサイズに比例したメモリが引き続き必要です。
max_detは、保持するインスタンスマスクの数を制限します。 - タイル分割ではグローバルなコンテキストが失われます。特に、タイルごとの出力が全体として一致しない場合がある分類や深度については、独自のデータで精度を検証してください。
- 重複抑制では予測全体を選択します。別々に見えている断片から物体を再構成することはありません。重複によって境界での切れを減らせますが、タイルより大きな物体では完全には防げません。
- テンソルソース、
embed、およびvisualizeはサポートされていません。トラッキングは、ReID特徴を含め、ソースフレームごとに1回、統合済みの予測に対して実行されます。
コメント
質問したり、結果を共有したり、ほかの人をサポートしたりできます。