​​论文地址:https://arxiv.org/pdf/1707.03718.pdf
发表时间:2017年
该文对模型的推理速度进行探讨,号称在不显著增加参数数量的情况下进行训练,在Cityscape数据集上的可观的结果。
CSDN上已经有人对该论文进行过详细翻译,这里博主不再进行重复工作,只进行宏观概述。看完该论文,感觉是听君一席话,如xxxxx。论文详细翻译地址:LinkNet论文翻译

1、LinkNet的网络结构

网络结构如下所示,是一个简单的u型网络,平平无奇。与unet相比就是只是将通道concat更改为add操作,该操作可以一定程度上减少解码过程中的计算量和参数量。网络的编码器从一个初始块开始,该初始块对输入图像进行卷积,其核大小为7×7,步幅为2,该块还在3×3的区域中执行空间最大池化,步幅为2。

其编码器单个block的结构如下所示,其中3x3表示卷积核的大小,(m,n)表示block输入输出的通道,/2表示卷积核移动的步长

解码器单个block的结构如下所示,(m,n)表示block输入输出的通道,其特点是在一些layer中通道数进行了压缩,然后是在full-conv中进行的上采样。

博主因为full-conv对linknet中解码器block比较感兴趣,因而阅读了segmentation_models_pytorch库中LinknetDecoder里面DecoderBlock的实现。核心代码如下所示,是用ConvTranspose2d实现的上采样

