【Python】Albumentationsによるテスト・ダミー画像の作成

【Python】Albumentationsによるテスト・ダミー画像の作成 プログラミング

「機会学習において多くの学習サンプルの画像が必要である」
「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.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年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の動作確認を説明しました。

タイトルとURLをコピーしました