【論文読み】Enhanced Local Texture Feature Sets for Face Recognition Under Difficult Lighting Conditions
TL;DR
- 照度変化に頑強とされているLocal Binary Pattern(LBP)よりも頑強な手法を提案
- シンプルな前処理方法により、3種類のデータセットでSoTAを達成
- 提案手法に加えて、画像間の距離計算を工夫したことで検索のパフォーマンスを向上することができた
1. Introduction
※この論文が発表されたのは2010年であるため、CNNで画像認識を行ったAlexNet(2012年)よりも前のになります
顔認識において重要なのは、様々な環境において顔画像の照度変化、年齢、パーツ(鼻の位置etc,...)の形状情報が頑強であることである。これらから得られる特徴量を元に認識を行うので、例えば同じ顔なのに暗い環境と明るい環境で違う顔として認識されるのは避けたい。
そこで、これまれまでに以下のような記述子が用いられてきた。
- Gabor wavelets
- Local auto correlation filters
- Local Binary Patterns(LBP)
この論文でLBPについて注目し、その特徴と改善案についてまとめた。
2. LBPの特徴
LBP特徴量については、わかりやすい記事がたくさんあるので、ぜひ。
http://compsci.world.coocan.jp/OUJ/2012PR/pr_15_a.pdf
手法としては画像をグレースケールに変換し、注目画素値と周辺の8画素値を比較して数値が高ければ1、低ければ0をラベリングして符号化(2進数-->10進数)するだけの処理になる。
注目画素を移動させながら符号化された値をヒストグラム化することで、その画像のLBP特徴量を得ることができる。
ノンパラメトリックでシンプルな手法ながら、高速で照明の変化に頑強であるためCNNが流行する前の画像処理ではよく使われていた。
照明変化に頑強である理由として、画像の局所領域の照明に変化があってもLBPの符号化に大きな影響を与えないからだ。例えば、Fig. 1の画素値に100を足しても、周辺画素との大小関係は変化しないのでLBP自体には影響はないことが分かる。
言い換えると、LBPは単調増加なグレースケールの変化という仮定の元に置いている。
そのため、LBPを算出する際には特に前処理の工程を挟む必要はないと考えられていた。
しかしながら、筆者の実験では照明変化の分散が大きいデータセットではLBPが良いパフォーマンスを発揮できていないことが示唆された。
また、LBPは顔の首や額部分などの一様に分布している領域でのランダム/量子化ノイズに弱い。
そこで本論文ではLBPを拡張したLocal Ternary Patterns (LTP)を用いることにした。
3. Related works
同様な問題設定を解く手法として、Self Quotient Image model (SQI)、Logarithmic Total Variation (LTV) 、smoothing, and Gross & Brajovic (GB)が紹介しているが詳細は省く。
4. Local Ternary Patterns (LTP)
LTPはLBPの拡張であり、2値で表現するLBPとは違い+1,0,-1の3値で表現する。
uが注目画素値、i_cが周辺画素値、tが任意で設定できる閾値になっている。
このt値を決めることがこの手法のキモでもあり、u-tとu+tに間を持たせることでよりノイズに対してより頑強になる。
LBPは2値を10進数に変換したが、LTPは-1を含んでおりそのままでは符号化の扱いに困ることが分かる。 そこで、以下の図のように正値を含むパターン(Upper Pattern)と負値を含むパターン(Lower Pattern)に分けて符号化し、それぞれでヒストグラム計算したものを最後に組み合わせることで解決している
5. Proposed Method
5.1 Distance Transform Based Similarity Metric(DT)
既存研究[1]のLBPを使った手法では、顔画像をいくつかのグリッドに分割してそれぞれのグリッド中でLBPを計算し以下の式を用いて類似度を計算している。
しかし、この手法では以下の問題点が挙げられる。
- 分割する境界が必ずしも顔特徴と一致しない(規則的にグリッドを作ることに対して疑問がある)
- 境界によって急激な空間量子化が起こる
- 位置関係が保持されないため、空間情報が失われる
筆者はLTPが照明や空間情報に微妙な変化を許容した特徴量だと考えるなら、画像Xの各画素のLTP値が画像Yと近い位置に現れるかを画像間の距離に応じて重み付けするのが適切だと考えた。
この考え方は集合間の距離計算に使われるハウスドルフ距離に似た手法である。
本論文で提案されている手法は以下の通りである。
- 入力画像Xにおける各画素のLTP値を求める
- LTPの値(論文上のコードk)ごとに2値化した画像b_kを作る
※LTP値が存在する画素を255、それ以外を0とするような画像 - b_kごとにb_k上の各画素とコードkが現れる画素との最小距離を求め、距離画像d_kを作る
※論文では2次元のユークリッド距離を使用
ここでuniform codesを使用する場合は59個の画像が最終的にできあがる。
Uniform Codesの補足(なんで59個になるのか?)
LBP/LTPのバイト列において0->1 or 1->0に変化する回数が最大2回までならそれをUniform Codesと言う。
例えば 00001111, 00110000, 00000000はいずれも変化回数が2以下なのでuniformである。逆に 00110011, 10101010はuniformではない。
LBP/LTPは周辺8画素を取るため、純粋にバイト列を変換すると2^8=256通りになるが、uniformでないものを除去するとこれが59通りにまで圧縮されるため計算削減になる。
59通りの全通りは下記の記事から確認できる。
ステップ1~3を実行した時の任意のコードkにおける実行結果が以下の図である。
左からb_k,、d_k、d_kに閾値τをもたせて2値化させた画像である。
ここで、この距離画像d_Kを使って画像X、Y間の距離関数Dは以下の式で表される。
ここで、iとjは画素位置、k_Y(i, j)は画像Yにおけるコードkの値、ωは距離画像を作る際の任意の関数である。
画像Yにおけるコードkが画像Xのコードkのどの位置の分布しているかが、この関数Dから算出できるため、筆者が提案している内容に沿うことが分かる。
例えばk_Y(1, 1) = 0, d^0_k(1, 1) = 0 だとD=0、d^0_k(1, 1)=255 => D>>0になる。
(tex風に書きたい...)
なお、論文上にω関数はガウシアン距離と線形関数の2つが提案されていたが、2つの関数に大きな性能差はなく線形のほうが僅かに性能が良かったと記述されている。
5.2 Illumination Normalization
ここでは筆者が問題提起していた、LBPには前処理はないことについての解決案を記述する。順番に処理実行するようなパイプラインとして定義している。
1. Gamma Correction
画素値Iに対してI^γをかけたものがガンマ補正である。γは[0. 1]までの任意の値で、ディスプレイ等のデバイスの色調整によく使用される。
γ値を1以下にすることで、暗い画素が明るく方向に持ち上げられるため、より画像内の質感を復元することができる。しかし上げ過ぎるとノイズになるため、論文内ではγ=0.2とした。
2. Difference of Gaussian (DoG) Filtering
次のDog Filterをかけることで、ガンマ補正で取り除くことができない急激な照度変化の影響を取り除く。
この影響は主に画像内の低周波数領域におこるため、周波数領域においてハイパスフィルターをかけたら良さそうだが、高周波数はノイズの元となる信号も含まれる。
高周波数領域を取り除いても識別に必要な情報は十分に残るため、ローとハイを同時にカットできるバンドパスフィルターを再現したフィルターが適している。
DoG Filterはバンドパスを再現したフィルターに近いため、この手法に取り入れることにした。
3. Masking
上記2つのフィルターを通してもなお、変化が急激な画素値を持つ場合には別途マスキングが必要となる。
具体的な手法が書かれていないため、スキップ。
4.Contrast Equalization
最後にコントラスト値の正規化を行う。
画像認識においてコントラストに変化があると認識精度への影響があるため、ロバストな推定には重要なステップとなる。
以下の2つの式を用いて正規化を行う。
ここでαは大きい画素値を制御するための圧縮値、τは式(5)で発生した大きい値を切り捨てるための閾値となる。論文中でα=0.1、τ=10としている。
式(6)の処理が終わったあとでも極端に大きい値を含んでいる可能性があるため、ハイパボリックタンジェント関数を通すことで[-τ,τ]に抑える。
6. 処理結果例
上記の手法を適用すると、どのような結果になるのかを下記に示す。
Fig. 5が同じ顔画像の照度を変化さえたもののペアであり、この2つの画像で同じような特徴量が得られたら嬉しい。
下記のFig. 5の白枠におけるLBPのヒストグラムである。
左(a)が手法を適用する前、右(b)が前処理を適用した時の結果だが、(a)のように明らかに突飛つした値が出ていないこと分かる。
処理速度も120×120ピクセルで50[msec]の速度で実現できる。
7. Experiments
3つのデータセットにおいて、以下のパラメーターを用いて実験を行った。
また、論文では各データセットごとに実験結果をまとめている。
7.1 FRGC-104
下記が各手法をと入れたときの認識精度である。
この結果を見ると、単純にLBPを使うよりも前処理のパイプライン(PP)を導入するだけで41% --> 79%に精度が向上している事がわかる。
また、最終的にPP+LTP+DTを使うことで85%近く出ており本手法の有効性が示されている。DTを使用していない時の距離計算は式(3)を用いている。
7.2 Yale-B
Yale-Bは同じ顔画像に対して複数の角度から照明を当てたときのデータセットであり、
下記の図は照明の角度に応じてPPを適用した時の結果である。
また、下記が各手法との精度比較の結果である。
LTVは輝度正規化の一種であるが本手法と比較して300倍遅いとされているため、速度と精度の面でも優位である。
7.2 CMU-PIE
CMU-PIEにおいてもLTVと同様な精度が出ており、Fig. 11のような照度変化においても頑強な特徴量が得られていることが分かる。
8. 参考文献
[1]Ahonen, T., Hadid, A., Pietikainen, M.: Face recognition with local binary patterns. In: Pajdla, T., Matas, J(G.) (eds.) ECCV 2004. LNCS, vol. 3021, pp. 469–481. Springer, Heidelberg (2004)