画像分類のモデルの名前が多すぎる。AlexNetからSENetまで、それぞれ前のモデルから何を変えたんか知りたい
【疑問】AlexNet・VGG・GoogLeNet・ResNet・Wide ResNet・DenseNet・SENet、それぞれ何を変えたん?【G検定】
前提のおさらい。画像分類(物体識別)は、画像1枚に1つのラベルを出すタスク。畳み込み層とプーリングを重ねて特徴マップを作り、最後に全結合層やGAPでラベルを出す
>>1
AlexNetは、クリジェフスキーらのモデルで、2012年の画像認識コンテストILSVRCで、それまでの手法に大差をつけて優勝した
ReLU・ドロップアウト・GPUでの学習を組み合わせて、深い畳み込みネットワークがちゃんと学習できることを見せた
>>3
VGGは、シモニャンとジサーマンの2014年の論文。3×3 の小さいフィルタだけを何層も重ねて、16層や19層まで深くした
3×3 を2層重ねると、5×5 を1層と同じ範囲を見られる。チャネル数64で数えると、重みは 個で、5×5 の 個より少ない。しかも活性化関数を2回通る
>>4
GoogLeNetは、セゲディらの2014年の論文。Inceptionモジュールで、1×1・3×3・5×5 の畳み込みとプーリングを並べて同時にかけて、結果をつなぐ
1×1 の畳み込みでチャネル数を先に減らして、計算量をおさえてる
>>5
そのころは、層を増やすほど学習がうまくいかんくなる問題があった
>>6
そこでResNet。ヒーらの2015年の論文で、入力を出力に足すスキップ結合を入れて、152層まで深くした
Wide ResNetは、ザゴルイコとコモダキスの2016年の論文。深さより幅(チャネル数)を増やしたほうが、浅くても同じくらいの性能で速く学習できると示した
>>7
DenseNetは、フアンらの2017年の論文。足すんやなくて、それより前の全部の層の出力をチャネル方向につなげて次の層に渡す
最初が64チャネル、各層が32チャネル増やすなら、4層目の入力は チャネル。前の特徴を使い回すから、1層あたりのチャネル数は小さくてすむ
>>8
SENetは何をしたん?
>>9
フーらの2017年の論文。チャネルごとに「今の画像ではこのチャネルが大事」という重みを計算して、特徴マップに掛ける
各チャネルをGAPで1つの数に縮めて(Squeeze)、小さい全結合層で0〜1の重みにして掛けなおす(Excitation)。2017年のILSVRCで優勝した
>>10
流れで見ると、深くする(VGG)、幅を並べる(GoogLeNet)、深くしても学習できるようにする(ResNet)、幅を広げる(Wide ResNet)、前の特徴を使い回す(DenseNet)、チャネルに重みをつける(SENet)、と工夫の方向がちゃんと違う
管理人のひとこと
- AlexNet(2012年のILSVRCで優勝)はReLU・ドロップアウト・GPUで深い畳み込みネットを学習できることを示した。
- VGG(2014年の論文)は 3×3 を重ねて深くした。2層で 5×5 と同じ範囲を見て、重みは73728個対102400個と少ない。GoogLeNet(2014年の論文)はInceptionモジュールで違う大きさのフィルタを並べた。
- ResNet(2015年の論文)はスキップ結合で152層、Wide ResNet(2016年の論文)は幅を広げた。DenseNet(2017年の論文)は前の全層の出力をつなげる(64+3×32=160チャネル)。
- SENet(2017年の論文、2017年のILSVRCで優勝)はSqueeze(GAP)とExcitationでチャネルごとに重みをつける。