Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO26による距離計算#

Link to this section距離計算とは何ですか?#

距離計算は、画像やビデオフレーム内の検出された2つのオブジェクト間の空間を測定するプロセスです。Ultralytics YOLO26の場合、ユーザーが強調表示したバウンディングボックスの距離を計算するために、バウンディングボックスの重心が使用されます。



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Link to this section視覚資料#

Ultralytics YOLO26による距離計算
Ultralytics YOLO26 距離計算

Link to this section距離計算の利点#

  • ローカリゼーション 精度: コンピュータビジョンタスクにおける正確な空間配置を強化します。
  • サイズ推定: オブジェクトサイズの推定を可能にし、文脈理解を向上させます。
  • シーン理解: 自動運転車や監視システムなどのアプリケーションにおいて、より良い意思決定のために3Dシーンの理解を改善します。
  • 衝突回避: 移動物体間の距離を監視することで、システムが潜在的な衝突を検出できるようにします。
  • 空間分析: 監視環境内でのオブジェクトの関係や相互作用の分析を容易にします。
距離計算
  • マウスの左ボタンで任意の2つのバウンディングボックスをクリックすると、距離が計算されます。
  • マウスの右ボタンを使用して、描画されたすべてのポイントを削除します。
  • フレーム内の任意の場所を左クリックして、新しいポイントを追加します。
距離は推定値です

距離は推定値であり、深さ情報が欠如している2Dデータを使用して計算されるため、完全に正確ではない場合があります。

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="yolo26n.pt",  # path to the YOLO26 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

Link to this sectionDistanceCalculation() 引数#

DistanceCalculation 引数の表は以下の通りです:

引数デフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパス。

You can also make use of various track arguments in the DistanceCalculation solution.

引数デフォルト説明
trackerstr'botsort.yaml'使用するトラッキングアルゴリズムを指定します(例: bytetrack.yamlbotsort.yaml)。
conffloat0.1検出の信頼度しきい値を設定します。値を低くするとより多くのオブジェクトが追跡されますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出をフィルタリングするための Intersection over Union (IoU) しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。たとえば、 classes=[0, 2, 3] は指定されたクラスのみを追跡します。
verboseboolTrue追跡結果の表示を制御し、追跡対象オブジェクトの視覚的出力を提供します。
devicestrNone推論用のデバイスを指定します(例: cpucuda:0 または 0)。ユーザーはモデル実行のために CPU、特定の GPU、または他の計算デバイスを選択できます。

さらに、以下の視覚化引数も利用可能です:

引数デフォルト説明
showboolFalseTrue の場合、注釈付きの画像や動画をウィンドウに表示します。開発やテスト中の即時的な視覚フィードバックに役立ちます。
line_widthint or NoneNoneバウンディングボックスの線の幅を指定します。 None の場合、線の幅は画像サイズに基づいて自動的に調整されます。明瞭さのための視覚的なカスタマイズを提供します。
show_confboolTrueラベルとともに各検出の信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察を提供します。
show_labelsboolTrue視覚的出力において各検出のラベルを表示します。検出されたオブジェクトの即時的な理解を提供します。

Link to this section実装の詳細#

DistanceCalculation クラスは、ビデオフレーム全体でオブジェクトを追跡し、選択されたバウンディングボックスの重心間のユークリッド距離を計算することで機能します。2つのオブジェクトをクリックすると、このソリューションは以下の処理を行います:

  1. 選択したバウンディングボックスの重心(中心点)を抽出する
  2. ピクセル単位でこれらの重心間のユークリッド距離を計算する
  3. オブジェクト間に接続線を描画して、フレーム上に距離を表示する

この実装では、 mouse_event_for_distance メソッドを使用してマウス操作を処理し、ユーザーがオブジェクトを選択したり、必要に応じて選択を解除したりできるようにしています。 process メソッドは、フレームごとの処理、オブジェクトの追跡、および距離の計算を処理します。

Link to this sectionアプリケーション#

YOLO26による距離計算には、数多くの実用的なアプリケーションがあります:

  • 小売分析: 製品への顧客の接近距離を測定し、店舗レイアウトの効果を分析する
  • 産業安全: 作業員と機械間の安全距離を監視する
  • 交通管理: 車両間の間隔を分析し、あおり運転を検出する
  • スポーツ分析: 選手、ボール、および主要なフィールド位置間の距離を計算する
  • ヘルスケア: 待合エリアでの適切な距離を確保し、患者の移動を監視する
  • ロボット工学: ロボットが障害物や人々から適切な距離を維持できるようにする

Link to this sectionFAQ#

Link to this sectionUltralytics YOLO26を使用してオブジェクト間の距離を計算するにはどうすればよいですか?#

To calculate distances between objects using Ultralytics YOLO26, you need to identify the bounding box centroids of the detected objects. This process involves initializing the DistanceCalculation class from Ultralytics' solutions module and using the model's tracking outputs to calculate the distances.

Link to this sectionUltralytics YOLO26で距離計算を使用する利点は何ですか?#

Ultralytics YOLO26で距離計算を使用することには、いくつかの利点があります:

  • ローカリゼーション精度: オブジェクトの正確な空間配置を提供します。
  • サイズ推定: 物理的なサイズを推定するのに役立ち、より良い文脈理解に貢献します。
  • シーン理解: 3Dシーンの理解を強化し、自動運転や監視などのアプリケーションでの意思決定を改善します。
  • リアルタイム処理: 計算をオンザフライで実行するため、ライブビデオ分析に適しています。
  • 統合機能: オブジェクト追跡速度推定 などの他のYOLO26ソリューションとシームレスに連携します。

Link to this sectionUltralytics YOLO26を使用してリアルタイムビデオストリームで距離計算を実行できますか?#

はい、Ultralytics YOLO26を使用してリアルタイムビデオストリームで距離計算を実行できます。このプロセスには、OpenCV を使用してビデオフレームをキャプチャし、YOLO26 オブジェクト検出 を実行し、 DistanceCalculation クラスを使用して連続するフレーム内のオブジェクト間の距離を計算することが含まれます。詳細な実装については、 ビデオストリームの例 を参照してください。

Link to this sectionUltralytics YOLO26を使用した距離計算中に描画されたポイントを削除するにはどうすればよいですか?#

Ultralytics YOLO26での距離計算中に描画されたポイントを削除するには、マウスの右クリックを使用できます。この操作により、描画したすべてのポイントが消去されます。詳細については、 距離計算の例 のメモセクションを参照してください。

Link to this sectionUltralytics YOLO26でDistanceCalculationクラスを初期化するための主要な引数は何ですか?#

Ultralytics YOLO26で DistanceCalculation クラスを初期化するための主要な引数は以下の通りです:

  • model: YOLO26モデルファイルへのパス。
  • tracker: 使用する追跡アルゴリズム(デフォルトは 'botsort.yaml')。
  • conf: 検出の信頼度しきい値。
  • show: 出力を表示するためのフラグ。

網羅的なリストとデフォルト値については、 DistanceCalculationの引数 を参照してください。

コメント