〜画像認識技術の進化を実感〜CNNの歴史Part2

Part1ではCNN(畳み込みニューラルネットワーク)の仕組みとその画像認識分野におけるデビューについて話した後に、LeNet、AlexNet、VGG、GoogleNetなどいくつかの歴史的に有名なCNNモデルについて紹介してきました。

gri-blog.hatenablog.com

このPart2ではその続きを紹介します。具体的には、この2つです。

  • はじめてヒトの認識精度を超えたResNet

  • 効率的なモデルスケールアップのメソッドを取り入れることで高精度(SoTA)を達成しつつ、パラメータ数も大きく減らせたEfficiencyNet

■ResNet(Residual Network; 残差ネットワーク)

Kaiming He氏(当時Microsoft所属)によって提案され、2015年のILSVRCで優勝したネットワークです。非常にディープかつ表現力の高いモデルとして、はじめてヒトの認識精度の5%を超えました。

それまでのCNNでは表現力を高めるために層を深くしようとしたが、深すぎると性能が落ちるという壁にぶつかりました。ResNetではこの問題を、スキップ・コネクション構造を取り入れることで解決しました。スキップ・コネクション構造は、ある層への入力を飛び越えて層をまたいで奥の層へ入力してしまう形式です。これにより勾配消失を防止しながら非常に多層のネットワークを実現してくれます。ResNetは最大で152層もの深さを実現し、前年優勝のGoogLeNetの22層より遥かにディープにすることができました。 参考:https://arxiv.org/pdf/1512.03385v1.pdf

■EfficientNet

AlexNet以降のCNNベースモデルにおいて、精度をあげる作戦は多くの場合、モデルを大規模にスケールアップすることでした。例えば、ResNetはレイヤーの数を増やすことによって、ResNet-18からResNet-200まであります。 モデルを大きくする際に、以下のようなことを試すことが多いです。

  • 幅:1レイヤーのサイズ(=ニューロンの数)を増やす

  • 深さ:レイヤーの数

  • 解像度:入力画像の大きさ

従来のアプローチでは、CNN の幅、深さ、画像の解像度などのネットワークの次元を「適当」に任意の大きさにスケールアップしていました。当時は一般的にモデルを大きくすることで精度が向上することが知られていたが、その際のネットワークの深さや解像度の適切な値に関しては不明確なことが多かったのです。このラフなアプローチをとっても、精度を向上させることには成功しました。しかしながら、モデルが複雑のあまり、チューニングが大変かつコストも高いので、総合的な性能が良いとは言えませんでした。

この事態を変えたのは、ICML2019で発表された論文において提案された、モデルスケーリングの「法則」です。結論から言うと、幅、深さ、解像度など、それぞれを何倍増やすかは、複合係数(Compound Coefficient)と呼ばれる係数を導入することで最適化します。こうして、一定のスケーリング係数を使って均一にCNNをスケールアップしていきます。参考: 参考論文「EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks」解説; https://arxiv.org/abs/1905.11946

このCNNをスケールアップするための優れた手法が、EfficientNet と呼ばれるモデル群の開発につながりました。EfficientNetではCompound Coefficientに基づいて、深さや広さ、解像度を最適化しながらスケール調整することで、小さなモデルで効率良く高い精度を達成しています。モデルは開発当時の最高水準の精度を上回りました。また、従来のモデルよりもパラメータ数を激減させることにも成功しました。モデルが小さい(パラメータ数が少ない)と、効率(小型化と高速化)も改善されます。 下図にベースライン・ネットワークであるEfficientNet-B0 用のアーキテクチャの模式図があります。ご覧の通り、比較的シンプルかつ簡潔な構造をしております。

f:id:gri-blog:20210612170315p:plain
ベースライン・ネットワークであるEfficientNet-B0 用のアーキテクチャ 画像引用:Google AI Blog, https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html

EfficientNet の性能は、下図から見ることができます。ここでは、ImageNetデータを用いた、既存のCNNとEfficientNet系モデルを比較した実験の結果を示しています。EfficientNetは既存の CNN に比べて、精度と効率の両側面で優れていることが分かりますね。最高レベルの精度を実現していると同時に、パラメータの数と計算量は数倍〜1桁は減っています。例えば、広く認知されていたResNet-50に比べて、EfficientNet-B4は同じくらいの処理速度と計算量であると同時に、精度が、が76.3% から82.6%まで、と 6.3%も改善しています。

さらに、EfficientNetは、転移学習でも性能を発揮できることが示されています。比較的シンプルかつ簡潔な構造をしており汎用性も高いわけです。EfficientNet モデルはオープンソースとして公開されています。 (参考)EfficientNet の実装:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

f:id:gri-blog:20210612170334p:plain
EfficientNetを従来のCNNモデルと、精度と効率の面で比較した結果 https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html

担当者: (分析官・講師)ヤン