株式会社Noveraが運営する、スマートフォン向けアプリ「viewty」のAI技術の紹介をするブログです

肌測定アプリviewtyのつくりかた 後編 ~分類タスクのモデルを性能比較~

f:id:NoveraTech:20200529164751p:plain

こんにちは、株式会社NoveraのAIエンジニアの諸冨と申します。

本記事は、弊社で開発しているアプリ「viewty」の技術を紹介する連載「肌測定アプリviewtyのつくりかた」の第3回です(全4回を予定)

今回の記事では、分類タスクに対する比較検討したモデルについて説明していきます。

 

これまでの記事はこちら

novera-tech.hatenablog.com

novera-tech.hatenablog.com

 

 

1.分類モデルの構造の話

今までAIの開発をする中でタスクを実行するモデルの構築はたくさん行ってきました。

その経験上、タスクごとで個人的なモデル構築の戦略パターンがあることを発見しました。
その中でも今回は、分類モデルを作成するときのパターンを紹介します。

分類モデルを作成するとき、3つのことを考えます。

1.基準値として用いる構造は何か

2.層数をばか深くした場合の構造は何か

3.最新のCNNモデルとして使用できるものは何か

 

ベタな話ですが、モデル構築において基準値は非常に重要になります。
というのも、適当にモデルを選んで学習させると、選択するモデルとして、
何が正解で何が不正解かわからないからです。

なので、今回基準値のモデルとしては、VGG16層を使用しました。
また、層をディープにした場合に用いる構造としては、Resnetを使用しました。
この2については、今回のデータセットにおいて、
層をディープにした場合にどのような現象が発生するのかを確認するためです。
最後に3ですが、これについては1,2で王道のモデルを使用するのに対して、
チャレンジ的な意味合いを含みます。

そのため、今回はEfficientnet、AttentionRestnetの2つを選択しました。
それでは、次にそれぞれの構造について簡単に説明していきます。

と言っても、論文を読んでしまえば理解できると思うので、

簡単にだけ説明します。

 

2.モデル説明

2-1.VGG16層について

VGG16層についての研究は、

「Very Deep Convolutional Networks for Large-Scale Image Recognition」で述べられています。

基本的な構造については、Convolutional layerとAffine layer、Pooling layerに構成されており、非常にシンプルな構造です。

Convolutional layerとAffine layer、Pooling layerの意味がわからない場合は、下記を参照ください。

novera-tech.hatenablog.com

 この構造の1番のポイントは、Convolutional layerのフィルタの大きさを3*3で構築しており、

VGGの本研究以前のモデルよりも非常に小さいフィルタを採用しており、

これを16~19層の構造にうまくはめ込んでいることです。

また、基本的な構造だからこそ、どのようなデータセットに対してもある程度の精度が望めるので、

個人的には、分類タスクの場合、このモデルを基準値に活用しています。

この構造は他の論文でも引用されることが多く、多くのモデルの基礎概念として定着しています。

f:id:NoveraTech:20200515184352p:plain

 

2-2.Resnetについて

こちらについては、Deep Residual Learning for Image Recognitionで述べられています。

identity mappingが特に重要で、

ここより深い説明は、本文の論文より、

Identity Mappings in Deep Residual Networksの方が深い考察を行なっています。

実務的な観点から見て、深い残差ネットワークにおけるidentity mappingの効果によって、

勾配消失系の諸問題を解決できるので、データセットの状況次第ですが、基本的にはどんどん深くできます。

そのため、挑戦する価値のあるモデルだと思います。

f:id:NoveraTech:20200515184401p:plain

 

2-3.EfficientNetについて

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks内で述べられています。
EfficientNetでは、従来のConvNetは精度を向上させる時に、全体的なスケールアップを行なってきました。

本論文では、構造上スケールアップ可能なパラメータの何をどのようにスケールアップすると、

パフォーマンスが向上するのかを観察しています。

さらに、この観察に基づいて独自の合理的なスケールアップを提案するものです。

後半部では、スケールアップ方法を取り入れ改良を加え、

ConvNetよりも軽量化、高速化、高精度を実現した、独自の構造EfficientNetを提案しています。

f:id:NoveraTech:20200515184334p:plain

 

 

2-4.AttentionRestnetについて

Residual Attention Network for Image Classification内で述べられています。

 従来、機械翻訳等の時系列データを扱う分野で活用されてきたAttentionメカニズムを、
Restnetをベースのモデルとして組み合わせた構造となっています。

ただし、単純に組み合わせるだけでは、構造的に精度の低下等デメリットも孕むため、
かなり改良されています。

f:id:NoveraTech:20200515184342p:plain

 

3.まとめ

今回の、分類タスクのモデルの中で、性能指標等を行なって、
一番ポテンシャルが高かった、EfficientNetを活用した構造を採用しました。


AIの開発経験を行なっていくと、
自分なりのパターンが見えてくるかと思いますので、ぜひ開発に取り組んでいる方は頑張ってください。
次回は、セグメンテーションモデルについて触れていきます。

--------------------------------------------------------------------------

・株式会社Novera コーポレートサイト

https://corporate.novera.co.jp/

 

・viewty アプリダウンロードサイト

https://viewty.page.link/RtQw

 

・株式会社Novera 公式Twitter

https://twitter.com/novera_pr