背景
「マスクして」と直接言うと角が立つ
「マスクしてって、AIが言っています」といえばそうでもないのでは
何をする?
- マスクしていない人を見つける
- マスクをしばらくしていない人に「マスクしぃやぁ」とリコメンドする
実現のために必要なもの
- 顔の部分を認識する
- 顔にマスクがあるかどうかを認識する
- マスク無しの人が以前と同じ人かどうかを認識する
- 一定時間マスクなしの人がいる場合、発声する
どうやって作ろう
- 1-3はモデルを作る必要があるだろう
- 4は1−3ができればルールベースで普通に開発できるだろう
というよみのもと、1を更に考える
- 顔の部分を認識するー>クラウドビジョンでfaceannotationとして囲まれた部分でよいのでは?
- マスクがあるかどうかを認識するー>APIで返してくれるものは見つからなかった、、
- 同じ人かどうか確認するー>Azureの顔検証でできるのでは?
マスク有無の判定は手元で作るしかないかも、、と思ったらlobeというアプリをMSが出していた
マスクなし画像の判定
Predicted: {'predictions': [{'label': 'UnMask', 'confidence': 0.9900614023208618}, {'label': 'Mask', 'confidence': 0.0099386190995574}]}
マスクあり画像の判定
Predicted: {'predictions': [{'label': 'Mask', 'confidence': 0.9465017318725586}, {'label': 'UnMask', 'confidence': 0.0534982867538929}]}
ノーコードのAIモデル構築
とりあえず動かし始めるには十分
環境整えてデータそろえて自前で学習するか事前学習を持ってくるか検証して考えて、、、
という重厚なフローをイメージしたのに、今回のこの程度であればもう道具はそろっていた
やったこと
自分のマスク付けた画像とつけてない画像をそれぞれ20件そこら投入して学習する
当然上記で判定した人物とは全く別物、かつ、背景も雑多
好きな感じにエクスポートする
今回はTensorFlowを選択。出てくるサンプルコードはv1系を使用する(それはそれで面倒なことが起きそうではある、、)
フォルダにあるReadmeにある通りに実行するだけで上記のような結果が得られる。
あとは周辺アプリを開発するだけ
- test-imageフォルダは自分で作成して判定対象の画像を配置した
- tf-venvはreadmeに従って操作すると作成される仮想環境フォルダ
精度が必要なのか?
連携する部分と物理ガジェットは人がするが、もはやAI開発ではなく普通の開発に見える。精度が7-8割で目的を達成できるのであれば注力すべきは物理ガジェットや可愛い声になるのかもしれない。
それはそれとして作れるところまで作ってみよう