Diff of /res_network.py [000000] .. [5ba3a6]

Switch to side-by-side view

--- a
+++ b/res_network.py
@@ -0,0 +1,165 @@
+# -*- coding: utf-8 -*-
+"""
+@File    : resNetwork.py
+@Time    : 2019/6/23 15:29
+@Author  : Parker
+@Email   : now_cherish@163.com
+@Software: PyCharm
+@Des     : 
+"""
+
+import torch
+import torch.nn as nn
+from torchvision.models import resnet18, resnet34, resnet101, densenet, inception_v3, mobilenet_v2
+import torch.nn.functional as F
+import pretrainedmodels
+
+
+class Resnet18(nn.Module):
+    def __init__(self, n_classes=6):
+        super(Resnet18,self).__init__()
+
+        src_net = resnet18(pretrained=True)
+        modules = list(src_net.children())[:-2]
+        modules[0] = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Linear(512, n_classes)
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out,(1,1)).view(features.size(0), -1)
+        out = nn.Sigmoid()(self.classifier(out))
+        return out
+
+
+class Resnet34(nn.Module):
+    def __init__(self, n_classes=45):
+        super(Resnet34, self).__init__()
+
+        src_net = resnet34(pretrained=True)
+        modules = list(src_net.children())[:-2]
+
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Linear(512, n_classes)
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out,(1,1)).view(features.size(0), -1)
+        out = self.classifier(out)
+        # out = torch.sigmoid(out)
+        return out
+
+
+class Resnet101(nn.Module):
+    def __init__(self, n_classes=45):
+        super(Resnet101, self).__init__()
+
+        src_net = resnet101(pretrained=True)
+        modules = list(src_net.children())[:-2]
+
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Linear(2048, n_classes)
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out,(1,1)).view(features.size(0), -1)
+        out = self.classifier(out)
+        # out = torch.sigmoid(out)
+        return out
+
+
+class Densenet121(nn.Module):
+    def __init__(self, n_classes=45):
+        super(Densenet121, self).__init__()
+
+        src_net = densenet.densenet121(pretrained=False)
+        # print(src_net)
+        modules = list(src_net.children())[:-1]
+
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Linear(1024, n_classes)
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out, (1, 1)).view(features.size(0), -1)
+        out = self.classifier(out)
+        # out = torch.sigmoid(out)
+        return out
+
+
+class MobileNet(nn.Module):
+    def __init__(self, n_classes=45):
+        super(MobileNet,self).__init__()
+
+        src_net = mobilenet_v2(pretrained=True)
+        modules = list(src_net.children())[:-2]
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Sequential(
+            nn.Dropout(0.2),
+            nn.Linear(1280, 512),
+            nn.Linear(512, n_classes)
+        )
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out,(1,1)).view(features.size(0), -1)
+        out = self.classifier(out)
+        return out
+
+
+class SEResNext50(nn.Module):
+    def __init__(self, n_classes=6):
+        super(SEResNext50, self).__init__()
+        src_net = pretrainedmodels.__dict__['se_resnext50_32x4d'](num_classes=1000, pretrained='imagenet')
+        modules = list(src_net.children())[:-2]
+        modules[0] = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Linear(2048, n_classes)
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out, (1, 1)).view(features.size(0), -1)
+        out = nn.Sigmoid()(self.classifier(out))
+
+        return out
+
+
+class Inceptionv4(nn.Module):
+    def __init__(self, n_classes=6):
+        super(Inceptionv4, self).__init__()
+        src_net = pretrainedmodels.__dict__['inceptionv4'](num_classes=1000,
+                                                           pretrained='imagenet')
+        modules = list(src_net.children())[:-1]
+        self.features = nn.Sequential(*modules)
+        self.classifier = nn.Linear(1536, n_classes)
+        nn.init.constant_(self.classifier.bias, 0)
+
+    def forward(self, x):
+        features = self.features(x)
+        out = F.leaky_relu(features)
+        out = F.adaptive_avg_pool2d(out, (1, 1)).view(features.size(0), -1)
+        out = nn.Sigmoid()(self.classifier(out))
+
+        return out
+
+
+
+if __name__ == '__main__':
+    net = SEResNext50()
+    print(net)
+    # net = Densenet121()
+    aa = torch.randn((5, 1, 512, 512))
+    print(net(aa).size())
+