Blog
本記事は、2019年夏のインターンシップに参加された本間喜明さんによる寄稿です。
はじめに
PFN2019夏期インターンに参加した慶應義塾大学 理工学研究科 M1 本間喜明です.大学では斎藤英雄研究室に所属しており,普段はコンピュータビジョンの研究をしています.今回のインターンではFew-Shot Object DetectionをWeb画像を使うことで拡張した Few-Shot + Web Object Detectionという新たなタスクに取り組みました.
背景
一般に物体検出で用いられている多層のCNNの学習には大量の教師データが必要となります.
この問題を解決するために,非常に少ない教師データのみを使って新たなクラスの物体を検出するFew-Shot Object Detectionの手法[1, 2]が提案されています.しかし,教師データの数が少ない場合にはデータに偏りが生じやすく,偏ったデータから検出対象クラスの物体の特徴を学習することは困難です.また,サンプル数が少なすぎると与えられたクラスラベルの表すべき概念のサブセットを検出器が学習してしまうリスクがあるという問題があります.例えば犬を新たに検出するために,ある特定の犬種が写った画像を教師データとして与えたとします.このとき,人は”犬”というクラスのサンプルとして特定の犬種についての画像を与えているつもりでも,物体検出器からはクラスラベルという整数値が与えられただけで,与えられたクラスラベルが”犬”に対応しているのか,それともある特定の犬種に対応しているのかを判断できません.そのため,このままでは他の犬種のデータが与えられたときに検出すべきか否かという問題を解くことはできません.
そこで,少量の教師データに加えて,Web検索により取得した画像(Web画像)を学習データに用いることで上記の問題を解決することができないかと考えました.通常,ユーザが新たに追加したいクラスはその名前が既知であるため,Web検索をすることで追加クラスの物体が写った大量の画像を容易に取得することができます.
しかし,Web画像を物体検出に学習データに用いる場合には2つの問題があります.1つ目はWeb検索をした場合,必ずしも正しいクラス情報が得られるとは限らないことです.2つ目はWeb検索で得られるのは画像だけで,物体の画像内での位置に関する情報は得られないことです.
実際にWeb画像を用いる場合には両方の問題を解決しなければなりません.しかし,インターンという限られた期間で2つの問題に取り組むことは難しいと考え,今回はWeb画像の代わりに ImageNet[3]の画像を用いることにしました. ImageNetではWebから収集された画像についてカテゴリラベルが人手で付与・検証されており、1つ目のクラス情報が間違う問題が原則起きない設定で実験することができます.これにより,2つ目の物体の位置に関する情報が得られないという問題に集中して取り組むことにしました.
問題設定
まずはFew-Shot Object Detectionの問題設定について説明します.Few-Shot Object Detectionでは3種類のデータセットがあります.
1つ目のTrain-setは大量の既知クラスの物体についてデータで構成されています.2つ目のSupport-setは新たに学習させたいクラス(未知クラス)のデータで構成されていますが,少量のデータしかありません.3つ目のQuery-setは未知クラスのいずれかが写った画像で構成された評価対象のデータセットです.Few-Shot Object DetectionではTrain-setとSupport-setの2つを使ってモデルを学習させ,Query-setを使って評価します.このときに未知クラスの数がn個,各クラスに与えられる教師データの数がk個の場合は,n-way k-shot検出と呼ばれます.また,Few-Shot Object Detectionでは未知クラスとそのデータのサンプリングから学習・評価までの一連の過程をエピソードと呼び,いくつものエピソードを繰り返して評価します.
今回のインターンで取り組んだFew-Shot + Web Object Detectionでは上記の3つのデータセットに加えてWeb画像とそのクラスラベルで構成されたデータセットであるWeb-setを新たに追加します.このタスクでは物体のクラスラベルと位置情報の両方が付与された少量の教師データと物体のクラスラベルのみが付与された大量のWeb画像をどのように組み合わせてネットワークを学習させるかが重要になります.
提案手法
提案手法の流れを上図に示します.Web画像には画像単位のラベル付けしかされておらず,物体の位置情報については一切与えられません.そこで提案手法では位置情報を補うために,事前に学習させたResion Proposal Network (RPN)と異なるクラスの物体を取り除くLabel Cleaning Networkを用います.
RPNはFaster R-CNN[4]などで用いられるネットワークで,物体の大まかな位置を表すRegion of Interest (RoI)とその信頼度を表すスコアを出力します.提案手法ではスコアが高いRoIを付与されたクラスラベルの物体のRoI,スコアが低いRoIを背景のRoIとします.
しかし,実際の画像には与えられた未知クラスとは異なるクラスの物体が写っていることが多々あり,上記の方法だけでは異なるクラスの物体に対して誤ったクラスラベルを付与してしまいます.
そこで提案手法では,事前に学習をさせておいた2つの分類器から成るLabel Cleaning Networkを用います.1つ目はTrain-setで学習を行った分類器(既知クラス分類器),2つ目はSupport-setで学習を行った分類器(未知クラス分類器)です.
既知クラス分類器は物体のRoIから既知クラス物体のRoIを取り除くのに使われ,未知クラス分類器は物体のRoIから特定の未知クラス物体のRoIのみを残し,それ以外のRoIを取り除くのに使われます.
実験
提案手法の有効性を検証するためにMS COCO[5]とImageNetを使って,1. 少量のCOCOのデータのみを使った場合,2. 少量のCOCOとImageNetのデータを使った場合についての比較実験を行いました.
Web画像として追加されるImageNetの画像には各クラスにつき,最大1000枚の画像をサンプリングしたものを使いました.このとき,WordNet[6]を使い,COCOの各クラス名の同義語と下位語を取得し,それらとImageNetのクラス名のマッチングを行うことでCOCOのクラスとImageNetのクラスを対応させました.
COCOの全80クラスのうち60クラスを既知クラス,20クラスを未知クラスとしました.Train-setにはCOCOの学習用データセットから未知クラスのアノテーションを削除したものを使いました.Support-setとQuery-setにはCOCOの評価データセットから各クラス5つずつサンプリングしたものを使いました.また各エピソードでは未知クラスの中から5つをランダムにサンプリングし,エピソードの数は50としました.
今回の実験では上記の2つに加え,位置情報が与えられたImageNet Localization Datasetを使って学習させた場合についても評価しました.これにより,もし位置情報が正しく得られる場合には,ImageNetを追加することでどれほど精度向上可能なのかという上界を擬似的に測れると考えました.
評価にはクラスごとのAverage Precision (AP)と,各クラスのAPの平均値であるmAPを用いました.推定した検出領域と正解データの検出領域の重なり度合いを表すIoUが0.5以上,かつ,推定した物体のクラスが正しいときに正しく検出できたとみなしました.
結果と考察
実験結果は下表のようになりました.
mAPについては少量のCOCOのデータのみを使った場合が最も良い結果となった一方で,提案手法によりいくつかのクラスではAPが向上しました.また位置情報が与えられていない画像を使う場合にはLabel Cleaningを行うことでmAPが向上したことを確認しました.
ImageNetを使うことでmAPが向上しなかった原因として,1. Label Cleaningがうまくできていないこと,2. COCOのクラスとImageNetのクラスで対応関係が取れていないことなどが挙げられます.
ImageNet Localization Datasetを使ったときにAPが向上したにも関わらず,提案手法ではAPが向上しなかったクラスはLabel Cleaningがうまく機能していないため,APが向上しなかったと考えられます.Label Cleaningが機能していない原因の1つに,Support-setのみを使ってLabel Cleaning Networkを学習させたことが挙げられます.背景で説明をしたように,少量の学習データだけを使って学習をさせた場合にはクラスラベルの表す概念を誤って学習してしまう場合があります.クラスラベルの表す概念を誤って学習してしまった場合には,誤って学習したクラスの概念をもとにLabel Cleaningが行われてしまい,正しくLabel Cleaningを行うことができません.そのため物体検出器の学習だけでなく,Label Cleaning Networkの学習においてもWeb-setを活用し,クラスラベルが表す概念を誤って学習させないようにする工夫が必要なのではないかと考えています.
また,いくつかのクラスではCOCOとImageNetのクラスの対応付けをうまく行うことができていませんでした例えば,COCOのBirdクラスは様々な種類の鳥を表しているのに対し,ImageNetのBirdクラスではhenという特定の種類の鳥のみを表してしまっており,それ以外の種類の鳥は含まれていませんでした.正しくクラスの対応付けができているクラスの中から未知クラスを選ぶことで,誤ってクラスが対応付けられるのを防ぐことができるため,改めてクラスを分け直し,実験することでより正確に提案手法の有効性を検証できるのではないかと考えています.
ランダムに選んだ20クラスではなく上記のような根本的なエラーのないようなクラス集合での評価をした上で、Label Cleaningの手法を改善していくことが課題となりそうです.
まとめ・感想
今回のインターンではWeb画像を使うことでFew-Shot Object Detectionを拡張したタスクに取り組みました.事前に学習を行ったRPNと,2つの分類器からなるLabel Cleaning Networkを使うことでWeb画像に位置情報についての擬似的なアノテーションを与える手法を提案しました.クラスラベルの不一致などの影響もあり,残念ながらmAPを向上させることはできなかった一方で,いくつかのクラスではAPを向上させることができました.
約2ヶ月間という限られた期間ではありましたが,社員の方のサポートのおかげで非常に充実したインターン生活を送ることできました.特に,メンターの二井谷さん,小林さんには毎日ミーティングをして頂くなど,多大なサポートをして頂きました.本当にありがとうございました.大学の研究室に戻ってもPFNで学んだことを忘れずに,精一杯頑張っていきたいと思います.
参考文献
[1] Leonid Karlinsky, Joseph Shtok, Sivan Harary, Eli Schwartz, Amit Aides, Rogerio Feris, Raja Giryes, and Alex M Bronstein. RepMet: Representative-based metric learning for classification and few-shot object detection. In CVPR, 2019.
[2]Hao Chen, Yali Wang, Guoyou Wang, and Yu Qiao. LSTD: A Low-Shot Transfer Detector for Object Detection. In AAAI, 2018.
[3] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei. ImageNet: A large-scale hierarchical image database. In CVPR, 2009.
[4] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015.
[5] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollar, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014.
[6] Miller GA. Wordnet: a lexical database for english. In ACM, 1995.
Area