제이슨 AGX Xavierと 모모で背景ぼかしの映像を配信する
こんな感じに配信できるようになります.
Momo で背景ぼかしの映像を配信している様子 - YouTube
自分の顔を映すのは嫌だったので、ディスプレイにヒカキンを表示して、それを그물 모양의 물건カメラで撮影して配信しています.
元動画はこちらです: 【昔は好きだったけど今は嫌い】でエゴサしたらメンタル崩壊…【ヒカキンTV】【ツイッター】 - YouTube
ちゃんと背景がぼかされて配信されているのが分かります.
jtopコマンドで確認した 중앙처리기や GPUメモリ使用量はこんな感じになっています.
ちゃんと GPUも使って計算していることが分かります.
構成
今回の構成はこんな風になっています.
활용단어참조の tf-bodypix を使って、実カメラの映像を取り込んで、背景ぼかしした映像に変換し、それを v4l2loopbackという仮想カメラ(仮想ビデオデバイス)に出力しています.
あとは、모모がその仮想カメラのデータを読んで 소라に配信しているだけです.
つまり、今回はほぼコードを書いていません.
tf bodypixに 그물 모양의 물건カメラから読み取る部分も、仮想カメラへ出力する実装も入っていたため、単にいろいろインストールしてコマンドラインから実行するだけでした.
実際に動かすまでの手順
準備
まず 장량류を入れます.これは Jetson 用のインストール方法 があるので、それの通りに入れるだけです.
(インストール方法が変わっている可能性もあるので、最新の情報に関してはドキュメントを参照して下さい)
# apt で入れるパッケージのインストール
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
# pip3 のインストール
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools==49.6.0
# 依存ライブラリのインストール
sudo pip3 install -U numpy==1.16.1 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
# tensorflow のインストール
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow
가상적とかを使っても良いです.詳細は上記のドキュメントを見てください.次に tf bodypixを入れます.
既に 장량류は入っているので不要で、그물 모양의 물건カメラと JSモデルは必要なので、以下のようにインストールします.
sudo pip3 install tf-bodypix[tfjs,webcam]
次に、v4l2loopbackな仮想デバイスを作成するためのパッケージをインストールします.sudo apt install v4l2loopback-dkms
あとは 모모のパッケージを Momo のリリース からダウンロードして展開して配置しておきます.修正
tf bodypixは、そのまま利用すると GPUを使ってくれなかったので、ちょっとだけコードを弄る必要があります.
/usr/local/lib/python3.6/dist-packages/tf_bodypix/cli.py
を開いて、以下のように書き換えます.--- a/cli.py 2020-12-19 20:49:46.398000000 +0900
+++ b/cli.py 2020-12-19 20:49:41.145000000 +0900
@@ -1,3 +1,6 @@
+import tensorflow as tf
+tf.config.experimental.list_physical_devices('GPU')
+
import argparse
import logging
import os
@@ -14,7 +17,6 @@
# pylint: disable=wrong-import-position
# flake8: noqa: E402
-import tensorflow as tf
import numpy as np
from tf_bodypix.utils.timer import LoggingTimer
詳細は分からないのですが、장량류を先に 수입하다して特定の関数を読んでおくことで、GPUを使うための初期化が正常に走って、GPUが使えるようになります.いろいろ弄ってたら偶然動きました.実行
まず仮想ビデオデバイスを作成します.今回は
/dev/video1
になるようにしましたが、適当に変えても良いです.sudo modprobe v4l2loopback video_nr=1 card_label=BlurCamera
次に tf bodypixを実行します.CLI上から、그물 모양의 물건カメラから映像を読んで、背景ぼかしをして、仮想ビデオデバイスに出力するところまで全部出来るので、凄く楽です.
python3 -m tf_bodypix \
blur-background \
--internal-resolution 0.5 \
--source-width 640 \
--source-height 480 \
--source-fps 30 \
--source webcam:0 \
--background-blur 20 \
--output /dev/video1 \
--threshold 0.5
あとはこの仮想ビデオデバイスを入力として、모모で配信するだけです.tf_bodypixでの出力は 유이프形式で、MJPEGではないため、ハードウェア MJPEGデコーダが使えないことに注意して実行します.
./momo \
--hw-mjpeg-decoder=false \
--no-audio-device \
--video-device=/dev/video1 \
sora wss://<適切な接続先>/signaling <適切なチャンネル名> \
--audio=false \
--role=sendonly
これで配信できます.あとは 소라経由で送られてきた映像をブラウザで見れば、最初の動画のようになります.感想
모모で背景ぼかしを配信するのは大変だと思ってたのですが、仮想ビデオデバイスを使って、tf bodypixを使えばすごく楽でした(その後 GPUを使ってくれない問題を解決するのは大変でしたが).
모모本体を弄るのではなく、仮想ビデオデバイスを使って解決していく方法は、割と良さそうな気がします.
Reference
이 문제에 관하여(제이슨 AGX Xavierと 모모で背景ぼかしの映像を配信する), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/melpon/jetson-agx-xavier-momo-3bdk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)