AIY Vision Kitは,カメラを搭載したRaspberry Pi Zero Wに,Movidius社のMyriad2が実装されたVision Bonnetボードが含まれていて,TensorFlowでの画像処理を効率的に実行できるらしい。
カメラの信号が,Vision Bonnetボードに入り信号処理されて(またはパススルーされて),Rasberry Pi Zero Wのカメラ入力ポートに接続される。
これで,非力なRaspberry Pi Zero Wでも複雑な画像処理が出来るようになっている。
AIY Vision Kitは,以前に購入していたんだけど,夏休みに行っている避暑地に持って行って組み立ててみた。
AIY Vision Kitの中には組み立て方法が入っていなかったので,ここを参考にして組み立てた。
OSやサンプルプログラムもインストールされているMicroSDカード(8GB)が付属しているので,Raspberry Pi zero Wに挿入するだけ。
これで,10000円以下(Targetで$89.99)で,機械学習を使用してTensorFlowでの処理を試してみることが出来る。安価なキットって思います。
ACアダプターは付属しないので,とりあえずAndroidスマホのACアダプターを使った。
ACアダプターを接続して(電源オン),しばらくするとピーと音がして,なにか動作をはじめているみたい。
人に向けると,照光ボタンスイッチの色が変わったりする。ボタンスイッチを押すと写真が撮れるみたいだけど・・・
無事,問題なく組み立てられたようだ。
Raspberry Pi zero WにWLANが搭載されているんで,それを使ってネットワークにつなげられるのだが,そのデバイスの設定にはAndroid端末にAIY Projects appをインストールすると,このアプリからWLANの設定をすることが出来た。
Vision Bonnetにあるボタンを長押しするとAIY Projects appと接続するんで,その後アプリからWIFIアクセスポイントを指定して接続するようにする。
WIFIアクセスポイントに接続した時にアプリ上にRaspberry Pi zero WのWLANのIPアドレスが表示されるんで,そのIPアドレスにPCからSSHを使ってリモートログイン出来るようになった。
User:pi,Password:raspberry と,使っているOSはRaspbian。
電源ONする前にMicroSDカードの/bootに,wpa_supplicant.confを作成しておけば,このAIY Projects appを使わなくてもいいと思う。AIY Projects appって,最初にアクセスポイントに接続するためだけの機能しかないから・・・
組み立てた後,どうやって画像をみるんだろうと思った。上記のサイトではHDMIでディスプレーに接続するように書いてあるんで,おそらくHDMIでディスプレーに接続しないと画像が見れないんだと思う。
VNCを使ってみたが,デスクトップ画面は表示されても,カメラの画像は表示されなかった。
しょうがないんで,Raspberry Pi zero Wでmini-HDMIから出力される画像をキャプチャーして,それをストリーミング配信して,WEBブラウザで見ることにした。
uv4l-webrtc(uv4lにWebRTCを実装した)を使ってこれを実現してみる。
$ sudo systemctl stop joy_detection_demo.service
として,Joy Detection Demoプログラムを停止しておく。
ブート時でもこのデモプログラムの起動をやめる場合は,
# systemctl disable joy_detection_demo.service
とすれば,起動しなくなる。
ブート時に起動するようにするには,
# systemctl enable joy_detection_demo.service
とする。
# curl http://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add - # echo "deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main" | tee -a /etc/apt/sources.list # apt-get update # apt-get install uv4l uv4l-raspicam uv4l-raspicam-extras uv4l-webrtc-armv6 uv4l-raspidisp uv4l-raspidisp-extras
このようにして,インストールした。
PCでブラウザで,
http://xxx.xxx.xxx.xxx:8080/stream/webrtc
としてみる。
緑色のCallボタンを押すと,カメラの画像が見れた。CPUが100%占有する。force use of hardware codecをマークするとだいぶスムーズになる。(55%ぐらい)
Local側は,WEBブラウザを実行しているPC側なんだけど,画像は表示されない。
$ python3 ~/AIY-projects-python/src/examples/vision/joy/joy_detection_demo.py
で実行する。
http://xxx.xxx.xxx.xxx:8080/stream/webrtc
で見てみると,invalid video device!で見れない。
これは,既にJoy Detection Demoがカメラを使用しているので,v4l-webrtcはカメラに接続できないためだと思う。
解決するには,Joy Detection Demoを書き換えないと・・・
Joy Detection Demoなどのデモプログラムは,HDMIに接続されたディスプレーに画像を表示する。
v4l-webrtcをインストールしたとき,v4l-raspidispもインストールしていて,これを使うとHDMI出力しているデータをキャプチャーして,他のuv4lデバイスのようにストリーミング出来るようになる。
しかし,Raspberry Pi zero Wのデフォルト設定だと,HDMIでディスプレーを接続してブートしないと,アナログのビデオ出力に画面が出力されてしまう。
HDMIのディスプレーを接続しないでも強制的にHDMIから画像が出力されるように,/boot/config.txtを修正する。
#hdmi_force_hotplug=1 ↓ hdmi_force_hotplug=1
のようにコメントアウトする。それと画面モードを,
hdmi_group=2 hdmi_mode=85
のようにして,1280x720@60Hzにした。
これでHDMIから出力されるようになったんで,
$ python3 AIY-projects-python/src/examples/vision/face_detection_camera.py
として,デモの一つを動かしてみる。
この後,
http://xxx.xxx.xxx.xxx:9080/stream/webrtc
をWEBブラウザで見てみると,HDMI出力している画像が見れるようになった
face_detection_cameraは,人の顔を検知すると四角い枠で囲んでハイライトしてくれるデモ。
とりあえずこれでHDMIのディスプレーが無くても,VPUで処理された画像が見れるようになった。
新しくコメントをつける