ゆるエンジニアはいろいろ遊びたい

FAエンジニアが週末にいろいろ遊ぶブログです

Ultralytics YOLOを使って画像認識してみた

4脚ロボットShelPiにはラズパイのカメラモジュールV2を搭載しています。
slowtech.hateblo.jp
slowtech.hateblo.jp
mjpg-streamerでカメラの映像をストリーミングしているので、
メインPCで画像を取得し、AIによる物体認識をしてShelPiの行動を制御することが可能です。
今回はメインPCでUltralytics YOLOを使用して画像認識ができるかテストしてみました。
使用した言語はPythonです。
環境を汚さないようにvenvで仮想環境を作成します。

python3 -m venv yolo
source yolo/bin/activate

仮想環境下で、YOLOをインストールします。

pip install ultralytics

サンプルコードは以下

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # 軽量モデル
results = model("test.jpg")
results[0].show()

pythonファイルと同じディレクトリに適当な画像をいれ、test.jpgと名前を変更したら実行します。
初回実行時は何かダウンロードが始まりますので少し待ちます。
成功すれば画像がプレビューされます。
今回使用したYOLO8nは軽量モデルで、80種類のオブジェクトを認識できるようです。

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
print(model.names)

これで、検出可能なリストが出てきます。

 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

Raspberry Pi ZERO 2Wや、RaspberryPi5では、処理速度が遅くてあまりリアルタイムで制御することが難しそうでしたので、
メインPCでAIを動かすことにしました。ShelPiは画像を送信し、PCから結果を受け取るだけの簡単なお仕事。
これを使えば、ShelPiが物体認識できるようになりますね。