Maskcam - Jetson Nanoベースの群衆マスク着用監視システム
はじめに
COVID-19の猛威により、多くの公共の場所でマスクの着用が求められています。通常、エリアの入り口には管理者がいて、人々がマスクを着用しているかどうかを観察しています。これは人間にとっては非常に簡単なタスクかもしれませんが、Jetson Nano、グラフィックキャプチャ、AIを使ったエッジコンピューティングと組み合わせることで、非常に興味深く社会的価値のあるタスクになります。
MaskCamは、Berkeley Design Technology, Inc. (BDTI)とTryolabs S.A.によって開発され、NVIDIAの資金提供を受けて開発されました。MaskCamはMITライセンスの下で提供されています。MaskCamの詳細については、BDTIのレポートをご覧ください。ご質問がございましたら、[email protected]までBDTIにメールでお問い合わせください。
このプロジェクトでは、NVIDIA® Jetson Nano™ 4GB Developer Kitと他のアクセサリを使用します。同時に、SeeedのA206 Carrier Boardを選択することもできます。これはNVIDIAの公式キャリアボードと同じサイズと機能設計を持ち、優れた安定性と汎用性も備えています。
準備
ハードウェア要件
-
NVIDIA® Jetson Nano™ 4GB Developer Kit (JetPack 4.6)
-
A206 Carrier Board(オプション)
-
7インチhdmiモニターとHDMIケーブル
-
USBドッキングステーション
-
マウスとキーボード
-
5V 4A電源アダプター
-
USBカメラ
-
イーサネットケーブル
-
Windows11搭載PC(またはWindows10/Ubuntu18.04/ OSX Big Sur)
ソフトウェア要件
-
docker
-
docker-compose
-
ビデオソフトウェア(RTSPストリームを表示、VLC/QuickTime/PotPlayerなど)
開始方法
Jetson Nanoセットアップ
-
ステップ 1. Docker HubからMaskCamコンテナをダウンロード
sudo docker pull maskcam/maskcam-beta
-
ステップ 2.
ifconfig
コマンドでJetson NanoのIPアドレスを確認する
sudo ifconfig
-
ステップ 3. dockerでMaskCamを開始する
Jetson NanoにUSBカメラを接続することを忘れずに、その後、以下のコマンドをターミナルに入力してください。
sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta
注意: このコマンドでは、<your-jetson-ip>
をあなた自身のJetson NanoのIPアドレスに置き換えてください。
デフォルトの入力デバイスを使用したくない場合は、上記のコマンドを選択して置き換えるための2つの異なるコマンドもあります。
/dev/video1カメラデバイスを使用する場合:
#Use the /dev/video1 camera device
sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_INPUT=v4l2:///dev/video1 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta
CSIカメラデバイスを使用する:
#Use the CSI camera device
sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_INPUT=v4l2://0 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta
-
ステップ 4.
MASKCAM_DEVICE_ADDRESS
を通じてライブビデオストリームを表示する
Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam
注意: aaa.bbb.ccc.ddd
は、以前に MASKCAM_DEVICE_ADDRESS
で提供したアドレスです。
そのURLを別のコンピュータのRSTSストリーミングビューアにコピー&ペーストできます。ビデオストリームで、マスクを着用していない場合は、顔に赤いフレームが表示されます。そうでなければ、緑のフレームが表示されます。
MQTT サーバーセットアップ
基本機能に加えて、このライブラリにはリモートサーバーの機能も含まれており、PCがデバイスから統計情報を受信し、データベースに保存し、それらを表示するWebベースのGUIフロントエンドを持つことができます。
この記事では、サーバーに関するすべてのデモはWindow11システムホストに基づいています。この記事を通じてLinuxシステムを使用する手順も見つけることができます:Maskcam。
-
ステップ1. PCにDockerとDocker-composeをインストール
Dockerの公式ウェブサイトからインストールパッケージをダウンロードします:https://docs.docker.com/get-docker/
注意:インストールの過程でWLS 2 installization is incomplete.
というメッセージが表示される場合は、プロンプトボックス内のリンクをクリックし、Linuxカーネル更新パッケージをダウンロードしてインストールしてください。
その後、docker
を実行できます。
-
ステップ2. ビルドディレクトリのセットアップ
管理者としてWindows PowerShell
を実行
使用するドライブのルートに移動します。例えば:
cd e:\
Download MaskCam repo :
Invoke-WebRequest https://github.com/bdtinc/maskcam/archive/refs/heads/main.zip -OutFile e:\maskcam.zip
パス e:\maskcam
に解凍します:
Expand-Archive e:\maskcam.zip -DestinationPath e:\maskcam
maskcamサーバーフォルダに移動します。このフォルダには4つのコンテナがあります:Mosquittoブローカー、バックエンドAPI、データベース、およびStreamlitフロントエンドです。
cd maskcam\maskcam-main\server
次に、デフォルトテンプレートをコピーして.env
ファイルを作成します:
cp database.env.template database.env
cp frontend.env.template frontend.env
cp backend.env.template backend.env
Open the database.env
:
notepad database.env
<DATABASE_USER>
、<DATABASE_PASSWORD>
、<DATABASE_NAME>
フィールドを独自の値に置き換えてください
-
ステップ3. ローカルサーバーのビルドと実行
データベース環境ファイルの編集後、すべてのコンテナをビルドし、単一のコマンドで実行する準備が整いました:
sudo docker-compose up -d
次に、Webブラウザを開いてサーバーIPを入力し、フロントエンドのWebページにアクセスします:
http://<server IP>:8501/
注意: <server IP>
を自分のIPアドレスに置き換えてください。
フロントエンドでConnectionError
が表示された場合は、数秒待ってからページをリロードしてください。バックエンドコンテナがデータベースのセットアップを完了するまでに時間がかかることがあります。
もう数秒待ってページをリロードしても、フロントエンドでConnectionError
が発生している場合は、ポート5432
と80
が占有されていないか、リッスンされていないかを確認してください。
フロントエンドのウェブページに初回は正常にアクセスできたが、次回以降失敗する場合、現在のところ最良の解決方法はdockerを再インストールすることです。
-
ステップ4. Jetson Nanoをローカルサーバーに向ける
Jetson Nanoのターミナルに戻り、以下のコマンドでmaskcamコンテナを実行してください:
sudo docker run --runtime nvidia --privileged --rm -it --env MQTT_BROKER_IP=<server IP> --env MQTT_DEVICE_NAME=my-jetson-1 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta
注意: <server IP>
と <your-jetson-ip>
を、あなた自身のサーバーとJetson NanoのIPアドレスに置き換えてください。
その後、以下に示すようにWebページでデバイスを選択できます:
最後に、Jetson Nanoによって収集されたデータがサーバーに送信されているのを確認できます。
技術サポートと製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。