カメラに写った映像をリアルタイムで推測しました。
難航しました。
昨日の記事に書いたように、Raspberry Pi4にCoral TPUの接続と必要なソフトのインストールまでを終えることができました。
今日は、USBカメラから得られた画像に対する物体認識ができるようにしてみました。
これはネット情報を参考にしてOpenCVを使ってやるのですが、なかなか思うように動かないというか、エラーがでて、原因究明や対策に時間がかかりました。
いつもながらネット情報は有難いと思う一方で、単体では使えない情報が多いな、ということを再認識しました。
これからのことを考え、備忘録として記録を残しておきます。
システム構成
今回のシステム構成を写真で示します。
正面左上が15インチモニタ
その下側に左からUSBカメラ、Coral TPU、Raspberry Pi4
その下側に左からBluetoothキーボード、マウス
物体認識用のサンプルアプリケーションをインストールします。
githubにカメラ付きのCoralおよびOpenCVでのオブジェクトの検出と分類のためのアプリケーションの例がのっています。
下の記事を参照ください。
このインストールをするときにつまづきました。
エラーがでて正常にインストールできませんでした。
原因は、OpenCVのインストールにありました。
色々と調べた結果、同じ悩みを持った人が過去にいて解決してくれていました。
それを書いている記事がこれです。
この記事に書いている手順で必要なライブラリをインストールすることでエラーがでなくなりました。
そののちに、上のgithubの記事にあるアプリケーションをインストールします。
まずは、物体検出(オブジェクト検出)をインストールします。
ターミナルから以下のコマンドを入力します。
git clone https://github.com/neuralassembly/CoralOpenCV.git
cd object_detection bash install_requirements.sh
それでは動かしてみましょう。
ターミナルから以下のコマンドを入力します。
これで物体検出ができます。
python3 detect_opencv.py --model models/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite --labels models/coco_labels.txt
下の動画は今回、物体検出をしたものです。
机の周りのもので物体検出をしたので数種類のものでの動作確認になりました。
下の動画に写っているモニタはraspberry Piのモニタで、その中にUSBカメラの映像が写っています。
USBカメラの映像を写しているウインドウが小さく見にくい面がありますが、動画の最初のところで、キーボードやマウス、携帯電話を検出できていることが判ります。
その後、Surface Laptop2とMacbook ProをLaptopとして認識し、その後ろにある27インチモニタをTVと認識し、その中に映っているYoutube動画をTVとして認識しています。
良い出来です。
動画の50秒ぐらいのところでハズキルーペを検出させようとしましたが失敗しました。
お笑いなのは、動画の1分のところでAmazon Echoを検出させようとした結果、Toiletと認識したことです。
そう見えるんだ、と思いました。
その直後にある時計は無事に検出しました。
でも飛行機は正面からの映像をmotorcycleと認識し上からの映像をairplaneと認識するという結果でした。
動画の1分20秒のところにある白ネズミのおもちゃはtedy bearという結果でした。
まあ悪くはないですね。
写真たてはTVという結果です。
動画の2分のところで本を検出させましたが無事にbookと検出しました。
それにしても凄いですよね。
リアルタイムでの物体認識が、1万円しないRaspberry Piと1万円しないCoral TPUと2千円程度のUSBカメラで出来るんですから。
今から40年前にOKITACというミニコンで1時間かけて計算した室内映像の結果をモニタに写して喜んでいた時代が懐かしく感じられます。
明日は、いよいよ色々なものの検出にチャレンジです。
では、また。
(参考情報)
今回使用したWebカメラです。