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

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

 

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

 

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

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を使った実装例は、以下の通りになります。

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

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

 

まとめ

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

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

 

最新情報をチェックしよう!