深度学习:技术分享:联合学习,几个任务一起端到端的搞,如何让它们互相帮助呢?LSU:侧向共享单元

看这篇论文

look deeper into depth: monocular depth estimation with semantic booster and attention-driven loss

的时候,在这里插入图片描述

碰到个用联合的老哥: jianbo jiao

当时,第一遍 读文章 的概要的阅读笔记,请看 这里

摘要,从前人的工作 overview 一下

jianbo 联合 了 语义 和深度。

其实有 一些 先前的工作,2018 年之前,就有人 用联合 和 表征学习 , 意思是联合 几个任务一起训练,互补彼此的弱点;它们是

16, 19, 20, 27, 38 , 39, 51


展开讲讲过往

其中 27 是 提出: 语义深度分类器; 并且分析了 透视几何 (Pulling things out of perspective. In: CVPR) ;具体来说,就是 物体的感知大小与投影中心的距离(深度)成反比;这导致的数据的不平衡,文章用分类的方法对这种不平衡进行了避免。更多请参考这篇文章

12 是用传统的网络,联合 了 语义, 和 3d 重建 (Joint 3D Scene Reconstruction and Class Segmentation)

51 用了 cnn ,加上 一个 CRF: conditional random field. ,也是预测语义标签 和 深度 (Towards unified depth and semantic prediction from a single image) ,并且告诉 我们,串联的 两个网络,比如先 语义标签网,然后 深度预测网,这种方式不好,因为 前面那个网络的一些 打标签错误,就会接着传导到 后面 的 深度 预测网络里面; 参考了这个文章
但是他们呢仅仅修改了最后的一个层,并且用了 super pixel ,和 CRF:条件随机场,一元势函数 。太多的细节,可以去看15年他的论文:Towards unified depth and semantic prediction from a single image

23 提出的是 concurrnet 工作,用一个 有关 权重的策略 来 关注 多任务 时候 的losses;也同意:通过进行一定程度的共享不同任务之间的参数;参考文章论文:Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

38 提出了 Cross-stitch units(十字绣单元)for 多任务的学习。尽管他的结果看起来 比 baseline 好,但是会 发生 反向传播的污染(这种污染说是 发生 在 联合weights 趋紧于 0 的时候),同时,jianbo 还说:两个平行的 cnn 增加了参数,和学习的复杂度。(Cross-stitch networks for multi-task learning)
在这里插入图片描述

18 这个方法呢,在每一个层之间,用了 密集 的连接,这能有助于 辨别任务(recognition task),但是对内存的消耗有些过分大了。
在这里插入图片描述

jianbo的work:协同增效,保持简洁

先来讲一个 深度感知的 协同网络

以前的 cnn 有个 毛病,就是 不平衡的 data,32,45 这俩文献,也说了 在 目标检测 中的 data imbalance(但是本质上,深度测距,和 目标检测 里面的data imbalance 是不同的)。大部分运算 都发生在 近处的物体/像素。

在这里插入图片描述

因为 视觉的原因,透视的原理,, 注定了我们看近处的东西比较多,一叶障目嘛。

你费力增加 训练数据,并不能解决这个问题。

数据都是这样,近处的像素就是多,在loss 计算过程中,对 远处 像素 的 loss, 简直 是碾压的 。这会导致我们的model 倾向于预测 小的 深度值。

为了 解决这问题,jianbo 就给出一个 跟深度成正比的 loss,如此这般,尽管远处物体的像素,在图像中的像素少,但是人家在 最后的 loss 函数中,占的比例/比重 不小,这就解决了 data imbalance.

到这里,还没讲 网络 的互相帮助呢

马上就讲;

文章里面 有4 个部分,我理解是 两个网络,两个辅助组件。

两个网络是

  1. 深度感知网络,测量距离的
  2. 语义标签网络,给图像物体打标签的

两个辅助的组件是:

  1. LSU lateral share unit; 侧向共享单元;说侧是因为两个网络,数据前向走,这个组件在两个网络的侧面帮忙,让俩网络能边走边说话
  2. attention drive loss, 用注意力驱动的loss 函数;当然就是最终的优化目标了,把这个东西搞好了,网络效果就好了。
网络overview

在这里插入图片描述
值得我还投入思考的是: SUC 这个东西: semi-dense up-skip connections ,这东西,说是能 让知识在单独的,各自的子网络(当然就是说的是 depth aware 网, 和 semantic labeling 网) 内部进行共享。有点像 resnet?

  • LSU 就是共享这个(接口/想法)的实现
本文正文来了:如何学会互帮互助,互利共赢,同时不干涉网络的内政

首先明确一点,手动给定网络之间的 知识共享策略,比如共享多少,这种方式很难达到共享的最优解。所以 用一个 双向的机构,动态的结构,在前向,后向传播的过程中,都能使用的结构

具体怎么做的呢

在 每 两个 up conv 网 之间,添加LSU ,也就添加了 对面网络的残余(知识/表征)

这样,在传统的 网络内部(intra task) 知识共享之外,现在我们有了 网络之间的 (inter task) 知识共享。

LSU 同时从 intra 和 inter 的网络里面进行学习。

图示如下:

在这里插入图片描述
公式如下:

在这里插入图片描述

数学部分,讲讲公式

注: 单纯从 数学 表达的 角度看,我倒是觉得 这个 L S U D 2 LSU_{D2} LSUD2 可以 直接 写成 D 2 D2 D2

φ D \varphi_{D} φD , γ D \gamma_{D} γD 的意思就是 就是 给 D1 这个 深度网络前一层 的权重
同理 φ S \varphi_{S} φS , γ S \gamma_{S} γS 的意思就是 给 S1 这个语义网络的 前一层 的权重。

在这里插入图片描述
这里的 φ D \varphi_{D} φD , γ D \gamma_{D} γD φ S \varphi_{S} φS , γ S \gamma_{S} γS 都是在传播过程中动态学习的。所以,信息在两个 up conv 的层中,有着 动态的路由。
所有的 LSU 都是这个结构,但是他们的参数却是不同的,网络的每个阶段,信息在侧向如何共享,共享多少,可以就是 灵活的了。

按照文章的说法,加上 1 的那一部分,就是 叫做 identity mappings, 或者 identity connection(来自文献15) 就是保持原有信息,避免来自对面网络的信息污染,这可叫做 残差类似 结构:residual-like structure. 同时,这也对 梯度的反向传播有好处。
连续的 up conv 层,也比 encoder 这种方式,具有更少的参数。(这里对encoder 网络还是有点疑问,是全链接嘛?

LSU 效果好吗?看图

在这里插入图片描述

从左到右,依次是: 原始的RGB 图;
没带 LSU 的效果,;
带LSU,但是没有 identity mapping;
带 LSU 以及 带 identity mappping
真实值

(有个地方没看懂,就是红色的那两块,在表达什么意思?肯定不是某个物体的距离吧?反正我们就看蓝色的这些部分)

可以看到:带 LSU ,右上角的 橱柜,就边界清晰了。

有LSU但是没有 identity mapping,这就造成了 一些 artifacts, 右下角的橱窗。这里的意思,我猜次就是 对比 这两张图:
在这里插入图片描述
看看右下角:带 identify mapping 就保持了 边界更加明晰,左边不明晰,就是因为来自对面语义的 信息,过度污染了

本段结束

还没说的是,jianbo 的work 还 用注意力机制关注远处的像素;

看看代码吧

可以 回到 我 读这篇 文章时候的 笔记看, 在 最后一部分,搜索: LS_s11

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值