Ultralytics YOLO11を使用した距離計算
距離の計算とは何ですか?
2つのオブジェクト間のギャップを測定することは、指定された空間内での距離計算として知られています。Ultralytics YOLO11の場合、ユーザーによって強調表示されたバウンディングボックスの距離を計算するために、バウンディングボックスの中心が使用されます。
見る: Ultralytics YOLO11を使用した距離計算
ビジュアル
Ultralytics YOLO11を使用した距離計算 |
---|
![]() |
距離計算の利点
- ローカリゼーションの精度: コンピュータビジョンタスクにおける正確な空間位置特定を強化します。
- サイズ推定: より良い状況理解のために、オブジェクトのサイズを推定できます。
- シーン理解: 自動運転車や監視システムなどのアプリケーションにおける、より良い意思決定のために3Dシーンの理解を向上させます。
- Collision Avoidance: 移動物体の間の距離を監視することにより、潜在的な衝突を検出するシステムを可能にします。
- 空間分析: 監視対象環境内でのオブジェクトの関係と相互作用の分析を容易にします。
距離の計算
- 距離を計算するには、左マウスボタンで任意の2つのバウンディングボックスをクリックします
- マウスの右クリックですべての描画されたポイントが削除されます
- マウスの左クリックを使用してポイントを描画できます
距離は推定値です
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.
Ultralytics YOLOを使用した距離の計算
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo11n.pt", # path to the YOLO11 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
DistanceCalculation()
引数
の表を以下に示します。 DistanceCalculation
引数:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLOモデルファイルへのパス。 |
さまざまなものを利用することもできます。 track
の引数 DistanceCalculation
ソリューション。
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
使用する追跡アルゴリズムを指定します。例: bytetrack.yaml または botsort.yaml . |
conf |
float |
0.3 |
検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。 |
iou |
float |
0.5 |
Intersection over Union (IoU) の閾値を設定して、重複する検出結果をフィルタリングします。 |
classes |
list |
None |
クラスインデックスで結果をフィルタリングします。例: classes=[0, 2, 3] 指定されたクラスのみを追跡します。 |
verbose |
bool |
True |
追跡結果の表示を制御し、追跡されたオブジェクトの視覚的な出力を提供します。 |
device |
str |
None |
推論に使用するデバイスを指定します(例: cpu , cuda:0 または 0 )。モデル実行のために、CPU、特定のGPU、またはその他の計算デバイスを選択できます。 |
さらに、以下の可視化引数を使用できます:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
show |
bool |
False |
もし True )は、アノテーションが付けられた画像またはビデオをウィンドウに表示します。開発またはテスト中に、視覚的なフィードバックを即座に得るのに役立ちます。 |
line_width |
None or int |
None |
バウンディングボックスの線の太さを指定します。もし None 場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。 |
show_conf |
bool |
True |
ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。 |
show_labels |
bool |
True |
検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。 |
実装の詳細
The DistanceCalculation
クラスは、ビデオフレーム全体のオブジェクトを追跡し、選択されたバウンディングボックスの重心間のユークリッド距離を計算することによって機能します。2つのオブジェクトをクリックすると、ソリューションは次のようになります。
- 選択されたバウンディングボックスの重心(中心点)を抽出します
- これらの重心間のユークリッド距離をピクセル単位で計算します。
- オブジェクト間の接続線とともに、フレーム上の距離を表示します。
この実装では、以下を使用します。 mouse_event_for_distance
メソッドを使用してマウス操作を処理し、ユーザーが必要に応じてオブジェクトを選択したり、選択をクリアしたりできるようにします。ザ・ process
メソッドは、フレームごとの処理、オブジェクトの追跡、および距離の計算を処理します。
アプリケーション
YOLO11を使用した距離の計算には、数多くの実用的な応用があります。
- 小売分析: 製品に対する顧客の近接性を測定し、店舗レイアウトの有効性を分析します。
- 産業安全: 作業員と機械の間の安全な距離を監視します
- 交通管理: 車間距離を分析し、テールゲートを検出します
- スポーツ分析: 選手、ボール、および主要なフィールドポジション間の距離を計算します
- 医療: 待合室での適切な距離の確保や、患者の移動の監視。
- ロボティクス: ロボットが障害物や人から適切な距離を維持できるようにします。
よくある質問
Ultralytics YOLO11を使用してオブジェクト間の距離を計算するにはどうすればよいですか?
オブジェクト間の距離を計算するには、以下を使用します。 Ultralytics YOLO11、検出されたオブジェクトのバウンディングボックスの中心を特定する必要があります。このプロセスでは、 DistanceCalculation
Ultralytics' のクラス solutions
モジュールと、モデルのトラッキング出力を使用して距離を計算します。
Ultralytics YOLO11で距離計算を使用する利点は何ですか?
Ultralytics YOLO11 で距離計算を使用すると、いくつかの利点があります。
- ローカリゼーションの精度: オブジェクトの正確な空間位置を提供します。
- サイズ推定: 物理的なサイズを推定するのに役立ち、より良い状況理解に貢献します。
- シーン理解: 3Dシーンの理解を深め、自動運転や監視などのアプリケーションにおける意思決定の改善を支援します。
- リアルタイム処理: 実行中に計算を行うため、ライブビデオ分析に適しています。
- 統合機能: オブジェクト追跡や速度推定など、他のYOLO11ソリューションとシームレスに連携します。
Ultralytics YOLO11を使用して、リアルタイムビデオストリームで距離計算を実行できますか?
はい、Ultralytics YOLO11を使用して、リアルタイムビデオストリームで距離計算を実行できます。このプロセスでは、ビデオフレームをキャプチャします。 OpenCV、YOLO11を実行することで 物体検出、そして以下を使用します。 DistanceCalculation
連続するフレーム内のオブジェクト間の距離を計算するクラス。詳細な実装については、こちらをご覧ください。 ビデオストリームの例.
Ultralytics YOLO11を使用して距離計算中に描画されたポイントを削除するにはどうすればよいですか?
Ultralytics YOLO11を使用した距離計算中に描画された点を削除するには、マウスの右クリックを使用します。この操作により、描画したすべての点がクリアされます。詳細については、距離計算の例の注記セクションを参照してください。
Ultralytics YOLO11でDistanceCalculationクラスを初期化するための主要な引数には何がありますか?
初期化するための重要な引数 DistanceCalculation
Ultralytics YOLO11 のクラスには以下が含まれます:
model
: YOLO11モデルファイルへのパス。tracker
: 使用する追跡アルゴリズム(デフォルトは 'botsort.yaml')。conf
: 検出の信頼度閾値。show
: 出力を表示するためのフラグ。
網羅的なリストとデフォルト値については、DistanceCalculationの引数を参照してください。