コンテンツにスキップ

Ultralytics YOLO26を使用したVisionEyeビューオブジェクトマッピング 🚀

VisionEye Object Mappingとは何ですか?

Ultralytics YOLO26 VisionEyeは、人間の目の観察精度をシミュレートし、コンピューターがオブジェクトを識別し特定する機能を提供します。この機能により、コンピューターは特定の視点から詳細を観察する人間の目のように、特定のオブジェクトを識別し、焦点を合わせることができます。

VisionEyeオブジェクトマッピングとYOLO

Ultralytics YOLOを使用したVisionEyeマッピング

# Monitor objects position with visioneye
yolo solutions visioneye show=True

# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"
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("visioneye_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo26n.pt",  # use any model that Ultralytics supports, e.g., YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
    vision_point=(50, 50),  # the point where VisionEye will view objects and draw tracks
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = visioneye(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

The vision_point タプルは、ピクセル座標における観察者の位置を表します。レンダリングされた光線が、オブジェクトが選択された視点とどのように関連しているかを正確に示せるように、カメラの視点に合わせて調整してください。

VisionEye 引数

の表を以下に示します。 VisionEye 引数:

引数種類デフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパス。
vision_pointtuple[int, int](20, 20)VisionEye Solutionを使用して、ビジョンがオブジェクトをtrackし、パスを描画するポイント。

さまざまなものを活用することもできます。 track 内の引数 VisionEye ソリューション:

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

さらに、以下に示すように、いくつかの視覚化引数がサポートされています。

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

VisionEyeの仕組み

VisionEyeは、フレーム内に固定された視点を確立し、この点から検出されたオブジェクトに線を引くことによって機能します。これは、人間の視覚が単一の視点から複数のオブジェクトに焦点を合わせる方法をシミュレートします。このソリューションは、オブジェクト追跡を使用して、フレーム間でオブジェクトの一貫した識別を維持し、観察者(視点)とシーン内のオブジェクトの空間的関係の視覚的表現を作成します。

The process VisionEyeクラスのメソッドは、いくつかの重要な操作を実行します。

  1. 入力画像からトラック(バウンディングボックス、クラス、マスク)を抽出します
  2. バウンディングボックスとラベルを描画するアノテーターを作成します
  3. 検出された各オブジェクトに対して、ボックスのラベルを描画し、視点からの視線を作成します。
  4. 追跡統計情報でアノテーションが付けられた画像を返します

このアプローチは、監視システム、自動ナビゲーション、インタラクティブなインスタレーションなど、空間認識とオブジェクトの関係の可視化を必要とするアプリケーションに特に役立ちます。

VisionEyeの応用

VisionEyeオブジェクトマッピングには、さまざまな業界にわたって多数の実用的なアプリケーションがあります:

  • セキュリティと監視: 固定カメラの位置から、関心のある複数のオブジェクトを監視します。
  • 小売分析: 店舗のディスプレイに関連する顧客の行動パターンを追跡します。
  • スポーツ分析: コーチの視点から選手のポジショニングと動きを分析します
  • 自動運転車: 車両がどのように「見て」、その環境内のオブジェクトを優先順位付けするかを視覚化します。
  • ヒューマンコンピュータインタラクション: 空間的関係に応答する、より直感的なインターフェースを作成します

VisionEyeを距離計算速度推定などの他のUltralyticsソリューションと組み合わせることで、オブジェクトをtrackするだけでなく、その空間的関係や挙動を理解する包括的なシステムを構築できます。

ご不明な点がございましたら、Ultralytics Issue Sectionまたは下記のディスカッションセクションに質問を投稿してください。

よくある質問

Ultralytics YOLO26でVisionEyeオブジェクトマッピングを開始するにはどうすればよいですか?

Ultralytics YOLO26でVisionEyeオブジェクトマッピングを開始するには、まずpip経由でUltralytics YOLOパッケージをインストールする必要があります。その後、ドキュメントに記載されているサンプルコードを使用して、VisionEyeでオブジェクトdetectを設定できます。ここに、開始するための簡単な例を示します。

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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo26n.pt",  # use any model that Ultralytics supports, e.g., YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = visioneye(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

オブジェクトマッピングとtrackにUltralytics YOLO26を使用すべき理由は何ですか?

Ultralytics YOLO26は、その速度、精度、統合の容易さで知られており、オブジェクトマッピングとtrackのトップチョイスとなっています。主な利点は次のとおりです。

  1. 最新鋭のパフォーマンス: リアルタイム物体検出で高い精度を実現します。
  2. 柔軟性: 検出、追跡、距離計算など、さまざまなタスクをサポートします。
  3. コミュニティとサポート: トラブルシューティングと機能拡張のための広範なドキュメントと活発なGitHubコミュニティ。
  4. 使いやすさ: 直感的な API により、複雑なタスクが簡素化され、迅速なデプロイとイテレーションが可能になります。

アプリケーションと利点の詳細については、Ultralytics YOLO26ドキュメントをご覧ください。

VisionEyeをCometやClearMLなどの他の機械学習ツールと統合するにはどうすればよいですか?

Ultralytics YOLO26は、CometやClearMLのような様々な機械学習ツールとシームレスに統合でき、実験のtrack、コラボレーション、再現性を向上させます。YOLOv5をCometで使用する方法YOLO26をClearMLと統合する方法に関する詳細なガイドに従って開始してください。

さらに詳しい調査と統合の例については、Ultralytics統合ガイドをご覧ください。



📅 2年前に作成 ✏️ 5日前に更新
glenn-jocherRizwanMunawarUltralyticsAssistantMatthewNoyceIvorZhu331RizwanMunawar

コメント