Data(image) Augmentation

Data Augmentation 是 Regularization 的一种方法

 

可以做水平翻转

可以抽取不同尺度大小的裁剪图像,在测试时,评估一些固定的裁剪图像

可以做色彩抖动:

还可以:

 

code :

import os
import random
from PIL import Image
from PIL import ImageEnhance

def enhance_image(image_path):
    
    image = Image.open(image_path)
    
    # 随机亮度
    enhance_image = ImageEnhance.Brightness(image)
    bright = random.uniform(0.2, 1.8)
    enhance_image = enhance_image.enhance(bright)
    
    # 随机饱和度
    enhance_image = ImageEnhance.Contrast(enhance_image)
    contrast = random.uniform(0.2, 1.8)
    enhance_image = enhance_image.enhance(contrast)
    
    # 随机左右翻转
    if random.randint(0,1) == 1:
        enhance_image = enhance_image.transpose(Image.FLIP_LEFT_RIGHT)
        
    return enhance_image

def add_image(folder_list, folder_path, max_number):
    
    folder_length = len(folder_list)
    random_folder_list = []
    
    for _ in range(max_number - folder_length):  
        index = random.randint(0, folder_length - 1)
        random_folder_list.append(folder_list[index])
    
    add_path = "add"
    full_add_path = folder_path + os.sep + add_path
    if not os.path.exists(full_add_path):
        os.mkdir(full_add_path)
    
    counter = 0
    for path in random_folder_list:
        new_image = enhance_image(path)
        new_image.save(full_add_path + os.sep + str(counter) + ".jpg")
        counter += 1

def image_augmentation(db_folder, limit_number=100, max_number=600):
    
    number = 0
    for people_folder in os.listdir(db_folder):
        number += 1
        
        src_people_path = db_folder + os.sep + people_folder
        
        counter = 0
        people_folder_list = []
        for vedio_folder in os.listdir(src_people_path):
            
            src_vedio_path = src_people_path + os.sep + vedio_folder

            for img_file in os.listdir(src_vedio_path):
                counter += 1
                src_img_path = src_vedio_path + os.sep + img_file
                people_folder_list.append(src_img_path)
        
        if counter < limit_number or counter >= max_number:
            continue
        else:
            add_image(people_folder_list, src_people_path, max_number)
            
            print(people_folder + ": id--->" + str(number) + "--->OK")

def run():
    random.seed(7)
    db_folder = "image\\origin"
    image_augmentation(db_folder)

if __name__ == "__main__":
    run()

代码转自 https://github.com/shen1994/DeepID

数据集 https://pan.baidu.com/s/1gMqkmY1mUMQO4cQcbRycMw   提取码: uhkx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值