使用PSPNet对街景图像进行语义分割

回来填坑了~~

本文算是之前街景图像获取的后续,城市研究中使用街景图像来进行物体识别与语义分割可以说是最常见的应用,当然现在这个方面可以说是很成熟了,作为非人工智能算法研究领域的使用者完全没有必要造轮子。之前我自己处理数据也是使用的姚尧博士分享的封装好的FCN模型(在没有特殊的科研需要的情况下完全够用)。

不过最近看李小江博士的分享说是采用的PSPNet进行的语义分割,于是借此机会做了些尝试,并且配合之前的街景图像获取的流程进行了完善。对于这个方法而言,预训练的模型完全是现成的,相对的优势可能在于支持GPU训练提高速度以及和街景获取部分结合形成完整的工作流

在Cityscapes数据集上预训练的PSPNet模型

**Pyramid Scene Parsing Network(PSPNet)**是CVPR2017上关于场景解析的文章,拿到了2016年ImageNet比赛中scene parsing任务的冠军,当然也常用来做语义分割。PSPNet算法是目前应用比较广泛的语义分割算法之一,该算法在PASCAL VOC2012测试集上的mIOU是82.6%。当然我对算法的了解也仅限于读过论文原文,感兴趣的话可以看原文链接:https://arxiv.org/abs/1612.01105。

这里使用的是GluonCV中的预训练模型,在Cityscapes数据集上进行了训练,Cityscapes是重要的城市街道图像分割数据集,更加适合用来进行街景图像的语义分割。

预先准备

  • 由于使用的是GluonCV,所以需要预先安装GluonCV及其依赖的MXNet,可以参考官网给出的安装方式进行安装:https://cv.gluon.ai/install.html
  • MXNet具有CPU版本和GPU版本,在深度学习计算中使用GPU计算可以极大地提高速度,但安装GPU版本前需要安装CUDA以及cuDNN,可以参考:https://zhuanlan.zhihu.com/p/91554516
  • 上述安装过程中需要Microsoft Visual C++ 2015以上版本,具体安装地址可以在上一条的教程中找到。
  • 代码部分是按照GPU训练编写的,如果安装的CPU版本则需要进行一定的修改。

街景图像批量语义分割

首先对图像进行批量的语义分割,并将结果存储到本地csv表格中。这里使用的文件结构与命名法将与之前街景获取的教程一致,图像的命名方式为 ID_Lng_Lat_Heading.jpg,比如“61.0_126.6849976_45.7885017_180.jpg”。

# 导入需要使用的包
import os
import mxnet as mx
from mxnet import image, gpu
import gluoncv
from gluoncv.data.transforms.presets.segmentation import test_transform
from gluoncv.utils.viz import get_color_pallete,plot_image
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import pandas as pd

# 忽略警告
import warnings; warnings.filterwarnings(action='once') 
warnings.filterwarnings("ignore")

# 设定使用GPU或者CUP进行计算,没有安装GPU版本的MXNet请使用CPU
ctx = mx.gpu(0)

# 定义函数对单张图片进行图像分割,并将结果存为pd.Series
def get_seg(file, model):
    img = image.imread(file)
    img = test_transform(img,ctx=ctx)
    output = model.predict(img)
    predict = mx.nd.squeeze(mx.nd.argmax(output, 1)).asnumpy()
    # 定义Cityscapes数据集分割标签字典
    col_map = {
   0:'road', 1:'sidewalk', 2:'building', 3:'wall', 4:'fence', 5:'pole', 6:'traffic light',
               7:'tr
  • 6
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值