前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >行车环境实时语义分割与深度估计

行车环境实时语义分割与深度估计

作者头像
机器学习AI算法工程
发布2019-10-28 16:18:02
7350
发布2019-10-28 16:18:02
举报
本项目旨在实现车辆前方行车环境的实时解析。具体通过对行车记录仪的图像、视频数据的语义分割和深度估计实现。要实现的目标如下图所示:

2. 模型

本项目在实现行车环境场景语义分割和深度估计实时解析的过程中,尝试使用了不同的模型,有复现文献中提出的网络框架TRL、也有在语义分割ICNet的基础上增加深度分支,最后自己搭建了一个轻量化的模型。

TRL

TRL(Joint Task-Recursive Learning for Semantic Segmentation and Depth Estimation)是ECCV 2018上一个同时实现语义分割和深度估计的网络。网络框架如下图所示:

TRL network整体上是一个Encoder-Decoder的结构。输入的RGB图像通过ResNet被处理成了不同尺度的特征图,这些特征图随后被输入到Decoder模块中处理得到语义信息和深度信息。在Decoder中,总共有4个语义预测分支和4个深度估计分支,二者交替进行。每一分支在进行预测时,都会综合前面已经提取的语义特征和深度特征,因为语义和深度存在一定的关系,二者特征的融合有利于提升精度。

但是在复现完论文后发现,网络的参数量高达(150)341M,发现原网络在多处对通道数为2048的特征图进行了多尺度的卷积操作,有$11,33,55,77$,因为卷积操作的参数量、计算量与卷积核尺寸、通道数成正比,$55,77$的大卷积核大大增加了参数量和计算量。先用1×1的卷积降维,再用3×3的空洞卷积替代5×5、7×7的卷积,减少了参数量,同时也提高了计算速度。

ICNet

ICNet是在PSPNet基础上改进的语义分割网络,旨在提高语义分割的速度。网络包含三个分支,不同分支上网络深度和特征图的尺寸不一样。在较小的特征图上充分提取语义信息,再和高分辨率分支提取的特征相融合补充细节信息。本项目在ICNet的基础上,在输出语义预测的模块并行增加了深度估计分支。

Decoder部分由两部分组成,第一部分是中间两个分支,用于捕捉语义信息与深度信息的共同点。两个分支分别是多尺度卷积模块(Multi-scale Convolution Module)分支和普通的卷积运算分支。两个分支输出的通道个数均为C+1,其中C个通道为语义通道,1个通道为深度通道。第二部分是旁路的两个分支,用于捕捉语义和深度各自独特的信息。多尺度卷积模块如下图所示:

模型的效果就是介绍开始贴的图示。

代码使用

项目代码获取

关注微信公众号 datayx 然后回复 语义分割 即可获取。

AI项目体验地址 https://loveai.tech

训练

  • 环境:我自己使用的环境是
    • Ubuntu 16.4
    • Pytorch 1.0
    • cuda 10
    • 显卡 2080ti
  • 数据准备:数据集到Cityscapes上下载,其中深度数据集需要额外发邮件申请,没法直接下载。
  • 配置文件:修改配置文件config/spnet-cityscapes.yml中的内容,将数据集位置改为自己数据集的路径。
  • 执行train.py即可

测试

  • 修改配置文件config/spnet-cityscapes.yml中test部分模型的保存位置
  • 将图像放到inputs文件夹中
  • 执行demo.py文件
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习AI算法工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 模型
    • TRL
      • ICNet
      • 代码使用
        • 训练
          • 测试
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档