Skip to content

Commit

Permalink
lesson-2
Browse files Browse the repository at this point in the history
  • Loading branch information
Jack-Cherish committed Mar 28, 2020
1 parent a7576f4 commit c5dec52
Show file tree
Hide file tree
Showing 93 changed files with 118 additions and 0 deletions.
Binary file added Pytorch-Seg/lesson-2/data/test/0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/11.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/12.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/13.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/17.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/18.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/19.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/20.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/21.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/22.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/23.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/25.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/26.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/27.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/28.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/29.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Pytorch-Seg/lesson-2/data/test/5.png
Binary file added Pytorch-Seg/lesson-2/data/test/6.png
Binary file added Pytorch-Seg/lesson-2/data/test/7.png
Binary file added Pytorch-Seg/lesson-2/data/test/8.png
Binary file added Pytorch-Seg/lesson-2/data/test/9.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/0.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/1.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/10.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/11.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/12.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/13.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/14.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/15.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/16.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/17.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/18.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/19.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/2.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/20.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/21.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/22.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/23.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/24.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/25.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/26.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/27.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/28.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/29.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/3.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/4.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/5.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/6.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/7.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/8.png
Binary file added Pytorch-Seg/lesson-2/data/train/image/9.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/0.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/1.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/10.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/11.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/12.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/13.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/14.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/15.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/16.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/17.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/18.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/19.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/2.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/20.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/21.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/22.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/23.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/24.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/25.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/26.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/27.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/28.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/29.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/3.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/4.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/5.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/6.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/7.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/8.png
Binary file added Pytorch-Seg/lesson-2/data/train/label/9.png
Empty file.
42 changes: 42 additions & 0 deletions Pytorch-Seg/lesson-2/model/unet_model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
""" Full assembly of the parts to form the complete network """
"""Refer https://github.com/milesial/Pytorch-UNet/blob/master/unet/unet_model.py"""

import torch.nn.functional as F

from unet_parts import *


class UNet(nn.Module):
def __init__(self, n_channels, n_classes, bilinear=False):
super(UNet, self).__init__()
self.n_channels = n_channels
self.n_classes = n_classes
self.bilinear = bilinear

self.inc = DoubleConv(n_channels, 64)
self.down1 = Down(64, 128)
self.down2 = Down(128, 256)
self.down3 = Down(256, 512)
self.down4 = Down(512, 1024)
self.up1 = Up(1024, 512, bilinear)
self.up2 = Up(512, 256, bilinear)
self.up3 = Up(256, 128, bilinear)
self.up4 = Up(128, 64, bilinear)
self.outc = OutConv(64, n_classes)

def forward(self, x):
x1 = self.inc(x)
x2 = self.down1(x1)
x3 = self.down2(x2)
x4 = self.down3(x3)
x5 = self.down4(x4)
x = self.up1(x5, x4)
x = self.up2(x, x3)
x = self.up3(x, x2)
x = self.up4(x, x1)
logits = self.outc(x)
return logits

if __name__ == '__main__':
net = UNet(n_channels=3, n_classes=1)
print(net)
76 changes: 76 additions & 0 deletions Pytorch-Seg/lesson-2/model/unet_parts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
""" Parts of the U-Net model """
"""https://github.com/milesial/Pytorch-UNet/blob/master/unet/unet_parts.py"""

import torch
import torch.nn as nn
import torch.nn.functional as F


class DoubleConv(nn.Module):
"""(convolution => [BN] => ReLU) * 2"""

def __init__(self, in_channels, out_channels):
super().__init__()
self.double_conv = nn.Sequential(
nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=0),
nn.BatchNorm2d(out_channels),
nn.ReLU(inplace=True),
nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=0),
nn.BatchNorm2d(out_channels),
nn.ReLU(inplace=True)
)

def forward(self, x):
return self.double_conv(x)


class Down(nn.Module):
"""Downscaling with maxpool then double conv"""

def __init__(self, in_channels, out_channels):
super().__init__()
self.maxpool_conv = nn.Sequential(
nn.MaxPool2d(2),
DoubleConv(in_channels, out_channels)
)

def forward(self, x):
return self.maxpool_conv(x)


class Up(nn.Module):
"""Upscaling then double conv"""

def __init__(self, in_channels, out_channels, bilinear=True):
super().__init__()

# if bilinear, use the normal convolutions to reduce the number of channels
if bilinear:
self.up = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True)
else:
self.up = nn.ConvTranspose2d(in_channels, in_channels // 2, kernel_size=2, stride=2)

self.conv = DoubleConv(in_channels, out_channels)

def forward(self, x1, x2):
x1 = self.up(x1)
# input is CHW
diffY = torch.tensor([x2.size()[2] - x1.size()[2]])
diffX = torch.tensor([x2.size()[3] - x1.size()[3]])

x1 = F.pad(x1, [diffX // 2, diffX - diffX // 2,
diffY // 2, diffY - diffY // 2])
# if you have padding issues, see
# https://github.com/HaiyongJiang/U-Net-Pytorch-Unstructured-Buggy/commit/0e854509c2cea854e247a9c615f175f76fbb2e3a
# https://github.com/xiaopeng-liao/Pytorch-UNet/commit/8ebac70e633bac59fc22bb5195e513d5832fb3bd
x = torch.cat([x2, x1], dim=1)
return self.conv(x)


class OutConv(nn.Module):
def __init__(self, in_channels, out_channels):
super(OutConv, self).__init__()
self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=1)

def forward(self, x):
return self.conv(x)

0 comments on commit c5dec52

Please sign in to comment.