RGB+深度图像 语义分割paper阅读笔记(ICRA2021)

paper:Efficient RGB-D Semantic Segmentation for Indoor Scene Analysis

本文主要贡献在以下
结合深度图像,提升仅用RGB图像分割的mIOU
设计一种结构,可用tensorRT实现,进而可在NX板上提升分割效率,比如有限计算能力和电池量的机器人场景
改进的ResNet-based encoder和decoder. 降低计算量,提升效率

本文的语义分割结合了RGB图像和深度图像 as input, 主要针对室内场景,
RGB图像和深度图在encoder中进入两个不同的branch, 然后再合并,结构如下图:
RGB+深度图像 语义分割paper阅读笔记(ICRA2021)_第1张图片

看起来很复杂的样子,其实分解开来也没那么复杂,

因为如果feature在多个stage中进行fuse,分割结果会提升,所以可以看到深度图和RGB图的特征在中间多个stage都有RGB-D Fusion.
encode以ResNet作为backbone, 为了提升效率,并没有像deepLabv3那样用空洞卷积,而是用strided convolution.
在encoder的末尾,feature map的size会比input image 缩小32倍,用的是ResNet34,

但是每个3x3卷积被替换成图中紫色部分的block, 即把3x3分解成了3x1 和 1x3, 加ReLU在中间,
这个模块叫做Non-Bottleneck-1D-Block,说是这样可以缩短推断时间,提高performance。

RGB Fusion用的是Squeeze and Excitation模块。具体在图中左下角绿色模块。

Context module是解决ResNet的有限感受野问题,把不同scales的feature结合,类似Pyramid Pooling Module in PSPNet,
而且修改了Avg Pooling,因为TensorRT只支持固定size的pooling, 所以用与input resolution相关的pooling size取代adaptive pooling.
因此,根据数据集的不同,pooling size会有不同。

Decoder
有3个decoder 模块
并没有用转置卷积用于上采样,因为计算量较大,且会产生gridding artifacts, 如下图
RGB+深度图像 语义分割paper阅读笔记(ICRA2021)_第2张图片
本文用了learned upsampling方法,在图1的墨绿色方块里,
用NN upsampling来加大resolution, 再用一个3x3 depthwise卷积层来连接相邻的feature.

但是上采样后会损失一些细节,因为细节在encoder的downsampling中会丢失,
所以作者设计了skip connections,把encoder的特征连接到相同resolution的decoder中,
为了确保channel相同,用了1x1卷积,
这样做可以恢复一些细节。

在恢复到比input image小4x的图像后,跟一个3x3卷积层,再用2个上采样层恢复到input image的resolution.

一般算loss都是用结果和ground truth比较,作者为了避免只用最后的结果,会在每个decoder模块输出一个结果,
和相应的ground truth缩放后的图像计算loss,这样就可以多尺度地计算loss.

参数

训练用了500个epoch, batch size为8,
SGD优化器,momentum=0.9, 学习率为{0.00125, 0.0025, 0.005, 0.01, 0.02, 0.04}
Adam学习率为{0.0001, 0.0004}
weight decay为0.0001,
学习率用pytorch的one-cycle learning rate scheduler调节

在AGX上的帧率
RGB+深度图像 语义分割paper阅读笔记(ICRA2021)_第3张图片

mIOU
RGB+深度图像 语义分割paper阅读笔记(ICRA2021)_第4张图片
可以看到本文的ESANet的mIOU在mobile(SwiftNet, BiSeNet)和非mobile模型之间,

测试一下nyuv2数据集样本:
RGB+深度图像 语义分割paper阅读笔记(ICRA2021)_第5张图片
可以看到在光线变化较大 或者 颜色较为接近 的区域不是那么稳定。但整体轮廓比较清晰。

你可能感兴趣的:(DeepLearning,计算机视觉,人工智能,深度学习)