{"cells":[{"metadata":{},"cell_type":"markdown","source":"# **Do some data augmentation experiment with Albumentations API**"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport os\nimport cv2\nfrom matplotlib import pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"from albumentations import (\n    Blur, CLAHE, ChannelDropout, ChannelShuffle, ColorJitter, Downscale,\n    Equalize, FDA, FancyPCA, GaussNoise, GaussianBlur, GlassBlur, HistogramMatching,\n    HueSaturationValue, IAAAdditiveGaussianNoise, IAAEmboss, IAASharpen, IAASuperpixels,\n    ISONoise, MedianBlur, MotionBlur, MultiplicativeNoise, Normalize, RGBShift,\n    RandomBrightnessContrast, RandomFog, RandomGamma, RandomRain, RandomShadow, RandomSnow, RandomSunFlare,\n    CenterCrop, CoarseDropout, Crop, CropNonEmptyMaskIfExists, ElasticTransform, Flip, GridDistortion, GridDropout,\n    HorizontalFlip, IAAAffine, IAACropAndPad, IAAFliplr, IAAFlipud, IAAPerspective, IAAPiecewiseAffine, Lambda,\n    LongestMaxSize, MaskDropout, NoOp, OpticalDistortion, PadIfNeeded, RandomCrop, RandomCropNearBBox, RandomGridShuffle,\n    RandomResizedCrop, RandomRotate90, RandomScale, RandomSizedBBoxSafeCrop, RandomSizedCrop, Resize, Rotate, ShiftScaleRotate,\n    SmallestMaxSize, Transpose, VerticalFlip\n)  # 图像变换函数\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"image = cv2.imread('../input/cassava-leaf-disease-classification/train_images/1000723321.jpg', 1)  # BGR\nimage = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def testAlbumentations(image):\n    '''Test Albumentations API'''\n    '''Spatial-level transforms'''\n\n    aug = Blur(p=1)\n    img_Blur = aug(image=image)['image']# 可以\n\n    aug = CLAHE(p=1)\n    img_CLAHE = aug(image=image)['image']# 需要\n\n    aug = ChannelDropout(p=1)\n    img_ChannelDropout = aug(image=image)['image']# 不用吧\n\n    aug = ChannelShuffle(p=1)\n    img_ChannelShuffle = aug(image=image)['image']# 不用吧\n\n    aug = ColorJitter(p=1)\n    img_ColorJitter = aug(image=image)['image']# 可以考虑\n\n    aug = Downscale(p=1)\n    img_Downscale = aug(image=image)['image']# 不用吧\n\n    aug = Equalize(p=1)\n    img_Equalize = aug(image=image)['image']# 不用吧\n\n    # domain_adaptation.FDA 可以研究\n\n    aug = FancyPCA(p=1)\n    img_FancyPCA = aug(image=image)['image']# 可以\n\n    # FromFloat\n\n    aug = GaussNoise(p=1)\n    img_GaussNoise = aug(image=image)['image']# 可以\n\n    aug = GaussianBlur(p=1)\n    img_GaussianBlur = aug(image=image)['image']# 可以\n\n    aug = GlassBlur(p=1)\n    img_GlassBlur = aug(image=image)['image']# 可以\n\n    # aug = HistogramMatching(p=1)\n    # img_HistogramMatching = aug(image=image)['image']\n\n    aug = HueSaturationValue(p=1)\n    img_HueSaturationValue = aug(image=image)['image']# 可以\n\n    aug = IAAAdditiveGaussianNoise(p=1)\n    img_IAAAdditiveGaussianNoise = aug(image=image)['image']# 可以\n\n    aug = IAAEmboss(p=1)\n    img_IAAEmboss = aug(image=image)['image']# 可以\n\n    aug = IAASharpen(p=1)\n    img_IAASharpen = aug(image=image)['image']# 可以\n\n    aug = IAASuperpixels(p=1)\n    img_IAASuperpixels = aug(image=image)['image']# ？\n\n    aug = ISONoise(p=1)\n    img_ISONoise = aug(image=image)['image']# 可以\n\n    aug = MedianBlur(p=1)\n    img_MedianBlur = aug(image=image)['image']# 可以 (用像素点邻域灰度值的中值来代替该像素点的灰度值，让周围的像素值接近真实的值从而消除孤立的噪声点\n\n    aug = MotionBlur(p=1)\n    img_MotionBlur = aug(image=image)['image']# 不用吧\n\n    aug = MultiplicativeNoise(p=1)\n    img_MultiplicativeNoise = aug(image=image)['image']# 不用吧\n\n    aug = Normalize(mean=(0.43032044, 0.49672633, 0.31342009), std=(0.21909042, 0.22394303, 0.20059192), p=1)\n    img_Normalize = aug(image=image)['image']# 需要\n\n    aug = RGBShift(p=1)\n    img_RGBShift = aug(image=image)['image']# 可以\n\n    aug = RandomBrightnessContrast(p=1)\n    img_RandomBrightnessContrast = aug(image=image)['image']# 需要\n\n    aug = RandomFog(p=1)\n    img_RandomFog = aug(image=image)['image']# 可以\n\n    aug = RandomGamma(p=1)\n    img_RandomGamma = aug(image=image)['image']# 可以\n\n    aug = RandomRain(p=1)\n    img_RandomRain = aug(image=image)['image']# 可以\n\n    aug = RandomShadow(p=1)\n    img_RandomShadow = aug(image=image)['image']# 可以\n\n    aug = RandomSnow(p=1)\n    img_RandomSnow = aug(image=image)['image']# 不用\n\n    aug = RandomSunFlare(p=1)\n    img_RandomSunFlare = aug(image=image)['image']# 不用\n\n    '''Spatial-level transforms'''\n    # CenterCrop\n    aug = ElasticTransform(p=1)\n    img_ElasticTransform = aug(image=image)['image']# 可以\n\n    aug = CoarseDropout(fill_value=(0.43032044, 0.49672633, 0.31342009), p=1)\n    img_CoarseDropout = aug(image=image)['image']# 需要\n\n    aug = GridDistortion(p=1)\n    img_GridDistortion = aug(image=image)['image']# 需要\n\n    aug = GridDropout(p=1)\n    img_GridDropout = aug(image=image)['image']# 不用\n\n    aug = IAAAffine(p=1)\n    img_IAAAffine = aug(image=image)['image']# 可以\n\n    aug = IAAPerspective(p=1)\n    img_IAAPerspective = aug(image=image)['image']# 可以\n\n    aug = IAAPiecewiseAffine(p=1)\n    img_IAAPiecewiseAffine = aug(image=image)['image']# 可以\n\n    aug = OpticalDistortion(p=1)\n    img_OpticalDistortion = aug(image=image)['image']# 可以\n\n    aug = RandomGridShuffle(p=1)\n    img_RandomGridShuffle = aug(image=image)['image']# 可以\n\n    '''空间几何变换类'''\n\n    # 仿射变换\n\n    # 视觉变换\n\n    # 分段仿射\n\n    '''像素颜色变换类'''\n\n    '''多样本合成类'''\n\n    # show\n    plt.subplots_adjust(hspace=0.4)\n    plt.axis('off')\n    plt.subplot(2, 2, 1)\n    plt.imshow(image)\n    plt.title(\"original\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_Blur)\n    plt.title(\"Blur\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_CLAHE)\n    plt.title(\"CLAHE\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_ColorJitter)\n    plt.title(\"ColorJitter\")\n    plt.show()\n    \n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_GaussianBlur)\n    plt.title(\"GaussianBlur\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_Equalize)\n    plt.title(\"Equalize\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_FancyPCA)\n    plt.title(\"FancyPCA\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_GaussNoise)\n    plt.title(\"GaussNoise\")\n    plt.show()\n\n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_GlassBlur)\n    plt.title(\"GlassBlur\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_ISONoise)\n    plt.title(\"ISONoise\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_HueSaturationValue)\n    plt.title(\"HueSaturationValue\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_IAAAdditiveGaussianNoise)\n    plt.title(\"IAAAdditiveGaussianNoise\")\n    plt.show()\n\n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_IAAEmboss)\n    plt.title(\"IAAEmboss\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_IAASharpen)\n    plt.title(\"IAASharpen\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_IAASuperpixels)\n    plt.title(\"IAASuperpixels\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_MedianBlur)\n    plt.title(\"MedianBlur\")\n    plt.show()\n\n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_MotionBlur)\n    plt.title(\"MotionBlur\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_MultiplicativeNoise)\n    plt.title(\"MultiplicativeNoise\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_RandomBrightnessContrast)\n    plt.title(\"RandomBrightnessContrast\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_RGBShift)\n    plt.title(\"RGBShift\")\n    plt.show()\n\n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_RandomFog)\n    plt.title(\"RandomFog\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_RandomGamma)\n    plt.title(\"RandomGamma\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_RandomRain)\n    plt.title(\"RandomRain\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_RandomShadow)\n    plt.title(\"RandomShadow\")\n    plt.show()\n\n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_ElasticTransform)\n    plt.title(\"ElasticTransform\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_CoarseDropout)\n    plt.title(\"CoarseDropout\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_GridDistortion)\n    plt.title(\"GridDistortion\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_IAAAffine)\n    plt.title(\"IAAAffine\")\n    plt.show()\n\n    plt.subplots_adjust(hspace=0.4)\n    plt.subplot(2, 2, 1)\n    plt.imshow(img_IAAPerspective)\n    plt.title(\"IAAPerspective\")\n    plt.subplot(2, 2, 2)\n    plt.imshow(img_IAAPiecewiseAffine)\n    plt.title(\"IAAPiecewiseAffine\")\n    plt.subplot(2, 2, 3)\n    plt.imshow(img_OpticalDistortion)\n    plt.title(\"OpticalDistortion\")\n    plt.subplot(2, 2, 4)\n    plt.imshow(img_RandomGridShuffle)\n    plt.title(\"RandomGridShuffle\")\n    plt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"testAlbumentations(image)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}