何が言い切れるかを明確にしてデータセットは作成しよう

画像認識技術の開発のためには、データセットを作り上げることが必要だ。

画像認識技術の開発のためのデータセットの作り方のヒントを、検出器を例に示そうと思う。
（画像認識技術について開発経験のある人にとっては自明のことだろう。）

## **１．正規化された画像セット**
特徴：

- 対象物の位置・面内回転・画像の大きさがそろえられた画像セット。検出器の学習に適する。
- 例：目の位置が正規化された顔データ
- 画像の平均や主成分分析などの処理が意味を持つようになる。
- 正規化する際には、何が基準にするのかが、自明とは言いがたい。横を向いている顔や目が隠れている場合などがある。

ftp://ftp.inrialpes.fr/pub/lear/douze/data/INRIAPerson.tar

http://pascal.inrialpes.fr/data/human/

> Normalized Images
Folders 'train_64x128_H96' and 'test_64x128_H96' correspond to normalized dataset as used in above referenced paper. Both folders have two sub folders: (a) 'pos' (normalized positive training or test images centered on the person with their left-right reflections), (b) 'neg' (containing original negative training or test images). Note images in folder 'train/pos' are of 96x160 pixels (a margin of 16 pixels around each side), and images in folder 'test/pos' are of 70x134 pixels (a margin of 3 pixels around each side). This has been done to avoid boundary conditions (thus to avoid any particular bias in the classifier). In both folders, use the centered 64x128 pixels window for original detection task. 


## **２．対象物が画像の中央付近にあって、正解の検出枠が与えられた画像セット**

- 検出の成否を判定するのがしやすい。
- 平均画像や画像の主成分分析は意味を持たない。
- 中央付近に着目している対象物があるが、その背後にも同じ種類の対象物があることがある。例：人画像のデータ・セットであるが背後に別人がいる。

## **３．画像中に１つもしくは複数の対象物があって、それらの正解の検出枠が与えられた画像セット**
例：走行中の自動車から撮影した歩行者データ

- 走行中の自動車から撮影した画像の中には、歩行者が何人もいたりする。その歩行者すべてに正解データを与える。
- 歩行者の一部・半分が隠れているような画像でも、正解データを与える必要がある。



