自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/qq_35582643/article/details/137721869

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!