画像認識の歴史をたどると、新しいモデルがただ次々に登場したというよりも、もっとよく見たい、もっと深く学びたい、もっと軽く使いたい……という願いに応えて、少しずつ進化してきた流れが見えてきます。
一枚の画像を見て、「これは猫だ」と答える。そこからさらに、もっと正確に、もっと速く、もっと少ない計算で、もっと複雑な特徴まで見分けたい。
そうした工夫の積み重ねの中で、代表的な画像認識モデルたちが生まれてきました。
AlexNet・VGG・GoogLeNet
― ブレイクスルーを起こした初期のモデル
AlexNet
まず大きな転機になったのが、AlexNetです。
AlexNetは、ディープラーニングが画像認識で大きな成果を出せることを広く印象づけた、代表的なモデルとして知られています。
AlexNetが重要なのは、ただ深いネットワークを使ったからだけではありません。
このモデルには、当時としてはかなり多くの工夫が取り入れられていました。
たとえば、
・ドロップアウトで過学習を防ぎやすくする
・データ拡張で学習データの見え方に多様性を持たせる
・活性化関数やGPU活用など、学習を進めやすくする工夫を入れる
といったテクニックです。
つまりAlexNetは、いろいろな工夫を組み合わせることで、深層学習を画像認識で本格的に成功させたモデルだと言えます。
たとえるならAlexNetは、新しい道を切り開いた先駆者であると同時に、その道を通るための実用的な装備までそろえた存在、という感じです。
VGG
そのあとに登場したVGGは、比較的シンプルな構造で層を深く重ねていくモデルです。
VGGの特徴は、複雑な工夫をたくさん入れるというより、小さな畳み込みを丁寧に積み重ねて、深くしていくところにあります。
これは、特別な形の部品を多用するというより、同じ形のレンガをまっすぐ積み重ねて、しっかりした塔を作る感じに近いです。
構造がわかりやすく、後のモデルの土台としてもよく参照されました。
GoogLeNet
さらに、GoogLeNetは、「一つの層で、いろいろな見方を同時にできないか」という発想を強く押し出したモデルです。
その中心にあるのが、インセプションモジュールです。
インセプションモジュール
インセプションモジュールでは、同じ入力に対して、
・小さめの畳み込み
・少し大きめの畳み込み
・プーリング
などを並行して行い、その結果をまとめます。
これは、一枚の絵を見るときに、
・細かい模様を見る人
・少し広い形を見る人
・全体のざっくりした特徴を見る人
が同時に観察して、その結果を持ち寄る感じに近いです。
つまりGoogLeNetは、一つの尺度だけでなく、複数の見方を同時に使って画像を理解しようとしたモデルなのです。
GAP(Global Average Pooling)
GoogLeNetでよく知られているもう一つの工夫が、GAPです。
GAPは、特徴マップ全体を平均して、一つの代表値にまとめる方法でした。
普通に考えると、最後に全結合層をたくさん重ねて分類したくなります。
でもそれをすると、パラメータ数が増えやすくなります。
そこでGAPを使うと、
・特徴マップ全体の情報をコンパクトにまとめられる
・全結合層に比べてパラメータ数を減らしやすい
・過学習を抑えやすい
という利点があります。
たとえるなら、たくさんの観察メモを最後に全部そのまま抱えるのではなく、この画像全体として、この特徴はどれくらい強かったかを一行で要約するようなものです。
GoogLeNetは、このGAPを取り入れた代表例としてもよく知られています。
Auxiliary Classifier
GoogLeNetには、Auxiliary Classifier(補助分類器)という工夫もありました。
これは、ネットワークの途中にも小さな分類器を置いて、学習を助ける仕組みです。
深いネットワークでは、奥まで勾配が伝わりにくくなることがありました。
そこで途中にも「小さな出口」を用意して、学習の信号を途中の層にも届きやすくする、学習を安定させやすくする、という役割を持たせたのです。
長い廊下のずっと先にしか出口がない建物ではなく、途中にも小さな扉をつけて、空気や光が入りやすくする感じに似ています。
このようにGoogLeNetは、
・インセプションモジュールで多様な見方を取り入れ
・GAPで最後を効率よくまとめ
・Auxiliary Classifierで深い学習を助ける
という、意欲的な工夫を持ったモデルだったのです。
ResNet・Wide ResNet・DenseNet・SENet
― 深いネットワークを学びやすくしたモデル
層を深くすると、より複雑な特徴を学びやすくなります。
でもその一方で、以前見たように、深いネットワークは学習しにくくなるという問題もありました。
そこで大きな役割を果たしたのが、ResNetです。
ResNet
ResNetは、スキップ結合を使って、元の情報をそのまま流しながら、必要な修正だけを学びやすくするモデルでした。
推敲のたとえで言えば、毎回全部を書き直すのではなく、「今ある答えに、修正メモをつけ足す」ような発想です。
これによって、より深いネットワークも学習しやすくなりました。
Wide ResNet
Wide ResNetは、そのResNetの流れを受けつつ、ただ深くするだけでなく、横幅を広げる方向も重視したモデルです。
深さだけを追うのではなく、一つひとつの層の表現力も高めようとしたわけです。
DenseNet
DenseNetは、スキップ結合をさらに密にしたようなモデルです。
前の層の情報を、後ろの層たちへどんどん渡していくことで、特徴の再利用をしやすくしました。
SENet
SENetは、少し違った方向の工夫を持っています。
これは、特徴マップの中で、どのチャネルがより重要かに注目して重みづけを行うモデルです。
ただ特徴を作るだけでなく、「どの特徴をより強く見るべきか」を学ぶ仕組みを入れたのです。
この流れでは、ただ深くするのではなく、深さをどう扱いやすくするか、どの特徴を大事に見るかが大事になっていったことが見えてきます。
EfficientNet・MobileNet・MnasNet・NAS
― 軽くて強いモデルを目指した流れ
画像認識モデルは、性能だけを上げればよいわけではありません。
スマートフォンや小さな機器でも使いたいなら、軽くて速いことも大切になります。
MobileNet
この流れの代表が、MobileNetです。
MobileNetは、名前の通り、モバイル環境でも使いやすいように、軽量で効率のよい設計を目指したモデルです。
「高性能だけれど重いモデル」ではなく、現実の端末で動かしやすいモデルという方向を強く意識しています。
MnasNet
MnasNetも同じく、性能と計算効率のバランスを重視したモデルです。
そしてここで関わってくるのが、NAS(Neural Architecture Search)です。
NAS(Neural Architecture Search)
NAS(Neural Architecture Search)は、ネットワークの構造そのものを、自動的に探す考え方です。
これまでモデル設計は、研究者やエンジニアが、層を何段重ねるか、どんなブロックを使うか、どれくらいの幅にするかを考えながら作ってきました。
でもNASでは、そうした設計の一部を人が手で決めるのではなく、コンピュータに、よりよい構造の候補を探させることを目指します。
たとえば、
・より高い精度を出したい
・なるべく計算を軽くしたい
・限られた計算資源でも動かしたい
といった条件によって、向いている構造は変わってきます。
NASは、そうした条件に合わせて、たくさんの候補の中から、目的に合ったネットワーク構造を見つけようとする発想です。
たとえるなら、建築家が最初から一枚の設計図を決め打ちで描くのではなく、たくさんの設計案を見比べながら、
・この形は丈夫
・この形は無駄が少ない
・この形は限られた材料でも作りやすい
と確かめて、目的に合う建物の形を選んでいくようなものです。
つまりNASは、モデルを使うだけでなく、モデルの形そのものを探すことも学習の対象にした考え方だと言えます。
MnasNetは、そうしたNASの流れの中で、特にモバイル環境のような計算資源が限られた場面でも使いやすい構造を探す方向で注目されたモデルです。
EfficientNet
EfficientNetは、この「効率よく強くする」という流れの中でも、とても有名なモデルです。
EfficientNetは、モデルを大きくするときに
・深さ
・幅
・入力画像サイズ
のどれか一つだけを大きくするのではなく、それらをバランスよく調整する考え方を取りました。
これは、建物を大きくしたいときに、階数だけ増やすのではなく、横幅や天井の高さも含めて全体のバランスを見ながら設計する感じに近いです。
この流れを見ると、画像認識モデルは「より高精度へ」だけではなく、より軽く、より使いやすく、より効率よくという方向にも進化してきたことがわかります。
Vision Transformer
― 新しい方向へ進んだモデル
ここで、画像認識の流れに新しい風を入れたのが、Vision Transformerです。
これまでの画像認識モデルの中心は、長いあいだCNNでした。
画像の一部を見ながら特徴を積み重ねていく、あの考え方です。
でも自然言語処理の世界でTransformerが大きな成功をおさめると、人々は考えました。
「画像でも、Attentionを中心にした考え方が使えるのではないか」。
こうして生まれたのが、Vision Transformerです。
Vision Transformerでは、画像をそのまま一枚の絵として扱うのではなく、小さなパッチに分けて、それらの関係をAttentionで見ていきます。
たとえるなら、大きな絵を小さなカードに分けて机の上に並べ、どのカードとどのカードが関係しているかを見ながら全体を理解する感じです。
これは、CNNの「近くの部分を少しずつ見る」という発想とは、少し違う見方です。
Vision Transformerの登場は、画像認識の世界が、CNN中心の時代から、AttentionやTransformerの考え方を取り込む時代へ広がっていったことを象徴しています。
まとめ
ここまでの流れを振り返ると、画像認識モデルの発展は、単に名前が増えた歴史ではありません。
AlexNetは、多くの実用的な工夫を組み合わせて大きな成功を示した
VGGやGoogLeNetは、深さや構造の工夫を進めた
ResNetやDenseNetは、深いモデルを学びやすくした
MobileNetやEfficientNetは、軽さと強さの両立を目指した
NASは、よりよい構造を自動で探そうとした
Vision Transformerは、画像を見る新しい発想を持ち込んだ
つまりこの歴史は、画像をどう見れば、もっと上手に理解できるのかを探してきた歴史でもあるのです。
next ▶ 検出・分割・姿勢推定のモデル