1.初めに
JDLAのE資格受験に向けて、深層学習のうち画像処理に関わる技術を学習した。自分のノートに残しておくだけなのが勿体無いため、web記事にまとめる。
なお、E資格2021#2にはおかげさまで合格できた。
2.有名なネットワーク
古典的な画像処理では、人間が特徴量を作成してきた。例として、HOG特徴量、AKAZE特徴量などがある。これら古典的な特徴量と異なり、深層学習では、データから特徴量自身をアルゴリズムに学習させる。
このような画像処理の分野の中でも、用途・目的により大きく分けて3つにアルゴリズムを分類できる。
1.画像分類
画像分類は、1枚の入力画像に対して、あらかじめ設定したクラスへの分類結果1つを返すタスクになる。
インプットとアウトプットが1対1対応するタスク。
2.物体検知
実際の画像には、一枚の画像に複数の物体が写り、それらを判別するニーズがある。そのため、1枚の入力画像に対して、物体の位置と、特定した物体のクラス分類結果を返すタスクになる。
インプットとアウトプットが1対n対応するタスク。
3.ピクセル分類
1枚の画像ファイルは、一般に数千〜数百万・数千ピクセルのRGB情報を持つ。ピクセル単位でクラス分類を行い、物体検知よりも詳細に画像データを分類する。
インプットとアウトプットが1対n対応するタスク。
2-1.画像分類
2-1-1.AlexNet
特徴量設計を機械学習で実現した、初のモデル。
5層の畳み込みと3層の全結合層からなる。
2010年に提唱されたReLUを採用し、メモリ不足のためGPUも採用された。
データ拡張、ドロップアウトやバッチ正規化など、2021年現在常識となっている手法が採用されている。
特にドロップアウトは、過学習回避のための方策としてよく使われている。
論文(2012)
解説ページ
2-1-2.VGG
カーネルサイズを調整し、パラメータ数を減らしたアーキテクチャ。
シンプルでパワフル。
ネットワーク構造は16〜19層と深い。フィルタ(カーネル)は3x3、プーリングは2x2で固定。
すなわち、フィルタサイズを縮小し、層の多重化を実現することでモデル性能を向上させる。
要点は以下の3つ。
①フィルタサイズ縮小
「5x5畳み込み」は、「3x3畳み込み」2回と等価。後者を採用し、計算量を削減。
Fig. 3x3畳み込みのイメージ
②非線形演算を複数回行う。そのため、表現量を向上。
③学習パラメータ(フィルタ係数の数)を削減し、過学習を回避する。
2-1-3.GoogLeNet
層を厚くして、かつ勾配消失問題を解消。
Inception moduleやMax pooling、などの工夫を導入。
上記の疎な構造では、モデルサイズが無駄に大きくなるため、密な構造になるに工夫。
具体的には以下の3つが工夫された項目。
①Inception module
複数種類の畳み込みの並列化。
1x1の畳み込み層、1x1のポイントワイズ層と3x3の畳み込み層、など複数の層をくみあわせ、ミニネットワークを形成することを、Network in Networksという。
②Auxiliary Loss
中間層における誤差の計測
③Global Average Pooling
フィルタ平均による出力。
通常の全結合層は、HxWxCx出力層数だが、Cのみにパラメータ数を絞ることで、計算量を削減。
関連ページ(English)
point wise とdepth wise畳み込みの解説
サーベイ論文
論文(2014)
2-1-4.ResNet
Residual構造を導入。入力xを出力にバイパス(ショートカット接続)することで、F(x)が小さい時に出力が0にならないように対策。
2-1-5.DenseNet
全てのレイヤー(層)が、次の層に繋がっている構造を導入し、特徴の層間の伝達を強化を行う。
Denseブロックを導入。
2-1-6.MobileNet
特徴は3点からなる。
①Depthwise separable Convolutions
Depthwise ConvolutionとPointwise Convolutionの2つを組み合わせた畳み込み。
Depthwiseは、チャンネル数は維持したまま、縦横方向にたたみ込む。ファイルサイズは1x1である。
Pointwiseは、縦横方向を維持したまま、チャンネル数を1にたたみ込む。
②Width Multiplier
モデルサイズの削減を目的に導入する実数の係数ρ。
③Resolution Multiplier
計算コストの削減を目的に導入する実数の係数α。
②と③を導入した後の計算量は以下の式で表される。
2-2.物体検知
2-2-1.R-CNN (Region-CNN)
BBoxと物体分類を同時に実施。
最初に候補領域の特定、というタスクを、Selective Searchという古典的な手法(非深層学習)行っている。
こちらのスライドのNo.30がわかりやすくまとまっている。
2-2-2.Fast R-CNN
特徴マップの作成を1回に減らす。最初に1回だけ畳み込みを行い、生成された特徴マップに対して領域を選択する。
R-CNNとFast R-CNNの計算回数を比較すると、以下の通り。
R-CNN: (候補領域の数)xCNN + (候補領域の数)xFCN ([候補領域の数]=Region Proposalの回数)
Fast R-CNN: 1() x CNN + (候補領域の数)xFCN
()CNNをインプット画像全体に対して1回実施。
2-2-3.Faster R-CNN
Fast R-CNNまでは、領域提案をSelective Searchで行っていたが、本手法からはRegion Proposal Networkという深層学習で行う、すなわちEnd to Endモデルの先駆け。
2-2-4.YOLO
画像をGrid分割して、速度向上。
グリッド分割し、分割された一つ一つのセルを、クラス分類する。
セル1つを、複数にクラス分類するのは不可。
Fig. セル分割
セル毎にBoundingBoxの設置を判断し、クラス分類の各クラスの確率を計算。計算後、ボックスを集計し、色分けを行う。
2-2-5.SSD
Single Shot Multibox Detectorの略
計算量を減少。
YOLOと同じように、入力画像からCNNで物体の位置検出を行う。One-Stage手法ともいう。
VGG16を改良したネットワーク。畳み込み層を追加。
さまざまな大きさの特徴マップ毎に、クラス分類+BoundingBox回帰。
2-3.セグメンテーション
2-3-1.FCN
追記予定。
解説
2-3-2.SegNet
追記予定。
解説
2-3-3.U-Net
追記予定。
解説
3.まとめ
おかげさまでE資格2021#2は取得できましたが、まだまだ理解が甘いことを痛感しました。引き続き勉強を続け、本記事のアップデートを続けようと思います。