高驱动注意网络(HANET)

个人博客:wyxogo.top
PAPER: Cars Can’t Fly up in the Sky: Improving Urban-Scene Segmentation via Height-driven Attention Networks

CityScape数据集

  • 介绍

Cityscapes是关于城市街道场景的语义理解图片数据集。它主要包含来自50个不同城市的街道场景,拥有5000张在城市环境中驾驶场景的高质量像素级注释图像(其中 2975 for train,500 for val,1525 for test, 共有19个类别);此外,它还有20000张粗糙标注的图像(gt coarse)。

  • 数据集结构
cityscapes
 └ leftImg8bit_trainvaltest
   └ leftImg8bit
     └ train
     └ val
     └ test
 └ gtFine_trainvaltest
   └ gtFine
     └ train
     └ val
     └ test

HANet介绍


高驱动注意网络(height-driven attention networks)是根据城市数据集的内在特征而提出的通用网络附加模型,提高了城市环境的语义分割的accuracy,容易嵌入各个网络,且对于mIoU有着较为明显的提高

通过观察可以发现城市CityScape数据的数据在高度方向包含的信息密度要远少于水平方向的信息密度,并且有着较为明显的结构性,此方法将数据沿着高度方向分为上、中、下三部分。

Cityscapes dataset中一个像素超过19个类的概率分布X的熵计算为:

H ( x ) = H ( p r o a d , p b u i l d i n g , … … , p m o t o r c y ) = − ∑ i p i l o g p i H(x) = H(p_{road}, p_{building},……,p_{motorcy})=-\sum _i p_i logp_i H(x)=H(proad,pbuilding,,pmotorcy)=ipilogpi

网络结构

  • X l , X h X_l,X_h XlXh: 语义分割特征图中的底层和高层特征图

  • (a)宽度池化
    获得一个channel-wise attention map 为矩阵 Z Z Z, Z = G p o o l ( X l ) Z = G_{pool}(X_l) Z=Gpool(Xl), 池化方式为平均池化, Z Z Z中的第h行计算方式为 Z : , h = [ 1 W ∑ i = 1 W X 1 , h , i ; … ; 1 W ∑ i = 1 W X C , h , i ] Z_{:,h}=[\frac1W\sum_{i=1}^WX_{1,h,i};…;\frac1W\sum_{i=1}^WX_{C,h,i}] Z:,h=[W1i=1WX1,h,i;;W1i=1WXC,h,i]

  • (b)下采样(插入Coarse Attention):
    将(a)中得到的 Z ( C l × H l × 1 ) Z(C_l \times H_l \times 1) Z(Cl×Hl×1)进行下采样得到 Z ^ ( C l × H ^ × 1 ) \hat{Z}(C_l \times \hat{H} \times 1) Z^(Cl×H^×1)其中超参数 H ^ \hat{H} H^设置为16

  • ©计算
    由于每一行都与其相邻的行相关,在估计注意力图时,采用卷积层来考虑相邻行之间的关系。
    注意图A表示在每一行中哪些通道是关键的。中间层的每一行可能存在多个信息特征;在最后一层中,每一行都可以与多个标签(如道路、汽车、人行道等)相关联。为了实现这些多重特征和标签,在计算注意力地图时使用了一个sigmoid函数,而不是softmax函数。对于N个卷积层,这些操作可以写成

    采用三层卷积操作
    1. 降低通道数: G c o n v 1 ( Z ^ ) = Q 1 ∈ R C l r × H ^ G_{conv}^1(\hat{Z})= Q^1 \in \R^{\frac{C_l}r \times \hat{H}} Gconv1(Z^)=Q1RrCl×H^
    2. G c o n v 2 ( δ ( Q 1 ) ) = Q 2 ∈ R 2 ⋅ C l r × H ^ G_{conv}^2(\delta(Q^1 ))=Q^2 \in \R^{2\cdot \frac{C_l}r \times \hat{H}} Gconv2(δ(Q1))=Q2R2rCl×H^
    3. 生成注意力图: G c o n v 3 ( δ ( Q 2 ) ) = A ^ ∈ R C h × H ^ G_{conv}^3(\delta(Q^2 ))=\hat{A} \in \R^{C_h \times \hat{H}} Gconv3(δ(Q2))=A^RCh×H^
    其中 r r r为压缩比,降低了参数量的同时还产生了一种正则化的效果

  • (d)上采样
    保持与 X h X_h Xh高度一致

  • (e)结合位置编码
    人在驾驶时有一些先验知识,比如知道路在下面,天空在上面,因此在中间层特征图 Q i Q^i Qi的第 i i i层的添加正弦位置编码
    位置编码的维数与中间特征图 Q i Q^i Qi的通道数 C C C相同。位置编码定义为

    P E ( p , 2 i ) = s i n ( p / 10 0 2 i / C ) PE_{(p,2i)} = sin(p/100^{2i/C}) PE(p,2i)=sin(p/1002i/C)
    P E ( p , 2 i + 1 ) = c o s ( p / 10 0 2 i / C ) PE_{(p,2i+1)} = cos(p/100^{2i/C}) PE(p,2i+1)=cos(p/1002i/C)

    p为注意力从0到 H ^ − 1 \hat{H}-1 H^1的整幅图像中的垂直位置指数,i为注意力的维数
    垂直位置的数量设置为 H ^ \hat{H} H^,作为corse attention中的行数

    更新位置编码: Q ^ = Q ⊕ P E \hat{Q} = Q\oplus PE Q^=QPE

  • 超参数的选取
    hyper-parameter

将HANet插入ResNet101

  • 结构
  • 配置
  1. PyTorch v1.3
  2. 在第一层网络中,使用3个3 x 3的卷积代替一个7 x 7的卷积
  3. 在中间特征图和类均匀采样中还采用了一种辅助的交叉损失熵
  4. 采用SGD优化器,初始学习率为0.01,学习率调度遵循多项式学习率策略,动量为0.9
  5. 权重衰减分别为5e-4和1e-4用于主网络和HANet
  6. 为了避免过拟合,使用了语义图像分割模型中典型的数据增强方法,包括随机水平翻转、在[0.5,2]范围内随机缩放、高斯模糊、颜色抖动和随机裁剪。

GitHub项目地址

https://github.com/shachoi/HANet

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值