Data Augmentation.

今天做深度学习实验,由于是关于医学图像处理的的,所以数据集非常少。因此进行Data Augmentation十分有必要。keras里自带的ImageDataGenerator进行Data Augmentation十分方便,它实现了图像几何变换方法:旋转,平移,缩放,水平翻转等。由于实验原因,我的网络输出是对应的groundTruth图像(二值图像),所以在进行数据变换扩充时,原始图像和groundTruth图像要进行相同的变换。捣鼓半天,没能利用ImageDataGenerator将原始图像和groundTruth图像同时进行相同变换,后来发现了一个小技巧,能同时将输入图像和groundTruth图像进行相同变换。

做法是:将原始图像和groundTruth图像 作为一个图像的多通道,然后利用ImageDataGenerator进行变换,实现Data Augmentation, 这样就使得原始图像和groundTruth图像同时进行相同的变换。

from keras.preprocessing.image import ImageDataGenerator

images=np.ones((1,80,80,3));#输入图像是1,3,4通道,没有2通道。所以我采用3通道,将第一通道为原始图像,第二通道为groundTruth图像,第三通随机。

images[0,:,:,0]=image #第一通道为原始图像

images[0,:,:,1]=groundTruth #第二通道为groundTruth图像

dataAugmentation = ImageDataGenerator(width_shift_range=.6) #只进行平移变换
for X_batch in dataAugmentation.flow(im):
    #这里就进行一次变换,如进行多次变换,添加一个循环即可

    break

imshow(X_batch[0,:,:,0])
imshow(X_batch[0,:,:,1])   

未变换前的图片:

Data Augmentation._第1张图片Data Augmentation._第2张图片


变换后的图片:

Data Augmentation._第3张图片Data Augmentation._第4张图片











你可能感兴趣的:(Deep,Learning)