深層学習を行うにあたり、どのようなデータセットを集めるべきか?
これまでは深層学習について学びYOLOv3を使用して実際に学習させるところまで実施してきました。
その際、どのようなデータセットを収集したら精度のよいモデルができるのか?という疑問が出てくると思います。
そこで今回はどのようなデータセットを集めるべきかということについて、これまでの経験からよさそうなものをピックアップしてみました。
まず、前提として以下のことは判明しています。
・デフォルトの重みでかなり良い精度を得ることができる
・悪いデータセットで学習すると悪い精度の重みしか得られない
・モデルの能力はドメインのバランスに大きく依存するためバランスよくデータを集める必要がある
上記の前提を考慮した上で、データセットは以下の項目がバランス良く含まれていたほうがよいと考えられる。
画像の種類 | サンプル画像 |
枚数 | チェック |
①異なる種類の画像が大量に含まれること | 1000枚 | □ | |
②画像に対してオブジェクト比が大きい物 | ![]() |
30枚 | □ |
③画像に対してオブジェクト比が小さい物 | ![]() |
30枚 | □ |
④オブジェクトに角度がついているもの | ![]() |
30枚 | □ |
⑤画像の明暗があるもの | ![]() |
30枚 | □ |
⑥色違いのもの | ![]() |
30枚 | □ |
⑦背景がいろんな種類であるもの | ![]() |
30枚 | □ |
⑧イレギュラーな形状の物 | ![]() |
30枚 | □ |
⑨オブジェクトの近くにノイズがあるもの | ![]() |
30枚 | □ |
⑩オブジェクトの一部が隠れてしまっているもの | ![]() |
30枚 | □ |
⑪リアルで使用するときのカメラのアングル、画像サイズ、明るさ、状況のものであること | ![]() |
30枚 | □ |
⑫いろんなオブジェクトが含まれていること | ![]() |
30枚 | □ |
⑬複数配置されているものも含めること | ![]() |
30枚 | □ |
合計枚数 | 1360枚 | □ |
上記の種類のデータを集めることによってデフォルトの重みよりも検出できる画像が多くなったため、やはり多種多様なデータを収集することが精度の良い重みを作るのに直結することが分かった。
クラス毎に上記のデータを収集するのは非常に大変な作業となってくるので、効率よく学習を行うには公開されているデータセットの活用もしくは他のサービスを利用するのが望ましいと考えられる。