前面博客主要讲述了如何生存DataSet,DataSet输出的为mx.nd.array类型的image与np.array类型的label。但是由于GPU显存大小的问题,我们需要每次选取BatchSize个图片送进网络,而且还需要做数据增强DataAugment,Mxnet里面做数据增强使用的是TransForm函数。
1、img = experimental.image.random_color_distort(src) ## random color jittering,src为nd.array()格式
2、###random expansion with prob 0.5
img, expand = timage.random_expand(img, fill=[m * 255 for m in self._mean])
bbox = tbbox.translate(label, x_offset=expand[0], y_offset=expand[1])
3、# random cropping
h, w, _ = img.shape
bbox, crop = experimental.bbox.random_crop_with_constraints(bbox, (w, h))
x0, y0, w, h = crop
img = mx.image.fixed_crop(img, x0, y0, w, h)
4、###resize with random interpolation
h, w, _ = img.shape
interp = np.random.randint(0, 5)
img = timage.imresize(img, self._width, self._height, interp=interp)
bbox = tbbox.resize(bbox, (w, h), (self._width, self._height))
5、###random horizontal flip
h, w, _ = img.shape
img, flips = timage.random_flip(img, px=0.5)
bbox = tbbox.flip(bbox, (w, h), flip_x=flips[0])
6、###to tensor
img = mx.nd.image.to_tensor(img)
###将img(NHWC)转为img(NCHW),并进行归一化
img = mx.nd.image.normalize(img, mean=self._mean, std=self._std)
####将img进行normalize,减均值,除方差