序文
Augly ライブラリを使用して、画像サンプルを拡張し、サンプルの多様性を増やすための使いやすい画像強調関数を作成しました。使い方は非常に簡単です。事前に Augly ライブラリをインストールし、ターミナルで実行する必要があります。
pip install augly
すべてのコードは次のように共有されます (コードにはまだ最適化の余地があります。独自のニーズに応じて最適化してください)。
import os
import random
import augly.image as imaugs
import PIL.Image as Image
img_path = "img" # 需要增强的图像路径
save_path = "save" # 保存路径
def augly_augmentation(aug_image):
aug = [
imaugs.blur(aug_image,radius=random.randint(1,2)), # 图像模糊
imaugs.brightness(aug_image,factor=random.uniform(0.5,1.5)), # 改变亮度
imaugs.change_aspect_ratio(aug_image, ratio=random.uniform(0.8,1.5)), # 改变图像宽高比
imaugs.color_jitter(aug_image, brightness_factor=random.uniform(0.8,1.5), contrast_factor=random.uniform(0.8,1.5), saturation_factor=random.uniform(0.8,1.5)), # 颜色晃动
imaugs.crop(aug_image, x1=random.uniform(0,0.1), y1=random.uniform(0,0.1), x2=random.uniform(0.9,1), y2=random.uniform(0.9,1)), # 随机裁剪
imaugs.hflip(aug_image), # 水平翻转
imaugs.opacity(aug_image, level=random.uniform(0.5,1)), # 改变图像透明度
imaugs.pixelization(aug_image, ratio=random.uniform(0.5,1)), # 马赛克
imaugs.random_noise(aug_image), # 随机噪声
imaugs.rotate(aug_image, degrees=random.randint(3,10)), # 随机旋转一定角度
imaugs.shuffle_pixels(aug_image, factor=random.uniform(0,0.1)), # 随机像素比任意化
imaugs.saturation(aug_image, factor=random.uniform(1,1.5)), # 改变饱和度
imaugs.contrast(aug_image, factor=random.uniform(1,1.5)), # 对比度增强
imaugs.grayscale(aug_image) # 转灰度
]
return random.choice(aug) # 从以上函数中随机选其一进行数据增强
for name in os.listdir(img_path):
aug_image = Image.open(os.path.join(img_path,name))
count = 3 # 每张图片需要增强的数量
for i in range(count):
image = augly_augmentation(aug_image)
image = image.convert("RGB")
image.save(os.path.join(save_path,name[:-4]+"_{}.jpg".format(i)))
使用例
元の画像は次のとおりです。
ランダムな強化後の例:
画像の彩度を変更します。
特定の範囲内でアスペクト比をランダムに変更します。
ランダムノイズ:
データセットの読み込み時にトレーニング中にランダムにブーストすることも可能です。
augly の使用方法の詳細については、以前の記事を参照してください: Facebook が最近オープンソース化した Python 画像拡張ライブラリ - Augly