見出し画像

【Python】YOLOv8で人を追跡

【状況】映像に映っている人を追跡(トラッキング)したい.YOLOv8が良いらしい.
【対処】サンプルコード動かすだけで感動できる,のメモ

公式ページが充実

サンプルもあるのでかなり参考になります(日本語だし!)

環境設定

pythonがインストールされている環境でインストール(執筆に利用したバージョンは3.10.9;諸事情により若干古いバージョンを入れています).

pip install ultralytics

関連するライブラリも(ある程度)自動的にインストールされます.

サンプルを動かす

公式ページのコードを転載.
使う学習モデルを決めて,トラッキングを呼ぶだけで使用感を体験できます.YouTube動画を対象に指定し,show=Trueで,画面を自動的に表示.「yolov8n.pt」は,学習モデルのファイルで,初回は自動でダウンロードしてくれます.学習モデルにはバリエーションがあり,クオリティや用途の違いで使い分けることができます.

from ultralytics import YOLO

# トラッキングパラメーターを構成し、トラッカーを実行
model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.3, iou=0.5, show=True)

resultsの中身に,見つけた人や物の物体名,ID,矩形の座標値が入っているので,特定の人をトラッキングすることができます.
なお,実行したときに足りないライブラリがあった(lapxとか)けど,自動インストールして実行くれるとかいう.python素晴らしい♪

デモ映像より.画面に映っている物体や人をID番号付きで認識してくれる.

引数のsourceには,動画なども指定できます.プログラムと同じフォルダにwalk.mp4を置いて,以下のように書き換えれば,手持ちの動画に対して処理を行うことができます.

results = model.track(source="walk.mp4", conf=0.3, iou=0.5, show=True)
invideo AIで作成した動画

複数の人が居る場合は,idで区別できることが分かります.personの右の数値は1.0を最大とする確信度.0.8あるのはかなり高い.
confの数値が確信度の最低値.高すぎると人であっても認識されにくくなるので調整が必要.

この記事が気に入ったらサポートをしてみませんか?