Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测

        【遥感影像深度学习】系列的第一章,Python遥感影像深度学习的入门课程,介绍如何使用卷积神经网络(CNN)从卫星图像中分割云层

1、数据集

        在本项目中,我们将使用 Kaggle 提供的 38-Cloud Segmentation in Satellite Images数据集。

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测_第1张图片

        该数据集由裁剪成 384x384 (适用于深度学习)的卫星场景组成。总共有 8400 个用于训练和 9201 个用于测试的图块,分别位于红、绿、蓝和近红外(近红外)波段的目录中,还有一个额外的目录用于存储参考掩膜(真实值 - *_gt)。结构如图 2 所示。 

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测_第2张图片

2、数据预处理

        为了给神经网络准备好数据,我们首先需要对数据进行预处理,以适合我们的模型。由于我们将使用预训练的 ResNet 框架,因此模型中只能拟合 3 个波段,最好是 RGB 波段,因为模型已经用这些波段进行了预训练。因此,数据预处理的第一步就是从给定的图像中创建 RGB patch小块。我们将使用 PIL(Python Imaging Library,Python 图像库)打开红、绿、蓝 .tif 图像,并将其保存为单一的 RGB .png 文件。下面的代码就可以做到这一点(确保与原始数据集的结构相同),并对图像进行归一化处理。

from PIL import Image
from pathlib import Path
import numpy as np

def create_rgb_pil (red_filename: Path):
    # set the filenames for each patch
    red_fn = str(red_filename)
    blue_fn = red_fn.replace('red','blue')
    green_fn = red_fn.replace('red', 'green')
    rgb_fn = red_fn.replace('red', 'rgb').replace('.TIF', '.png')
    
    # open red, green and blue patches as numpy arrays
    arr_red = np.array(Image.open(red_fn))
    arr_green = np.array(Image.open(green_fn))
    arr_blue = np.array(Image.open(blue_f

你可能感兴趣的:(Python数据处理,深度学习,人工智能,python)