1. 画像認識 (image recognition) のタスク [概要]
画像認識 (image recognition)のタスクのうち,用語Wikiで紹介しているディープラーニング時代の代表的な画像認識タスクについて,簡潔に列挙した「まとめ記事」である.
この記事では,深層学習で解かれるコンピュータビジョンの画像認識タスクの代表例を2節で列挙し,それぞれの概要を短くまとめる.教科書で出てくるような代表的な画像認識タスクのみ取り上げており,それ以外のタスクはこの記事には登場しないことに注意していただきたい.
1.1 画像認識 (image recognition) の概要
画像認識では,画像に写る対象の様々な要素を,ディープニューラルネットワークなどの認識系モデルを用いて推定する(図0).とりわけ,画像中の,各物体の検出と意味認識や,シーンの意味ごとの分割(セマンティックセグメンテーション)が,画像認識における基本的な興味となる.
また,本記事では取り上げないが,各物体の属性を認識したり(例:男/女, 服装の種類),画像中に写るテキストや数字の認識を行ったりもする.
1.2 画像認識の代表的タスク一覧 (2節以降の構成)
2節以降では,以下のコンピュータビジョンでの代表的な画像認識のタスクを,概要だけ列挙していく:
- 2.1 物体認識
- 2.2 物体検出
- 2.3 セマンティックセグメンテーション(意味的分割)
- 2.4 インスタンスセグメンテーション(実例分割)
- 2.5 人物姿勢推定
認識・理解系のタスクを紹介するので,入出力が逆方向である深層生成モデルを用いた「画像生成タスク」や,「画像変換系タスク(pix2pixなど)」は,この記事中では取り扱わない.
2. 画像認識の代表的タスク
2.1 物体認識 (画像分類の1種)
物体認識 (Object Recognition)とは,中央に注目物体が1つ映っている物体中心画像を入力として,機械学習モデルを用いて,画像中の注目物体のクラスカテゴリーの識別を行うコンピュータビジョン・画像認識の代表的問題である
物体認識の問題は,物体中心 (Object-centric)な画像1枚を入力として,対象となる「N個の物体クラス」から1つだけ該当するクラスを選び出す問題である (図1).機械学習・パターン認識の目線で言い換えると「物体中心画像を入力として,Nクラス分類を行う」という問題である.
かつての研究では,Pascal VOCデータセットなどをベンチマークとして,手作り特徴量 + 中規模機械学習モデル(SVMやBoosting/RandomForestなど) で取組まれていた問題であった.それが,ディープラーニングの流行以降は,物体中心画像を入力としてCNN(畳み込みニューラルネットワーク)で実現されることが標準的である.また,近年(2021~2022年以降)では,CNNの変わりに,大規模なVision Transformerを使用する研究例もでてきた.
2.2 物体検出
物体検出 (Object Detection)とは,画像の入力に対して,画像中に映っている各物体領域のバウンディングボックスを検出し,その物体のクラス識別も行う,画像認識の重要な問題である.また,物体中心 (Object-centric)な処理を行うための前処理(矩形領域抽出)でもあるので,その意味でも,非常に重要かつ本質的な問題の1つである
物体検出は,入力画像において,各物体インスタンスの(1) 関心領域(ROI)を矩形で囲ったバウンディングボックスを検出(detect)し,その (2) 物体ROIの意味的な物体クラスの識別も行う.初期の代表的なCNNとしては,アンカーあり2ステージ型のFast R-CNNや,アンカーあり1ステージ型のSSD, YOLO v2などがあげられる.いずれも,密に画像座標 or 特徴マップ座標上に配置したアンカーボックス群からの,「クラス分類+BBok回帰」を「2ステージに分割して行う or 1ステージで一気に行う」 手法である.
また,Transformer登場後は,CNN+Transformer-Decoderを用いて物体検出モデルを学習するDETR (DEtection TRansformer)や,(DETRと同じく)疎な少数物体クエリ群から推定を行うSparse-CNNなども登場し,よく研究されるようになっている.
2.3 セマンティックセグメンテーション(意味的分割)
セマンティックセグメンテーション (Semantic Segmentation, 意味的分割)とは,シーン画像に対して,画素ごとに独立して意味的な(Semantic)クラス識別を行い,画像上の領域分割をおこなう問題である.画像Encoder-Decoderを用いた高精度な深層学習手法が立て続けに登場して以降,ブレイクスルーが起こった技術である.FCNやU-NetにDeepLabにPSPNetなどが,初期の代表的なCNNである.
各画素の織別に用いるクラスとしては,「道路」「人」「自転車」や,「空」「海」「建物」などの,「おおまかな意味的な単位」を用いる.2010年代に入って以降の,自動運転研究の開始に伴い,取り組む研究者が増えた問題でもある(例:SegNet など).また,医用画像処理の領域分割用途などでも実用性が高いゆえ,深層学習の発展に伴い応用事例が増えた問題と言える(例 U-Netなど).
2.4 インスタンスセグメンテーション(実例的分割)
インスタンスセグメンテーション (Instance Segmentation), 実例分割 とは,画像上やRGB-D画像に写っている「物体クラスの実例 (Instance)」の前景マスクを,各インスタンスごとに区別して検出する問題である.初期のCNNとしては,DeepMaskとSharpMask や,R-FCNやFCISに,代表的手法となったMask R-CNNなどがあげられる.
図4では,複数物体・複数クラス画像が映る入力画像に対する,以下の表中の4つの問題において,出力の違いを描画し,それぞれのタスクを比較できるようにしてある:
同じ画素毎のクラス識別の中において,2個以上の同一クラスの複数インスタンスが写っている際に,セマンティックセグメンテーションでは,インスタンスの違いは区別せず「意味クラスの識別」だけをおこなう(図1-c).従って,図1-c のように,2つの「dog」インスタンス同士が物体間遮蔽している場合だと,それらの境界は判別できず,1領域につながった状態で各領域が推定される.
2.5 人物姿勢推定
画像からの人物姿勢推定 (Human Pose Estimation)とは,入力画像中の各人物に対して,画像上のキーポイントや,それらの点ペアを結んだ2次元ボーンを,その人物の姿勢の現在の状態として,推定する問題のことである.OpenPoseなどが,代表的な人物姿勢推定向けのCNNである.
図1のように,首から下の「四肢と体幹の2Dボーンの人物姿勢 (Articulation)」を推定することが,2D人物姿勢推定問題の主目的である.頭部や手先・足先,顔や目・鼻などについては,1点もしくは数点で簡易的に表現する.そして,その他に,体幹部と腕・足の各関節キーポイントの推定も行う.
3. まとめ
以上,簡単にであるが,(本サイトでとりあげている)代表的な画像認識タスクを列挙した.
節でも述べたように,「全体を俯瞰的にみつめなおしやすい記事」であるので,このページを定期的に眺めることをおすすめしておきたい.
関連書籍
- Pythonで学ぶ画像認識 (機械学習実践シリーズ) 【📖紹介記事】, 田村 雅人, 中村 克行, インプレス, 2023.
- 画像認識(機械学習プロフェッショナルシリーズ),原田達也,講談社,2017.
- 物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング チーム・カルポ、秀和システム,2021.
- 2章: SSDの詳しい実装方法.