画像データ水増し(Data Augmentation)手法
Data Augmentation(データの水増し)は、ディープラーニングの画像認識で、学習の際に精度を上げるためのテクニックです。データ水増しは、他にもデータ拡張とか言ったりします。
具体的には、教師データの画像に対して、明るさ変更・回転等の画像処理をして、教師データを増やして、カメラの変動に対して性能を向上させます(変動に対して強いことをロバスト性が高いと言ったりします)。
TensorFlow(Keras)で物体判別をする際のData Augmentationに関しては、多くの解説例があります。特に id:aidiary さんのものが分かりやすいです。
同じことをしても仕方ないので、今回はあまりネットに情報無かったTensorFlowのObject Detection APIでの物体検出のData Augmentationが何をしているかを、実際に動かしながら確認していきます。
確認方法に関しては、コマンドの羅列になり知らない人には退屈(宇宙語)なのでQiitaに投稿しました。興味ある方はご覧下さい。Mac/Linuxでの動作を想定しています。WindowsでもPythonのセットアップ部分をWindowsに合わせて修正すれば動くと思います(未確認)。
追記:Google Colaboratory上でPyTorchを使って動かすバージョンは以下に投稿しています。
ここからは、データ水増しした結果のみを紹介していこうと思います。
素材としては、おなじみの優良なフリー素材「変デジ研究所」のロンスタさんです。
ここに書いてあることの意味が良くわからないという人は、とりあえずロンスタさんの12変化をお楽しみ下さい。
データ水増し結果
ここからData Augmentationで画像加工した結果を載せていきます。以下の点ご了承下さい。
- Object Detection APIのData Augmentation機能のうち代表的なものを紹介(全てでは無いです)
- パラメータは一部、分かりやすくするためデフォルト値から修正
詳細は、今回の画像加工に用いた以下のJupyter Notebookを見てもらえれば、分かる人には分かると思います。
Normalization(正規化)
RGB値をとある範囲内に正規化します。デフォルトだと0〜255を0〜1.0に正規化します。ここでは効果を分かりやすくするため、0〜255を63〜127に正規化しています。
Horizontal Flip(左右反転)
左右反転です。代表的なものです。
Vertical Flip(上下反転)
上下反転です。
Rotation90(90度回転)
90度回転です。
Pixel Value Scale(ピクセルノイズ?)
ノイズ的なものが加わっている?
Image Scale(画像サイズ変更)
様々なサイズの変換です。
Rgb to Gray(モノクロ変換)
モノクロ画像の変換です。
Adjust Brightness(明るさ調整)
明るさ調整です。分かりやすくするため、パラメータをデフォルトより強目にしています。
Adjust Contrast(コントラスト調整)
コントラスト調整です。分かりやすくするため、パラメータをデフォルトより強目にしています。
Adjust Saturation(彩度調整)
彩度調整です。分かりやすくするため、パラメータをデフォルトより強目にしています。
Distort Color(歪んだ色?)
なかなか強烈な加工です。個人的にはベスト(面白さ的に)。
Black Patches(黒パッチ)
分かりづらいですが、海苔みたいな黒い四角がランダムに写真を覆っています。
恐らく、Random EragingやCutoutと呼ばれるData Augmentation手法と思います。以下のQiita記事が分かりやすかったです。
論文は以下です。こちらは、まあいずれ読むかも…
[1708.04896] Random Erasing Data Augmentation
[1708.04552] Improved Regularization of Convolutional Neural Networks with Cutout
まとめ
データの水増しに関して、実際に試しながら理解を深めてみました。調べると、色々なテクニックがあって中々奥深い世界ですね。GANの自動生成で水増しするテクニックもあるみたいですけど、そこまでやると、凄い遠回りしている感がありますね。
簡単な画像処理の確認をしただけですが、実際に手を動かして可視化すると、理解が深まりますし、生TensorFlowの基礎練(?)みたいになるので良いですね。自分的には色々発見ありました。
ディープラーニングでの画像認識や、GANでの自動生成に関して、有料noteでチュートリアルを公開しているので、もし興味あればご参考まで。
参考リンク
用意した画像は一枚だけ!?物体検出で将棋駒の認識 - Qiita
PCA Color Augmentationを使ってみよう - Qiita
models/preprocessor.py at master · tensorflow/models · GitHub
How to Configure Image Data Augmentation in Keras
NumPyでの画像のData Augmentationまとめ - kumilog.net
データのお気持ちを考えながらData Augmentationする | Shikoan's ML Blog
関連記事
変更履歴
- 2020/03/16 PyTorch on Google Colaboratory版のリンクを追記