Youtubeストリーミング動画をYoloV5でリアルタイム動画認識する方法
今回は、YOLOV5を使用してYoutubeのストリーミング動画をリアルタイムで認識するコードを紹介していきます。
実施方法は3ステップです。
Pythonの必要なライブラリをインストールする。
Pythonのコードをコピペする。
Pythonのコードを実行する。
Pythonで必要なライブラリをインストールします。
pip install opencv-python yt-dlp numpy torch torchvision
以下コードをyoutube.pyというファイルに貼り付けてください。
※下記コードで、urlのところには、リアルタイムで動画認識したいYoutubeのURLを張り付けてください。
import cv2
import torch
import numpy as np
import yt_dlp
# YOLOv5モデルをロード
model = torch.hub.load('ultralytics/yolov5', 'yolov5l', pretrained=True)
# YouTubeの動画URLを指定
url = 'https://www.youtube.com/watch?v=slOgQojt8w8'
# yt-dlpで動画の情報を取得
ydl_opts = {
'format': 'best',
'quiet': True
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
info_dict = ydl.extract_info(url, download=False)
video_url = info_dict.get('url', None)
# OpenCVで動画を読み込み
cap = cv2.VideoCapture(video_url)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# フレームをYOLOv5に渡して推論を実行
results = model(frame)
# 推論結果をフレームに描画
for det in results.xyxy[0].cpu().numpy():
x1, y1, x2, y2, conf, cls = det
label = f"{model.names[int(cls)]} {conf:.2f}"
color = (0, 255, 0)
cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), color, 2)
cv2.putText(frame, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
cv2.imshow('YOLOv5 Object Detection', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
最後に、youtube.pyを実行します。
python youtube.py
※終了したいときは、出てきた画面上で「q」を押してください。
他にもurl=のところのYoutubeのURLを変更して物体認識してみます。
こちらはYoloV5の性能というより、私のパソコン環境のリソース不足のため一部しか物体認識されていないのではないかと考えられます。
今回のコードは、Pytorch Hubを使用していますので、Pytorch Hubに登録されているYoloV5シリーズしか使うことはできません。
他のYoloV5は、下記を参考にしてください。