请选择 进入手机版 | 继续访问电脑版

Hello Mat

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1213|回复: 11

Unet网络结构

[复制链接]

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
发表于 2019-6-21 23:42:35 | 显示全部楼层 |阅读模式
extra_large的Unet网络结构:模型大小:1944756KB,1.85GB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()

  25.         self.conv1 = DoubleConv(in_ch, 16)
  26.         self.pool1 = nn.MaxPool2d(2)
  27.         self.conv2 = DoubleConv(16, 32)
  28.         self.pool2 = nn.MaxPool2d(2)
  29.         self.conv3 = DoubleConv(32, 64)
  30.         self.pool3 = nn.MaxPool2d(2)
  31.         self.conv4 = DoubleConv(64, 128)
  32.         self.pool4 = nn.MaxPool2d(2)
  33.         self.conv5 = DoubleConv(128, 256)
  34.         self.pool5 = nn.MaxPool2d(2)
  35.         self.conv6 = DoubleConv(256, 512)
  36.         self.pool6 = nn.MaxPool2d(2)
  37.         self.conv7 = DoubleConv(512, 1024)
  38.         self.pool7 = nn.MaxPool2d(2)
  39.         self.conv8 = DoubleConv(1024, 2048)
  40.         self.pool8 = nn.MaxPool2d(2)
  41.         self.conv9 = DoubleConv(2048, 4096)
  42.         self.up10 = nn.ConvTranspose2d(4096, 2048, 2, stride=2)
  43.         self.conv10 = DoubleConv(4096, 2048)
  44.         self.up11 = nn.ConvTranspose2d(2048, 1024, 2, stride=2)
  45.         self.conv11 = DoubleConv(2048, 1024)
  46.         self.up12 = nn.ConvTranspose2d(1024, 512, 2, stride=2)
  47.         self.conv12 = DoubleConv(1024, 512)
  48.         self.up13 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  49.         self.conv13 = DoubleConv(512, 256)
  50.         self.up14 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  51.         self.conv14 = DoubleConv(256, 128)
  52.         self.up15 = nn.ConvTranspose2d(128, 64, 2, stride=2)
  53.         self.conv15 = DoubleConv(128, 64)
  54.         self.up16 = nn.ConvTranspose2d(64, 32, 2, stride=2)
  55.         self.conv16 = DoubleConv(64, 32)
  56.         self.up17 = nn.ConvTranspose2d(32, 16, 2, stride=2)
  57.         self.conv17 = DoubleConv(32, 16)
  58.         self.conv18 = nn.Conv2d(16,out_ch, 1)

  59.     def forward(self,x):
  60.         c1=self.conv1(x)
  61.         p1=self.pool1(c1)
  62.         c2=self.conv2(p1)
  63.         p2=self.pool2(c2)
  64.         c3=self.conv3(p2)
  65.         p3=self.pool3(c3)
  66.         c4=self.conv4(p3)
  67.         p4=self.pool4(c4)
  68.         c5=self.conv5(p4)
  69.         p5=self.pool5(c5)
  70.         c6=self.conv6(p5)
  71.         p6=self.pool6(c6)
  72.         c7=self.conv7(p6)
  73.         p7=self.pool7(c7)
  74.         c8=self.conv8(p7)
  75.         p8=self.pool8(c8)
  76.         c9=self.conv9(p8)
  77.         up_10= self.up10(c9)
  78.         merge10 = torch.cat([up_10, c8], dim=1)
  79.         c10=self.conv10(merge10)
  80.         up_11= self.up11(c10)
  81.         merge11 = torch.cat([up_11, c7], dim=1)
  82.         c11=self.conv11(merge11)
  83.         up_12= self.up12(c11)
  84.         merge12 = torch.cat([up_12, c6], dim=1)
  85.         c12=self.conv12(merge12)
  86.         up_13=self.up13(c12)
  87.         merge13 = torch.cat([up_13, c5], dim=1)
  88.         c13=self.conv13(merge13)
  89.         up_14=self.up14(c13)
  90.         merge14 = torch.cat([up_14, c4], dim=1)
  91.         c14=self.conv14(merge14)
  92.         up_15=self.up15(c14)
  93.         merge15 = torch.cat([up_15, c3],dim=1)
  94.         c15=self.conv15(merge15)
  95.         up_16=self.up16(c15)
  96.         merge16 = torch.cat([up_16, c2],dim=1)
  97.         c16=self.conv16(merge16)
  98.         up_17=self.up17(c16)
  99.         merge17 = torch.cat([up_17, c1],dim=1)
  100.         c17=self.conv17(merge17)
  101.         c18=self.conv18(c17)
  102.         out = nn.Sigmoid()(c18)
  103.         return out
