​​论文地址: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. 今天终于搞懂了:为什么 Java 的 main 方法必须是 public static void?
  2. mysql里的ibdata1文件
  3. Windows Subsystem for Linux (WSL)简单尝试
  4. 【转】C++11多线程的基本使用
  5. bootstrap源码分析之form、navbar
  6. 中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一
  7. 基于ForkJoin构建一个简单易用的并发组件
  8. 定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白
  9. 我可以隐藏HTML5号码输入的旋转框吗?
  10. MAPZONE GIS SDK接入Openlayers3之二——空间参考扩展
  11. 细说汽车电子通信总线之CAN-FD 总线协议详解
  12. CDMA2000中的Walsh码,PN码,短码序列的初相位偏置(PN OFFSET)之間的差別與關係(1)
  13. 软件工程课程实践-需求规格说明书
  14. java设计模式之-策略模式
  15. 史上超级详细:银行外包java面试题目
  16. JPEG、GIF、PNG、BMP哪种图片格式的图片清晰一点
  17. 计算广告第四章——合约广告
  18. 健壮F.T.+新裸金属重磅发布!全新升级版ZStack加速新基建!
  19. 全栈工程师的百宝箱:黑魔法之文档篇
  20. yyyy-MM-dd和YYYY-MM-dd格式化日期的区别你知道吗?

热门文章

  1. Fantastic用法
  2. MYSQL 数据库给表加约束条件 (史上最详细教程!)!!
  3. element-ui的upload 上传组件 照片墙当超过限定图片后隐藏上传按钮
  4. 树莓派CM4和CM4IO上手
  5. javaweb项目实训总结_java web实训心得体会
  6. DevExpress 皮肤控件 更换皮肤
  7. 百度C++工程师的那些极限优化(内存篇)
  8. java 临时文件目录_在Java中使用临时文件/文件夹
  9. Linux命令之cat和tac篇
  10. Java程序设计——实现求几何图形的周长面积