先日、NT金沢2021というイベントに、リモートで出展参加した。「リモートで出展参加」というのは、具体的に言うと、展示物としてはオンラインで遊べるものをポスターで出展して、私はGoogleMeet(ビデオ会議)をつないでリモートで一部作品の説明をしていた。(関係機材は現地出展した友人に運んでもらった。)
GoogleMeetをつなぐには、とりあえずPCが現地(NT金沢の会場)にあれば事足りる。ただせっかくなので、モニターが、話している相手の顔を追跡するようにした。
動作の様子
人の顔に追従するモニタを試作中…。
— 青木晃也 (@aoki_kouya) May 30, 2021
■使用素材
画像:いらすとや(https://t.co/H01vPNj6QI) pic.twitter.com/H8fLDuSRjz
検証時の動画だが、概ね完成形。当日はこのモニターに、GoogleMeetの画面を表示して運用していた。
ハードウェア
使用部品一覧
部品名 | 備考 |
---|---|
JetsonNano開発者キット | 顔認識・ビデオ会議・サーボ制御用 |
Webカメラ×2 | 1個は顔認識用、1個はビデオ会議用 |
モニター | スピーカーも内蔵 |
サーボモーター S03T/2BBMG/F×2 | 強そうなものをチョイス |
PCA9685モジュール | サーボ制御用 |
サーボやモニタ等を固定するための部品は3Dプリンターで作成した。
WebカメラはとりあえずAmazonで安いものを適当に買った。1種類目はUSB Wi-Fi子機との相性が良くなかったようで、Wi-Fiの接続が不安定になった。2種類目は特に問題なく動いていそうだったので、採用した。ただ、この記事を書いている時点で、採用したWebカメラのAmazonの商品ページはリンク切れになっていた。
ソフトウェア
ソフトウェアに関する部分としては、JetsonNano起動後にコンソールで顔追従用プログラムを実行した後、ブラウザ(Chromium)でGoogleMeetを動かしていた。GoogleMeetの方は特に書くことがないため、顔追従用プログラムのソースコード及びセットアップ周りを書いていく。
顔追従用プログラムのソース
ソースは以下に置いてある。
顔追従用プログラムのセットアップ周り
上記のソースを動かすには、関係ライブラリをインストールする必要がある。
PCA9685用ライブラリのインストール
サーボ制御モジュールPCA9685をPythonから制御するためのPythonパッケージをインストールする。まず以下のコマンドでpip3
をインストールする。
sudo apt-get install python3-pip
参考元: NVIDIA Jetson Nano 開発者キットに TensorFlow をインストールする - Qiita
以下のコマンドでPythonパッケージAdafruit_PCA9685
をインストールする。
pip3 install Adafruit_PCA9685 --user
参考元: Jetson nanoとPCA9685でサーボを動かそうとするときのI2Cエラー対処法! - KOKENSHAの技術ブログ
TensorFlow
のインストール
今回はマスクを付けている顔も認識するため、以下のモデルを利用した。ライセンスはMIT。
このモデルを利用するためにはTensorFlow
をインストールする必要がある。
利用しているJetPack SDKのバージョンがJetPack4.5
でかつ、pip
インストール済みの場合は以下コマンドを実行。
sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo pip3 install -U numpy==1.19.4 future==0.18.2 mock==3.0.5 h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 tensorflow
参考元: Installing TensorFlow For Jetson Platform :: NVIDIA Deep Learning Frameworks Documentation
pip3 install -U pip
するとよくないという記事があったのでそこらへんはやめた。
参考元: Jetson Nanoでディープラーニング - Qiita
運用してみての反省点
安いWebカメラのマイクでは音質がかなり悪く、モニターに付属のスピーカーだと音量が足りなかった。広くて周りに音が出る物がある会場でWeb会議をやるには、マイクスピーカーのようなものを別途用意した方がいいと思った。
アフィリエイト