1. 物体認識 (Object Recognition) とは [概要]
物体認識 (Object Recognition)とは,中央に注目物体が1つ映っている物体中心画像を入力として,機械学習モデルを用いて,画像中の注目物体のクラスカテゴリーの識別を行うコンピュータビジョン・画像認識の代表的問題である.ディープラーニングの流行以降は,物体中心画像を入力としてCNN(畳み込みニューラルネットワーク)などで実現されることが標準的である.物体認識問題は,入力画像の種類を「物体中心画像 (Object-centric image)」のみに限定することで,問題を解きやすくする制約を設けている点が特徴である.おなじ画像分類の中でも,シーン画像の画像分類を行うことは,「シーン認識」と呼びわける.
この記事では,物体認識の定義を行ったのち,コンピュータビジョン分野における,「物体中心画像を入力とした」主要な物体認識問題を,分類を行い簡潔に整理する.まず2節では,物体認識問題について簡単に定義したのち,取り扱うクラス数の増加について.次の3節では「クラスの粒度」の小中大に従って,インスタンス認識(Instance Recognition)や,細粒物体認識(Fine-grained Recognition)と問題設定が変化する点を整理する
※ 現時点では,3D点群を入力とした物体認識は対象外としたい.PointNetなどの記事を書いたのち3D点群での話も追記する予定.
またCNN・ディープラーニングで新たに実現できるようになった技術の恩恵により,物体認識では,更なる派生問題や一般化された問題についても,研究が行われている.その例としては,開集合物体認識(Open-Set Object Recognition)や,ロングテール認識(Long-Tailed Recognition), カテゴリー発見(Category Finding)などが挙げられる.
※ これらについては現状取り上げないが,対応する小記事を増やすに従い4節以降へ加筆していきたい.
2. 物体認識 (Object Recognition)の定義
2.1 問題設定の動機
物体認識の問題は,物体中心 (Object-centric)な画像1枚を入力として,対象となるN個の物体クラスから1つだけを選び出す問題である (図1).機械学習・パターン認識の目線で言い換えると「物体中心画像を入力として,Nクラス分類を行う」という問題である.
我々が,写真や動画を撮影したり,ロボットビジョンでロボットが視る映像は,かならずしも物体中心画像ではなく,シーン全体を撮影した シーン中心 (Scene-centric)な入力画像も多い.しかし,シーン中心の入力画像から物体認識を行おうとすると,2個以上の物体が映る可能性もある.また,認識対象の物体が1つだとしても,その物体範囲を物体検出などでまずローカライゼーションしないとならない場合もあり,各物体の大きさもバラバラだとうまく画像認識しづらい.
そこで,物体認識では,入力画像に対して「認識対象物体が,毎回同じくらいのサイズで中央に映った画像」を仮定することで,問題設定を識別問題に限定した.これの制約条件のおかげで,画像の物体認識は,解きやすく,なおかつ取り組みやすくされているとも言える.
2.2 深層学習の登場: 多数の物体クラスで実現可能に.
ImageNet データセットの登場以降は,物体認識問題が,CNN(畳み込みニューラルネットワーク)を用いてよく取り組まれるようになった.それにより,猫と人と車の識別のような粒度だけでなく,見分けのつきづらいクラス同士の「細粒度分類」や「インスタンス分類」のような,細かいクラス間粒度が対象の場合も,ディープニューラルネットの恩恵により,高精度かつ実用的になっていった.特に,ResNet(2014~2015)の登場の頃には,ImageNet データセットでの物体認識は,認識誤差3~5%台に到達し,それ以上性能向上しないで飽和しはじめるほど,高精度になった.
また,CNN登場以前から取り組まれていた細粒度物体認識(3.2節)でも,ディープラーニング世代の新技術(CNNだけでなく,Deep Metric Learning,(空間)アテンション機構など)の恩恵により,高精度の細粒度物体認識が実現できるようになった.例えば,スマートフォンで,植物の物体画像を撮影すると,その植物の種類を識別して教えてくれるようなアプリが,その実用例として登場している.
また記事の対象範囲外ではあるが,Siamese NetworkやTriplet Loss等の関連技術の発展に伴い,顔認証や画像検索などの,物体認識に近いが,識別問題としては解かずに,埋め込み学習・画像検索技術などで解くような問題の性能も,飛躍的に向上していくこととなった.
2.3 対象クラス数の増加
ImageNet データセットでは「WordNet中の名詞・物体のクラス分類」に対応する,1000クラスの実画像サンプルが用意されている.これは,それまでの画像認識の業界標準ベンチマークであったPascal VOC(2007)ごろの「20クラス物体分類」という問題設定を飛躍的に拡大させることができた.
よって,以下のように,同じ物体画像クラス分類の中でも「対象物体クラス数の小,中,大」で分類して考えるようにすると,整理してとらえやすい:
- 小クラス数の物体認識: Pascal VOC,CIFAR-10, MNIST など.
- 中クラス数の物体認識: CIFAR-100, CUB-200-2011, Stanford Cars 196 など.
- 大クラス数の物体認識: ImageNet データセット以降 (2010年ごろ以降)
この時期の2010年前後における大きな変化は,Pascal VOC(2007)チャレンジから,,ISLVRC(ImageNet)へと,画像認識ベンチマークの主戦場が移行した点である.ISLVRCチャレンジおよびAlexNet登場以前までの技術では,高画質な物体画像を100クラス以上で分類できるだけの画像認識技術はなかった.
CIFAR-10, 100も,小さい画像(tiny image)サイズで,物体認識の発展方法を模索中だった頃の時代のデータセットである.よって,その頃は,AlexNetの以前に主流であった画像認識フレームワークの「手作り特徴の分布 (Fisher Vector) + 非Deep系機械学習識別器(SVM, Boostingなど)」という仕組みでは,ImageNetのような大クラス数を高画質画像で分類する物体認識は,まだ高精度には実現できなかった.よってAlexNetの登場で,旧式の手法をCNNの物体認識精度が大きく上回ったことは,パラダイムシフトをおこした
その後の経緯は,以下のCNNバックボーンの記事を参照のこと:
関連記事:CNNバックボーンの代表的アーキテクチャの歴史 [まとめ年表]
3. クラス粒度の小中大に基づいた分類
3.1 物体認識 (一般物体認識,粗粒度物体認識)
物体認識とは,Pascal VOCやCOCOでラベル付けされている20~50程度の物体クラスや,ImageNet-1Kの1000クラスあたりのクラスの分類を機械学習で行うことを言う.現在では物体認識向けのCNNバックボーンや,巨大規模モデルのVision Transformer/MLP mixerなどで取り組む問題である.
CNN登場以前は,日本のビジョン業界では,これを「一般物体認識」と呼び分けることもあった.3.4節の「特定物体認識」と対比させてペアで捉えることが多かった
3.2 細粒度物体認識
車や鳥など,同じ物体クラスのなかでも,更に細かく視覚的に見分けづらいものに対して行う物体認識を,細粒度物体認識 (Fine-grained Object Recognition)と呼ぶ.
局所的な相違点を,対象物体の画像上から特定する必要があるので(例:鳥のくちばしの違い),CNN登場以降だと空間アテンションなどの活用が鍵となる.
3.3 特定物体認識:世界に一つのインスタンスを認識
3.1,3.2より更に細かい「世界で1つしかない固有物体」を,物体中心画像を入力として画像検索する問題のことを,特定物体認識とよぶ.入力の物体画像から,例えば「エッフェル塔」や「富士山」など,世界に一つしかない建築物や自然物,土地のインスタンスを行う問題である.英語圏では ,インスタンス認識 (Instance Recognition)と呼ばれる.
「認識」と呼ぶものの,特定物体認識は,画像検索の技術を用いて解くことが普通である.この問題がよく取り組まれ出した,局所画像特徴量ベースの時代では,画像特徴量の埋め込みベクトル空間において,最近傍探索やハッシュ化するのが定石であった.それが昨今だと,細粒度物体認識 (3.2節)のように,Deep Metric Learningしてあげてもよいし,NetVLADプーリングなども使える.
近年,インスタンスセグメンテーションの問題(Mask R-CNNなど)が盛んに研究されるようになると,そちらの「一枚の画像中に映る,複数の各物体インスタンス」の意味のインスタンス(実体)の方が,よく見かけるようになっている.両者とも「インスタンス」と呼ばれていて呼び分けはされていないので,違いを理解しておかないと少しややこしい.
4. 物体認識(Object Recognition)のまとめ
この記事では,物体認識の問題について定義を行い,まずはその基本となる「クラス数」の「データセットのクラス数規模の小中大」視点で,代表的データセット名を添えた分類をおこなった(2節).
また,「対象クラス同士の粒度の小中大」という別の軸でも,物体認識問題の分類を行った(3節).具体的には,「一般クラス」「細粒度クラス」「特定物体インスタンス」の3つの粒度で,物体認識問題を分類した.
関連書籍
- Pythonで学ぶ画像認識 (機械学習実践シリーズ) 【📖紹介記事】, 田村 雅人, 中村 克行, インプレス, 2023.
- 4章 画像分類 (物体認識など)
References
- [Caron et al., 2018] Mathilde Caron, Piotr Bojanowski, Armand Joulin, and Matthijs Douze. Deep clustering for unsupervised learning of visual features. In ECCV, 2018