AIワンダーランド

AIエンジニアの個人開発ブログ

【YOLOv8】WindowsでWEBカメラからリアルタイム物体検出

更新日:2023年6月1日

 

動画は下の方にあるよ

 

対象読者:Windows環境で【YOLOv8】を使ってリアルタイム検出を試したい人

 

環境

環境:Winows11、メモリ32GB、GPU GeForce RTX3060 12GB

Python : 3.10.6、CUDA : 11.8、torch : 2.0.1+cu118

webcamera:Logicool(ロジクール) C270n

よくあるWEBカメラです。

2,500円くらいと安いけど使いやすくておすすめです。

後継版C310n ↓↓

 

概要

 

【プロジェクトにゃーん3】

家の近くを散歩するネコちゃんをリアルタイムで検出して

アラートを飛ばしたい!!

 

さて、前回は【YOLOv8】を動かす手順を確認しましたので

今回は、WEBカメラを使いリアルタイム検出に挑戦したいと思います!

ai-wonderland.com

 

手順

【YOLOv8】の設定は前回の記事を見てね。

 

1.リアルタイム検出用のコードを準備

WEBカメラからのリアルタイム検出、すごーーく簡単でした!!

 

下記コードをpythonスクリプトとして保存

「yolov8_webcam.py」

 

from ultralytics import YOLO
# モデルを選択
#model = YOLO("yolov8n.pt")
model = YOLO("yolov8x.pt")
#model = YOLO("yolov8x-seg.pt")

model.to("cuda")

# 検出対象ファイル指定
#results = model("https://ultralytics.com/images/bus.jpg", save=True)
#results = model("./images/test2.jpg", save=True)
results = model("./images/test2.mp4", save=True)

# WEBカメラからリアルタイム検出
results = model(0 , show=True)
for i in enumerate(results):
    print(i)

 

results = model(0 , show=True) の「0」はカメラ番号です。

内部カメラがある場合はUSB接続WEBカメラは「1」になっているかもです。

カメラが認識されていないと下記のようなエラーが出ます。

ConnectionError: 1/1: 0... Failed to open 0

 

2.WEBカメラをPCに接続してコードを実行

python yolov8_webcam.py

 

起動に1分ほど時間がかかります。

動きだすとこんな感じです。

 

30msだから0.03 秒で検出を繰り返していますね。

 

youtu.be

 

うまくできました!!

 

こちらの動画はフリー動画をWEBからダウンロードして、PC画面に映っている状態をWEBカメラで撮影してリアルタイム検出しています。

もちろん窓から外を撮影しても同様に検出できます。

 

フリーの画像は「PAKUTAS」様

https://www.pakutaso.com/

動画は「pixabay」様のものを使わせていただきました。

https://pixabay.com/ja

 

====================================

【おすすめ書籍】

2023年7月発売

鋭い洞察と深みのある言葉がささります。

読み物としてお勧め。なので電子版でもいいです。

 

2023年10月発売

AI、データ活用が必須の時代に。

豊富な企業事例で自社や自分を俯瞰できると思います。

 

【お勧めアイテム】

肩こりに悩むエンジニアの皆様へ!!!

 

私も慢性的な重度の肩こりプログラマですが

数年間いろいろな枕を買っては捨ててを繰り返してきまして

やーーーーっといい枕に出会いました。

朝起きて首が痛くない!すばらしい

横向けでも仰向けでもいい感じに寝ることができています。

 

ので肩こりが多いエンジニアの皆様にお勧めします。

高価ですが、整体2回分と考えたら安いものですね笑

====================================

 

以上、【YOLOv8】WindowsでWEBカメラからリアルタイム物体検出でした。

次はこの検出結果を使ってアラートを飛ばしたいですね~ つづく

 

ではまた。