【JDLA E資格】画像認識タスクの分類とCNNモデルの対応関係

#はじめに
JDLA E資格試験で出題される画像認識タスクの分類とConvolutional Neural Network（CNN）モデルの対応関係について解説した記事です。
E資格試験の深層学習パートでは、これらの違いを直接問われませんが、数多くのタスクとそれに特化した深層学習モデルが登場します。
よって、特にCNNの勉強に入る前に、この概観を掴んでおくと、戸惑うことは少なくなると思います。


なお、他パートの具体的な解説については、下記をご覧ください。
[E資格試験に関する私の投稿記事リスト][link-1]
[link-1]:https://qiita.com/fridericusgauss/items/5a97f2645cdcefe15ce0

###目次
1. [画像認識コンペティションとデータセット](#画像認識コンペティションとデータセット)
2. [画像認識タスクの分類](#画像認識タスクの分類)
3. [画像認識のための特徴量](#画像認識のための特徴量)
4. [画像認識タスクとCNNモデルの対応関係](#画像認識タスクとcnnモデルの対応関係)
5. [おわりに](#おわりに)


#画像認識コンペティションとデータセット
###概要
画像認識は今後の人類にとって非常に重要なタスクの一つです。
自動車の運転を始め、人間の行動決定に関わる情報として視覚的情報の重要性は高いです。
人間の視覚的情報を認識する作業を自動車の自動運転など、AIに代替できるか？という問いに答えるためのタスクです。
そこで、2000年頃から画像認識コンペティションが開催され、AIの研究者はそこで精度を競い合っていました。
E資格試験では、コンペティション内容は問われませんが、勉強の過程でよく見かけるため、説明しておきます。


###ILSVRC
ImageNet Large Scale Visual Recognition Competition（ILSVRC）が最もよく知られています。
ImageNetと呼ばれる大規模な画像データセットを用いて、精度を競い合います。
ただし、2017年に終了しました。

###Open Images Challenge
Open Images Challengeはトップの国際会議IEEE International Conference on Computer Vision（ICCV）で開催されている画像認識コンペティションです。
Googleの大規模画像データセットOpen Imagesを用いて、精度を競い合います。


#画像認識タスクの分類
###分類
E資格試験で登場する画像認識タスクは下記の4つに大別されます。

| 画像認識タスク名                    | 認識する物体数     | 認識内容          | 
|:-----------------------------------|:-----------------:|:-----------------:|
| クラス分類（Classification）        | 1つ（明示的でない）|  クラス           |
| 位置特定（Object Localization：LOC）| 1つ               | クラス$+$物体位置 |
| 物体検出（Object Detection：DET）   | 複数              | クラス$+$物体位置 |
| 分割（segmentation）                | 複数              | クラス$+$物体輪郭 |

__これらのタスクは、モデルが画像内の認識する物体数や認識すべき内容が異なり、上から順に、タスクが難しくなっていくと同時に、応用範囲が広くなります。__
__物体のクラスと物体位置を特定するタスクとして、位置特定、物体検出、分割をまとめて、物体認識と呼ぶこともあります。要するに、クラスを判別するよりも一歩進んだタスクということです。__
これらは、画像認識のコンペティションにおいても実際に使用されているタスク名なので、画像認識の初学者はその違いを覚えておくと良いです。

図による説明は、下記記事が参考になります。
[画像認識タスクの違い][link-2]
[Object Localization and Detection][link-3]
[link-2]:https://starpentagon.net/analytics/computer_vision_tasks/
[link-3]:https://leonardoaraujosantos.gitbook.io/artificial-inteligence/machine_learning/deep_learning/object_localization_and_detection

###クラス分類
クラス分類は、画像中にある物体が1つであることが前提で、その物体のクラス名を判別するタスクです。
なお、多クラスが前提なので、事前に各画像データにクラスラベル（例えば、物体名や画像が表す意味）を割り当てる必要があります。


###位置特定
位置特定は、画像中で認識する物体が1つで、その物体のクラス名と位置を特定するタスクです。
画像中における物体位置の表現方法は、矩形で物体を囲むことが多いです。
ただし、物体検出ができれば、位置特定にも応用できるため、本記事では位置特定のモデルについては割愛します。

###物体検出
物体検出は、画像中で認識する物体が複数で、各物体のクラス名と位置を特定するタスクです。
位置特定と同様、矩形で物体を囲みます。

###分割
分割は、画像中で認識する物体が複数で、各物体のクラス名と輪郭を特定するタスクです。
物体検出の矩形の方法は、画像中で複数の物体同士が近いと、矩形が重なり合うなど、難しくなります。
一方、分割による輪郭の方法は、各物体の輪郭をピクセル単位で特定し、物体同士を明確に境界線で区切るため、そのような重複は発生しません。

また、分割も詳細なタスクに分かれます。
代表的なのは、個別分割（Instance Segmentation）と領域分割（Semantic Segmentation）の二つです。

* Instance Segmentation：背景などは無視し、注目すべき物体に限定して、各物体のクラス名と輪郭による特定するタスク
* Semantic Segmentation：背景や物体などを含め、画像中の全領域を分割し、各領域のクラス名と境界線を与えるタスク



#画像認識のための特徴量
画像認識のタスクにおいて、2010年頃までは人手で輝度などの画像の特徴量を設計し、それをモデルに学習させていました。
スケール不変特徴量変換 （SIFT）やHOG特徴量が有名です。
画像中に小さい窓を作成して、それを画像全体に適用することで、局所的な特徴量を生成するため、これらのアプローチを__Sliding Window__と呼ばれることもあります。


#画像認識タスクとCNNモデルの対応関係
###クラス分類のためのCNNモデル
画像クラス分類のための代表的なCNNモデルとして、AlexNet、VGG、GoogLeNet、ResNet、DenseNetなどが知られています。
これらは、画像認識コンペティションILSVRCにおいて、高い成績を収めたCNNモデルです。
2010年頃まで、クラス分類ではSVMが中心に使用されており、ILSVRCにおいても上位でしたが、2012年のILSVRCにおいて、AlexNetがSVMに大差をつけて優勝したこと、
2015年のILSVRCにおいて、DenseNetが人間の認識精度（top5エラー率）を上回ったこと、などで話題となりました。
また、従来では特徴量の工夫などを人手で行っていたことに対して、CNNモデルではその作業がほぼ不要で、好成績を収めたことでも注目を浴びました。
これ以降、画像クラス分類においては、CNNベース（深層学習）が主流となったことから、第3次人工知能ブームのきっかけの一つです。

画像クラス分類のためのCNNモデルの説明は、下記記事が参考になります。
[画像クラス分類のためのCNNモデルの説明][link-4]
[link-4]:https://qiita.com/yu4u/items/7e93c454c9410c4b5427


なお、クラス分類では、画像に対して1つのラベルを割り当てるのみなので、画像中に複数の物体が存在していると、当然判別精度は落ちます。
また、画像中における物体位置も判別できません。


###物体検出のためのCNNモデル
物体検出のための代表的なCNNモデルとして、R-CNN、Fast R-CNN、Faster R-CNN、YOLO（You Only Look Once）、SSD（Single Shot Multibox Detector）などが知られています。

R-CNN系は__領域提案系（Region Proposal）__と呼ばれるモデルで、「領域提案」と「分類」の二段階のプロセスから構成されます。
第一段階では、画像内から物体領域の候補となる領域を生成し、第二段階では、その各候補領域に対してCNNを用いて物体かどうかを判定するというアプローチです。
一方、YOLOやSSDは__Single Shot系__と呼ばれるモデルで、入力から出力までを一つのプロセスで行う方法です。
画像全体を小さなグリッドに分割し、各グリッドに対して物体が存在するかどうかを判定するアプローチです。
一般に、Single Shot系は領域提案系よりも物体検出処理が速いです。

特に、またSingle Shot系は__End-to-Endモデル__とも言われます。
__End-to-Endモデルとは、前処理などの工程が全く不要で、単にデータを学習させるだけで、高い精度を出すモデルのことを指し、実応用上目指すべき姿です。__


物体検出のためのCNNモデルの説明は、下記記事が参考になります。
[物体検出のためのCNNモデルの説明][link-5]
[物体検出についての歴史まとめ(1)][link-6]
[link-5]:https://blog.negativemind.com/portfolio/deep-learning-generic-object-detection-algorithm/
[link-6]:https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9



###分割のためのCNNモデル
分割のための代表的なCNNモデルとして、FCN、SegNet、U-Netなどが知られています。
なお、分割タスクのためのモデルにおいても、クラス分類や物体検出のテクニックが導入されているため、ロジックが全く異なるわけではないことに留意してください。

特に、Semantic Segmentationは画像の全ての領域を複数に分割するという、最も困難なクラスですが、CNNモデルはこれも達成できるようになってきました。
このため、物体の正確な位置や確信度についても得られるため、その周辺タスクへも貢献することから、CNNモデルは画像認識タスクを解く方法を飛躍的な進歩させたと考えられます。
（例えば、UberNetは画像認識の周辺タスクを同時に解くことが可能）
よって、現在では、分割のためのCNNモデルを用いて、物体検知のタスクを解くことも多いです。


###画像認識タスクとCNNモデルの対応関係
以上の対応関係をまとめたものが下記の表です。

| 画像認識タスク | CNNモデル                                  | 
|--------------:|-------------------------------------------:|
| クラス分類     | AlexNet、VGG、GoogLeNet、ResNet、DenseNet  |
| 物体検出       | R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD |
| 分割          | FCN、SegNet、U-Net                         |


#おわりに
E資格向けの強化学習の基礎について解説しました。
なお、上記は、2021年2月時点における内容であることにご注意ください。

[E資格試験に関する私の投稿記事リスト][link-1]