《【開発日誌#1】AI画像認識を用いたアプリ開発 に関する記事はこちらから》
<プロジェクト概要>
メガネをかけてiPadで自分自身を撮影し、かけているメガネのレンズの色を変更させるサービスの開発をすることになりました。
このアプリでは大きく2つの開発が盛り込まれています。
①メガネレンズの枠をAIで読み取る
②髪の色、フレームの色、肌の色、レンズの色からおすすめ度を算出する
今回の開発日誌では、②の開発について記載します。
《クライアントの課題》
《解決案》
iPad上で、各レンズ色 と 肌色、メガネフレーム色、髪色 のおすすめ度を表すバックデータを元に現在のレンズ色のおすすめ度を機械学習で算出できるようにしました。
《実装方法》
①【開発日誌#1】AI画像認識を用いたアプリ開発 でレンズの色を変更できるようにした後、肌色、メガネフレーム色、髪色のRGB値を読み取る
②①で算出したRGB値とレンズ色をサーバーへ送信する
③サーバー上の機械学習モデルより解析
④解析結果のおすすめ度をiPadへ返送する
⑤現在のメガネレンズのおすすめ度を表示
《構築フロー》
(1)おすすめ度判定用ベースデータの作成
肌色1 メガネフレーム色1 髪色1 レンズ色1 → おすすめ度★5
肌色2 メガネフレーム色2 髪色2 レンズ色2 → おすすめ度★3
肌色2 メガネフレーム色1 髪色3 レンズ色5 → おすすめ度★4
・・・
のような大量のバックデータを用意します。
(2)色のベースデータの作成
<肌色>
肌色1:(235, 193, 166)、(253, 233, 220)、・・・・・
肌色2:(214, 180, 163)、(233, 191, 181)、・・・・・
・
・
・
<メガネフレーム色>
メガネフレーム色1:(225, 190, 188)、(217, 194, 188)、・・・・・
メガネフレーム色2:(39, 188, 236)、(0, 97, 196)、・・・・・
・
・
・
のような大量のバックデータを用意します。
(3)おすすめ度を判定するモデルの構築
モデルの作り方としては、k近傍法(*1)とCIELAB色空間(*2) を使用したモデルの構築を実施しました。
事前に用意した肌色、メガネフレーム色、髪色、レンズ色のRGB値をCIELAB色空間式にプロットし、
アプリ上でユーザーが選択した色をCIELAB色空間へプロットし空間内に配置させ、
点と点の距離を計測し、どの色に一番近いかを算出することでより正確な色判定をすることができました。
ユーザーが選択した色と(1)で作成したバックデータを元におすすめ度を算出します。
図1:メガネフレーム色認識モデル空間(CIELAB色空間)
*1:機械学習アルゴリズム。特殊空間における最も近い訓練例に基づいた分類の手法であり、パターン認識でよく使われるもの。ボロノイ図(*3)によく似たアルゴリズムです。
図2:ボロノイ図
*2:Lab色空間は1976年に国際照明委員会(CIE)が策定したほぼ完全な色空間です。RGB規格との違いは、人間の視覚に最も合う3次元モデルとなっている点です。このモデルは完璧なものではありませんが、RGBより色の差異が正確に計算可能です。
*3:平面上にいくつかの点が配置されており、その平面内の点を、どの点に最も近いかによって分割してできる図のこと。
実際には下記の流れでおすすめ度をiPad上へ表示します。
《RGB値読み取り画面》
《おすすめ度算出結果画面》
以上が今回の記事のまとめでした。
みなさまの参考になれば嬉しいです。