复制代码




回复

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-21 23:49:00 | 显示全部楼层
large Unet网络1:模型大小:121652KB,118MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()

  25.         self.conv1 = DoubleConv(in_ch, 16)
  26.         self.pool1 = nn.MaxPool2d(2)
  27.         self.conv2 = DoubleConv(16, 32)
  28.         self.pool2 = nn.MaxPool2d(2)
  29.         self.conv3 = DoubleConv(32, 64)
  30.         self.pool3 = nn.MaxPool2d(2)
  31.         self.conv4 = DoubleConv(64, 128)
  32.         self.pool4 = nn.MaxPool2d(2)
  33.         self.conv5 = DoubleConv(128, 256)
  34.         self.pool5 = nn.MaxPool2d(2)
  35.         self.conv6 = DoubleConv(256, 512)
  36.         self.pool6 = nn.MaxPool2d(2)
  37.         self.conv7 = DoubleConv(512, 1024)
  38.         self.up8 = nn.ConvTranspose2d(1024, 512, 2, stride=2)
  39.         self.conv8 = DoubleConv(1024, 512)
  40.         self.up9 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  41.         self.conv9 = DoubleConv(512, 256)
  42.         self.up10 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  43.         self.conv10 = DoubleConv(256, 128)
  44.         self.up11 = nn.ConvTranspose2d(128, 64, 2, stride=2)
  45.         self.conv11 = DoubleConv(128, 64)
  46.         self.up12 = nn.ConvTranspose2d(64, 32, 2, stride=2)
  47.         self.conv12 = DoubleConv(64, 32)
  48.         self.up13 = nn.ConvTranspose2d(32, 16, 2, stride=2)
  49.         self.conv13 = DoubleConv(32, 16)
  50.         self.conv14 = nn.Conv2d(16,out_ch, 1)

  51.     def forward(self,x):
  52.         c1=self.conv1(x)
  53.         p1=self.pool1(c1)
  54.         c2=self.conv2(p1)
  55.         p2=self.pool2(c2)
  56.         c3=self.conv3(p2)
  57.         p3=self.pool3(c3)
  58.         c4=self.conv4(p3)
  59.         p4=self.pool4(c4)
  60.         c5=self.conv5(p4)
  61.         p5=self.pool5(c5)
  62.         c6=self.conv6(p5)
  63.         p6=self.pool6(c6)
  64.         c7=self.conv7(p6)
  65.         up_8= self.up8(c7)
  66.         merge8 = torch.cat([up_8, c6], dim=1)
  67.         c8=self.conv8(merge8)
  68.         up_9=self.up9(c8)
  69.         merge9 = torch.cat([up_9, c5], dim=1)
  70.         c9=self.conv9(merge9)
  71.         up_10=self.up10(c9)
  72.         merge10 = torch.cat([up_10, c4], dim=1)
  73.         c10=self.conv10(merge10)
  74.         up_11=self.up11(c10)
  75.         merge11=torch.cat([up_11,c3],dim=1)
  76.         c11=self.conv11(merge11)
  77.         up_12=self.up12(c11)
  78.         merge12=torch.cat([up_12,c2],dim=1)
  79.         c12=self.conv12(merge12)
  80.         up_13=self.up13(c12)
  81.         merge13=torch.cat([up_13,c1],dim=1)
  82.         c13=self.conv13(merge13)
  83.         c14=self.conv14(c13)
  84.         out = nn.Sigmoid()(c14)
  85.         return out
