忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

ラズパイ5でスケボー少年を検知する

ラズパイ5用のケースと電源をやっと買いました。

ケース  電源

↑Amazonリンクなんですが、最近は画像が貼れません…



ケースはファンがついていてかっこいいですね… 起動時とCPU温度が高いときに回ります。
AIで学習をするときにはCPU温度がかなり上がるので必須です。

今回はyoloのv5を使ってスケボーや人などを検知してそれをslackに通知していこうと思います。
カメラはUSBカメラを接続します。



カメラ ※なんでもいいです。



ラズパイにyolo5をインストールしていきます。

https://qiita.com/rokurorock/items/4f07e9c16f6a5297d0aa

このあたりの記事を参照しました。

基本的な使い方は

cd /home/pi/yolov5  
python3 detect2.py --source=/home/pi/image.jpg

といった具合に対象の画像や動画を選択し推論をしていきます。

そうすると/home/pi/yolov5/runs フォルダへoutputされます。

ラズパイ5に限ったことかもしれませんが、5V5Aの電源がないと途中でストールします(笑)

ちゃんと電源を準備してから試してください。



今回はスケボー少年を検知したらslackに通知するのでそのAPI叩く準備もします。
pythonコードに埋め込む必要があるのであらかじめ準備していきます(webhook urlです)
下記記事参照願います
https://qiita.com/bakira/items/8fa06ab10edf1f42ff97


あとはdetect.pyをすこし書き換えます(detect2.pyとかした方がいいかも…) 
80種類検知できるのですが、今回は人(people)、スケボー(skateboard)、車(car)を検知します。

n_1 = (det[:, -1] == 36).sum() #スケボー検知  

ここの36を下記リストをみて変更お願いします。


IDcoco.namescoco.names_jpIDcoco.namescoco.names_jp
0person40wine glassワイングラス
1bicycle自転車41cupカップ
2car42forkフォーク
3motorbikeバイク43knifeナイフ
4aeroplane飛行機44spoonスプーン
5busバス45bowl丼鉢
6train列車46bananaバナナ
7truckトラック47appleリンゴ
8boatボート48sandwichサンドイッチ
9traffic light信号機49orangeオレンジ
10fire hydrant消火栓50broccoliブロッコリー
11stop sign一時停止標識51carrot人参
12parking meterパーキングメーター52hot dogホットドッグ
13benchベンチ53pizzaピザ
14bird54donutドーナッツ
15cat55cakeケーキ
16dog56chair椅子
17horse57sofaソファー
18sheep58pottedplant鉢植え
19cow59bedベッド
20elephant60diningtableダイニングテーブル
21bear61toiletトイレ
22zebraシマウマ62tvmonitorテレビ
23giraffeキリン63laptopラップトップコンピューター
24backpackバックパック64mouseマウス
25umbrella65remoteリモコン
26handbagハンドバック66keyboardキーボード
27tieネクタイ67cell phone携帯電話
28suitcaseスーツケース68microwave電子レンジ
29frisbeeフリスビー69ovenオーブン
30skisスキー板70toasterトースター
31snowboardスノーボード71sinkキッチン・シンク
32sports ballスポーツボール72refrigerator冷蔵庫
33kite73book
34baseball bat野球のバット74clock時計
35baseball glove野球のグローブ75vase花瓶
36skateboardスケートボード76scissorsハサミ
37surfboardサーフボード77teddy bearテディベア
38tennis racketテニスラケット78hair drierヘアドライヤー
39bottle79toothbrush歯ブラシ





slackへのつぶやきはここを変えます

'text': u'skateboard ', #通知内容



するとスケボー、人、車を検知してslackに通知します。

写真を撮って検知を繰り返す場合はopencvを使っていきます。
インストールは→https://monomonotech.jp/kurage/raspberrypi/opencv.html


photo.pyの例です。
import cv2
# カメラを開く
cap = cv2.VideoCapture(0)
# 画像をキャプチャする
ret, frame = cap.read()
# 画像を保存する
cv2.imwrite("image.jpg", frame)
# カメラを閉じる
cap.release()


繰り返しのシェルスクリプトはこんな感じです。
#!/bin/sh
while true
do
 
 /usr/bin/python3 photo.py
 /usr/bin/python3 detect2.py --source=/home/pi/yolov5/image.jpg
 sudo rm -R /home/pi/yolov5/runs/detect/exp85
done





拍手[1回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30