通过对图像随机添加mask可以消除模型在训练过程中对特定区域的过度依赖,让模型学习到对象中各个区域的联系。通过随机mask的方法,可以提升模型对语义区块的学习,提升模型的性能。其机理是,损失部分局部信息不会影响类别的判断。理论部分有待完善,先附上工程实现代码。
基于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 npfrom PIL import Imagefrom matplotlib import pyplot as pltdef myimshows(imgs, titles=False, size=12): lens = len(imgs) plt.figure(figsize=(size,size)) if titles == False: titles="ABCDEFGHIJKLMNOPQRST" for i in range(1, lens + 1): cols = 100