复制代码

回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-22 09:50:45 | 显示全部楼层
large Unet网络2::模型大小:486257KB,474MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()

  25.         self.conv1 = DoubleConv(in_ch, 32)
  26.         self.pool1 = nn.MaxPool2d(2)
  27.         self.conv2 = DoubleConv(32, 64)
  28.         self.pool2 = nn.MaxPool2d(2)
  29.         self.conv3 = DoubleConv(64, 128)
  30.         self.pool3 = nn.MaxPool2d(2)
  31.         self.conv4 = DoubleConv(128, 256)
  32.         self.pool4 = nn.MaxPool2d(2)
  33.         self.conv5 = DoubleConv(256, 512)
  34.         self.pool5 = nn.MaxPool2d(2)
  35.         self.conv6 = DoubleConv(512, 1024)
  36.         self.pool6 = nn.MaxPool2d(2)
  37.         self.conv7 = DoubleConv(1024, 2048)
  38.         self.up8 = nn.ConvTranspose2d(2048, 1024, 2, stride=2)
  39.         self.conv8 = DoubleConv(2048, 1024)
  40.         self.up9 = nn.ConvTranspose2d(1024, 512, 2, stride=2)
  41.         self.conv9 = DoubleConv(1024, 512)
  42.         self.up10 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  43.         self.conv10 = DoubleConv(512, 256)
  44.         self.up11 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  45.         self.conv11 = DoubleConv(256, 128)
  46.         self.up12 = nn.ConvTranspose2d(128, 64, 2, stride=2)
  47.         self.conv12 = DoubleConv(128, 64)
  48.         self.up13 = nn.ConvTranspose2d(64, 32, 2, stride=2)
  49.         self.conv13 = DoubleConv(64, 32)
  50.         self.conv14 = nn.Conv2d(32,out_ch, 1)

  51.     def forward(self,x):
  52.         c1=self.conv1(x)
  53.         p1=self.pool1(c1)
  54.         c2=self.conv2(p1)
  55.         p2=self.pool2(c2)
  56.         c3=self.conv3(p2)
  57.         p3=self.pool3(c3)
  58.         c4=self.conv4(p3)
  59.         p4=self.pool4(c4)
  60.         c5=self.conv5(p4)
  61.         p5=self.pool5(c5)
  62.         c6=self.conv6(p5)
  63.         p6=self.pool6(c6)
  64.         c7=self.conv7(p6)
  65.         up_8= self.up8(c7)
  66.         merge8 = torch.cat([up_8, c6], dim=1)
  67.         c8=self.conv8(merge8)
  68.         up_9=self.up9(c8)
  69.         merge9 = torch.cat([up_9, c5], dim=1)
  70.         c9=self.conv9(merge9)
  71.         up_10=self.up10(c9)
  72.         merge10 = torch.cat([up_10, c4], dim=1)
  73.         c10=self.conv10(merge10)
  74.         up_11=self.up11(c10)
  75.         merge11=torch.cat([up_11,c3],dim=1)
  76.         c11=self.conv11(merge11)
  77.         up_12=self.up12(c11)
  78.         merge12=torch.cat([up_12,c2],dim=1)
  79.         c12=self.conv12(merge12)
  80.         up_13=self.up13(c12)
  81.         merge13=torch.cat([up_13,c1],dim=1)
  82.         c13=self.conv13(merge13)
  83.         c14=self.conv14(c13)
  84.         out = nn.Sigmoid()(c14)
  85.         return out
复制代码

