使用 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 创建了卫星图像分类的深度学习模型。训练后,您可以使用模型来预测新图像的类别。您还可以保存模型并稍后加载以供重复使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS工具-gistools2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值