こんにちは、株式会社NoveraのAIエンジニアの諸冨と申します。
本記事は、弊社で開発しているアプリ「viewty」の技術を紹介する連載「肌測定アプリviewtyのつくりかた」の第2回です(全4回を予定)
・前回の記事
前回はCNNについて僕の視点で説明させていただきました。
今回は、弊社viewtyのAI開発フローを僕の視点で説明して行きます。
1.AIの設計はじめ
まず、viewtyのAI開発の設計で考えた流れを説明します。
一般的には、開発するAIのプロダクトについて、現時刻でのプロダクト設計の選択肢として、教師あり、教師なし、RLのいずれかになります。
viewtyの場合肌の分析AIのため、教師ありとなり、正解の定義を明確化する必要があります。
学術的なインフラが整備されている場合は、そこを基礎として定義していけば良いですが、viewtyの場合では少し毛色が違います。
肌の定義について調査すると、A社では油分がn%で水分がm%の場合は脂性肌、B社ではTゾーンが油っぽいから脂性肌、といったように企業によって肌の定義が異なることが発覚しました。
そのため、設計の段階で最初のタスクはこの肌の定義を整備することでした。
(もう少し細かくいうと、データセットを作成するアノテーションのロジックを明確化するというタスクです)
2.アノテーションについて
肌の定義方法ですが、店頭で化粧品を販売している美容部員など美容のプロの方々200人以上にアンケートをお願いしました。
この時、アンケートで設計した意図としては、データセットのアノテーションをバイトでもできるくらいの情報粒度で取得するためです。
アンケートでは、顔の画像を見せて、ラベル付とその理由を確認しました。
アンケートの母数としては多ければ多いに越したことはないかと思いますが、取得できる件数には制限があるのが現実です。
なので、各ドメインと質問内容にもよりますが、100~200人を初手の打ち方として考え、そこからデータの分布の仕方を確認して次の手をどのように打つか考えました。
3.データセットについて
データのアノテーションを整備したら、次に作成したデータセットの解析を行います。
viewtyの場合、アノテーションで用意したデータについて、下記のように確認を行いました。
1.評価値のAで入っていたデータがGでも入っていないか等、データの重複をしてないかの確認
2.画像データとしてボヤけた画像等、粗悪なデータはないかの確認
3.学習用データのデータ数が偏ってないかの確認
4.輝度明度彩度の影響度が高いものはないかの確認
他にもデータセットの調整では、データサイエンスしましたが、
正直モデルを作成してから問題が数多く発生するのは、
開発経験上当たり前なので、いったん上記の確認事項を重点的に作業しています。
4.モデル選定について
データセットの作成が終わったら、モデルの開発方針を選定します。
AI全体のどの構造を選定するにも、まずはフルスクラッチで開発するのか既存の構造を基礎として改良するのかの2つを選ぶ必要があります。
viewtyでは、学習構造についてフルスクラッチでの作成も検討しましたが、時間的な兼ね合いもあり、ベースとなる構造を選定し修正してモデルを作成するという方針をとりました。
一応、使用する構造の話ですが、ここで思考するべきことは2つあります。
1.AIのどの技法を使うのか
今回の設計論理の流れ上、美容のプロが目で見て判断するという処理をAI化するといった流れを多分に含んでいるため、viewtyではCNNを選定しました。
2.YNL(You never learn)系アルゴリズムと比較してメリデメは何か?
固定値で閾値設定する等の画像処理との比較です。
詳しくは下記の記事の「viewty流の肌分析」の項目を読んでください。
結論、ベースとなる既存のCNNの構造を選定、修正してモデルを作成することにしました。
さらに、CNNの中でもタスクごとの分類。基本的に、分類系とセグメンテーション系とで分けました。
・分類系
肌性
キメ
明るさ
保湿
肌の色
柔らかさ
・セグメンテーション
大ジワ
小ジワ
ほうれい線
ニキビ
シミ
毛穴
目の隈
5.まとめ
今回、viewtyで開発したAIがどのようなフローを経て開発されているのかを記載させていただきました。
自分はJDLAの講師もしており、その時も思っていたのですが、今のAIを学ぼうとしている人たちは、実務的な動きに関して、机上で学んだことを活かしきれてないのかなと思っています。
原因としては、AI開発の全体の設計力が足りておらず、自分の学んだことがどの場面で発揮できるのよくわかってないからかと思います。
是非、AIストラテジストとしての能力を鍛えてから、勉強していただければと思います。
今回は、前回よりも実務ベースの話なので、ちょっとはわかりやすく説明したつもりです。
次回、ようやく分類系、
セグメンテーション系のCNN構造のお話ができると思いますので、乞うご期待。
--------------------------------------------------------------------------
・株式会社Novera コーポレートサイト
https://corporate.novera.co.jp/
・viewty アプリダウンロードサイト
・株式会社Novera 公式Twitter