またまた、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を使った実装方法」を確認してください。
- Composeを呼び出すtransforms関数などを作成し、加工方法を設定する
- Datasetを作成する(この記事ではtorch.utils.dataを利用します)
- Datasetを機械学習ライブラリに渡してあげる
albumentationsを使った実装例
albumentationsを使った実装例は、以下の通りになります。
もし、表示されない場合は、少し待ったあとにブラウザにて再読み込みをしてみてください。
まとめ
以上、albumentationsライブラリを使った画像データの拡張方法でした!
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |