「機会学習において多くの学習サンプルの画像が必要である」
「Pythonでテスト画像・ダミー画像を自動で作成したい」
このような場合には、Albumentationsがオススメです。
この記事では、Albumentationsについて説明しています。
本記事の内容
- Albumentationsとは?
- Albumentationsのシステム要件
- Albumentationsのインストール
- Albumentationsの動作確認
それでは、上記に沿って解説していきます。
Albumentationsとは?
Albumentationsは、画像補強のためのPythonライブラリです。
画像補強の目的は、既存のデータから新しい学習サンプルを作成することです。
以下は、「Original image」から複数の画像データを作成した例です。
機械学習で学習用データが必要となる場合、Albumentationsが役に立ちます。
機械学習以外でも、多くの画像が必要となるケースがあります。
そのような場合にも、Albumentationsは効果を発揮するでしょう。
以上、Albumentationsについて説明しました。
次は、Albumentationsのシステム要件を説明します。
Albumentationsのシステム要件
現時点(2022年8月)でのAlbumentationsの最新バージョンは、1.2.1となります。
この最新バージョンは、2022年7月12日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となっています。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
以下は、Python公式開発サイクルです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Albumentationsが、Python公式開発サイクルに従うなら次のようにすべきでしょう。
- Python 3.6を対象外にする
- Python 3.10を対象とする
ここでは、Python 3.7以降を推奨しておきます。
また、Python 3.10でも問題なく動くことを確認済みです。
以上、Albumentationsのシステム要件を説明しました。
次は、Albumentationsのインストールを説明します。
Albumentationsのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.2.1 setuptools 63.3.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Albumentationsのインストールです。
Albumentationsのインストールは、以下のコマンドとなります。
pip install albumentations
Albumentationsのインストールには、そこそこ時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。
$ pip list Package Version ---------------------- --------- albumentations 1.2.1 imageio 2.21.0 joblib 1.1.0 networkx 2.8.5 numpy 1.23.1 opencv-python-headless 4.6.0.66 packaging 21.3 Pillow 9.2.0 pip 22.2.1 pyparsing 3.0.9 PyWavelets 1.3.0 PyYAML 6.0 qudida 0.0.4 scikit-image 0.19.3 scikit-learn 1.1.1 scipy 1.9.0 setuptools 63.3.0 threadpoolctl 3.1.0 tifffile 2022.7.31 typing_extensions 4.3.0 wheel 0.36.2
Albumentationsが、依存しているパッケージを確認できます。
これだけ多くのパッケージに依存しているなら、Python仮想環境の利用を考えましょう。
以上、Albumentationsのインストールを説明しました。
次は、Albumentationsの動作確認を説明します。
Albumentationsの動作確認
Albumentationsの動作確認を行います。
その際に利用するのは、以下のコードです。
import albumentations as A import cv2 # Declare an augmentation pipeline transform = A.Compose([ A.CLAHE(), A.RandomRotate90(), A.Transpose(), A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.50, rotate_limit=45, p=.75), A.Blur(blur_limit=3), A.OpticalDistortion(), A.GridDistortion(), A.HueSaturationValue(), ]) # Read an image with OpenCV and convert it to the RGB colorspace image = cv2.imread("image.jpg") image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # Augment an image transformed = transform(image=image) transformed_image = transformed["image"] # save image cv2.imwrite('transformed_image.jpg', transformed_image)
また、画像は以下を用意しました。
image.jpg
上記コードを3回実行します。
その結果として作成された画像は、以下。
1回目
2回目
3回目
それぞれ結果が異なるのは、以下コード部分でランダムな要素があるからです。
# Declare an augmentation pipeline transform = A.Compose([ A.CLAHE(), A.RandomRotate90(), A.Transpose(), A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.50, rotate_limit=45, p=.75), A.Blur(blur_limit=3), A.OpticalDistortion(), A.GridDistortion(), A.HueSaturationValue(), ])
上記コード部分では、画像に適用したい変化を宣言しています。
適用可能な変化については、マニュアルをご覧ください。
Albumentations Documentation
https://albumentations.ai/docs/
以上、Albumentationsの動作確認を説明しました。