回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-22 09:58:19 | 显示全部楼层
large Unet网络::模型大小:121329KB,118MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()

  25.         self.conv1 = DoubleConv(in_ch, 64)
  26.         self.pool1 = nn.MaxPool2d(2)
  27.         self.conv2 = DoubleConv(64, 128)
  28.         self.pool2 = nn.MaxPool2d(2)
  29.         self.conv3 = DoubleConv(128, 256)
  30.         self.pool3 = nn.MaxPool2d(2)
  31.         self.conv4 = DoubleConv(256, 512)
  32.         self.pool4 = nn.MaxPool2d(2)
  33.         self.conv5 = DoubleConv(512, 1024)
  34.         self.up6 = nn.ConvTranspose2d(1024, 512, 2, stride=2)
  35.         self.conv6 = DoubleConv(1024, 512)
  36.         self.up7 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  37.         self.conv7 = DoubleConv(512, 256)
  38.         self.up8 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  39.         self.conv8 = DoubleConv(256, 128)
  40.         self.up9 = nn.ConvTranspose2d(128, 64, 2, stride=2)
  41.         self.conv9 = DoubleConv(128, 64)
  42.         self.conv10 = nn.Conv2d(64,out_ch, 1)

  43.     def forward(self,x):
  44.         c1=self.conv1(x)
  45.         p1=self.pool1(c1)
  46.         c2=self.conv2(p1)
  47.         p2=self.pool2(c2)
  48.         c3=self.conv3(p2)
  49.         p3=self.pool3(c3)
  50.         c4=self.conv4(p3)
  51.         p4=self.pool4(c4)
  52.         c5=self.conv5(p4)
  53.         up_6= self.up6(c5)
  54.         merge6 = torch.cat([up_6, c4], dim=1)
  55.         c6=self.conv6(merge6)
  56.         up_7=self.up7(c6)
  57.         merge7 = torch.cat([up_7, c3], dim=1)
  58.         c7=self.conv7(merge7)
  59.         up_8=self.up8(c7)
  60.         merge8 = torch.cat([up_8, c2], dim=1)
  61.         c8=self.conv8(merge8)
  62.         up_9=self.up9(c8)
  63.         merge9=torch.cat([up_9,c1],dim=1)
  64.         c9=self.conv9(merge9)
  65.         c10=self.conv10(c9)
  66.         out = nn.Sigmoid()(c10)
  67.         return out
复制代码

回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-22 11:54:30 | 显示全部楼层
normal网络::模型大小:30126KB,29.4MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()

  25.         self.conv1 = DoubleConv(in_ch, 64)
  26.         self.pool1 = nn.MaxPool2d(2)
  27.         self.conv2 = DoubleConv(64, 128)
  28.         self.pool2 = nn.MaxPool2d(2)
  29.         self.conv3 = DoubleConv(128, 256)
  30.         self.pool3 = nn.MaxPool2d(2)
  31.         self.conv4 = DoubleConv(256, 512)
  32.         self.up5 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  33.         self.conv5 = DoubleConv(512, 256)
  34.         self.up6 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  35.         self.conv6 = DoubleConv(256, 128)
  36.         self.up7 = nn.ConvTranspose2d(128, 64, 2, stride=2)
  37.         self.conv7 = DoubleConv(128, 64)
  38.         self.conv8 = nn.Conv2d(64,out_ch, 1)

  39.     def forward(self,x):
  40.         c1=self.conv1(x)
  41.         p1=self.pool1(c1)
  42.         c2=self.conv2(p1)
  43.         p2=self.pool2(c2)
  44.         c3=self.conv3(p2)
  45.         p3=self.pool3(c3)
  46.         c4=self.conv4(p3)
  47.         up_5= self.up5(c4)
  48.         merge5 = torch.cat([up_5, c3], dim=1)
  49.         c5=self.conv5(merge5)
  50.         up_6=self.up6(c5)
  51.         merge6 = torch.cat([up_6, c2], dim=1)
  52.         c6=self.conv6(merge6)
  53.         up_7=self.up7(c6)
  54.         merge7 = torch.cat([up_7, c1],dim=1)
  55.         c7=self.conv7(merge7)
  56.         c8=self.conv8(c7)
  57.         out = nn.Sigmoid()(c8)
  58.         return out
