当前位置:   article > 正文

使用 Python 进行卫星图像分类的深度学习

使用 Python 进行卫星图像分类的深度学习

我们将深入探讨如何使用深度学习,特别是卷积神经网络 (CNN),对卫星图像进行分类。我们将使用 Python语言Keras库 和UC Merced Land Use Dataset 下载地址:https://pan.quark.cn/s/3f145c603232)中的数据集,其中包含 21 种类型的土地利用图像。

设置环境导入库

首先,我们将导入所有必需的库。我们需要 keras 来构建深度学习模型,需要 sklearn 来分割数据,需要 PIL 和 cv2 来处理图像。

import os
import cv2
from PIL import Image
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from sklearn.model_selection import train_test_split   

加载和预处理数据

接下来,我们加载数据集并将图像转换为 numpy 数组,这些数组可以用作神经网络的输入。我们还需要标准化像素值并将类标签转换为 one-hot 向量。

data = []
labels = []
classes = 21
cur_path = os.getcwd()

for i in range(classes):
    path = os.path.join(cur_path,'dataset/',str(i))
    images = os.listdir(path)

    for a in images:
        try:
            image = Image.open(path + '\\'+ a)
            image = image.resize((64,64))
            image = np.array(image)
            data.append(image)
            labels.append(i)
        except Exception as e:
            print(e)

data = np.array(data)
labels = np.array(labels)

# 标准化像素值
data = data.astype('float32')/255.0

# 标签的 One-hot 编码
from keras.utils import np_utils
labels = np_utils.to_categorical(labels)

将数据拆分为训练集和测试集

现在,让我们将数据集分为训练集和测试集。

X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42)

建立模型

我们现在将定义我们的 CNN 模型。该模型将有两个卷积层,后面是最大池层,最后是两个密集层。

model = Sequential()

model.add(Conv2D(32, (2, 2), input_shape=(64, 64, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(21))
model.add(Activation('softmax'))

编译和训练模型

现在,我们编译并训练模型。我们使用分类交叉熵作为损失函数和 Adam 优化器。

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Train the model # 训练模型
model.fit(X_train, y_train, epochs=50, validation_data=(X_test, y_test), batch_size=64)

我们使用 Python 和 Keras 创建了卫星图像分类的深度学习模型。训练后,您可以使用模型来预测新图像的类别。您还可以保存模型并稍后加载以供重复使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/424936
推荐阅读
相关标签
  

闽ICP备14008679号