概論&全体的な研究トレンドの概観①(HOG〜R-CNNまで)|物体検出(Object Detection)の研究トレンドを俯瞰する #1

f:id:lib-arts:20190618002058p:plain
物体検出の研究については以前に論文読解で、FasterRCNNやYOLO、SSD、RetinaNetについて取り扱ったのですが、改めて研究トレンドや考え方の推移についてまとめられればということで新規でシリーズを作成させていただきました。
まずはタスクの再確認ということでそれに絡めた概論や、全体的な研究トレンドの概観としてDeepLearning以前の2000年代の考え方から2012年のAlexNet以後のObject Detectionの研究トレンドの変遷について概観できればと思います。長くなったので、#1ではHOG(Histograms of Oriented Gradient)[2005]からR-CNN[2013]までについて取り扱えればと思います。
以下目次になります。
1. 概論&タスク定義の確認
2. Deep Learning以前のObject Detection(HOG[2005])
3. Object DetectionへのDeepLearningの導入(R-CNN[2013])
4. まとめ


1. 概論&タスク定義の確認
1節では実際に内容に入っていく前に概論として主にタスク定義の確認を行えればと思います。概要を確認するにあたってはWikipediaが便利なので、まずはWikipediaを確認します。

f:id:lib-arts:20190617201212p:plain

Object detection - Wikipedia

第一パラグラフのみ和訳してみます。

Object detection is a computer technology related to computer vision and image processing that deals with detecting instances of semantic objects of a certain class (such as humans, buildings, or cars) in digital images and videos. Well-researched domains of object detection include face detection and pedestrian detection. Object detection has applications in many areas of computer vision, including image retrieval and video surveillance.

和訳:『Object Detectionはコンピュータービジョンや画像処理の関連の技術で、デジタルの画像やビデオから特定のクラス(例えば人間や建物、車など)の意味的な物体の検知を取り扱う。Object Detectionの研究領域は顔検出や歩行者検知なども含む。Object Detectionはコンピュータービジョンの分野において多くの応用可能性を持ち、image retrievalやvideo surveillanceなども含む。』
概要としては、「デジタルの画像やビデオから特定のクラス(例えば人間や建物、車など)の意味的な物体の検知を取り扱う」というところを理解しておけば良さそうです。
また、具体的なタスク詳細の例について確認できればということでILSVRC(ImageNet Large Scale Recognition Challenge)のタスク詳細について見ていきます。概要ページとしてはILSVRC2015のものが読みやすそうだったので、2015年版について引っ張ってきます。

f:id:lib-arts:20190617201504p:plain

ILSVRC2015

色がついたところで数学的な記号を用いて定義を行っているので確認しておきます。この辺の定義は実装などでも踏襲することが多いので注意です。『それぞれの(c_{i},s_{i},b_{i})アノテーションのセットをアルゴリズムが生み出す』と書かれており(ii番目の画像という意味)、こちらがObject Detectionのアルゴリズムの目的の例だと捉えておいても良さそうです。ここでそれぞれ『c_{i}がクラスラベル(class labels)、s_{i}が確信度のスコア(confidence scores)、b_{i}が検出する物体の領域(bounding boxes)を表す』とされており、『200の物体のカテゴリをそれぞれ持つ』とされています。
ここまでの話で大体のObject Detectionのタスク定義については把握できたと思うので、1節はここまでとします。


2. Deep Learning以前のObject Detection(HOG[2005])
Deep Learning以前について見ていくにあたっては、2013年のR-CNN(Regions with Convolutional Neural Network features)から振り返るのが良さそうなので、"Rich feature hierarchies for accurate object detection and semantic segmentation"から遡る形で話を進めていきます。

f:id:lib-arts:20190617230032p:plain