[Robust Multi-Person Tracking from Mobile Platforms](https://data.vision.ee.ethz.ch/cvl/aess/dataset/)

[Caltech Pedestrian Detection Benchmark](http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/)



## **4. CGで条件を網羅的にカバーしたデータ・セット**

例：　視点を任意に変えたカップを１００種類をpitch, yaw を１０度刻みで撮影することはできるだろうか？
　しかも、照明光の当て方を変えて、背景も変えたデータ・セットを用意できるだろうか？

実写でこれを実現するのは簡単ではない。専用の撮影ドームを作って撮影することになるだろう。実際にはそのような予算を確保することは難しい。
でも今は、これを実現する方法がある。CGモデルを利用してレンダリングする方法です。

- 視点を任意に変えたカップを１００種類をpitch, yaw を１０度刻みでレンダリングすることが可能です。
- 照明光の条件もばらつかせることができます。
- レンダリングした画像の背景を差し替えるのも簡単です。


---

例えば、顔画像のデータベースであっても、それぞれの種類の顔データベースが必要になる。
どれかひとつの種類のデータベースで十分になることはない。

**正規化された画像セット**の場合には、面内回転を加えることで面内回転の依存性の評価ができる。
また、画像を拡大縮小することで、検出時の画像サイズの依存性を評価できる。
また、HaarCascadeの検出器のように、検出器のサイズが固定してある検出器を学習させるための加工前のデータになる。


**２のタイプのデータセット**の場合には、正規化された画像セットでは含み切れていないデータが含まれることがある。
例えば、目位置で正規化された顔画像には、横顔は含まれにくい。
だから、正規化された画像セットだけでは問題が多い。
１枚の画像の中央付近に正解があれば、ポジティブの検出がうまくいっているのかが判定しやすい。
だから２のタイプのデータ・セットが必要になる。
しかし、２のタイプのデータ・セットは、検出器の実力を評価するにはまだまだ不十分だ。


**3のタイプのデータ・セット**で、実際の状況に近い評価データになる。
カメラの視野が実際のユースケースに近いものになる。
画面中には、複数の歩行者がいるだろう。
物陰に隠れていて半分だけ見えている人もいるだろう。
街路樹のように歩行者と紛らわしいものが画像中には写っているだろう。
歩行者を歩行者と判定するだけではなく、歩行者ではないものを歩行者と判定しないことが必要になる。


### **ユースケースの中の誤検出評価が大切**
1や２のタイプのデータセットの場合には、歩行者ではないものを歩行者と判定しないことを確認することができない。
３のタイプのデータセットの場合には、歩行者を検出して、歩行者でないものを歩行者と誤判定していないことを確かめることができる。
誤検出しないことを、様々な入力画像（花の映像・家具の写真・動物の写真・山々の写真・海中写真など）で確かめても、それは車載分野の歩行者検出の誤検出の評価にはつながらない。歩行者検出の評価をするには、それにふさわしい状況の画像を使うのが大切だ。

（そのことは、歩行者検出をさせる際のネガティブデータとして、道路の周辺のシーンからの画像がとても大切になる。）

### **少なすぎる偏った評価シーンでは過学習を見逃しやすい。**
ある実環境のデータを半分に分け、一方を学習用、他方を評価用にしたとしよう。
そうした場合でも少なすぎる実環境だと、過学習を見逃しやすいという危険がある。


ただ、３番のタイプのデータで成否を判定するのは、とても難しい。
街の中には、ポスターがあって人が写っているかもしれない。それに反応して遠方にある巨大なポスターの中の全身像を近距離の人として誤認識して緊急ブレーキをかけてしまうなどということがあってはならない。
（実用のシステムとしては、見えている対象物の空間的な位置と、それが時間とともにどう変わってきているのかを組み合わせて、ブレーキをかける必要のあるものかどうか判定しているので、ビル壁面の巨大なポスターを誤認識することはない。）


### **歩行者の見え方は大きく変わる。**
よちよち歩きの子どもから、杖や車いすを用いている人まで、年齢によって大きく変わる。
人は、いろんな持ち物を身に着けていたり、持ちながら歩いている。
台車を押しながら歩いているかもしれない。
歩行者検出すべき歩行者は傘をさしているかもしれない。

人の服装は、文化・気候・季節・人々の嗜好性などの要因によって大きく変わる。




## **評価目的ごとにデータセットの作り方を選ぶこと。**

期待している機能が、実現できているのかどうか評価するデータ・セットが必要だ。
リアルタイムで動作させるものであっても、再現性の確保できる評価が必要だ。

だからデータセットの構築は、必要な開発の一部であることをチームのリーダーにわかってもらいましょう。


まず、画像認識や機械学習で何を実現したいのかを明確にしましょう。
実現したいことが、市販品やオープンソースのライブラリで目的の使い方ができるのかを確認しましょう。
その確認をするためには、どのような条件でどのような結果をだせれば十分なのかを明確化しましょう。

そのためには、どうしても評価用のデータセットが必要になります。

既存の市販品やオープンソースのライブラリで実現できるかどうかを判定するためには、それらのデータが決め手となります。



漫然と収集した画像セットは何かを判断することが難しい。


適切なデータセットを作り上げた後は、画像認識技術の評価・開発を複数のメンバーで加速しやすくなります。
確かに同じデータを見て議論していると言えるようになるからです。

## **学習させるためのデータ・セット**

- 元画像の他にミラーの画像を加えるべきこと。
- 面内回転について加えること。
- 人が見ても判断できないような難しすぎる画像は除去すること。
- 学習のために工夫をデータセットに含めること
    - 入力画像の輝度を正規化すること。
    - 背景部分は適切なばらつきを持つべきこと。



付記：
顔のデータベースでも、顔検出・顔照合の技術の進展とともに、作られるデータベースの中身が変わってきている。

変化の傾向：
顔照合用のデータベースの顔の向き・表情が変化が大きいものになってきている。
顔検出のデータベースでの、顔の部分的な隠れが多い画像が増えてきている。
顔照合のデータベースでも、同一人物について異なる年齢のときの画像を含むのが増えてきている。
顔器官点（目、鼻、口など）の位置を入力したデータベースが増えてきている。

データベースの規模が大きくなってきている。

付記　歩行者データの１例
[P-DESTRE](http://p-destre.di.ubi.pt/download.html)

![](http://p-destre.di.ubi.pt/acquisition.jpg)
撮影条件