深層学習を行うにあたり、どのようなデータセットを集めるべきか?

これまでは深層学習について学びYOLOv3を使用して実際に学習させるところまで実施してきました。

その際、どのようなデータセットを収集したら精度のよいモデルができるのか?という疑問が出てくると思います。

そこで今回はどのようなデータセットを集めるべきかということについて、これまでの経験からよさそうなものをピックアップしてみました。

まず、前提として以下のことは判明しています。

・デフォルトの重みでかなり良い精度を得ることができる

・悪いデータセットで学習すると悪い精度の重みしか得られない

・モデルの能力はドメインのバランスに大きく依存するためバランスよくデータを集める必要がある

上記の前提を考慮した上で、データセットは以下の項目がバランス良く含まれていたほうがよいと考えられる。

画像の種類 サンプル画像
枚数 チェック
①異なる種類の画像が大量に含まれること 1000枚
②画像に対してオブジェクト比が大きい物 30枚
③画像に対してオブジェクト比が小さい物 30枚
④オブジェクトに角度がついているもの 30枚
⑤画像の明暗があるもの 30枚
⑥色違いのもの 30枚
⑦背景がいろんな種類であるもの 30枚
⑧イレギュラーな形状の物 30枚
⑨オブジェクトの近くにノイズがあるもの 30枚
⑩オブジェクトの一部が隠れてしまっているもの 30枚
⑪リアルで使用するときのカメラのアングル、画像サイズ、明るさ、状況のものであること 30枚
⑫いろんなオブジェクトが含まれていること 30枚
⑬複数配置されているものも含めること 30枚
合計枚数 1360枚

 

上記の種類のデータを集めることによってデフォルトの重みよりも検出できる画像が多くなったため、やはり多種多様なデータを収集することが精度の良い重みを作るのに直結することが分かった。

クラス毎に上記のデータを収集するのは非常に大変な作業となってくるので、効率よく学習を行うには公開されているデータセットの活用もしくは他のサービスを利用するのが望ましいと考えられる。