[1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation

f:id:lib-arts:20190617230429p:plain
上記を簡単に要約すると、『2000年代の認識タスクの発展はSIFTやHOGに基づいたと考えられるが、発展のスピードは2010〜2012年に失速し、アンサンブル学習を用いることによって達成された小さな改善にとどまった。』と読み解くことができます。したがって、Deep Learning以前のObject DetectionはSIFTやHOGについて押さえておくと良さそうです。
全体のトレンドの把握が目的のため、ここではHOG[2005]についてのみ見ていきます。

https://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf

f:id:lib-arts:20190617232108p:plain
論文の概略を掴むにあたって、Abstractを簡単に要約すると、『linear SVMベースの人の認識についての研究で、輪郭(edge)や勾配(gradient)に基づくHistograms of Oriented Gradient(HOG)識別子(descriptor)をグリッド単位で計算することで、人認識における既存の特徴量抽出をはるかに上回る結果となった。』となります。

f:id:lib-arts:20190617233155p:plain
HOGはSection3の"Overview of the Method"で"local histograms of image gradient orientations(画像の勾配の方向の局所的な特徴量)"と言及されるように、画像の局所的な特徴量を用いて検出を行う手法となっています。
また、詳細のアルゴリズムはSection6の"Implementation and Performance Study"で言及されています。

f:id:lib-arts:20190617233839p:plain

上記のFigure.6に結果がまとまっているのでざっくり解説すると、人に近しい輪郭を持っているかどうかを元に、fを正例(positive)、gを負例(negative)として識別を行っています。
このようにDeep Learning以前の研究トレンドを見ると、SIFTやHOGなどの局所特徴量の抽出+linearSVMなどの線形識別器を用いて解いており、2000年代に発展したものの、2010~2012ではアンサンブルによる組み合わせが増え発展が鈍っているというのが全体的なトレンドと見て良いように思われます。大体のイメージがつかめたと思うので、2節はここまでとします。


3. Object DetectionへのDeepLearningの導入(R-CNN[2013])
3節ではObject DetectionへのDeepLearningの導入ということでR-CNNについて取り扱います。

f:id:lib-arts:20190618000140p:plain

[1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation
処理の概要については論文のFig.1の上図にまとまっています。(2)で領域の候補を抽出し、(3)で畳み込みニューラルネットワーク(CNN)で特徴を抽出し、(4)でlinear SVMsを用いて領域候補の識別を行なっています。以下では(2)、(3)、(4)それぞれについての言及を追っていきます。

f:id:lib-arts:20190618001138p:plain

f:id:lib-arts:20190618001153p:plain
(2)の領域候補の抽出については2.1.の"Module design"の"Region proposal"で言及されており、"selective search"を用いたとされています。

f:id:lib-arts:20190618002058p:plain

 Selective Searchは"hierarchical grouping algorithm(論文の3.1で言及)"を用いて上図のように、ピクセルのグルーピングを行い、その上で領域候補を抽出するという手法です。このような手法を用いて領域候補の抽出を行なっています。

f:id:lib-arts:20190618002644p:plain

(3)の畳み込みニューラルネットワーク(CNN)を用いた特徴抽出は、(2)と同様に2.1.の"Module design"の項目で"Feature extraction"で言及されています。候補領域(region proposal)から最終的に4096の特徴ベクトルにするにあたって、AlexNetを用いたとされています。論文の後ろの方を確認すると[25]がAlexNetの論文であることが確認できます。
(4)については(2)、(3)に比べるとこの文脈で記述する重要度はないと思われるので省略します。

f:id:lib-arts:20190618003526p:plain
また、実験結果としてはその他のアルゴリズムと比較されていますが、PASCAL VOCのleader boardだったSegDPMを上回ったり、ILSVRC2013でも同時期に出てきたOverFeatを上回っているとされています。 


4. まとめ
#1ではObject Detectionの概要やタスク定義などについて1節で触れたのちに、DeepLearning以前(AlexNet[2012]以前)のアルゴリズムであるHOG[2005]について2節でまとめ、3節ではDeep Learningの導入ということでR-CNN[2013]をご紹介しました。
Object DetectionはResNet[2015]までのDeep Learingのアーキテクチャ研究と並行して、FastRCNN[2015]、FasterRCNN[2015]、YOLO[2015]、SSD[2015](arxivの日付を用いています)と高速化と精度の向上の二つの側面から研究が進んでいますので、#2ではそちらについて取り扱えればと思います。