[Survey]Understanding How Image Quality Affects Deep Neural Networks


Understanding How Image Quality Affects Deep Neural Networks

画像劣化がDeep Learningを使った画像認識の性能にどの程度影響があるかを調べた論文です。
多くのComputer VisionのApplicationは入力が比較的高画質を期待しているが、SurveillanceMobile PhoneなどではLow Image Qualityも考慮すべき重要な要因です。
論文では、4つの最新deep neural network modelに対し、5つの劣化(Blur, Noise, JPEG, JPEG2000, Contrast)した画像を入力した時の性能を調査しています。

Model

  1. Caffe Reference Model
  2. VGG-CNN-S
  3. VGG-16
  4. CoogleNet

Distortion

  1. Blur Gaussian Blur $\sigma=1~9$, Kernel Size=$4\sigma$
  2. Noise Gaussian Noise 標準偏差 10~100 10刻み
  3. Jpeg Picture Quality 2~20 2刻み (20以上は性能劣化があまり大きくない)
  4. Jpeg2000 PSNR 20~40 2刻み
  5. Contrast Gray imageを原画にBlending ブレンド率 0~1 0.1刻み

Distortion例

Result

結論としてはBlurNoiseが性能劣化が大きく、残りは影響が少ない。
Networkが特定のTextureを使ってClassificationしているからBlurによりTextureがなくなると性能が悪化するのではないかとのこと。
Noiseの場合は、標準偏差が90で性能が20%以下になるが、人間ならまだ認識できるレベルとのこと。

下記は各Distortion毎のAccuracyをグラフにしたもので、横軸は右に行くほど劣化が激しくなる。

下記はDistortion毎の画像とAccuracyを列挙したもの

下記はDistortionがBlurとNoiseのVGG16のFirst Convolutional LayerとLast Convolutional Layerを可視化したもの。
Blurの場合は最初のLayerは差が小さいが、最後のLayerになると差が大きくなっている。一方Noiseは、最初のLayerで沢山Filter Responseがあり、それが後段に伝播している。

感想

Image Qualityが性能に与える影響を知っておくのは実応用上は重要な気がします。
Codecによる劣化が性能にあまり影響を与えなかったのは、Codecがうまく画像の特徴を残しつつ圧縮しているということなのかなと思います。
ただ各Distortion毎に横軸が異なるので、公平な比較なのかちょっと疑問が残る気がします。
劣化させた画像をつかって学習させればいいのではと思いますが、それだと綺麗な画像の時の性能が落ちるだろうとのことです。(実際にやってはいない)
知見としては有意義なのでは無いかと思います。