轻量级语义分割模型论文阅读笔记(二)

本文汇总一些阅读过的轻量级语义分割模型相关论文,并记录一些心得感想。

BiSeNet (V1)

文章链接
代码链接
发表时间:2018

速度与精度的权衡以及语义信息和空间细节的权衡是轻量级语义分割模型设计领域永恒的话题。对于语义分割任务而言,我们需要足够的空间上下文来判别物体的语义类别,同时也希望有足够多的空间细节来实现物体边缘等位置的精细化识别(这点与通常的分类任务不同)。为了解决空间信息的缺失问题从而提升精度,此前的工作多半受 U-Net 启发,在网络的宏观设计上采用 U 型结构。然而,完整的 U 型结构在带来丰富空间信息的同时导致较大的计算量,不利于模型的轻量化。BiSeNet 的作者另辟蹊径,设计了一种双分支(名称中 Bi- 的来源)的结构以提取不同感受野的特征,并通过特征融合模块 FFM 对两路特征进行融合。

BiSeNet 的思路其实十分直接,既然空间细节和语义信息我都想要,那么何不使用两个分支,分别侧重于提取这两方面的信息呢?从这一点上来说,这和视频理解领域的 Slow-Fast 网络思想相近。模型整体结构如下,在一个比较整洁的框架中实现了一个实用性很强的轻量级语义分割方法。
轻量级语义分割模型论文阅读笔记(二)_第1张图片

BiSeNet V2

文章链接
代码链接
发表时间:2020

BiSeNet 的官方续作。延承 BiSeNet 的思路,仍使用双分支结构提取特征,一路侧重大感受野(语义分支,semantic branch),一路侧重高分辨率(细节分支,detail branch)。深度监督的引入(为较深的语义分支的中间特征添加辅助分割头,作者用火箭推进器作为比喻)可以提升特征有效性以及加速收敛。对两个分支特征使用 aggregation layer 进行融合,该层从设计上考虑了两个分支提取到的特征的互补性质(拓扑结构上有一种对称的美感?),延续了前作的整洁感。
轻量级语义分割模型论文阅读笔记(二)_第2张图片

STDC

文章链接
代码链接
发表时间:2021

个人认为很优秀的一篇工作。作者站在前人(BiSeNet)的肩膀上,做了一系列改进,提出了一个 SOTA 模型。文章的出发点如下:

(1)BiSeNet 等模型未充分考虑分割任务的特性;
(2)BiSeNet 使用专门的空间分支获取底层特征,而这增大了计算量。

针对第一点,文章设计了 STDC module。针对第二点,文章提出使用 detail head 和 detail loss,只在训练期间注入空间信息知识,而无需使用额外分支。 整体框架图如下:
轻量级语义分割模型论文阅读笔记(二)_第3张图片
STDC module 的主要设计如下:
(1)分割任务看重多尺度信息提取,底层特征需要足够通道数编码小感受野特征,高层特征则可以使用更少的通道数减小冗余(对这个观点我存疑);
(2)不同感受野特征 concat 融合。

基于 STDC module,文章提出了 STDC network,并以其作为一个新的 backbone。为了迫使网络关注空间细节,需要计算 detail loss,几个操作细节如下:
(1)生成 detail ground-truth:用拉普拉斯算子做卷积核,做 multi-stride 卷积后用1x1 卷积融合,然后取0.1固定阈值做二值化。这样相当于强化了图中的边缘和细节。对于这一点我有个问题:处理 ground-truth 的 1x1 卷积包含可学习参数,这些参数在训练过程中如何更新?在原作者代码中我找到了答案:这部分在训练过程中不传播梯度,作者在模型初始化阶段写死了 1x1 卷积的权重参数,之后这些权重参数就不会被更新,而是一直保持。
(2)detail head的损失函数方面,用 cross-entropy loss + dice loss。这主要是考虑到detail pixel和non-detail pixel的类别不平衡。

你可能感兴趣的:(轻量级语义分割模型,论文阅读,人工智能,python,深度学习,图像处理)