[ACCV 2018] ColorNet: Investigating the importance of color spaces for image classification の雑な解説

はじめに

2019/08/02開催「#6【画像処理 & 機械学習】論文LT会!」に参加します!

lpixel.connpass.com

紹介する論文は,ColorNet: Investigating the importance of color spaces for image classification [Gowda et al. ACCV 2018]です.
この論文はJournal版とarXiv版があるのですが,今回はarXiv版を紹介します.

link.springer.com

arxiv.org

前回と同じくこの記事にとりあえずまとめます.
補足資料としてもご活用ください.
間違っているところがあったら,コメントください.

tl;dr

背景

  • CNNを用いて画像分類を行う際には,RGB画像をそのまま入力として用いることが多い
  • 筆者「それって色空間あんまり考えてないよね🤔」

Novelty

  • 色空間が画像分類精度にどれだけ影響を及ぼすかを調査
  • そこまで明確な差はなかったものの,あるクラスの分類精度は特定色空間で向上
  • さらに複数の色空間画像を入力としてCNNを構築することで高い精度を実現できただけでなく,モデル自体の軽量化にも成功😃
    • ただ,大きいデータセットだと色空間移すだけでも時間がかかるという欠点も...

僕の感想

  • 関連研究が古すぎて調査不足感が否めない
  • 記述が足りていないせいで実験環境がわかりにくく,若干恣意性を感じる
  • とはいえ,各色空間でLate Fusionするだけで精度が向上するというのは面白い
  • Preprocessingでガンマ補正をかけたりHSV空間に移したりすることはあったが,そこまで体系立てて調べていなかったので普通に有用な知見だった
  • 今回は画像分類でしか試していないので,他のタスクだとどうなるか気になるところ
  • CNNに適した色空間を模索してみても面白いかもしれない.色彩工学復習しなきゃ...

今すぐPytorchで畳み込みたい場合は以下のコードを参考にすると良さげです.

github.com

1 Introduction

  • 画像分類で使われる画像はRGB formatであることが多く,色空間を移すことは少ない
  • この論文では様々な色空間を用いて画像分類のパフォーマンスに差が出るのかを調査
  • 用いた色空間はHSV, XYZ(CIE XYZ), LAB, YIQ, YUV, YPbPr, YCbCr, CMYK, LCH, HED*1

2 Related Works

よくある話は省略

下2つの研究結果が相反していることがポイント.
これは異なる色空間を用いれば異なる結果が得られることを示唆している.

3 Proposed Approach

f:id:mocobt:20190728222005p:plain

上図のようなアーキテクチャ(kernel size等詳細不明)を用いてCIFAR-10の画像分類を行った.
結果,以下のようにLABが最も高い精度になった*2

f:id:mocobt:20190728222305p:plain

また,各色空間におけるconfusion matrixは以下Figure 1のようになり,異なる色空間が異なる予測結果を出していることが確認できる.
例えばCIFAR-10のclass 4ではPbPrは82%の精度だが,HEDでは72%となっている.

f:id:mocobt:20190728223118p:plain

以上の結果から2つのことがわかる.

  • ある2つの色空間における予測結果が100%相関するとは限らない
  • 特定の空間では,あるクラスの予測精度が良くなることがある

また複数色空間の出力の加重平均を取ることで,精度が失われてしまうことがあった.
これを表すものが以下Table 2である.
XYZを用いることでAccuracyが減少していることが下から3行目より確認できる.

f:id:mocobt:20190728224635p:plain

そのため次節で説明するアーキテクチャではXYZは除いた.

またモデルのパラメタ数を削減できると予測できるEarly Fusion*3と Late Fusion*4を試した. 結果がTable 2の下2段で,Early FusionではそこまでAccuracyが出なかった.
そのため次節で説明するアーキテクチャでは,Late Fusionを採用した.

3.1 Architecture of model used

計7つの色空間に対して各クラスに対するweighted predictionを出力するDensenet*5 を使用し,7つの層をFCで結合して最終的なpredictionを出力するモデルを構築した.
これを図示すると以下のようになる.

f:id:mocobt:20190728231718p:plain:w500

複数の色空間における出力を組み合わせれば精度が向上するという前節の結果をもとに,このアーキテクチャは構成されている(要するにアンサンブル).
各空間におけるDensenetはDenseNet-BC-40-12で*6,それぞれのパラメタ数は0.25M程度となっている*7

