行车环境实时语义分割与深度估计
向AI转型的程序员都关注了这个号????????????
机器学习AI算法工程 公众号:datayx
本项目旨在实现车辆前方行车环境的实时解析。具体通过对行车记录仪的图像、视频数据的语义分割和深度估计实现。要实现的目标如下图所示:
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
文件
阅读过本文的人还看了以下:
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注
AI项目体验