【技术教程】结合深度学习的街景分析(绿视率篇)

绿视率,即人的视野中绿色所占的比重,是街景分析中常用的评价指标之一。相较于反映二维层面绿化情况的绿地率、绿化覆盖率、归一化植被指数(NDVI)等,绿视率能够从立体视野直观反映人对绿色空间的感知,可以更人性化地反映绿化环境质量。本文结合相关文献资料,主要介绍基于深度学习技术 DeepLab V3+模型算法的街道绿视率评价。


一、方法对比

1.人工调研提取法

将街景照片绿色部分进行手工划分计算街景中的绿色占比。该方法精度低、费时费力,无法应用于大区域的城市绿视率计算。

2.软件色彩处理法

通过分析街景中绿色像素的比例,将 RGB 转换为 HSV 空间,提取绿色部分的阈值用以表示绿视率。此类方法较人工调研提取法有所改进,但会将绿色招牌等不属于城市绿化的绿色部分计算在内,使得结果存在较大误差。

3.深度学习提取法

模拟人类的思考和学习能力,自动识别街景中的绿化要素,自动分类出城市街道空间的植被等元素,提升了绿视率识别的精度。目前常用的有PSPnet、DeepLab V3、DeepLab V3+、Fastrcnn、HSV色彩阈值5种算法。

1d504e81528065ba418b0dc2a0204274.jpeg

从图中可以看出,在分割的精度上 DeepLab V3+相对于其他 4 种方法精度最高。


二、DeepLab V3+模型结构

e0495a3c22f197b050cb57b1d90ddef9.jpeg

在 DeeplabV3+中,加强特征提取网络可以分为两部分:

1.Encoder

在 Encoder 中,对压缩四次的初步有效特征层利用并行的 Atrous Convolution,分别用不同 rate 的 Atrous Convolution 进行特征提取后合并,再进行 1x1 卷积压缩特征。

2.Decoder

在 Decoder 中,对压缩两次的初步有效特征层利用 1x1 卷积调整通道数,再和空洞卷积后的有效特征层上采样的结果进行堆叠,完成堆叠后,进行两次深度可分离卷积块。Deeplab V3+保持了原来的空间卷积和 ASSP 层,增加了 Xception 模型,提高了图像特征采样的准确率。


三、分析过程

大致思路:获取研究区域内路网数据→街景点坐标→街景点全景图片→利用DeepLabV3+神经网络模型完成语义分割→通过 OpenCV 识别语义图,得到绿视率

1.街景图片获取

途径一:通过腾讯地图服务所提供的 API 接口获取位置点的相应街景图片。腾讯街景 API 服务可以提供完整的街景请求 URL 地址,并提供街景中所需要设置的完整的参数,包括位置,偏航角,俯仰角,场景 ID,图片尺寸。

途径二:利用谷歌街景地图收集静态图与全景视图。谷歌街景地图可以直接采集街道图像,并通过整合不同角度的街道图像创造出 360°的街道全景视图。

2.模型训练与绿视率计算(示例用 Google Colab 平台)

