電子メールクライアントのMozilla Thunderbird 78でやっとOpenPGPの機能が標準搭載された。 とはいっても、78.0.1ではまだ不完全で、78.1.0でほぼ完成したようだが、デフォルトではOpenPGPは使えない。今後リリース予定の78.2からデフォルトで動作するようになるらしい。 78.1.0で使うためには、「オプション」の「一般」の一番下の「設定エディター...」を開き、 mail.openpgp.enable を true にする必要がある。 ただし、設定をいじると動作保証対象外になるので、自己責任で対応すること。 今回の動作検証ではWindows 10上で実行させた 64ビット版Thunderbird 78.1.0 を使っている。 設定を済ませたら、「エンドツーエンド暗号化」のOpenPGPの「Add Key...」で秘密鍵をインポートもしくは作成する。 GnuPG などですでに鍵を作っているのであれば、それをエクスポートして読み込ませるだけだ。 公開鍵をインポートする場合、「OpenPGP Key Manager」の「Import Public Key From File」で対応可能だ。 早速、メールを作成し、「セキュリティ」から「暗号化が必要」と「このメッセージにデジタル署名」を選択して送信する。 メッセージは自分自身に送っているのであまり意味はないが、それぞれの機能がきちんと動作していることを確認することはできる。 この通り、暗号化とデジタル署名ができていることを確認できた。 PGPは昔からあるが、自分の周りでは使われているのをほとんど見たことがない。 Thunderbirdに標準搭載されたのを機に、広まってくれないだろうか。
現代では簡単に写真や動画を撮ることができる。それは、個人情報の流出と直結する。 特に動画に映った人物について、匿名化することはなかなかに大変だ。 目線やモザイク、塗りつぶしなどで顔を隠すケースをよく見かけるが、個人的にはちょっと微妙。犯罪臭がするし、淫靡な印象を与えてしまう。 ほかにもアイコンやシンボルで顔を隠したりすることができるツールなどもあるが、ちょっと自分好みではないし、何よりオリジナリティに欠ける。 そこで、古典的でもあり、未来的でもある、そして新しい、そんな顔映像匿名化を考えてみた。 匿名化するにあたって、まずは顔、特に目と鼻を検出できなくてはならない。 幸いなことに、 Keypoint R-CNN モデルを使えばそれが可能になる。 利用するだけならば、PyTorchのチュートリアルレベルの知識を持っていれば十分。 そして、コードはできるだけシンプルで分かりやすく、その場ですぐに書けてしまえることが重要だ。 これは大事なことで、たとえ面白そうな技術でも、それを体験できるまでに時間がかかれば多くの人は興味を失ってしまう。 体験して理解さえすれば、達成感と面白さを実感できるし、次を目指す動機づけになる。 閑話休題。さて、今回作るのは、動画の顔画像の匿名化だ。そして、古典的で未来的、何のことだと思われるかもしれないが、使っている技術は新しく、できたものは懐かしいということ。 具体的には、顔画像に細工をして「へのへのもへじ」にしてしまうのだ。とはいっても、目と鼻を置き換えるだけなので「のもの」を使う。 江戸時代中期にはよく知られていたという「へのへのもへじ」は、まさに古典的で懐かしいと言えるだろう。 作成したコードは foota / nomono-anonymizer にある。使い方は次の通り。 $ python nomono-anonymizer.py [入力動画ファイル名] [出力動画ファイル名] 動画はフレームごとに画像データとして処理され、それを事前学習した Keypoint R-CNN のモデルに推論をさせる。 モデルは画像データに対し人物領域を検出し、それに対して目、鼻、耳、肩、肘など、17のキーポイントを推定する。 今回は、右目・左目・鼻の3つのキーポイントを利用し、取得した座標に対して、画像データ上に「のもの」の文字