はじめに
Deep learningを使用しているバーチャル背景ライブラリ、backscrubをラズパイで実装します。
https://github.com/floe/backscrub
backscrubとは
MeetやZoomのようなバーチャル背景を作成するライブラリです。
人物の切り取りにtensorflowにを使用しています。
v4l2loopbackで仮想videoデバイスを作ることができます。
使用する学習済みモデルによって差異はありますが、ラズパイ4Bでは7~20FPSぐらいで動きます。
結 論
READMEどおりやってもうまくいかないので、Makefileを修正した後にmakeする必要がある。
sudo apt-get update
sudo apt install libopencv-dev build-essential v4l2loopback-dkms curl
git clone https://github.com/floe/backscrub.git
cd backscrub
git clone https://github.com/tensorflow/tensorflow/
sed -i -e "s/build_lib.sh/build_rpi_lib.sh/" Makefile #ラズパイ用のスクリプトに変更
sed -i -e "s/linux_x86_64/rpi_armv7l/" Makefile #ラズパイ用のアーキテクチャに変更
make
実装環境
ハード:Raspberry Pi 4 Model B
Revision | Release Date | Model | PCB Revision | Memory |
---|---|---|---|---|
c03112 | Q2 2019 | 4 Model B | 1.2 | 4 GB |
OS:Raspbian |
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
解 説
backscrubはtensorflowを使用しているので、Tensorflow公式ページのRaspberry Pi でネイティブにコンパイルするを参考にしてコンパイルする。
backscrubフォルダ内のMakefileを2箇所変更する必要がある。
①ラスパイ用のビルドスクリプトに変更。
# cd $(TFLITE) && ./download_dependencies.sh && ./build_lib.sh
cd $(TFLITE) && ./download_dependencies.sh && ./build_rpi_lib.sh
②linux_x86_64をrpi_armv7lに置換する。
# TFLIBS=$(TFLITE)/gen/linux_x86_64/lib/
TFLIBS=$(TFLITE)/gen/rpi_armv7l/lib/
実 行
$ sudo modprobe v4l2loopback devices=1 max_buffers=2 exclusive_caps=1 card_label="VirtualCam"
$ ./deepseg -d -d -c /dev/video0 -v /dev/video1 -m models/selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16.tflite
だいたい7FPSぐらいで動きます。
ラズパイでこのクオリティはすごいのではないでしょうか。
おわりに
ラズパイ4B熱くなりすぎでは?