# 0 简介
今天学长向大家介绍适合作为毕设的项目:
毕设分享 深度学习城市感知评估系统(源码分享)
项目获取:
https://gitee.com/sinonfin/algorithm-sharing
1 基于卷积神经网络的城市感知评估
Introductionn
城市感知(Urban perceptions)指的是居民对于城市场所的心理感受,对于城市规划和公共卫生领域有着重要的作用。通常可将对城市场所的心理感受分为 beautiful、boring、depressing、lively、safety 和 wealthy 六类。传统上,由于缺乏高通量方法、样本不足,人们对城市感知评估的仍然困难。鉴于这些调查方法成本高、耗时长,因此亟需一个高效率的框架来优化城市感知评估过程。笔者在此提出一个基于卷积神经网络的城市感知分析框架。
项目思路
数据采集及处理
- 制作 App
通过 Android 手机自带的位置传感器和 GPS,获取到当前位置的经度、纬度、高度、速度、方向、测量精度等信息。同时在数据记录方面做了小小的优化,只有当间隔时间 1s 同时距离超过 4 米的时候才会进行记录。这样做的目的是为了防止在红绿灯或堵车等情况下同一个地点记录了过多数据的问题。需要注意的是,通过手机自带的 GPS 传感器记录下的经纬度是 WGS84 坐标系下的,后面进行可视化的时候需要根据底图进行坐标转换。
-
采集数据
在需要采集的地点,只需要点击左上角的 Capture 按钮,就会开始录制视频,同时将位置信息记录到 CSV 文件中,将视频的开始时间和结束时间记录到 txt 文件中。数据保存在存储目录下的MyCameraApp
文件夹下。 -
数据处理
在 AntV 进行可视化时使用的是高德的底图,所以这里需要将采集到的 WGS84 坐标系下经纬度数据转为火星坐标系下的经纬度数据。 -
图像处理
- 根据 CSV 文件中每一条记录所对应的时间,计算出与该时间对应的图像在视频流中的帧数。
- 通过 OpenCV 对相应帧数的图像,进行图像增强,旋转和必要的裁剪,并保存。
- 通过 Python 将 CSV 文件转换为 AntV 可视化所需的 JSON,CSV 或 GeoJson 格式。
关于 App 更多详情可转至 App 目录。
网络模型训练
-
搭建网络模型
- 在 Yao,Y. 等人的研究中,首先使用了全卷积神经网络(FCN)对街景进行语义分割,然后使用随机森林模型拟合人的打分倾向,最终给出推荐分数。
- 在本神经网络模型中,笔者尝试定义了一个三层双卷积神经网络,输出纬度分别是 64、64、128、128、和 256、256。在最后的输出层定义了一个全连接神经网络,输出纬度是 1。在定义卷积神经网络过程中,按照一个卷积神经网络的标准结构进行定义,使用最大池化(maxpooling)策略进行降维特征提取,使用 Dropout 防止过拟合,使用 BatchNormalization 对隐藏层的输出进行归一化。
- 网络使用 rmsprop 作为优化器,损失函数设置为均方误差(mse),模型评价标准为平均绝对误差(mae)。
- 在最后的结果分析中,笔者将自己训练的卷积神经网络对街景图片的打分结果,和 Yao,Y. 在论文中提出的模型的打分结果进行可视化对比,以此来对模型进行大致的评估。
-
训练数据处理
- 为了增加模型的鲁棒性,同时也为了增加训练数据量,笔者将原图像进行了尺度变换。首先将原图通过 OpenCV 或 PIL 进行缩放,然后再恢复成原来尺寸,这样便可以得到一份新的数据样本,同时也增加了训练后模型对不同分辨率图像的适应性。
- 使用 pickle 将训练数据、测试数据,及其对应的 Label 进行打包,方便数据的移动和加载。
-
训练结果
对于六个不同的类别,模型最终训练的结果如下
可视化展示
结果分析
通过和 Yao,Y. 的模型对比分析得知,本框架所采用的卷积神经网络对街景情感的预测会更加准确,差异性会更加的明显。 Yao,Y. 在其论文中提出的通过 FCN 网络进行语义分割,和随机森林拟合,过重的考虑了地物之间的比重关系,而忽略的地物之间的空间关系。因此,对于不同的街景图片,较难体现出其差异性。这也就是,过于追求神经网络的可解释性,可能的后果就是损失精度。
项目分享: