スキップしてメイン コンテンツに移動

古典的で未来的な人にやさしい顔映像匿名化

現代では簡単に写真や動画を撮ることができる。それは、個人情報の流出と直結する。 特に動画に映った人物について、匿名化することはなかなかに大変だ。 目線やモザイク、塗りつぶしなどで顔を隠すケースをよく見かけるが、個人的にはちょっと微妙。犯罪臭がするし、淫靡な印象を与えてしまう。 ほかにもアイコンやシンボルで顔を隠したりすることができるツールなどもあるが、ちょっと自分好みではないし、何よりオリジナリティに欠ける。

そこで、古典的でもあり、未来的でもある、そして新しい、そんな顔映像匿名化を考えてみた。

匿名化するにあたって、まずは顔、特に目と鼻を検出できなくてはならない。 幸いなことに、Keypoint R-CNNモデルを使えばそれが可能になる。 利用するだけならば、PyTorchのチュートリアルレベルの知識を持っていれば十分。

そして、コードはできるだけシンプルで分かりやすく、その場ですぐに書けてしまえることが重要だ。 これは大事なことで、たとえ面白そうな技術でも、それを体験できるまでに時間がかかれば多くの人は興味を失ってしまう。 体験して理解さえすれば、達成感と面白さを実感できるし、次を目指す動機づけになる。

閑話休題。さて、今回作るのは、動画の顔画像の匿名化だ。そして、古典的で未来的、何のことだと思われるかもしれないが、使っている技術は新しく、できたものは懐かしいということ。 具体的には、顔画像に細工をして「へのへのもへじ」にしてしまうのだ。とはいっても、目と鼻を置き換えるだけなので「のもの」を使う。 江戸時代中期にはよく知られていたという「へのへのもへじ」は、まさに古典的で懐かしいと言えるだろう。

作成したコードは foota / nomono-anonymizer にある。使い方は次の通り。

$ python nomono-anonymizer.py [入力動画ファイル名] [出力動画ファイル名]

動画はフレームごとに画像データとして処理され、それを事前学習したKeypoint R-CNNのモデルに推論をさせる。 モデルは画像データに対し人物領域を検出し、それに対して目、鼻、耳、肩、肘など、17のキーポイントを推定する。 今回は、右目・左目・鼻の3つのキーポイントを利用し、取得した座標に対して、画像データ上に「のもの」の文字を書き込むだけだ。 あとは、それを出力画像として動画としてエンコードすれば完了となる。

出来上がった動画は以下の通り。使った入力動画はPixabayの「イタリアの人々」(1280x720/19秒)と「食事中の客」(1280x720/13秒)の2つだ。

イタリアの人々

食事中の客

見てわかる通り、これだけ御託を並べて結局やったことは動画に落書きしただけ。まあ、楽しかったので良いのだけど。

最後にCPU/GPUによる実行時間の比較を載せておく。GPUを使わないとなかなか厳しい処理速度だ。

実行時間の比較
動画 CPU / GPU 実行時間 (秒)
イタリアの人々
入力 | 出力
CPU 1646.350
GPU 75.423
食事中の客
入力 | 出力
CPU 1325.606
GPU 60.313

コメント