参考文献
本記事は以下のページ、論文を参考にしています。
- http://mmlab.ie.cuhk.edu.hk/projects/ARCNN.html
- Ke Yu, Chao Dong, Chen Change Loy, Xiaoou Tang, "Deep Convolution Networks for Compression Artifacts Reduction," arXiv: 1608.02778
概要
左:JPEG圧縮画像、右:AR-CNNによる処理画像 論文より引用
背景
- 非可逆圧縮(Lossy compression)によってブロックノイズやリンギングノイズなどの複雑なノイズが発生する
- 既存の圧縮ノイズ除去手法は以下のどちらかであった
- ブロックノイズは除去するが画像がボケる
- シャープな画像を生成するがリンギングノイズが残る
内容
- 超解像の分野で成功を収めたSuper-Resolution Convolutional Neural Network(SRCNN)という手法をもとに
圧縮ノイズ除去手法、Artifacts Reduction Convolutional Neural Network(AR-CNN)を提案する - 実応用の際には処理速度が求められるため、2点の工夫によりAR-CNNを高速化する(Fast AR-CNN)
- Layer decomposition
-
stride > 1
のconv層とdeconv層を組み合わせて使用
- Fast AR-CNNはAR-CNNと比較して画質の劣化なしに7.5倍の速度向上を達成
- さらに実験では以下のことを示す
- 深いモデルを学習する場合は浅いモデルで学習した特徴を使用することでより効率が上がる
- ”easy to hard"という考えはモデルの
浅い -> 深い
の転移に限らず、有効である
AR-CNN
AR-CNNの概観
構造
| layer | name | in ch | out ch | kernel size | stride | activ fn |
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|1|Feature extraction| 1|64|9|1|PReLU|
|2|Feature enhancement| 64|32|7|1|PReLU|
|3|Mapping|32|16|1|1|PReLU|
|4|Reconstruction|16|1|5|1|-|
Fast AR-CNN
AR-CNNの各layerにおけるパラメータ数
| layer | name | in ch | out ch | kernel size | stride | activ fn |Number of Parameters|Percentage|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|1|Feature extraction| 1|64|9|1|PReLU|5184|4.87%|
|2|Feature enhancement|64|32|7|1|PReLU|100,352|94.27%|
|3|Mapping|32|16|1|1|PReLU|512|0.48%|
|4|Reconstruction|16|1|5|1|-|400|0.38%|
|total|-|-|-|-|-|-|106,448|100%|
Feature enhancement layerがパラメータ全体の95%を占めている
⇒Feature enhancement layerのパラメータ数を減らせば良い
特徴マップの大きさ(縦×横)も計算コストに影響が大きい
超解像など従来のlow-level visionタスクでは、中間特徴マップの空間的なサイズは入力画像と同じに保つ必要があった
一方で、認識などhigh-level visionタスクではその必要がない
一般的に、理にかなったサイズの大きなストライドは多少精度は劣化するが畳み込み演算を顕著に速くできる
⇒ストライドのサイズが計算速度を向上させる上で重要な要因である
対策①:Layer decomposition (直訳:層の分解)
Feature enhancement layerは2つの役割を担っている
- 大きなフィルタで入力特徴マップのノイズを除去
- 高次元特徴を比較的低次元特徴への変換
⇒それぞれの役割を担う連結した2つのlayerに置き換える
| layer | name | in ch | out ch | kernel size | stride | activ fn |Number of Parameters|Percentage|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|2|Feature enhancement|64|32|7|1|PReLU|100,352|94.27%|
↓
| layer | name | in ch | out ch | kernel size | stride | activ fn |Number of Parameters|Percentage|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|2-1|shrinking|64|32|1|1|PReLU|2048|-|
|2-2|enhancement|32|32|7|1|PReLU|50176|-|
|total|-|-|-|-|-|-|52224|-|
- Layer decompositionによりFeature enhancement layerのパラメータ数は半減
- モデル全体で見ても約46%規模を削減
対策②:stride > 1
のconv層とdeconv層
1st layerのストライドをstride > 1
にすることで高速化を図る
AR-CNNの1st layerは特徴抽出を担う
認識などhigh-level visionにおける1st layerも同様の役割を担うため、strideを1から2に変更してみる価値はある
ただし、stride > 1
により特徴マップが小さくなるため、end-to-endの学習ができなくなる
⇒last layerをdeconv層にすることで対応する
stride > 1
の場合、conv層はsub-sampling、deconv層はup-samplingを行う。
また、処理時間は短縮されるが、復元後の画質が劣化する可能性がある
⇒mapping layerを追加する、deconv層のフィルタサイズを大きくして対応する
完成形Fast AR-CNN
Fast AR-CNN の概観
| layer | name | in ch | out ch | kernel size | stride | activ fn |Number of Parameters|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|1|Feature extraction|1|64|9|2|PReLU|5184|
|2|Shrinking|64|32|1|1|PReLU|2048|
|3|Enhancement|32|32|7|1|PReLU|50176|
|4|Mapping|32|64|1|1|PReLU|2048|
|5|Reconstruction|64|1|9|2|-|5184|
|total|-|-|-|-|-|-|64640|
モデルの層パラメータ数$N$の計算は以下の式で求める。
$d$:層
$n$:特徴マップ数(フィルタ枚数)
$f$:フィルタサイズ
N=\sum_{i=1}^{d} n_{i-1} \cdot n_i \cdot f_i^2
論文ではFast AR-CNNの総パラメータ数は56496という記載があるため、
どこか計算を間違えているかもしれない点はご容赦ください。
以上