zoukankan      html  css  js  c++  java
  • Learning a Discriminative Feature Network for Semantic Segmentation(语义分割DFN,区别特征网络)

    1、介绍

    语义分割通常有两个问题:类内不一致性(同一物体分成两类)和类间不确定性(不同物体分成同一类)。本文从宏观角度,认为语义分割不是标记像素而是标记一个整体,提出了两个结构解决这两个问题,平滑网络和边界网络(Smooth Network and Border Network)。平滑网络用的是通道注意力块(Channel Attention Block),来解决类内不一致性。边界网络集成了语义边界损失。

    2、相关工作

    Encoder-Decoder:主要考虑如何恢复由于池化造成的空间信息损失,如 SegNet,U-net,Global Convolutional Network,LRR,Refinenet。这些方法只是把相邻步骤的特征总和起来,没有考虑多样表现性

    Global Context(全局上下文信息):全局平均池化有很大的效果,如 ParseNet,PSPNet,Deeplabv3

    Attention Module(注意力模块):注意力关注不同尺度信息,如 SENet

    Semantic Boundary Detection(语义边界检测):许多方法直接连接不同层的特征提取边界,我们用了自下而上的结构来优化每一步的特征

    3、网络结构

    平滑网络:用了 global pool 以及通道注意力模块和精细化残差块

    边界网络:用传统的 canny 边缘检测算法获得边界,损失函数用的 focal loss,为了平衡正负样本,同时减少简单样本的损失,使网络更易于训练

    整体网络:用 deep supervision 对每一层的结果进行上采样计算损失,除了全局池化层,平滑网络用 softmax,边界网络用 focal loss,最后两个加起来用一个平衡参数 L=L(s)+a*L(b)

    4、训练

    优化器:SGD

    batch size:32

    动量:0.9

    权重衰减:0.0001

    学习率:4e-3

    学习率衰减:(1-iter/maxiter)^0.9

    损失函数比例a:0.1(验证集上效果最好)

    数据扩增:减去均值,随机水平翻转,随机缩放

    5、看完其实并不太懂具体的实现,只能是知道一个大概的结构,具体的实现结构可以参考github:https://github.com/YuhuiMa/DFN-tensorflow

     Border Network主要用于计算 loss 更新权重,

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    js学习笔记7----return,arguments及获取元素样式
    js学习笔记6----作用域及解析机制
    js学习笔记5----函数传参
    js学习笔记4----数据类型
    Flashtext 使用文档 大规模数据清洗的利器-实现文本结构化
    Linux之目录的操作(创建、移动、改名、删除、复制)
    Python 异常处理
    Python 内置模块函数filter reduce
    Python处理文件以及文件夹常用方法
    Python 字符串常用方法
  • 原文地址:https://www.cnblogs.com/tccbj/p/10814788.html
Copyright © 2011-2022 走看看