Michaelです。
今回は、Azure FunctionsとFace APIで「コラ画像」を自動的に作成する『雑コラBot』をご紹介します。
背景
古くから、顔ハメ看板やコラージュ、最近では顔交換アプリや「ディープフェイク」のように、顔を切り抜いて他人の顔を合成する、所謂「コラ画像」は、実用性や問題の有無を抜きにして人々の関心や好奇心をくすぐってきました。
弊社でも、社員のフォースに目覚めた姿などの「コラ画像」が業務の合間を縫って数多く作成され、社員にとっての束の間の息抜きとなっています。
しかし、業務が立て込めば「コラ画像」の作成は滞り、作成する社員、その公開を心待ちにする社員の双方がストレスを抱えて業務に悪影響を及ぼしかねないことが問題となっていました。
その問題を解決すべく開発されたのが、社員に代わって「コラ画像」を自動作成するBot、「雑コラBot」です。
(※事実にもとづいたフィクションです。)
Botの動作
Slackのチャンネルに画像のリンクを投稿すると・・・約30秒でBotがコラ画像が返ってきます!
雑コラBotのしくみ
Slackには、画像のURLを投稿するとリンク先の画像がメッセージに表示されるという機能があります。これはBlob StorageのURLでも例外でなく、読み取り権限が有効であればSASがついていても画像を表示させられます。
なので、メッセージからURLを抽出して、画像をダウンロードして、顔を検出して、加工して、Blob Storageにアップして、画像のSAS付きURLをSlackに投稿すれば、あたかもBotがコラ画像を返してきたかのような動作をさせることができます。
今回のBotでは、以下のようにAzureのリソースを構成し、この動作を実現しています。
使っているサービスはAzure FunctionsとAzure Storage、Face APIの3つのみで、VM等を使わないサーバーレス構成となっています。Azure FunctionsはSlackとメッセージのやり取りをする2つのフロントエンド関数と画像処理をするバックエンド関数で構成し、それらをQueue Storageをトリガーに連携させています。
まとめ
今回は、Azure FunctionsとFace APIを使った「雑コラBot」をご紹介しました。
コラ画像を自動作成などとやっていることはしようもないBotですが、画像加工をモザイク処理に変更して投稿画像のプライバシー保護に役に立てるというような用途にも応用がききます。
次回からは、今回作成した雑コラBotの構成でAzure Functionsを使ったSlack Botの作成、設定方法をご紹介していきます。