ひとりひとりに、心のこもったメッセージを届けたい。そんな機会が時々はあるでしょう。
思いを胸にハガキやメッセージカードに言葉をつづったあなたは愕然とするはずです。
- Backspaceで文字けせねぇ
- Ctrl+Zで取り消しできねぇ
- なにより俺の文字汚すぎへん?
普段はいつでも修正可能な電子の世界に身をゆだね、ペンを握るのはAmazonの受け取りサインの時だけ!という生活を続ける俺たちに、紙とペンでしかも大切なメッセージをつづるのは、あまりに高度なタスクになりました。
そこで、技術の力でおもてなしの心を量産することにしました(発想が〇〇)。作成したアプリが以下になります。
(デモとして、今年引退した安室奈美恵さんのクリアファイルを使わせていただきました)
- おもてなされる側は、配布された台紙に印刷されたQRコードからアプリにアクセスする
- アクセスしてカメラの利用を許可すると、ウェルカムメッセージが表示される
- 顔が映ると、男性なら王冠、女性ならティアラが表示される(認識されるまでは、ハートのサークルが表示される)
顔を認識した際に表示する画像は、個別に変更することも可能です。そのため、その人にあった画像、そしてメッセージを添えることができます。「顔が認識された時」に表示されるというインタラクションは、おもてなし感を高めてくれます。
アプリのポイントは、以下2点になります。
- 軽量な顔認識機能の実装
- 参加者にアクセス先のURLを伝えるための、メッセージカード印刷機能
これから順に解説をしていきたいと思います。実装は以下で公開しているため、おもてなしを量産したいときにご利用ください。
軽量な顔認識機能の実装
「顔を見て言葉を伝える」これはおもてなしの根幹です。そのため、顔認識機能はおもてなしの量産にあたっては欠かせない機能ということができるでしょう。
近年では、TensorFlow.jsの登場もあり、気軽にブラウザ上で機械学習を実行できるようになりました。そのため、TensorFlow.jsを利用した顔認識ライブラリも検索すればいくつか見つかります。しかし、一点大きな問題があります。
重い!
これにつきます。おもてなしをしたい方々は、もちろん機械学習に詳しいわけではありません。ブラウザの"Loading..."を見て、「あ、TensorFlow.jsか。ダウンロードしばらく時間かかるな。」なんてことは思ってくれません。普通のサイトばりにサクッと動く必要があります。
今回は、clmtrackrというライブラリを使いました。SVMベースの顔認識機で、自前での学習も可能になっています。顔の特徴点をかなり細かくとることができます。
基になっているのは、Deformable Model Fitting by Regularized Landmark Mean-Shiftという論文です。こちらは顔認識というよりは、関連する複数のランドマークの位置(例えば目と鼻の位置)をどう最適化するのかということがメインの研究になります。発表は2011年とDNN全盛となる前の時代のものですが、特徴点の認識精度が仮にあまり高くなかったとしても、特徴点間の関係の蓋然性から妥当なものを絞り込む、というアイデアはいまでも使えるんじゃないかと思います。
実際に試すと顔の回転に結構弱いのですが、スマホに顔を向ける際はおおむね正面であるため、これで良しとします。
メッセージカード印刷機能
アプリ自体は、WebアプリケーションにしてHerokuにデプロイすれば配置はできます。問題は、アクセス先URLを参加者に伝えなければならないという点です。しかも、参加者に負担をかけずにです(URLを手で打ち込ませるなどもってのほか)。最も良いのは、宅配便の再配達受付でも使われるQRコードです。
今回はアクセス先のURLを変えることで個々人のメッセージを変えているため、QRコードも個々人によって異なります。「参加者それぞれのQRコードを含むメッセージカードを作成する」これが次なるミッションとなります。作成は手で行うにはハードすぎるため、こちらも量産を検討します。
最終的に、QRコードの作成にはqrcode、台紙の作成にパワーポイントの作成が可能なpython-pptxを使用しました。実際には、以下のような台紙が作成できます。
あとは、これを印刷してきれいなメッセージカードに貼れば完成です。
・・・そう、ここまで自動化しても、「台紙を紙から切り出し(A4 1枚に6枚印刷されるので、はさみで切りだす必要がある)、メッセージカードに糊で貼る」という作業が残るのです。
一つ一つの台紙をメッセージカードに貼るときに、感謝の思いを込めて丹精に貼りましょう。そこに、量産しきれないおもてなしが生まれるはずです(いい感じにまとめた)。