zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python工具方法 21 应用于语义分割、图像分类、自动编码机的图像随机mask方法(Cutout方法、Random Erasing方法)

Python方法应用工具 图像 分类 随机 分割
2023-09-14 09:15:04 时间

图像随机mask方法也就是数据增强中的Cutout方法、Random Erasing方法,通过对图像随机添加mask可以消除模型在训练过程中对特定局部区域的过度依赖,让模型学习到对象中各个区域的联系。通过随机mask的方法,可以提升模型对语义区块的学习,提升模型的性能。其机理是,损失部分局部信息不会影响类别的判断。让CNN利用整幅图像的全局信息,而不是一些小特征组成的局部信息。

基于numpy实现,适用于任意深度学习框架中的数据预处理阶段。话不多说,直接上代码。

1、随机mask方法的实现

以下共实现了两个随机mask方法,random_mask_one只能随机处理一个图片,random_mask_list可以按照相同的随机参数同时处理多个图片。参数列表中的mask_shape表示最大的mask的shape(生成的mask大小在0.3*mask_shape到mask_shape之间),pad_v表示mask区域的值(通常默认是0),dfotmat是指传入的图片的数据格式(因为在不同的深度学习框架下图片的格式是不一样的,tf、keras框架是'HWC'格式,paddlepaddle、pytorch是'CHW'格式)

import numpy as np

from PIL import Image
from matplotlib import pyplot as plt

def myimshows(imgs, titles=False, size=12):
    lens = len(imgs)
    plt.figure(figsize=(size,size))
    if titles == False:
        titles="ABCDEFGHIJKLMN