利点ばかりあるように思えるが,①色空間を移すための変換がオーバーヘッドとなる,②Densenetを7つ用いているため合計パラメタ数は決して少なくないという2つの問題点に留意する必要がある.
1つ目の問題は仕方ないが,2つ目の問題はDensenetをさらに小型なものにすることで軽量化できるため,解決できる(その分精度は落ちるため,トレードオフ).

4 Experimental Analysis

4.1 Datasets

以下4つのデータセットを用いて比較実験

  • CIFAR-10: 32x32, 60,000枚の10クラス.50,000枚をTraining, 10,000枚をTestに使用
  • CIFAR-100: CIFAR-10の100クラス版
  • Imagenet: 1.2 millionのtraining images, 50,000枚のvalidation imagesで計1,000クラス
    • Testデータに対しては224x224の画像をsingle crop testing or 10 crop testing (TTA)
  • SVHN (Street View House Numbers): 32x32, 73,257枚のtraining images
    • 26,032枚のtest images. training用の追加画像が531,131枚あり

4.2 Training

  • 提案する各色空間に対応するDensenetのOptimizerはSGDで,各パラメタは以下の通り(ちゃんと書いてくれ頼む)
Dataset batch size epochs learning rate
CIFAR 32 300 0.1 --(75 epochs)-> 0.01 --(150 epochs)-> 0.001
SVHN Unknown 100 0.1 --(25 epochs)-> 0.01 --(50 epochs)-> 0.001
Imagenet Unknown Unknown Unknown
  • 比較用のDensenetはoriginal implementationを使用
    • weight decayは0.0001
    • apply Nesterov momentum of 0.9 without dampening *8
    • Dropoutは0.2
    • Data Augmentationはなし

4.3 Classification results on CIFAR-10

CIFAR-10の分類におけるerror ratesは以下Table 3の通り.
error ratesは低いほうが良い.
C10+はCIFAR-10をAugmentationして得られたデータセット

f:id:mocobt:20190729003333p:plain:w400

(パラメタ数の多さが若干気になるが),1番良いじゃん.やるじゃん.

4.4 Classification results on CIFAR-100

CIFAR-100の分類におけるerror ratesは以下Table 4の通り.
C100+はCIFAR-100をAugmentationして得られたデータセット

f:id:mocobt:20190729003615p:plain:w400

こいつ....できる....!

4.5 Classification results on Imagenet

Imagenetの分類におけるerror ratesは以下Table 5の通り.
Table中error ratesのx/yという形式において,xは single crop testing, yは10 crop testingを指す.

f:id:mocobt:20190729003809p:plain:w400

やはり最強か....

4.6 Classification results on SVHN

SVHNの分類におけるerror ratesは以下Table 6の通り.

f:id:mocobt:20190729004600p:plain:w400

しゅごい〜〜〜〜〜!!!

4.7 Further analysis of results

TP, TN, FP, FNは以下Table 7の通り.

f:id:mocobt:20190729004953p:plain

*1:各色空間については色空間のざっくり解説 - 重み元帥によるねこにっきを参照してください.
ただ,この記事ではHEDという色空間を説明していません.
論文中にも説明がなかったので,改めて調べたところ, Colour DeconvolutionではHEDが「Haematoxylin-Eosin-DAB」の略称で細胞染色の文脈で用いられていました.
厳密な定義が説明されている訳でもないので詳細は割愛しますが,skimageには実装されているようなので興味がある方はソースを御覧ください.
Module: color — skimage v0.16.dev0 docs

*2:Timeは何の時間か論文に記載されていないので無視して大丈夫です.実行時間らしいが環境の説明がない.

*3:Early Fusion: 入力時点で複数画像を深さ方向に連結し,1枚の画像として扱うこと

*4:Late Fusion: 複数の入力毎に学習し,最後の FC層で特徴を融合すること

*5:Densenetベースのモデルは一般に「DenseNet-L-k」のような形式で表され,Lは深さ,kはgrowth factor(growth rateとも)を指す.
詳細はDenseNetの論文を読んで自分で実装してみる - Qiitaがわかりやすい

*6:BCは各ブロックの後にbottleneck layersがあることを指し,モデルサイズを圧縮する効果がある

*7:当時CIFAR-10とCIFAR-100で最も高い精度を誇っていたDenseNet-190-40のパラメタ数が25.6Mであることを考えると,大分パラメタ数を抑えているといえる.

*8:参考: Nesterovの加速勾配法(Nesterov's Accelerated Gradient Method) - Qiita