Linknet网络结构

LinkNet图像语义分割
像素级的图像语义分割,不仅需要精确,还需要高效(例如:自动驾驶)

具体结构

整体结构

一个输入层+4个编码层+4个解码层+1个输出层

编码层

解码层

创建Linknet模型

思路:编写不同的block在最后输出阶段将其链接

1、编写 卷积模块 (卷积 + 激活 + BN)

2、编写 反卷积模块 (反卷积 + 激活 + BN)

3、编码器(4*卷积模块)

4、解码器(卷积模块+反卷积模块+卷积模块)

5、实现整体的网络结构 (卷积模型+反卷积模型+解码器+编码器)

卷积模块

class Convblock (nn.Module):def __init__(self, in_channels, out_channels, k_size=3, stride=1, padding=1):super(Convblock, self).__init__()self.conv_relu = nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size=k_size,stride=stride,padding=padding),nn.BatchNorm2d(out_channels),nn.ReLU(inplace=True))def forward(self, x):x = self.conv_relu(x)return x

反卷积模块

#反卷积模块
class Deconvblock (nn.Module):def __init__(self,in_channels,out_channels,k_size = 3,stride = 2,padding = 1,output_padding = 1):super(Deconvblock,self).__init__()self.deconv = nn.ConvTranspose2d(in_channels,out_channels,kernel_size=k_size,stride=stride,padding=padding,output_padding=output_padding)self.bn = nn.BatchNorm2d(out_channels)def forward(self,x,is_act = True):x = self.deconv(x)if is_act:x = torch.relu(self.bn(x))return x

编码器

#编码器模块
class Encodeblock (nn.Module):def __init__(self,in_channels,out_channels):super(Encodeblock,self).__init__()self.conv1 = Convblock(in_channels,out_channels,stride=2)self.conv2 = Convblock(out_channels,out_channels)  self.conv3 = Convblock(out_channels,out_channels)self.conv4 = Convblock(out_channels,out_channels)self.short_cut = Convblock(in_channels,out_channels,stride=2)def forward(self,x):out1 = self.conv1(x)out1 = self.conv1(out1)short_cut = self.short_cut(x)out2 = self.conv3(out1+short_cut)out2 = self.conv4(out2)return out2+out1

解码器

#解码器模块
class Encodeblock(nn.Module):def __init__(self, in_channels, out_channels):super(Encodeblock, self).__init__()self.conv1_1 = Convblock(in_channels, out_channels, stride=2)self.conv1_2 = Convblock(out_channels, out_channels)self.conv2_1 = Convblock(out_channels, out_channels)self.conv2_2 = Convblock(out_channels, out_channels)self.shortcut = Convblock(in_channels, out_channels, stride=2)def forward(self, x):out1 = self.conv1_1(x)out1 = self.conv2_1(out1)residue = self.shortcut(x)out2 = self.conv2_1(out1 + residue)out2 = self.conv2_2(out2)return out2 + out1

最终模型的编写(注意每一步的输出,中间有类Resnet结构)

#模型编写
class Net (nn.Module):def __init__(self):super(Net,self).__init__()self.input_conv = Convblock(3,64,k_size=7,stride=2,padding=3)self.input_maxpool = nn.MaxPool2d(kernel_size=(2,2))self.encode1 = Encodeblock(64,64)self.encode2 = Encodeblock(64,128)self.encode3 = Encodeblock(128,256)self.encode4 = Encodeblock(256,512)self.decode4 = Decodeblock(512,256)self.decode3 = Decodeblock(256,128)self.decode2 = Decodeblock(128,64)self.decode1 = Decodeblock(64,64)self.deconv_out1 = Deconvblock(64,32)self.conv_out = Convblock(32,32)self.deconv_out2 = Deconvblock(32,2,k_size=2,padding=0,output_padding=0)def forward(self,x):x = self.input_conv(x)x = self.input_maxpool(x)e1 = self.encode1(x)e2 = self.encode2(e1)e3 = self.encode3(e2)e4 = self.encode4(e3)d4 = self.decode4(e4)d3 = self.decode3(d4+e3)d2 = self.decode2(d3+e2)d1 = self.decode1(d2+e1)f1 = self.deconv_out1(d1)f2 = self.conv_out(f1)f3 = self.deconv_out2(f2)return f3

Linknet网络结构相关推荐

  1. 语义分割中的一些模型的分类汇总

    语义分割是深度学习中的一个重要应用领域.自Unet提出到现在已经过去了8年,期间有很多创新式的语义分割模型.简单的总结了Unet++.Unet3+.HRNet.LinkNet.PSPNet.DeepL ...

  2. LinkNet 笔记

    2019 March 21 linknet LinkNet 笔记 一.背景 目标检测上中 Fast RCNN,YOLO,SSD 致力于实时的目标检测,但分割任务上实时性的相关工作仍未有所进展. 二.网 ...

  3. LinkNet论文笔记

    LinkNet论文笔记 LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation Abstract ...

  4. LinkNet:侧重语义分割的速度问题,算法思路类似 U-Net

    论文题目: LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation 论文作者: Abhishek ...

  5. 【E-Net LinkNet】For Efficient

    ENet: A Deep Neural Network Architecture for Real-Time Semantic segmentation. LinkNet: Exploiting En ...

  6. Pytorch的网络结构可视化(tensorboardX)(详细)

    20210610 if config.test is True:model = load_test_model(model, config)print(model) 打印网络结构 版权声明:本文为博主 ...

  7. Yolov3Yolov4网络结构与源码分析

    Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 论文汇总 ...

  8. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理

    卷积神经网络(Convolutional Neural Network,CNN)CNN 被用于图像识别.语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础. 1. 全连 ...

  9. mxnet deepspeech网络结构打印

    采用示例https://github.com/apache/incubator-mxnet/tree/master/example/speech_recognition 训练命令为 python ma ...

最新文章

  1. 在服务器无root权限手动安装texlive
  2. 基于jquery的图片懒加载js
  3. java数据类型的一些注意事项
  4. 团队作业第4次-项目需求分析
  5. 优雅地记录Python程序日志2:模块组件化日志记录器
  6. SQLite和MySQL数据库的区别与应用
  7. 【万字长文】Spring Cloud Alibaba 开箱即用!
  8. 九种机器学习模型的简单介绍
  9. GWAS 总体流程理解版
  10. 【电脑技巧】设置电脑永不休眠
  11. 端到端的框架DeepInf
  12. 广州计算机专业分数线,广东人工智能专业分数线多少
  13. docker部署教程
  14. java操作Excel,mdb,dbf
  15. Warning: (1366, Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VA
  16. 【OJ每日一练】1060 - 猴子分香蕉
  17. Linux设置断网自动关机(蓄电池)
  18. 基于STM32单片机的智能家居窗户窗帘控制系统红外遥控proteus仿真原理图PCB
  19. BIM族库下载——周转材料及常用构件族库
  20. uniapp开发微信小程序,引用微信物理查询插件

热门文章

  1. Ubuntu 16.04 + Kinect for Xbox one(v2)驱动安装
  2. 训练营一期day14
  3. 02 标签Label
  4. 一个浏览器只运行登录一个用户
  5. 拓嘉辰丰:拼多多物流问题主要体现在哪些地方
  6. 【人工智能】python图像风格迁移,来欣赏梵高风格的石原里美吧!
  7. 运维思索:接地气的运维自动化建设
  8. 果真这么难学?谁再说mysql难学,我一张思维导图就扔过去!
  9. Revit 二次开发—获取Revit安装目录
  10. Python代码重构