Albumentationsで画像処理
Albumentations
は機械学習において画像の水増しに使われるライブラリ。
画像内に雨や雪を降らせたりできるらしい。
前回使用したtorchvision.transforms
と比較する。
1. 画像準備
前回の(Windows10 + pytorch torchvision.transformsの実験)で使用したテスト画像と同じものを使う。
2. 環境構築
torchvision.transforms
のときに作った環境にAlbumentations
を追加する。matplotlib
を流用したかっただけなので新しく作っても良い。
https://github.com/albumentations-team/albumentations#conda
albumentations公式チームのgithubを参考にインストールする。
1 | conda install -c conda-forge imgaug |
3. 実験
3.1. albumentationsの使い方
torchvision.transforms
と同じ感覚で使えるが、渡す画像のフォーマットがPIL image
ではなくnumpy.ndarray
なのでopencv
で画像を読み込む。albumentations
をインストールするといつのまにかopencv
が入っているので安心。
1 | transform = albumentations.〇〇() |
で画像変換用のインスタンスができる。
1 | img = transform(img) |
とするとimg
が変換される。
1 | transform = albumentations.Compose([ |
とすると複数の変換処理を順番に実行する。
3.2. 実験結果1(よくあるやつ)
メジャーな画像処理4つと、それら全部を組み合わせたものを実験。
- 1.回転
- 2.輝度・コントラスト・彩度・色相変化
- 3.パース変化
- 4.部分消去
- 5.全部
の、5パターン×3回の結果。
できるかぎり前回の処理と合わせたかったが妥協。
パース変化は特に違う。
前回(Windows10 + pytorch torchvision.transformsの実験)の結果↓
4.部分消去で使うRandomErasing
の関数がalbumentations
には存在しないため自作する必要がある。
まさに同じことをしている方がいたため、この記事
https://nonbiri-tereka.hatenablog.com/entry/2020/05/18/090641
を参考に99%そのままコピー。変更したところは1行だけ。
渡したオブジェクトが変換されるのが嫌だったので、
1 | img = img.copy() |
をapply()
の初めに追加。
3.3. 実験結果2(天候変化)
albumentations
は画像内に雨や雪を降らせたりできる。
雨、雪に加えて光と影があったので、それらに加えて全部を組み合わせたものを実験。
- 1.雨
- 2.雪
- 3.太陽光
- 4.影
- 5.全部
4. コード
実験に使用したコード。
4.1. 実験1(よくあるやつ)
1 | import cv2 |
4.1. 実験2(天候変化)
1 | import cv2 |
5. 参考
https://github.com/albumentations-team/albumentations#how-to-use
https://nonbiri-tereka.hatenablog.com/entry/2020/05/18/090641