見出し画像

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」を押してください。


https://www.youtube.com/watch?v=slOgQojt8w8を物体認識

他にもurl=のところのYoutubeのURLを変更して物体認識してみます。


https://www.youtube.com/watch?v=x5LxRBgXSKsの物体認識

こちらはYoloV5の性能というより、私のパソコン環境のリソース不足のため一部しか物体認識されていないのではないかと考えられます。


https://www.youtube.com/watch?v=eWbAddRZBUMの物体認識

今回のコードは、Pytorch Hubを使用していますので、Pytorch Hubに登録されているYoloV5シリーズしか使うことはできません。

他のYoloV5は、下記を参考にしてください。

https://pytorch.org/hub/ultralytics_yolov5/


いいなと思ったら応援しよう!