Ultralytics YOLO11 🚀を使用したVisionEyeビューオブジェクトマッピング
VisionEye Object Mappingとは?
Ultralytics YOLO11VisionEyeは、人間の目の観察精度をシミュレートすることで、コンピューターが対象物を識別し、ピンポイントで特定する機能を提供します。この機能により、人間の目が特定の視点から細部を観察するのと同じように、コンピューターが特定の物体を識別し、焦点を合わせることができる。
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("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] |
(50, 50) |
VisionEye Solutionを使用して、ビジョンが物体を追跡し、パスを描画する点。 |
また、さまざまなものを利用することもできる。 track
引数を VisionEye
解決策だ:
議論 | タイプ | デフォルト | 説明 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
使用するトラッキングアルゴリズムを指定する、 bytetrack.yaml または botsort.yaml . |
conf |
float |
0.3 |
検出の信頼しきい値を設定します。低い値ではより多くのオブジェクトを追跡できますが、誤検出を含む可能性があります。 |
iou |
float |
0.5 |
重複検出をフィルタリングするためのIoU(Intersection over Union)しきい値を設定します。 |
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 線幅は画像サイズに応じて自動的に調整されます。視覚的にわかりやすくカスタマイズできます。 |
ビジョンアイの仕組み
VisionEyeは、フレーム内に固定されたビジョンポイントを設定し、このポイントから検出されたオブジェクトに線を引くことで動作する。これは、人間の視覚が単一の視点から複数の物体に焦点を合わせる方法をシミュレートしている。このソリューションは、オブジェクト・トラッキングを使用して、フレーム間でオブジェクトの一貫した識別を維持し、観察者(ビジョン・ポイント)とシーン内のオブジェクトの空間的関係を視覚的に表現します。
について process
メソッドは、いくつかの重要な操作を行う:
- 入力画像からトラック(バウンディングボックス、クラス、マスク)を抽出します。
- バウンディングボックスとラベルを描画するアノテーターを作成する。
- 検出された各オブジェクトについて、ボックスラベルを描画し、ビジョンポイントからビジョンラインを作成する。
- アノテーションされた画像をトラッキング統計とともに返します。
このアプローチは、監視システム、自律航法、インタラクティブなインスタレーションなど、空間認識とオブジェクト関係の視覚化を必要とするアプリケーションに特に有効である。
VisionEyeの用途
VisionEyeのオブジェクトマッピングは、様々な産業分野で数多くの実用的な用途があります:
- セキュリティと監視固定されたカメラ位置から複数の対象物を監視
- 小売分析:店舗ディスプレイに関連した顧客の移動パターンを追跡
- スポーツ分析コーチの視点から選手のポジショニングと動きを分析する。
- 自律走行車:車両が環境内の物体をどのように「見て」、優先順位をつけているかを可視化する。
- ヒューマン・コンピュータ・インタラクション空間的関係に反応する、より直感的なインターフェイスの創造
VisionEyeを距離計算や 速度推定などの他のUltralytics ソリューションと組み合わせることで、物体を追跡するだけでなく、その空間的関係や行動を理解する包括的なシステムを構築することができます。
注
お問い合わせは、Ultralytics Issue Sectionまたは下記のディスカッション・セクションまでお気軽にお寄せください。
よくあるご質問
VisionEye Object Mapping をUltralytics YOLO11 で使い始めるには?
VisionEye Object Mapping をUltralytics YOLO11 で使い始めるには、まず、Ultralytics YOLO パッケージを pip 経由でインストールする必要があります。次に、ドキュメントに記載されているサンプルコードを使用して、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 統合ガイドをご覧ください。