在 Google Colab 平台(https://colab.google/)上结合 CityScapes 数据集,用 Deeplab V3+卷积神经网络模型训练,将待分析的街景照片输入到网络中,经过卷积,池化等操作实现语义分割。

Demo 示例对比:

7a4eee48c1e1f3d1306d0253b5f0a7b3.jpeg

图为基于 deeplabv3plus_r101-d8_4xb2-40k_cityscapes-512x1024 语义分割结果。

60bb4f6f8432378d35e4cd757f351823.jpeg

图为基于 pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 语义分割结果

可以看到还是 deeplabv3plus 性能更优,例如在红色箭头处 pspnet 出现疏漏。


四、参考代码

1.语义分割

#使用 MIM 安装 MMCV 平台

!pip3 install openmim

!mim install mmengine

!mim install "mmcv>=2.0.0"

#从 source 安装 MMSegmentation 模块

!git clone https://github.com/open-mmlab/mmsegmentation.git

%cd mmsegmentation

!git checkout main

!pip install -e .

# Example output: 1.0.0,检查版本

import mmseg

print(mmseg.__version__)

#下载 deeplabv3plus_r101-d8_4xb2-40k_cityscapes-512x1024 系列的 py 配置和 pth 权重文件

!mim download mmsegmentation --config

deeplabv3plus_r101-d8_4xb2-40k_cityscapes-512x1024 --dest .

#用 deeplabv3+模型训练 cityscapes 城市景观数据集,并对 demo.png 进行语义分割

!python demo/image_demo.py demo/demo.png

configs/deeplabv3plus/deeplabv3plus_r101-d8_4xb2-40k_cityscapes-512x1024.py

deeplabv3plus_r101-d8_512x1024_40k_cityscapes_20200605_094614-3769eecf.pth --device cuda:0 --out-file Hresult.jpg

2.计算绿视率

为了实现绿视率的自动识别,通过使用 OpenCV 将上述过程中得到的语义图集进行分析,绿视率计算公式为: 9eeb6f394ba9e286f6a3e035a34af2ab.jpeg

图像中的所有绿化部分的像素记为𝑁𝑔, 𝑁为整张全景图的像素总数。𝑅𝐺为每张图片的绿视率结果。

参考代码(python 版):

import cv2

import numpy as np

import os

# 定义绿色范围(在 HSV 中)

lower_green = np.array([35, 43, 46])

upper_green = np.array([77, 255, 255])

# 待分析语义图所在的文件夹路径,可根据个人情况修改

pictures_folder = '/content/mmsegmentation/picture'

# 遍历该文件夹中的所有语义图

for filename in os.listdir(pictures_folder):

if filename.endswith('.png') or filename.endswith('.jpg'):

# 构建完整的语义图文件路径

picture_path = os.path.join(pictures_folder, filename)

# 读取语义图

picture = cv2.imread(picture_path)

# 将语义图转换为 HSV

hsv_picture = cv2.cvtColor(picture, cv2.COLOR_BGR2HSV)
 

# 创建绿色遮罩

green_mask = cv2.inRange(hsv_picture, lower_green, upper_green)

# 计算绿色像素数量

green_pixel_count = np.count_nonzero(green_mask)

# 计算总像素数量

total_pixel_count = picture.shape[0] * picture.shape[1]

# 计算绿视率

reen_ratio = green_pixel_count / total_pixel_count

#输出文件名和对应的绿视率结果

print(f"图片名称:{filename}")

print(f"绿视率:{green_ratio * 100:.2f}%")

print("- " * 100)


五、结果解读

将绿视率划分成以下 5 类:

绿视率 0% ~ 5%:绿化水平不及格

绿视率 5% ~15%:绿化水平较差

绿视率 15%~25%:绿化水平一般

绿视率 25%~35%:绿化水平良好

绿视率 大于 35%: 绿化水平优秀

还可通过 ArcGIS 等平台对分析结果进行可视化呈现,使得研究区内各街道绿化情况更直观。


六、文章来源

[1]张驰. 基于DeepLab V3+框架的上海静安区街道绿视率评价及驱动因素研究[D].上海应用技术大学,2022.DOI:10.27801/d.cnki.gshyy.2022.000440.

[2]李晓江,蔡杨,卡洛·拉蒂. 使用街道级图像和深度学习进行城市景观研究.建筑前沿,2018,6(2):20\u29 https://doi.org/10.15302/J-LAF-20180203

[3]吴昕燃,邱慧.街景图像解译下的长沙市历史文化风貌核心区道路绿视率研究[J].园

林,2022,39(09):106-116.

[4]朱怀真,杨凡,南歆格等.国内外绿视率研究进展[J].中国城市林业,2022,20(03):140-146.

[5]https://github.com/open-mmlab/mmsegmentation/tree/main/configs/deeplabv3plus

[6]https://github.com/open-mmlab/mmsegmentation/blob/main/docs/en/get_started.md#installation

[7]https://blog.csdn.net/weixin_44791964/article/details/120113686?spm=1001.2014.3001.5506

5b356a215d1ce42207109d0e67dd13e7.jpeg

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值