深度学习在建筑物提取与年代识别中的应用毕业论文【附数据】

博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

 ✅ 具体问题可以私信或扫描文章底部二维码。


(1)研究背景与数据获取

随着科技与大数据时代的发展,获取高分遥感影像的途径日益增多,像 Google Earth、DigitalGlobe、USGS、地理空间数据云等平台都为我们提供了丰富的数据来源。建筑物在城市和乡镇的遥感影像中是极为关键的地物,对于测绘、城市规划等领域意义重大。当前,基于遥感影像的建筑物提取方法主要有人工手动提取和算法提取两种。而且在乡村规划以及空间演变研究中,建筑物的年代信息对了解村落发展演变有着重要的参考价值。

在导师苏南项目的支持下,本研究对苏南地区的三个自然村展开了实地调研。在调研过程中,对建筑物进行了拍摄,以此获取一手的图像资料。这些照片为后续的建筑物年代分类研究提供了重要依据。与此同时,通过 Google Earth 下载了调研区域空间分辨率为 0.61m 的遥感影像共 50 幅。这些遥感影像数据构成了本研究的另一个重要数据来源,它们将用于建筑物的自动提取实验。这些数据的获取为整个研究奠定了坚实的基础,无论是从数据量还是数据质量上,都能够满足后续深度学习算法训练和模型构建的需求。

(2)基于深度学习的建筑物提取模型改进与训练

近年来,人工智能技术蓬勃发展,其在 GIS 领域的应用研究也日益增多。本研究采用了深度学习技术中的 U - Net 神经网络来进行遥感影像中建筑物的自动提取实验。U - Net 神经网络在图像分割领域有着出色的表现,但为了更好地适应本研究的需求,对其在分割结果和损失函数方面进行了改进。

在模型训练阶段,使用了 35 张空间分辨率为 0.61m 的遥感影像作为训练数据,剩余 15 张作为测试数据。在训练过程中,神经网络不断调整自身的参数,以学习遥感影像中建筑物的特征。经过大量的训练和参数调整,最终得到了建筑物分割模型。通过指标评估和分割结果对比分析发现,该模型的分割结果相似度达到了 79.33%。这表明模型能够较为准确地识别出遥感影像中的建筑物,不过在建筑物边缘部分的识别效果还存在一定的提升空间。这可能是由于边缘部分的像素特征较为复杂,与周围地物的区分度相对较小,导致模型在这方面的识别难度增加。尽管存在这一不足,但该模型在整体建筑物提取上仍然具有一定的价值,为后续的研究提供了重要的支持。

(3)建筑物年代划分、特征分析与分类模型选择

通过实地调研和广泛的资料查阅,确定了本研究中建筑物年代的划分方式。具体划分为改革开放之前、八十年代、九十年代及之后这几个阶段。针对这三种不同年代的建筑物,分别进行了详细的特征分析和总结。这些特征包括建筑物的建筑风格、外观材质、色彩搭配、结构形式等多个方面。例如,改革开放之前的建筑可能更多地采用传统的建筑材料和工艺,建筑风格较为古朴;八十年代的建筑可能在材料和风格上开始出现一些新的变化;九十年代及之后的建筑则可能更多地受到现代建筑理念和技术的影响,呈现出多样化的特征。

在完成建筑物年代特征分析后,使用深度学习中经典的四种模型,即 AlexNet、VGG - 16、ResNet - 50、DenseNet - 121,对所拍摄的建筑物立面照片进行年代分类训练。在训练过程中,每个模型都基于自己的网络结构和算法对建筑物照片中的年代特征进行学习和提取。经过对各个模型结果的对比分析,并结合所拥有数据的实际情况,最终选择了 AlexNet 作为建筑物年代分类模型。AlexNet 在测试集上的分类精度达到了 95%,这表明它具有较好的总体预测能力。然而,该模型对于年代特征模糊的建筑物判断能力相对较弱。这可能是由于模糊的年代特征在图像中表现不够明显,导致模型难以准确提取和识别相关特征。但总体而言,AlexNet 模型在建筑物年代分类方面还是表现出了较高的准确性和实用性。

(4)模型嵌入 GIS 系统实现自动提取与分类应用

在完成建筑物提取模型和年代分类模型的训练后,将训练好的模型嵌入到基于 C#+ArcGIS Engine 二次开发的 GIS 系统中。通过这种方式,开发出一个简单实用的遥感影像建筑物自动提取及建筑物年代辅助分类系统。这个系统实现了 AI 在 GIS 领域的一个应用实例。在该系统中,用户可以上传遥感影像,系统首先利用改进后的 U - Net 神经网络模型对影像中的建筑物进行自动提取,得到建筑物的位置和轮廓信息。然后,对于提取出的建筑物,可以进一步利用 AlexNet 模型对其进行年代分类,为用户提供建筑物年代的辅助信息。这种集成化的系统为测绘、乡村规划等领域的工作人员提供了便捷的工具,能够提高工作效率,同时也为进一步研究乡村空间演变等问题提供了有力的支持。

以下是一个简单的 Python 代码示例,用于模拟基于深度学习模型对图像数据的处理(这里只是简单示例,实际应用会更复杂):


 

python

复制

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
import numpy as np
import matplotlib.pyplot as plt

# 模拟加载图像数据(这里假设图像已经预处理为合适的格式和大小)
# 假设数据形状为 (num_images, image_height, image_width, num_channels)
num_images = 100
image_height = 256
image_width = 256
num_channels = 3
x_data = np.random.rand(num_images, image_height, image_width, num_channels)

# 模拟标签数据(这里假设是简单的分类标签,0 - 3代表不同年代)
y_data = np.random.randint(0, 4, num_images)

# 构建一个简单的卷积神经网络模型(这里只是示例,类似AlexNet的简单结构)
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(image_height, image_width, num_channels)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(4, activation='softmax'))  # 4个类别,对应不同年代

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型(这里简化了训练过程,实际可能需要更多的训练参数调整)
history = model.fit(x_data, y_data, epochs=5, batch_size=32)

# 绘制训练准确率曲线
plt.plot(history.history['accuracy'])
plt.title('Model Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.show()

猜你喜欢

转载自blog.csdn.net/checkpaper/article/details/143561466