《【開発日誌#6】AI画像認識を用いたアプリ開発① に関する記事はこちらから》
《【開発日誌#8】AI画像認識を用いたアプリ開発② に関する記事はこちらから》
<プロジェクト概要>
メガネをかけてiPadで自分自身を撮影し、かけているメガネのレンズの色を変更させるサービスのiPadアプリ開発をすることになりました。
このアプリでは大きく2つの開発が盛り込まれています。
①メガネレンズの枠をAIで読み取る
②髪の色、フレームの色、肌の色、レンズの色からおすすめ度を算出する
上記アプリの開発も終盤に差し掛かった頃、新たな課題が見つかりました。
《課題》
サーバー費用が高い・・・💸
AI解析時の計算量が多いため、サーバーに負荷がかかってしまい費用が高くなってしまうということが分かりました。
《解決案》
AIの計算モデルを変更し、サーバーに負荷がかからないように再構築する。
《構築ロジックについて》
《初期構築モデル~U-net~》
前々回の記事でも記載しましたが、
医療用の画像処理を研究していた頃の2015年にFCN式U-netネットワークが公表されました。U-netの名前の由来は、設計図上で「U」の文字のようになるところからきています。
図1:U-net設計図(https://arxiv.org/abs/1505.04597v1)
このモデルは、データが元々少ない医療業界などでは最適なモデルで、少量のデータを生かすことができる優秀なモデルですが、優れた結果を出すためには、概ね3000万パラメータを用いて計算を行う必要があり、このパラメータ数の多さがサーバーに膨大な負荷をかけることになっていたということが分かりました。
U-netでは畳み込みニュートラルネットという手法を用いて、一枚の画像を分析していきます。
簡単なイメージは、
大きな画像から大まかな特徴を取得する
↓
画像を細かく分け、それぞれの画像で特徴を取得する
↓
さらに細かく分け、それぞれの画像で特徴を取得する
・
・
・
を繰り返し、複雑な画像でも分割していくことにより、物体の細かい境界線などがわかるようになる というイメージです。
《改良構築モデル~DDRNet(Deep Dual Resolution Network)》
DDRNetsの研究者が2021年 論文を一般公開しました。
DDRNetsは、1つの幹から始まり、解像度の異なる2つの平行なブランチに分かれ、一方のブランチでは、比較的高解像度の特徴量マップを作成し、もう一方は豊富な意味情報を抽出 し、2つのブランチ間には、複数のバイラテラルコネクションが橋渡しされ、効率的な情報が結合されるという計算モデルです。
簡単なイメージは
画像を高解像度と低解像度に分割し、それぞれのブランチ(高解像度と低解像度)で解析処理を行い、それぞれのブランチで解析した情報をマージし、最終的な画像の解析を完了する というイメージです。
このような計算を行うことにより、DDRNetは最先端のモデルに匹敵し、計算量も少なくなります。
計算時のパラメータとしては、約800万パラメータ程度まで下がります。
図2:DDRNetsによるセマンティックセグメンテーションの概要
《U-net vs DDRNet の簡易比較》
U-netからDDRNetへ移行することにより、計算量を大幅に下げることができ、AI解析精度を保ったままサーバー費用を半分以下にまで抑えることができました!
《まとめ》
ここまでで今回開発したiPadアプリに使用する3つの記事を書かせていただきました。
難しい部分もあったと思いますが、AIの技術を用いることによって世の中を良くできる可能性が見えたのではないかと思います。
これからもAIを用いたサービスなどは増えていくことが予想されますので、移り変わる技術を柔軟に取り入れていきます!
当社の案件はとにかく「多彩」!
求められる技術レベルも日に日に高まっています。
今後もモダンな技術を用いたサイト/アプリケーション構築が増えていくことが考えられますので、ご興味のある方は一度ご相談を!
以上が今回の記事のまとめでした。
みなさまの参考になれば嬉しいです。