ディープラーニングでは大量の学習データを手作業で用意する必要があり、これがかなり面倒です。
物体検出の学習データを自動生成するアプリを作ったので紹介したいと思います。
自動生成の方法
背景が白い板の上に学習させたい物体を置き、携帯のカメラなどを使って、様々な角度から動画を撮影します。
動画のフレームごとに以下の処理をします。
1. グレースケール画像にします。
3. OpenCVで画像の中央付近にある輪郭を抜き出し、これをマスク画像とします。
5. 色・位置・サイズを変化させてから、適当な背景画像に貼り付けると、学習データの画像になります。
背景画像としてはCOCOデータセットの画像ファイルを使いました。
背景画像と、位置・サイズ・色の変化を組み合わせると、大量の学習データが自動生成できます。
学習データのテスト
野菜とお菓子で学習データを作り、YOLOv5でテストしました。
常に良い結果が得られるとは限りませんが、撮影条件を工夫したり、YOLOv5のチューニングをすれば、そこそこ使える方法だと思います。
アプリの実行方法
Google Colabで学習データの自動生成からYOLOv5による物体検出までできるのでお試しください。
ソースはGitHubで公開しています。
https://github.com/teatime77/auto-img-tag
ローカルPCでの実行方法はGitHubのREADMEをご覧ください。
動画の撮影アプリ
動画の撮影は携帯のカメラでもよいのですが明るさの調整が難しかったので、パソコンのUSBカメラで撮影できるアプリを作りました。
明度または色相で物体を背景から分離しています。
アプリの画面の左上の画像は原画、右上は二値画像、右下は背景を真っ白にした画像です。
左のアプリの画面では、明度の閾値を調整すると、二値画像の白の領域が変化します。
右のアプリの画面では、背景の色相を指定してから、色相の範囲を調整すると、白の領域が変化します。
動画撮影ボタンをクリックすると、背景が真っ白な動画ファイルを作成できます。
撮影の方法
明度で物体を背景から分離する場合は、下からLEDライトを照らしてパソコンのUSBカメラで撮影しています。
LEDライトはAmazonで買った自撮りライトです。
ライトの上の白い板はIKEAで買ったまな板です。厚さが8mmあり光を拡散してくれます。
背景が均一な白であることは撮影の重要なポイントです。
まな板の上の透明の台は100円ショップで買ったディスプレイスタンドです。
物体をまな板の上に直接置くと影ができるので、透明な台の上に置いています。
アプリのバグなどがあれば、コメント欄に書かれるかTwitterに連絡をお願いします。
teatime77
ここまで読んでいただき、ありがとうございました。