论文阅读Cars Can’t Fly up in the Sky

来自cvpr2020关于语义分割任务的文章
Cars Can’t Fly up in the Sky: Improving Urban-Scene Segmentation via Height-driven Attention Networks

文章标题比较风趣幽默、

也简明扼要点出中心,会引人入胜
文章核心:在城市场景中,垂直区域的物体有着显著的差异,就像汽车不可能飞在天空中一样。
在这里插入图片描述

作者运用这个这个特征来提高城市场景中网络的一致性精度:即MIOU

源:纸上得来终觉浅的文章

1、MIOU定义

Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量。其计算两个集合的交集和并集之比,在语义分割的问题中,这两个集合为真实值和预测值。在每个类上计算IoU,之后平均。计算公式如下:在这里插入图片描述

i表示真实值,j表示预测值 ,p_{ij}pij​ 表示将i预测为j 。
在这里插入图片描述

2、直观理解

为:计算两圆交集(橙色部分)与两圆并集(红色+橙色+黄色)之间的比例,理想情况下两圆重合,比例为1的实现

3、MIOU实现

(1)先求混淆矩阵在这里插入图片描述

(2)再求mIOU

混淆矩阵的每一行再加上每一列,最后减去对角线上的值

import numpy as np

class IOUMetric:
“”"
Class to calculate mean-iou using fast_hist method
“”"

def __init__(self, num_classes):
    self.num_classes = num_classes
    self.hist = np.zeros((num_classes, num_classes))

def _fast_hist(self, label_pred, label_true):
    # 找出标签中需要计算的类别,去掉了背景
    mask = (label_true >= 0) & (label_true < self.num_classes)
    # # np.bincount计算了从0到n**2-1这n**2个数中每个数出现的次数,返回值形状(n, n)
    hist = np.bincount(
        self.num_classes * label_true[mask].astype(int) +
        label_pred[mask], minlength=self.num_classes ** 2).reshape(self.num_classes, self.num_classes)
    return hist

# 输入:预测值和真实值
# 语义分割的任务是为每个像素点分配一个label
def ev aluate(self, predictions, gts):
    for lp, lt in zip(predictions, gts):
        assert len(lp.flatten()) == len(lt.flatten())
        self.hist += self._fast_hist(lp.flatten(), lt.flatten())
        
    # miou
    iou = np.diag(self.hist) / (self.hist.sum(axis=1) + self.hist.sum(axis=0) - np.diag(self.hist))
    miou = np.nanmean(iou) 
    
    # -----------------其他指标------------------------------
    # mean acc
    acc = np.diag(self.hist).sum() / self.hist.sum()
    acc_cls = np.nanmean(np.diag(self.hist) / self.hist.sum(axis=1))

    freq = self.hist.sum(axis=1) / self.hist.sum()
    fwavacc = (freq[freq > 0] * iou[freq > 0]).sum()

    return acc, acc_cls, iou, miou, fwavacc

垂直位置上的城市场景数据集的类别分布

所以,如果能够识别任一像素所处的这个图像的部分,就有助于语义分割的像素集的分类
新型的高度注意力驱动网络HAnet,作为城市场景语义分割的通用附加模块:在给定一个输入的特征图的情况下,HAnet将提取代表每一个部分的高度上下维信息,然后从高度上下维信息中预测每一个水平部分的特征或类别。
这个网络主要就是提取高度上下维信息,,还有使用上下维计算高度驱动的注意力权重,以表示每一行的特征或者类的重要性。
在这里插入图片描述
在这里插入图片描述
作者在原文中说道,提出一种轻量级的模块:HAnet,可以很好地添加到各种现有模块中。并且通过实验证明模块的高效性和广泛适用性。
将HAnet添加到ResNet—101,在计算资源资源增加很少的情况下,在Cityspace上取得了最新的最优成绩
最后,作者通过可视化各个通道的注意力权重来阐明可靠性

cityspace数据集

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

HAnet高度注意力网络的结构

在这里插入图片描述
具体说明参考
link
然后运用到RESNE101T网络里

RESNET

link
随着网络的加深,出现了训练集准确率下降的现象,我们可以确定这不是由于Overfit过拟合造成的(过拟合的情况训练集应该准确率很高);所以作者针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深。
理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式。identity mapping和residual mapping
1.identity mapping
如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
2.esidual mapping
抄近道
在这里插入图片描述
又分为两种设计:分别针对ResNet34(左图)和ResNet50/101/152(右图),一般称整个结构为一个”building block“。其中右图又称为”bottleneck design”,目的一目了然,就是为了降低参数的数目。
在这里插入图片描述

最后,解决一个问题:channel合并问题
1.他们的channel个数一致,所以采用计算方式:
y=F(x)+x
2,。他们的channel个数不同,所以采用计算方式:
y=F(x)+Wx
即,做一个卷积,让他们的通道数相同

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值