2021/03/19
Background Matting を Linux のウェブカメラで使えるようなプラグインを Rust で書いた。
"Real-Time High-Resolution Background Matting" という論文があり、画像と背景を入力するとニューラルネットで背景以外の部分を切り出してくれるというもの。
別にニューラルネットじゃなくてもっとナイーブで高速な手法があるんじゃない?という気もするが、手法の内容自体にはそこまで興味がないので深く考えないことにする。
この論文はちゃんとしていて、参考実装と学習済みモデルとウェブカメラ用のPython製プラグインが提供されている。
これをベースに、Rustでtch-rsでTorchScriptを読み込み、カメラからの入力から画像を切り出して、ダミーのカメラに流し込むようなツールを書いた。YUYVやRGB3など映像フォーマット周りは知らないことだらけで大変だった。