前回の記事ではすでに学習されたモデルを使った人間にモザイク処理をするAIの実装を行いました。
本記事では、目的である犬の顔を検出しモザイク処理ができるAIの作成のために、犬顔を検出するための学習データの作成についてお話します。
データのダウンロード
まず犬の顔の画像を集めます。
スクレイピングで画像を集める方法などありますが、今回は少し楽させていただきます。
以下リンクにあるKaggle内のデータセットを利用します。(アカウントお持ちでない場合はKaggleのアカウント作成が必要かもしれません。)
本記事ではこのデータセットのvalidationデータに対して、顔検出のアノテーション情報を付与していきます。
ちなみにダウンロードしたデータの展開にそこそこ時間がかかりますので、コーヒー飲んでゆったりしてください。
展開後のフォルダ内のval内のdogフォルダをプロジェクトフォルダに移動しましょう。
また後程アノテーション情報を保存するためのフォルダをdogフォルダと同階層にannotationという名で用意しておきます。
ということで、フォルダ構成は以下になることを想定して以後説明していきます。
dog-face-mosaic-ai
|- env
|- models
| |- yolov5s.pt
|- data
| |- dog
| | |- flickr_dog_000043.jpg
| | :
| | :
| |
| |- annotation
|
|- main.py
|- requirements.txt
dogとannotationフォルダが新規に追加された部分となっています。
labelImgでアノテーション作成
さて、アノテーションデータを作成するツールのlabelImg自体は初回の環境構築編で実はインストール済みになっていますので、そのインストールした環境をactivateした状態で話を進めていきます。
仮想環境をactivateした状態で以下コマンドを実行してください。
labelImg
するとツールが立ち上がり、以下画面が開かれます。
ここで以下画像の赤枠内がYOLOとなっていない場合は何回かクリックしてモードを変更してください。
続いてOpen Dirをクリックし、画像が保存されているフォルダ(dogフォルダ)を選択してください。
そのままアノテーションデータの保存先の選択に移りますので、こちらはannotationフォルダを選択します。
画像が読み込まれると、右下のFile listに一覧が表示されます。
そうしましたら、次はNext Imageをクリックし、画像を順に表示していきます。
続いてCreat ReactBoxをクリックしてから、画像中のバウンディングボックスで囲いたい部分を選択します。
Next Imageで次の画像に移った際に、アノテーションデータは保存先に保存されます。
またバウンディングボックスを付与した際にラベルを求められますが、今回の場合は「犬の顔」のみを判定するため全て0としました。
後はひたすらに画像にバウンディングボックスを付与するのみ。
ちなみにKaggleのデータセットは基本犬の顔のアップです。
そのため実際に筆者が学習データを作成する際には、Kaggleのデータセットに加えて自分で撮影したワンちゃんの画像などを加えていろんなバリエーションの犬の顔が学習できるようにしました。
最後に
ここまでお読みいただきありがとうございます。
このワンちゃんモザイクAI作成の記事も残すは1記事のみです。
次は今回作成した学習データを使ってYOLOv5を犬の顔が検出できるように学習させます。