画像分類の全体像
有名どころだと、以下の6種類がある。
・AlexNet
・VGG
・GoogleNet
・Resnet
・DenseNet
・MobileNet
AlexNet
2012年にILSVRC2012で優勝したモデル。ディープラーニングの火付け役。構造はシンプル。
Relu関数、Dropout、データ拡張を採用している。
https://www.researchgate.net/figure/An-illustration-of-the-architecture-of-AlexNet-CNN-14_fig4_312188377
VGG
このVGGは、ILSVRC2014の2位、CNNを使用したモデル。以下の特徴がある。
・層が多い(16層とか19層とか)
層を増やすことで活性化関数の適用回数を増やして、表現力をUPさせている。
・3×3の畳み込みを採用している。
5×5のフィルタ×1段 ⇒ 3×3のフィルタ×2段 に置き換えることで、パラメータを削減している。
(「5×5のフィルタ×1段」と「3×3のフィルタ×2段」の出力サイズは同じなので、置き換えれる。)
GoogleNet(←これマジで良く出る!)
2012年にILSVRC2014で2位。特徴は以下の4つ。
Inception module
k×kの大きな畳み込みを、1×1、3×3、5×5の複数の畳み込みで近似してる。
1×1Convolution
もともと、3× 3×3のフィルタで畳み込んでたのを、
「1×1×3で畳み込んだ後に3×3×1で畳み込む」ような感じに変更して、計算量を減らしてる。
Auxiliary Loss(アクシャリーロス)
ネットワークの途中から分岐させたサブネットワークにおいてもクラス分類を行う。
(勾配消失防止のため)
Global Average Pooling
通常だったら、ネットワークの最後で全結合層にそのまま渡すところだが、
「一度、各チャンネルの平均を算出して、その値を全結合層に渡す」というクソほど雑な処理を実施している。でも、それで上手くいくらしい。(パラメータ削減&過学習防止のため)
Resnet(レズネット)
ResNet(Residual Networks)は、ILSVRC2015の優勝モデルで152層で構成されるCNN。
特徴は以下の2つ。
・Residual Block(Shortcut Connectionを利用した残差ブロック)
「残差関数を学習対象としよう」という考え方。
実装としては、もとの入力を出力側に足すだけなので簡単。
・Batch Normalization(バッチ正規化)
データをチャンネルごとに正規化する。(勾配消失・勾配爆発を防止。)
<バッチ正規化のやり方>
①ミニバッチ単位で、ミニバッチ内の各チャンネル毎に平均μと分散σ^2を求める
引用:https://qiita.com/amateur2020/items/f2c829677d9764af0b50
②次に、①で求めた平均・分散を用いて、各チャンネルのデータを平均0、分散1に正規化する。
DenseNet
ResNetを改良したモデル。特徴は以下の2つ。
Dense Block
ショートカット接続を多用して、層間の情報伝達をしやすくして、高い性能を実現している。
前の層すべてをショートカット接続してる。
Transition Layer
1x1 Convolutionと2x2 Average Poolingでダウンサンプリングしてる。それに名称をつけただけ。
Dense Blockによって増大してしまったので、チャンネル数とかを減らすためにこの層が必要らしい。
https://arxiv.org/pdf/1608.06993.pdf
MobileNet
モバイル端末でも使用できるくらい、計算量やメモリ使用量を抑えたアルゴリズム。
精度と計算負荷をトレードオフで調整できるらしい。
普通の畳み込みの代わりに、「まずチャンネル方向で畳み込みして、そのあとに空間方向で畳み込む」って感じの手法を採用しているのが特徴(Depthwise Separable Convolution)。
あと、チャンネル方向の畳み込みをPointwise Convolutionというらしい。
そんで、空間方向の畳み込みをDepthwise Convolutionというらしい。
参考文献
本記事は、以下のページと、AVILENの『全人類がわかるE資格講座』のテキスト・動画を参考にして作成しております。