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

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

 

まとめ

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

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

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

 

 

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