class TransposeX2(nn.Sequential):def __init__(self, in_channels, out_channels, use_batchnorm=True):super().__init__()layers = [nn.ConvTranspose2d(in_channels, out_channels, kernel_size=4, stride=2, padding=1),nn.ReLU(inplace=True)]if use_batchnorm:layers.insert(1, nn.BatchNorm2d(out_channels))super().__init__(*layers)class DecoderBlock(nn.Module):def __init__(self, in_channels, out_channels, use_batchnorm=True):super().__init__()self.block = nn.Sequential(modules.Conv2dReLU(in_channels, in_channels // 4, kernel_size=1, use_batchnorm=use_batchnorm),TransposeX2(in_channels // 4, in_channels // 4, use_batchnorm=use_batchnorm),modules.Conv2dReLU(in_channels // 4, out_channels, kernel_size=1, use_batchnorm=use_batchnorm),)def forward(self, x, skip=None):x = self.block(x)if skip is not None:x = x + skipreturn xclass LinknetDecoder(nn.Module):def __init__(self,encoder_channels,prefinal_channels=32,n_blocks=5,use_batchnorm=True,):super().__init__()encoder_channels = encoder_channels[1:]  # remove first skipencoder_channels = encoder_channels[::-1]  # reverse channels to start from head of encoderchannels = list(encoder_channels) + [prefinal_channels]self.blocks = nn.ModuleList([DecoderBlock(channels[i], channels[i + 1], use_batchnorm=use_batchnorm)for i in range(n_blocks)])def forward(self, *features):features = features[1:]  # remove first skipfeatures = features[::-1]  # reverse channels to start from head of encoderx = features[0]skips = features[1:]for i, decoder_block in enumerate(self.blocks):skip = skips[i] if i < len(skips) else Nonex = decoder_block(x, skip)return x

2、LinkNet的实验效果

2.1 运行速度对比

与当时的网络对比,可见速度还是可以的

2.2 iou对比

与同时期的网络相比iou水平还是可以的


一些实验效果图如下所示

3、总结

个人感觉LinkNet的结构确实可以减少一定的运算量,但是这平平无奇的网络结构能取得较为惊艳的效果,博主认为还是作者的调参能力太强了。因为博主认为LinkNet能取得的效果,Unet一样也可以(两者的网络结构相似度太高了)。作者也在其论文中展示了,无bypass结构时的iou,使用bypass结构后增益极其明显。

论文阅读:LinkNet: Exploiting Encoder Representations forEfficient Semantic Segmentation相关推荐

  1. 【Few-Shot Segmentation论文阅读笔记】PANet: Few-Shot Image Semantic Segmentation with Prototype , ICCV, 2019

    Abstract Target Question: Few-shot Segmentation 本文主要工作: 基于metric-learning的思想,本文提出了PANet(Prototype Al ...

  2. 论文阅读 | Residual Conv-Deconv Grid Network for Semantic Segmentation

    GridNet发表在BMVC2017,用于语义分割,一篇很早期的文章 论文地址:[here] (文章没有给代码地址,但是里面的网络设计讲的很详细,可以自己复现出来,github上也有很多别人复现的代码 ...

  3. 论文阅读 (88):Adversarial Examples for Semantic Segmentation and Object Detection

    文章目录 1. 概述 2 算法 2.1 稠密对抗生成 2.2 选择用于检测的输入提案 1. 概述 题目:用于语义分割和目标检测的对抗样本 核心点:将对抗性样本的概念扩展到语义分割和对象检测,并提出稠密 ...

  4. 【2017-VCIP】LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation

    概述 像素级语义分割不仅要精度也要速度,现有算法精度有但速度慢.因此本文提出了LinkNet,在不显著增加参数量的情况下进行学习,最后在CamVid数据集上取得了SOTA,Cityscapes数据集上 ...

  5. [论文阅读] Cost-Effective REgion-based Active Learning for Semantic Segmentation

    论文地址:https://arxiv.org/abs/1810.09726 发表于:BMVC'18 Abstract 最先进的语义分割方法在有监督的情况下使用大量的标注训练图像语料库进行训练.然而,与 ...

  6. 【论文阅读】Structured Knowledge Distillation for Semantic Segmentation

    概述 这篇论文来自CVPR2019 Oral. 论文的出发点:语义分割的模型往往很难兼顾速度与精度,也因此语义分割的网络分为两类,论文中描述为 cumbersome segmentation netw ...

  7. 【论文阅读】Fully Convolutional Networks for Semantic Segmentation【CVPR,PAMI】

    摘要 我们的研究表明,卷积网络通过端到端.像素到像素的训练,在语义分割方面比之前的最佳结果有所提高 我们的关键见解是构建完全卷积网络,它接受任意大小的输入,并产生相应大小的输出,并具有有效的推理和学习 ...

  8. [ICCV2019论文阅读]Asymmetric Non-local Neural Networks for Semantic Segmentation

    作者:Zhen Zhu, Mengde Xu, Song Bai, Tengteng Huang, Xiang Bai 机构:Huazhong University of Science and Te ...

  9. 论文阅读:Regularizing Deep Networks with Semantic Data Augmentation

    论文阅读:Regularizing Deep Networks with Semantic Data Augmentation 动机 特征空间的语义变换 Implicit semantic data ...

  10. 对象上下文语义分割:OCR论文笔记(Object-Contextual Representations for Semantic Segmentation )

    对象上下文语义分割:OCR 原文:Object-Contextual Representations for Semantic Segmentation 论文链接: https://arxiv.org ...

最新文章

  1. ajax请求相关问题
  2. MySQL Cookbook 学习笔记-02
  3. 最简单的目标跟踪(模版匹配)
  4. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解
  5. idea忽略文件不提交git_你可能会忽略的 Git 提交规范
  6. “整洁代码根本就是个骗局!”
  7. 设计模式(五)——建造者模式
  8. 基于flash AS3.0 的BASE64编码与解码类
  9. 微积分经典概念:极限、连续与函数
  10. 面试官:为什么要用 Spring?它到底解决了什么问题?
  11. 原因及解决办法:Failed to load module “canberra-gtk-module“
  12. 修改 jenkins 插件下载地址
  13. 推荐系统——利用用户标签数据
  14. rclone 实现 GoogleDrive 同步至 OneDrive
  15. 上兴远控流量分析报告
  16. coursera—Mini-project #1 - Rock-paper-scissor-lizard-Spock
  17. 瑞芯微rk2818(android系统2.1),从Android 2.1开始 瑞芯微RK2818要火
  18. 【现代简约风格装修案例】诠释不一样的简单 !
  19. 惠普p1106打印机安装步骤_hp1106打印机安装驱动下载
  20. vue中给字段base 64加密

热门文章

  1. 图像算法---白平衡AWB(讲的很好)
  2. Spring的运行原理
  3. uniapp 定位服务_uniapp使用高德地图定位
  4. c语言切蛋糕题编程,切蛋糕问题.ppt
  5. 辐射照度、辐射强度、光照度、发光强度(差异以及如何相互转换)(易懂讲解)
  6. python 豆瓣源_使用豆瓣源来安装python中的第三方库方法
  7. 零基础微信小程序开发学习笔记(2.构建静态界面)
  8. Taro微信小程序使用getUserProfile获取微信用户头像昵称等信息
  9. 360校招编程之城市修建
  10. php 微信公众号自定义菜单栏,php实现微信公众号创建自定义菜单