社員とお菓子を自動で認識、[お買い上げ]ボタンを押すだけ!経理部が月1回レポートを確認して、給与引き落としなぜこのアプリを作ったかドリンクは自動販売機でSuicaで買えるのに、置き菓子は相変わらず小銭が必要だなんて...どんなアプリ?買いたいお菓子を手に持って、設置されているタブレットのカメラボタンを押すと、タブレットのカメラが手に持っているお菓子を認識します。顔認識で買物客が社員の誰かを識別します。「お買い上げ」をタッチ。これだけの操作で購入が完了します。カメラボタンを押すときに笑顔でいると、「スマイルポイント」がたまります。「スマイルポイント」がたまると購入時に割引を受けることができるようになります。購入した明細はSalesforce上に自動で記録されます。経理部は月1回、レポートを確認し、それをもとに給与天引きすることが可能です。実現方法(アーキテクチャ)アプリUIはLightningプラットフォームを利用して構築されています。Component、Visualforce、Apexを利用しています。Detectionを利用しています。Rekognitionを利用しています。トレーニングデータはSalesforce内にある各ユーザーのプロフィール写真を利用しています。今回は300人弱の顔を学習させました。Classificationを利用しています。手に持ったお菓子を正しく認識させるために、なるべく少ない撮影画像でトレーニングすることを最初に考えました。実際にサービス化した際に、商品画像を何枚も撮影してもらうのは、現実的ではないと考えたからです。Augumentation技術を使って画像を大量生成することを最初に試しました。回転させたり、RGB値をずらしたりして学習させましたが、うまくいきませんでした。最終的にはEinsteinのお作法に沿って、背景やお菓子の持ち方を変えて数十枚の写真を用意し、モノクロ化とぼかし加工で画像枚数を4倍にし、それをトレーニングに使用しました。笑顔とそうでない顔画像をそれぞれ600枚ずつ用意して学習させました。Classificationに投げても精度上がりませんでした。Classificationに投げると精度がでるようになりました。Apexで顔部分の切り抜きが難しく、JavaScriptで行うためには、顔認識時と笑顔検出時の2回サーバーとの通信が必要となり、応答速度がかなり遅くなってしまったので、今回のアプリのソースコードからは最終的に除外しました。ComponentやVisualforceなどのHTML系テクノロジのみで、どこまで操作感の良いUIが実現できるかに挑戦しました。結果、カメラボタンと「お買い上げ」ボタンの2タッチのみでお会計を済ませることに成功しました。カメラボタンがあることで、カメラと人物の距離感を一定にすることができ、認識精度の向上に寄与していると考えています。気に入っているところ!「スマイルポイント」に注目していただきたいと思っています。人は笑うことでより健康でいられる、ということが統計的に実証されています。購入時に毎回笑顔でいることで、社員の健康度を少しでも上げることに寄与できると思っています。社員全員が笑顔でいられる会社はきっと良い会社ですよね!時間があればチャレンジしたかったこと大量の背景画像をあらかじめ用意しておいて、お菓子画像を1枚撮影すると、背景画像と合成したトレーニング画像を大量に作成して精度が出るか試してみる。笑顔のときに「笑顔がいいですね」「毎日笑顔でいいですね」などを合成音声にしゃべらせる。Rekognitionではなく、自前のモデルをHeroku上にデプロイして推論(Inference)させる。Rekognitionと同じように1人あたり1枚だけの画像で顔認証をする方法を独自構築してみたかった。iOSのネイティブアプリにした場合に、カメラボタンを押さずに、社員とお菓子を自動認識することができるか。次のステップこのアプリケーションの将来の展開として次のようなものを考えています。顔認証部分を拡張して、タイムカードの打刻に利用する。出退勤管理のアプリと連動するのも良い。お菓子以外に、社食で提供している皿モノを認識させる。社食の会計を自動化できるし、皿モノのカロリーや栄養成分を登録しておけば、「最近、脂質の取り過ぎです」とかの警告を送ることができ、より社員の健康に貢献できる。アプリを試すにはコンテスト主催者の方アプリを実際にお試しいただくためのログインID/パスワードはメッセージ機能を使って別途お送りします。実際に試すには、顔画像の登録が必要ですので、お試しになりたい場合は、顔画像を提供いただければ登録いたします。(現在は顔画像の登録機能はアプリに実装できておりません。)それ以外の方6/8(金)に開催される最終選考会でデモを見てください!皆さんでお試しいただけなくて、ごめんなさい。