复制代码

回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-22 11:56:22 | 显示全部楼层
normal 网络2::模型大小:7306KB,7.13MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()
  25.         # 128x128
  26.         self.conv1 = DoubleConv(in_ch, 64)
  27.         self.pool1 = nn.MaxPool2d(2)
  28.         self.conv2 = DoubleConv(64, 128)
  29.         self.pool2 = nn.MaxPool2d(2)
  30.         self.conv3 = DoubleConv(128, 256)
  31.         self.up4 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  32.         self.conv4 = DoubleConv(256, 128)
  33.         self.up5 = nn.ConvTranspose2d(128, 64, 2, stride=2)
  34.         self.conv5 = DoubleConv(128, 64)
  35.         self.conv6 = nn.Conv2d(64,out_ch, 1)

  36.     def forward(self,x):
  37.         c1=self.conv1(x)
  38.         p1=self.pool1(c1)
  39.         c2=self.conv2(p1)
  40.         p2=self.pool2(c2)
  41.         c3=self.conv3(p2)
  42.         up_4=self.up4(c3)
  43.         merge4 = torch.cat([up_4, c2], dim=1)
  44.         c4=self.conv4(merge4)
  45.         up_5=self.up5(c4)
  46.         merge5 = torch.cat([up_5, c1],dim=1)
  47.         c5=self.conv5(merge5)
  48.         c6=self.conv6(c5)
  49.         out = nn.Sigmoid()(c6)
  50.         return out
复制代码
回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-22 11:57:57 | 显示全部楼层
normal 网络3::模型大小:29126KB,28.4MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()
  25.         # 256x256
  26.         self.conv1 = DoubleConv(in_ch, 128)
  27.         self.pool1 = nn.MaxPool2d(2)
  28.         self.conv2 = DoubleConv(128, 256)
  29.         self.pool2 = nn.MaxPool2d(2)
  30.         self.conv3 = DoubleConv(256, 512)
  31.         self.up4 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  32.         self.conv4 = DoubleConv(512, 256)
  33.         self.up5 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  34.         self.conv5 = DoubleConv(256, 128)
  35.         self.conv6 = nn.Conv2d(128,out_ch, 1)

  36.     def forward(self,x):
  37.         c1=self.conv1(x)
  38.         p1=self.pool1(c1)
  39.         c2=self.conv2(p1)
  40.         p2=self.pool2(c2)
  41.         c3=self.conv3(p2)
  42.         up_4=self.up4(c3)
  43.         merge4 = torch.cat([up_4, c2], dim=1)
  44.         c4=self.conv4(merge4)
  45.         up_5=self.up5(c4)
  46.         merge5 = torch.cat([up_5, c1],dim=1)
  47.         c5=self.conv5(merge5)
  48.         c6=self.conv6(c5)
  49.         out = nn.Sigmoid()(c6)
  50.         return out
  51.    
复制代码

