Ultralytics YOLO11を使用したVisionEyeビューオブジェクトマッピング 🚀
VisionEye Object Mappingとは何ですか?
Ultralytics YOLO11 VisionEyeは、人間の目の観察精度をシミュレートして、コンピューターがオブジェクトを識別して特定する機能を提供します。この機能により、コンピューターは、人間の目が特定の視点から詳細を観察する方法と非常によく似た方法で、特定のオブジェクトを識別して焦点を合わせることができます。
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="yolo11n.pt", # use any model that Ultralytics support, i.e, YOLOv10
classes=[0, 2], # generate visioneye view for specific classes
vision_point=(50, 50), # the point, where vision 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
VisionEye
引数
の表を以下に示します。 VisionEye
引数:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLOモデルファイルへのパス。 |
vision_point |
tuple[int, int] |
(20, 20) |
これは、VisionEye Solutionを使用して、ビジョンがオブジェクトを追跡し、パスを描画するポイントです。 |
さまざまなものを活用することもできます。 track
内の引数 VisionEye
ソリューション:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
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 |
検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。 |
VisionEyeの仕組み
VisionEyeは、フレーム内に固定された視点を確立し、この点から検出されたオブジェクトに線を引くことによって機能します。これは、人間の視覚が単一の視点から複数のオブジェクトに焦点を合わせる方法をシミュレートします。このソリューションは、オブジェクト追跡を使用して、フレーム間でオブジェクトの一貫した識別を維持し、観察者(視点)とシーン内のオブジェクトの空間的関係の視覚的表現を作成します。
The process
VisionEyeクラスのメソッドは、いくつかの重要な操作を実行します。
- 入力画像からトラック(バウンディングボックス、クラス、マスク)を抽出します
- バウンディングボックスとラベルを描画するアノテーターを作成します
- 検出された各オブジェクトに対して、ボックスのラベルを描画し、視点からの視線を作成します。
- 追跡統計情報でアノテーションが付けられた画像を返します
このアプローチは、監視システム、自動ナビゲーション、インタラクティブなインスタレーションなど、空間認識とオブジェクトの関係の可視化を必要とするアプリケーションに特に役立ちます。
VisionEyeの応用
VisionEyeオブジェクトマッピングには、さまざまな業界にわたって多数の実用的なアプリケーションがあります:
- セキュリティと監視: 固定カメラの位置から、関心のある複数のオブジェクトを監視します。
- 小売分析: 店舗のディスプレイに関連する顧客の行動パターンを追跡します。
- スポーツ分析: コーチの視点から選手のポジショニングと動きを分析します
- 自動運転車: 車両がどのように「見て」、その環境内のオブジェクトを優先順位付けするかを視覚化します。
- ヒューマンコンピュータインタラクション: 空間的関係に応答する、より直感的なインターフェースを作成します
VisionEyeを距離計算や速度推定などの他のUltralyticsソリューションと組み合わせることで、オブジェクトを追跡するだけでなく、オブジェクトの空間的関係と動作を理解する包括的なシステムを構築できます。
注
ご不明な点がございましたら、Ultralytics Issue Sectionまたは下記のディスカッションセクションに質問を投稿してください。
よくある質問
Ultralytics YOLO11 で VisionEye Object Mapping の使用を開始するにはどうすればよいですか?
Ultralytics YOLO11でVisionEye Object Mappingの使用を開始するには、まず、pipを介してUltralytics YOLOパッケージをインストールする必要があります。次に、ドキュメントに記載されているサンプルコードを使用して、VisionEyeで物体検出をセットアップできます。開始するための簡単な例を次に示します。
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="yolo11n.pt", # use any model that Ultralytics support, i.e, 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
オブジェクトのマッピングとトラッキングに Ultralytics YOLO11 を使用する利点は何ですか?
Ultralytics YOLO11は、その速度、精度、および統合の容易さで知られており、オブジェクトマッピングと追跡に最適な選択肢となっています。主な利点は次のとおりです。
- 最新鋭のパフォーマンス: リアルタイム物体検出で高い精度を実現します。
- 柔軟性: 検出、追跡、距離計算など、さまざまなタスクをサポートします。
- コミュニティとサポート: トラブルシューティングと機能拡張のための広範なドキュメントと活発なGitHubコミュニティ。
- 使いやすさ: 直感的な API により、複雑なタスクが簡素化され、迅速なデプロイとイテレーションが可能になります。
アプリケーションと利点の詳細については、Ultralytics YOLO11ドキュメントをご覧ください。
VisionEyeをCometやClearMLなどの他の機械学習ツールと統合するにはどうすればよいですか?
Ultralytics YOLO11 は、Comet や ClearML などのさまざまな機械学習ツールとシームレスに統合でき、実験の追跡、コラボレーション、再現性を向上させます。開始するには、YOLOv5 を Comet で使用する方法とYOLO11 を ClearML と統合する方法に関する詳細なガイドに従ってください。
さらに詳しい調査と統合の例については、Ultralytics統合ガイドをご覧ください。