お疲れ様です。
前々から試してみたかったAlbumentationsの物体検出用の処理を今回実際にやってみました。
Albumentationsとは何ぞや?という方は以下のサイトを参照ください。
albumentations.ai
また、具体的にできることは以下をみると大体わかるかと思います。
(私もいつも見させてもらってます…!)
qiita.com
端的に言うと画像系AIの前処理(DataAugmentation)をまとめたライブラリという感じです。
基本的には画像系AIの中でも画像分類のタスクに使われることの多いイメージですが、物体検出やセグメンテーションも対応しています。(私は最近まで知らなくて物体検出の前処理を自作していました…。)
物体検出の前処理は画像への変換の適用に加えてアノテーションされたBBoxの座標も変換しないといけないので実装するとなるとかなりめんどくさいです。そこをライブラリ一つでできるとなればこれは使うしかない!…と。
以下、実際に試した結果の一部を載せていきます。
使用したソースコード(NoteBook)
作成の際に使用したコードはこちらにありますので以下にある前処理以外を試したい場合など必要に応じてご確認ください。 github.com
処理適用前の画像

幾何変換以外の処理をまとめて
幾何変換でない場合はBBoxの座標に影響がないのでまとめています。
今回は「ぼかし」、「ノイズ付加」、「輝度コントラストの調整」を適用しています。

幾何変換
Flip(反転)
今回は左右反転が適用されています。物体の反転に合わせてちゃんとBBoxの座標も動いていますね。

Crop(切り出し)
RandomCropでちょっと極端ですが元画像の半分のサイズに切り出すように設定しています。この場合はBBoxが見切れてしまっています…。

少し調べるとBBoxSafeRandomCropという物体検出用のRandomCropを発見しました。BBoxが見切れない範囲でランダムに切り出す処理になっているようです。実際に使う場合はこちらがベストですね。

Rotate(回転)
画像を回転する処理を適用。昔からの問題ではありますが、BBoxの座標も回転する影響でBBoxの範囲が広くなっていますね。
あまり大きく回転させると無駄な情報を学習してしまうのでそこは注意です。

Resize(サイズ変更)
モデルへの入力に合わせてサイズ変更はよくやる処理ですね。元画像からアスペクト比が変わってもそれに合わせてBBoxも調整されています。