回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-22 12:10:57 | 显示全部楼层
normal 网络4::模型大小:120329KB,117MB
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat Jun 22 12:05:39 2019

  4. @author: Solem
  5. """

  6. import torch.nn as nn
  7. import torch
  8. from torch import autograd
  9. import torchvision.models as models


  10. # 导入模型结构
  11. #resnet50 = models.resnet50(pretrained=True)
  12. # 加载预先下载好的预训练参数到resnet18
  13. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  14. class DoubleConv(nn.Module):
  15.     def __init__(self, in_ch, out_ch):
  16.         super(DoubleConv, self).__init__()
  17.         self.conv = nn.Sequential(
  18.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  19.             nn.BatchNorm2d(out_ch),
  20.             nn.ReLU(inplace=True),
  21.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  22.             nn.BatchNorm2d(out_ch),
  23.             nn.ReLU(inplace=True)
  24.         )

  25.     def forward(self, input):
  26.         return self.conv(input)


  27. class Unet(nn.Module):
  28.     def __init__(self,in_ch,out_ch):
  29.         super(Unet, self).__init__()

  30.         self.conv1 = DoubleConv(in_ch, 128)
  31.         self.pool1 = nn.MaxPool2d(2)
  32.         self.conv2 = DoubleConv(128, 256)
  33.         self.pool2 = nn.MaxPool2d(2)
  34.         self.conv3 = DoubleConv(256, 512)
  35.         self.pool3 = nn.MaxPool2d(2)
  36.         self.conv4 = DoubleConv(512, 1024)
  37.         self.up5 = nn.ConvTranspose2d(1024, 512, 2, stride=2)
  38.         self.conv5 = DoubleConv(1024, 512)
  39.         self.up6 = nn.ConvTranspose2d(512, 256, 2, stride=2)
  40.         self.conv6 = DoubleConv(512, 256)
  41.         self.up7 = nn.ConvTranspose2d(256, 128, 2, stride=2)
  42.         self.conv7 = DoubleConv(256, 128)
  43.         self.conv8 = nn.Conv2d(128,out_ch, 1)

  44.     def forward(self,x):
  45.         c1=self.conv1(x)
  46.         p1=self.pool1(c1)
  47.         c2=self.conv2(p1)
  48.         p2=self.pool2(c2)
  49.         c3=self.conv3(p2)
  50.         p3=self.pool3(c3)
  51.         c4=self.conv4(p3)
  52.         up_5=self.up5(c4)
  53.         merge5 = torch.cat([up_5, c3], dim=1)
  54.         c5=self.conv5(merge5)
  55.         up_6=self.up6(c5)
  56.         merge6 = torch.cat([up_6, c2], dim=1)
  57.         c6=self.conv6(merge6)
  58.         up_7=self.up7(c6)
  59.         merge7 = torch.cat([up_7, c1],dim=1)
  60.         c7=self.conv7(merge7)
  61.         c8=self.conv8(c7)
  62.         out = nn.Sigmoid()(c8)
  63.         return out
复制代码


回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-23 19:21:00 | 显示全部楼层
normal 网络5::模型大小:67176KB,66.1MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch, kernel_size, stride, padding):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, kernel_size=3, stride=1, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, kernel_size=3, stride=1, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()

  25.         self.conv1 = DoubleConv(in_ch, 96,     kernel_size=3, stride=1, padding=1)
  26.         self.pool1 = nn.MaxPool2d(2)
  27.         self.conv2 = DoubleConv(96, 192,       kernel_size=3, stride=1, padding=1)
  28.         self.pool2 = nn.MaxPool2d(2)
  29.         self.conv3 = DoubleConv(192, 384,       kernel_size=3, stride=1, padding=1)
  30.         self.pool3 = nn.MaxPool2d(2)
  31.         self.conv4 = DoubleConv(384, 768,       kernel_size=3, stride=1, padding=1)
  32.         self.up5 = nn.ConvTranspose2d(768, 384, kernel_size=2, stride=2, padding=0)
  33.         self.conv5 = DoubleConv(768, 384,       kernel_size=3, stride=1, padding=1)
  34.         self.up6 = nn.ConvTranspose2d(384, 192, kernel_size=2, stride=2, padding=0)
  35.         self.conv6 = DoubleConv(384, 192,       kernel_size=3, stride=1, padding=1)
  36.         self.up7 = nn.ConvTranspose2d(192, 96, kernel_size=2, stride=2, padding=0)
  37.         self.conv7 = DoubleConv(192, 96,       kernel_size=3, stride=1, padding=1)
  38.         self.conv8 = nn.Conv2d(96, out_ch, 1)

  39.     def forward(self,x):
  40.         c1=self.conv1(x)
  41.         p1=self.pool1(c1)
  42.         c2=self.conv2(p1)
  43.         p2=self.pool2(c2)
  44.         c3=self.conv3(p2)
  45.         p3=self.pool3(c3)
  46.         c4=self.conv4(p3)
  47.         up_5=self.up5(c4)
  48.         merge5 = torch.cat([up_5, c3], dim=1)
  49.         c5=self.conv5(merge5)
  50.         up_6=self.up6(c5)
  51.         merge6 = torch.cat([up_6, c2], dim=1)
  52.         c6=self.conv6(merge6)
  53.         up_7=self.up7(c6)
  54.         merge7 = torch.cat([up_7, c1],dim=1)
  55.         c7=self.conv7(merge7)
  56.         c8=self.conv8(c7)
  57.         out = nn.Sigmoid()(c8)
  58.         return out
复制代码


回复 支持 反对

使用道具 举报

19

主题

42

帖子

985

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
985
 楼主| 发表于 2019-6-23 22:18:32 | 显示全部楼层
small 网络::模型大小:16400KB,16MB
  1. import torch.nn as nn
  2. import torch
  3. from torch import autograd
  4. import torchvision.models as models


  5. # 导入模型结构
  6. #resnet50 = models.resnet50(pretrained=True)
  7. # 加载预先下载好的预训练参数到resnet18
  8. #resnet50.load_state_dict(torch.load('resnet50-5c106cde.pth'))

  9. class DoubleConv(nn.Module):
  10.     def __init__(self, in_ch, out_ch):
  11.         super(DoubleConv, self).__init__()
  12.         self.conv = nn.Sequential(
  13.             nn.Conv2d(in_ch, out_ch, 3, padding=1),
  14.             nn.BatchNorm2d(out_ch),
  15.             nn.ReLU(inplace=True),
  16.             nn.Conv2d(out_ch, out_ch, 3, padding=1),
  17.             nn.BatchNorm2d(out_ch),
  18.             nn.ReLU(inplace=True)
  19.         )

  20.     def forward(self, input):
  21.         return self.conv(input)


  22. class Unet(nn.Module):
  23.     def __init__(self,in_ch,out_ch):
  24.         super(Unet, self).__init__()
  25.         # 256x256
  26.         self.conv1 = DoubleConv(in_ch, 96)
  27.         self.pool1 = nn.MaxPool2d(2)
  28.         self.conv2 = DoubleConv(96, 192)
  29.         self.pool2 = nn.MaxPool2d(2)
  30.         self.conv3 = DoubleConv(192, 384)
  31.         self.up4 = nn.ConvTranspose2d(384, 192, 2, stride=2)
  32.         self.conv4 = DoubleConv(384, 192)
  33.         self.up5 = nn.ConvTranspose2d(192, 96, 2, stride=2)
  34.         self.conv5 = DoubleConv(192, 96)
  35.         self.conv6 = nn.Conv2d(96,out_ch, 1)

  36.     def forward(self,x):
  37.         c1=self.conv1(x)
  38.         p1=self.pool1(c1)
  39.         c2=self.conv2(p1)
  40.         p2=self.pool2(c2)
  41.         c3=self.conv3(p2)
  42.         up_4=self.up4(c3)
  43.         merge4 = torch.cat([up_4, c2], dim=1)
  44.         c4=self.conv4(merge4)
  45.         up_5=self.up5(c4)
  46.         merge5 = torch.cat([up_5, c1],dim=1)
  47.         c5=self.conv5(merge5)
  48.         c6=self.conv6(c5)
  49.         out = nn.Sigmoid()(c6)
  50.         return out
复制代码

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


Python|Opencv|MATLAB|Halcom.cn  

GMT+8, 2019-10-14 06:28 , Processed in 0.114329 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表