ESANet语义分割与realsense D455的结合

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

网络结构如下,相比于基于RGB图像的语义分割,该网络用了RGB与深度图结合。
在这里插入图片描述
既然是RGBD,就可以用RGBD相机来测试了,选择realsense d455相机。

用ROS接口读入RGB图像与深度图。

这里要注意图像需要经过预处理,通过ESANet的源码,得知在validate阶段需要做以下预处理。

transform_list = [Rescale(height=height, width=width)]
transform_list.extend([
    ToTensor(),
    Normalize(depth_mean=depth_mean,
              depth_std=depth_std,
              depth_mode=depth_mode)
])

包含了Rescale, toTensor和normalize,
Rescale如下:

image = cv2.resize(image, (self.width, self.height),
                           interpolation=cv2.INTER_LINEAR)
depth = cv2.resize(depth, (self.width, self.height),
                   interpolation=cv2.INTER_NEAREST)

toTensor就是把RGB和深度图变为torch.tensor

image = image.transpose((2, 0, 1))
depth = np.expand_dims(depth, 0).astype('float32')

image = torch.from_numpy(image).float()
depth = torch.from_numpy(depth).float()

然后是Normalize,RGB图要做归一化处理,均值方差可能是根据训练集图像来的,可以根据自己的数据进行修改,
深度图的mean, std要根据自己的数据计算,直接用代码里面的效果不好。
有时候深度图会有nan值的情况,需要用到np.nan_to_num函数,d455相机没有nan值。
normalize之后一定要把之前0处的值置为0。

image = image / 255
image = torchvision.transforms.Normalize(
    mean=根据数据, std=根据数据)(image)
if self._depth_mode == 'raw':
    depth_0 = depth == 0

    depth = torchvision.transforms.Normalize(
        mean=根据数据, std=根据数据)(depth)

    # set invalid values back to zero again
    depth[depth_0] = 0

剩下就是过模型,input size可以选的,这里选的是(640, 480)

# Do inference
outputs = self.model(img, depth) #N,C,W,H

对于不复杂的场景,效果还是不错的,尤其是轮廓比较整齐,
下图场景中墙上的画,椅子,台灯轮廓都很清楚
在这里插入图片描述
但是对于复杂的场景(ex.桌子上乱七八糟的小零碎),移动的相机效果不是很好。
一来跟训练数据集有关,这里用的是sun-rgbd数据集训练的权重。
移动中的相机分割不是很稳,类别频繁变动,可能跟场景比较复杂有关,或者参数还需要进一步调整。
下面这个场景就有点乱了
在这里插入图片描述
这是对一个房间的分割建图在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值