kaggleの画像処理コンペで絶対使うalbumentationsライブラリーの利用方法!ポートレートモデルさんの画像で解説します

またまた、kaggle(AIコンペ)で画像処理系のコンペを戦っているんだ。
コンペでは、画像の拡張(サイズを変えたり、加工したり)が必要で、それがないと上位に行けないんだ。なんかいい方法ない?

 

今回は、優勝者も使うalbumentationsライブラリーの使い方を解説しますね。

 

albumentationsをインストールする

 

まずは、albumentationsをインストールしましょう。

インストール方法は以下のとおりです。

 

pip install albumentations

 

albumentationsを使ってみましょう

 

まずは、この記事で使用する元画像を読み込みましょう

 

##この記事で使う元画像を出力してみましょう
image = cv2.imread("DSC_0897.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(8, 5))
plt.imshow(image)

 

出力された画像は以下のとおりです

 

albumentationsを使って加工してみよう

 


def transform_image_plot(img_path, transform):
    #画像出力用の関数
    image = cv2.imread(img_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    # Augment an image
    transformed = transform(image=image)
    transformed_image = transformed["image"]
    plt.figure(figsize=(8, 5))
    plt.imshow(transformed_image);
    
#グレーに変換する
#Composeを使っている理由は、あとあと複数の加工をするため
transform =  A.Compose(
    [
        A.ToGray( p=1.0)  
    ],
    p=1.0, 
    )
transform_image_plot("DSC_0897.jpg", transform)

 

上記の処理をすることでグレースケールの画像に変換することができます。

 

一度に複数の加工をする

 

以下は、サイズ変更、上下の画像変更、カットアウトなど複数の処理を

することができます。

引数pに値を設定することにより、処理させる確率を設定できます。

 

def get_train_transforms():
    return A.Compose(
        [
            A.RandomSizedCrop(min_max_height=(800, 800), height=850, width=1280, p=0.5),
            A.OneOf([
                A.HueSaturationValue(hue_shift_limit=0.2, sat_shift_limit= 0.2, 
                                     val_shift_limit=0.2, p=0.9),
                A.RandomBrightnessContrast(brightness_limit=0.2, 
                                           contrast_limit=0.2, p=0.9),
            ],p=0.9),
            A.ToGray(p=0.01),
            A.HorizontalFlip(p=0.5),
            A.VerticalFlip(p=0.5),
            #A.Resize(height=img_size, width=img_size, p=1),
            A.Cutout(num_holes=8, max_h_size=64, max_w_size=64, fill_value=0, p=0.5),
            #ToTensorV2(p=1.0),
        ], 
        p=1.0, 
    )

 

機械学習用にデータセットを作成する

 

ここでは、概要のみ記載します。

実装例は次の「albumentationsを使った実装方法」を確認してください。

 

  1. Composeを呼び出すtransforms関数などを作成し、加工方法を設定する
  2. Datasetを作成する(この記事ではtorch.utils.dataを利用します)
  3. Datasetを機械学習ライブラリに渡してあげる

 

 

albumentationsを使った実装例

 

albumentationsを使った実装例は、以下の通りになります。

もし、表示されない場合は、少し待ったあとにブラウザにて再読み込みをしてみてください。

 

まとめ

 

以上、albumentationsライブラリを使った画像データの拡張方法でした!

 

 

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG