AIPrPython

【リアルタイムで物体検出】yolov8をanaconda環境でサクッと動かす

yoloを使ってリアルタイムの物体検知を行います。

“yolo” とは、コンピュータビジョン(コンピュータが画像情報から必要な情報を取り出す技術)におけるアルゴリズムの名前です。
また、「You Only Look Once(一度しか見ない)」 の頭文字を取ったものになります。

今回はそのyoloの中でも2023年1月に発表されたv8を使用しますが、現在公開されている中で一番最新のものになります。

Ultralytics YOLOv8 は、以前の YOLO バージョンの成功に基づいて構築され、パフォーマンスと柔軟性をさらに高めるための新機能と改善が導入された最先端の最先端 (SOTA) モデルです。 YOLOv8 は、高速、正確、そして使いやすいように設計されており、幅広いオブジェクトの検出と追跡、インスタンスのセグメンテーション、画像分類、姿勢推定タスクに最適です。

https://github.com/ultralytics/ultralytics より引用
https://github.com/ultralytics/ultralytics より引用

動画で確認をしたい方はこちら

YouTubeに動画をあげています。動画で流れを確認したい方はこちらをご活用ください。

動作環境

Windows11(64bit)
anaconda
python3.9

anacondaの環境構築がまだの方はこちら

仮想環境を作成してログインする

Anaconda Promptを開いて仮想環境を作成し、ログインします。

yolov8を使う準備

作成した仮想環境でyolov8を使う準備をします。

cloneとはリポジトリ(ファイルやプログラムなどの保管場所)を自身のローカル環境にコピーすることをいいます。

gitのエラーが出る場合はconda install gitを実行してください。

実際に物体検出してみる

準備が完了したらWebカメラでリアルタイム検出を行います。

Pythonと入力して、Pythonを起動し以下のコードを実行します。

Webカメラが起動すれば成功です。

スクリーンショット (501).png

検出できる物体はGitHubに公開されています。

0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush

https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco128.yaml より引用

リアルタイムの検出以外にも、画像ファイルや動画ファイルも指定することができます。

SourceArgumentTypeNotes
image'image.jpg'str or PathSingle image file.
URL‘https://ultralytics.com/images/bus.jpg’strURL to an image.
screenshot'screen'strCapture a screenshot.
PILImage.open('im.jpg')PIL.ImageHWC format with RGB channels.
OpenCVcv2.imread('im.jpg')np.ndarrayHWC format with BGR channels uint8 (0-255).
numpynp.zeros((640,1280,3))np.ndarrayHWC format with BGR channels uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorBCHW format with RGB channels float32 (0.0-1.0).
CSV'sources.csv'str or PathCSV file containing paths to images, videos, or directories.
video ✅'video.mp4'str or PathVideo file in formats like MP4, AVI, etc.
directory ✅'path/'str or PathPath to a directory containing images or videos.
glob ✅'path/*.jpg'strGlob pattern to match multiple files. Use the * character as a wildcard.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL to a YouTube video.
stream ✅'rtsp://example.com/media.mp4'strURL for streaming protocols such as RTSP, RTMP, TCP, or an IP address.
multi-stream ✅'list.streams'str or Path*.streams text file with one stream URL per row, i.e. 8 streams will run at batch-size 8.
Ultralytics YOLOv8 Docs より引用

検出数を出力することもできます。

検出結果はultralytics\runs\detect\predictに保存されています。

まとめ

yolov8でリアルタイムの物体検知を行いました。anacodaの環境構築が終わっていれば10分程度で実装可能かと思います。
混雑状況の把握や在庫管理などに活用できると思いますので是非お試しください。

コメント

タイトルとURLをコピーしました