commit 81d8931842ea81c8b4342691590b522183c1a121 Author: colin Date: Mon Aug 19 15:53:10 2019 +0800 init git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ae0c17 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +.idea +.pytest_cache +*.pyc +__pycache__/ +Dataset/ +.vscode +/*/__pycache__ diff --git a/FilterEvaluator/Evaluator.py b/FilterEvaluator/Evaluator.py new file mode 100644 index 0000000..9e4567b --- /dev/null +++ b/FilterEvaluator/Evaluator.py @@ -0,0 +1,185 @@ +from __future__ import print_function +import os +import sys + +# import multiprocessing +# multiprocessing.set_start_method('spawn', True) + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from torch.utils.data import Dataset, DataLoader +from PIL import Image +import random +import cv2 + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + +sys.path.append(CurrentPath+'../tools') +sys.path.append(CurrentPath+'../') + +import Model as Model +from tools import utils, Train, Loader + +batchsize = 128 + + +# model = utils.SetDevice(Model.Net5Grad35()) +# model = utils.SetDevice(Model.Net31535()) +model = utils.SetDevice(Model.Net3Grad335()) +# model = utils.SetDevice(Model.Net3()) + + + +# model = utils.LoadModel(model, CurrentPath+"/checkpoint.pkl") + + + + + +# a = model.features[0].weight.data + + + + +# traindata, testdata = Loader.MNIST(batchsize) +# traindata, testdata = Loader.RandomMnist(batchsize, style="Vertical") +# traindata, testdata = Loader.RandomMnist(batchsize, style="Horizontal") +# traindata, testdata = Loader.RandomMnist(batchsize, style="VerticalOneLine") +# traindata, testdata = Loader.RandomMnist(batchsize, style="VerticalZebra") +# traindata, testdata = Loader.Cifar10Mono(batchsize) +traindata, testdata = Loader.Cifar10Mono(batchsize, num_workers=2, shuffle=True) + + +# def GetSample(netmodel,layer,dataloader,iteration=-1): +# netmodel.eval() +# sample = [] +# for batch_idx, (data, target) in enumerate(dataloader): +# data = utils.SetDevice(data) +# target = utils.SetDevice(target) +# layerout = [] +# layerint = [] +# def getnet(self, input, output): +# layerout.append(output) +# layerint.append(input) +# handle = netmodel.features[layer].register_forward_hook(getnet) +# netmodel.forwardLayer(data,layer=layer) +# output = layerout[0][:,:,:,:] + +# handle.remove() +# data.detach() +# target.detach() + +# sample.append(output.cpu().detach().numpy()) +# if iteration > 0 and batch_idx >= (iteration-1): +# break + +# sample = np.array(sample) +# sample = np.swapaxes(sample,2,0) +# sample = np.reshape(sample,(sample.shape[0],-1)) + +# active = [] +# for i in range(sample.shape[0]): +# data = sample[i] +# mean = np.mean(data) +# dat1 = np.mean(np.abs(data - mean)) +# dat2 = (data - mean)/dat1 +# dat2 = np.mean(dat2*dat2) +# active.append(dat2) + +# return active + + +def GetSample(netmodel,layer,dataloader,iteration=-1): + netmodel.eval() + sample = utils.SetDevice(torch.empty((8,0))) + for batch_idx, (data, target) in enumerate(dataloader): + data = utils.SetDevice(data) + target = utils.SetDevice(target) + layerout = [] + layerint = [] + def getnet(self, input, output): + layerout.append(output) + layerint.append(input) + handle = netmodel.features[layer].register_forward_hook(getnet) + netmodel.forwardLayer(data,layer=layer) + output = layerout[0][:,:,:,:] + + handle.remove() + data.detach() + target.detach() + + output = torch.reshape(output.transpose(0,1),(8,-1)) + sample = torch.cat((sample,output),1) + if iteration > 0 and batch_idx >= (iteration-1): + break + + sample_mean=torch.mean(sample,dim=1,keepdim=True) + dat1 = torch.mean(torch.abs(sample - sample_mean),dim=1,keepdim=True) + dat2 = (sample - sample_mean)/dat1 + dat2 = torch.mean(dat2 * dat2,dim=1) + return dat2.cpu().detach().numpy() + +def weightToImage(weight,filename): + a2 = model.features[layear].weight.data[channel] + a2 = a2.cpu().detach().numpy().reshape(( a2.shape[-2], a2.shape[-1])) + + a2min = np.min(a2) + a2max = np.max(a2) + a2 = (a2 - a2min)*255.0/(a2max-a2min) + a2 = a2.astype(int) + cv2.imwrite(filename,a2) + +def GetRandomSocre(netmodel,layer,dataloader,iteration=-1): + weightshape = netmodel.features[layer].weight.data.shape + newweight = np.random.uniform(-1.0,1.0,weightshape).astype("float32") + netmodel.features[layer].weight.data=utils.SetDevice(torch.from_numpy(newweight)) + + score = GetSample(netmodel,0,dataloader,iteration) + return np.array(score), newweight + + + +layer = 0 + +weightshape = list(model.features[layer].weight.data.shape) +channels = weightshape[0] +weightshape[0] = 0 +minactive = np.empty((0)) +minweight = np.empty(weightshape) + +for i in range(300000): + score,weight = GetRandomSocre(model,layer,traindata,iteration=10) + + minactive = np.append(minactive, score) + minweight = np.concatenate((minweight, weight)) + + index = minactive.argsort() + minactive = minactive[index[0:channels]] + minweight = minweight[index[0:channels]] + + print("search random :" + str(i)) + if i % 10000 == 0: + utils.SaveModel(model, CurrentPath+"/checkpoint.pkl") + + +# for i in range(minweight.shape[0]): +# a2 = minweight[i].reshape((minweight.shape[2],minweight.shape[3])) +# a2min = np.min(a2) +# a2max = np.max(a2) +# a2 = (a2 - a2min)*255.0/(a2max-a2min) +# a2 = a2.astype(int) +# cv2.imwrite(CurrentPath+"/image/c"+str(i)+"_"+str(minactive[i])+".png",a2) + + +model.features[layer].weight.data=utils.SetDevice(torch.from_numpy(minweight)) +utils.SaveModel(model,CurrentPath+"/checkpoint.pkl") +print("save model sucess") diff --git a/FilterEvaluator/Model.py b/FilterEvaluator/Model.py new file mode 100644 index 0000000..b67007a --- /dev/null +++ b/FilterEvaluator/Model.py @@ -0,0 +1,95 @@ +from __future__ import print_function +import os +import sys +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +sys.path.append(CurrentPath+'../tools') +sys.path.append(CurrentPath+'../') +from tools import UniModule + +class Net535(UniModule.ModuleBase): + def __init__(self): + super(Net535, self).__init__() + layers = [] + layers += [nn.Conv2d(1, 8, kernel_size=5,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 10, kernel_size=5,bias=False)] + self.features = nn.Sequential(*layers) + + def forward(self, x): + x = self.features(x) + x = x.view(-1, 1*10) + return F.log_softmax(x, dim=1) + +class Net5Grad35(UniModule.ModuleBase): + def __init__(self): + super(Net5Grad35, self).__init__() + layers = [] + layers += [nn.Conv2d(1, 8, kernel_size=5,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 10, kernel_size=5,bias=False)] + self.features = nn.Sequential(*layers) + self.SetConvRequiresGrad(0,False) + + def forward(self, x): + x = self.features(x) + x = x.view(-1, 1*10) + return F.log_softmax(x, dim=1) + +class Net3335(UniModule.ModuleBase): + def __init__(self): + super(Net3335, self).__init__() + layers = [] + layers += [nn.Conv2d(1, 8, kernel_size=3,bias=False,padding=1),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.Sigmoid()] + layers += [nn.Conv2d(8, 10, kernel_size=5,bias=False)] + self.features = nn.Sequential(*layers) + def forward(self, x): + x = self.features(x) + x = x.view(-1, 1*10) + return F.log_softmax(x, dim=1) + +class Net3Grad335(UniModule.ModuleBase): + def __init__(self): + super(Net3Grad335, self).__init__() + layers = [] + layers += [nn.Conv2d(1, 8, kernel_size=3,bias=False,padding=1),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.Sigmoid()] + layers += [nn.Conv2d(8, 10, kernel_size=5,bias=False)] + self.features = nn.Sequential(*layers) + self.SetConvRequiresGrad(0,False) + def forward(self, x): + x = self.features(x) + x = x.view(-1, 1*10) + return F.log_softmax(x, dim=1) + +class Net31535(UniModule.ModuleBase): + def __init__(self): + super(Net31535, self).__init__() + layers = [] + layers += [nn.Conv2d(1, 8, kernel_size=[1,3],bias=False,padding=[0,1]),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=5,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3,bias=False),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 10, kernel_size=5,bias=False)] + self.features = nn.Sequential(*layers) + + def forward(self, x): + x = self.features(x) + x = x.view(-1, 1*10) + return F.log_softmax(x, dim=1) + + + + diff --git a/FilterEvaluator/TrainNetwork.py b/FilterEvaluator/TrainNetwork.py new file mode 100644 index 0000000..23ea5a4 --- /dev/null +++ b/FilterEvaluator/TrainNetwork.py @@ -0,0 +1,58 @@ +from __future__ import print_function +import os +import sys +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from torch.utils.data import Dataset, DataLoader +from PIL import Image +import random +import cv2 + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + +sys.path.append(CurrentPath+'../tools') +sys.path.append(CurrentPath+'../') + +import Model +from tools import utils, Train, Loader + +batchsize = 128 + + +# model = utils.SetDevice(Model.Net535()) +# model = utils.SetDevice(Model.Net5Grad35()) +# model = utils.SetDevice(Model.Net31535()) +# model = utils.SetDevice(Model.Net3335()) # Test set: Average loss: 1.5294, Accuracy: 4501/10000 (45%) +model = utils.SetDevice(Model.Net3Grad335()) + + + + +model = utils.LoadModel(model, CurrentPath+"/checkpoint.pkl") + +optimizer = optim.SGD(model.parameters(), lr=0.01) + + +# traindata, testdata = Loader.MNIST(batchsize, num_workers=8) +# traindata, testdata = Loader.RandomMnist(batchsize, num_workers=8, style="Vertical") +# traindata, testdata = Loader.RandomMnist(batchsize, num_workers=8, style="Horizontal") +# traindata, testdata = Loader.RandomMnist(batchsize, num_workers=8, style="VerticalOneLine") +# traindata, testdata = Loader.RandomMnist(batchsize, num_workers=8, style="VerticalZebra") +traindata, testdata = Loader.Cifar10Mono(batchsize, num_workers=8) + + + +for i in range(300): + Train.train(model,traindata,optimizer,epoch=i) + Train.test(model,testdata) + +utils.SaveModel(model,CurrentPath+"/checkpoint.pkl") diff --git a/FilterEvaluator/checkpoint.pkl b/FilterEvaluator/checkpoint.pkl new file mode 100644 index 0000000..47ff896 Binary files /dev/null and b/FilterEvaluator/checkpoint.pkl differ diff --git a/FilterEvaluator/checkpointSGD.pkl b/FilterEvaluator/checkpointSGD.pkl new file mode 100644 index 0000000..cfc6f12 Binary files /dev/null and b/FilterEvaluator/checkpointSGD.pkl differ diff --git a/FilterEvaluator/image/c0_1.1933330297470093.png b/FilterEvaluator/image/c0_1.1933330297470093.png new file mode 100644 index 0000000..e240f8b Binary files /dev/null and b/FilterEvaluator/image/c0_1.1933330297470093.png differ diff --git a/FilterEvaluator/image/c1_1.1936779022216797.png b/FilterEvaluator/image/c1_1.1936779022216797.png new file mode 100644 index 0000000..1e67d79 Binary files /dev/null and b/FilterEvaluator/image/c1_1.1936779022216797.png differ diff --git a/FilterEvaluator/image/c2_1.193914771080017.png b/FilterEvaluator/image/c2_1.193914771080017.png new file mode 100644 index 0000000..6cfd3c1 Binary files /dev/null and b/FilterEvaluator/image/c2_1.193914771080017.png differ diff --git a/FilterEvaluator/image/c3_1.1940335035324097.png b/FilterEvaluator/image/c3_1.1940335035324097.png new file mode 100644 index 0000000..c530008 Binary files /dev/null and b/FilterEvaluator/image/c3_1.1940335035324097.png differ diff --git a/FilterEvaluator/image/c4_1.1942846775054932.png b/FilterEvaluator/image/c4_1.1942846775054932.png new file mode 100644 index 0000000..3f569f2 Binary files /dev/null and b/FilterEvaluator/image/c4_1.1942846775054932.png differ diff --git a/FilterEvaluator/image/c5_1.194313645362854.png b/FilterEvaluator/image/c5_1.194313645362854.png new file mode 100644 index 0000000..efd439e Binary files /dev/null and b/FilterEvaluator/image/c5_1.194313645362854.png differ diff --git a/FilterEvaluator/image/c6_1.1943182945251465.png b/FilterEvaluator/image/c6_1.1943182945251465.png new file mode 100644 index 0000000..06c9c54 Binary files /dev/null and b/FilterEvaluator/image/c6_1.1943182945251465.png differ diff --git a/FilterEvaluator/image/c7_1.194318413734436.png b/FilterEvaluator/image/c7_1.194318413734436.png new file mode 100644 index 0000000..b55bd56 Binary files /dev/null and b/FilterEvaluator/image/c7_1.194318413734436.png differ diff --git a/Other/GenPrecisionImage.py b/Other/GenPrecisionImage.py new file mode 100755 index 0000000..c6297b6 --- /dev/null +++ b/Other/GenPrecisionImage.py @@ -0,0 +1,58 @@ +import matplotlib +matplotlib.use('Agg') + +import sys +sys.path.append("./coco/PythonAPI/") +import json +import time +import argparse +import pprint + +import numpy as np +from pycocotools.coco import COCO +import shutil +import cv2 +import torch +import PIL +import torchvision +from torchvision import transforms, utils +import re +import matplotlib.pyplot as plt + +testtxt=open('TestPrecision.txt','r') +valtxt=open('ValPrecision.txt','r') + +test=[] +for line in testtxt: + line = line.strip('\n') + line = line.rstrip() + #words = line.split() + test.append(float(line)) + +val=[] +for line in valtxt: + line = line.strip('\n') + line = line.rstrip() + #words = line.split() + val.append(float(line)) + + + + + +y1 = np.array(test) +y2 = np.array(val) +x1=np.arange(len(test)) +x2=np.arange(len(val)) + +plt.figure() + + +plt.plot(x1, y1, color='red', label='testing') +plt.plot(x2, y2, color='green', label='validation') +plt.title('') +plt.xlabel('epoch') +plt.ylabel('precision') +plt.legend() +plt.savefig('result.png',dpi=600) +#plt.show() \ No newline at end of file diff --git a/Other/InvertCNN.py b/Other/InvertCNN.py new file mode 100755 index 0000000..b679150 --- /dev/null +++ b/Other/InvertCNN.py @@ -0,0 +1,292 @@ +from __future__ import print_function +import os +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom + + +# viz=Visdom() +# viz.delete_env('main') + + +batchsize=128 + +DATA_FOLDER = os.path.split(os.path.realpath(__file__))[0]+'/Dataset/' +print("Dataset Path :" + DATA_FOLDER) + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.conv1 = nn.Conv2d(1, 10, kernel_size=5) + self.conv2 = nn.Conv2d(10, 20, kernel_size=5) + self.conv2_drop = nn.Dropout2d() + self.fc1 = nn.Linear(320, 50) + self.fc2 = nn.Linear(50, 10) + + # Spatial transformer localization-network + self.localization = nn.Sequential( + nn.Conv2d(1, 8, kernel_size=7), + nn.MaxPool2d(2, stride=2), + nn.ReLU(True), + nn.Conv2d(8, 10, kernel_size=5), + nn.MaxPool2d(2, stride=2), + nn.ReLU(True) + ) + + # Regressor for the 3 * 2 affine matrix + self.fc_loc = nn.Sequential( + nn.Linear(10 * 3 * 3, 32), + nn.ReLU(True), + nn.Linear(32, 3 * 2) + ) + + # Initialize the weights/bias with identity transformation + self.fc_loc[2].weight.data.zero_() + self.fc_loc[2].bias.data.copy_(torch.tensor([1, 0, 0, 0, 1, 0], dtype=torch.float)) + + # Spatial transformer network forward function + def stn(self, x): + xs = self.localization(x) + xs = xs.view(-1, 10 * 3 * 3) + theta = self.fc_loc(xs) + theta = theta.view(-1, 2, 3) + + grid = F.affine_grid(theta, x.size()) + x = F.grid_sample(x, grid) + + return x + + def forward(self, x): + # transform the input + x = self.stn(x) + + # Perform the usual forward pass + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) + x = x.view(-1, 320) + x = F.relu(self.fc1(x)) + x = F.dropout(x, training=self.training) + x = self.fc2(x) + return F.log_softmax(x, dim=1) + +#99.01 +class NetMnist(nn.Module): + def __init__(self): + super(NetMnist, self).__init__() + channels=32 + self.conv1_1 = nn.Conv2d(1, channels, kernel_size=5 , padding=0) + + self.conv2_1 = nn.Conv2d(channels, channels, kernel_size=3, padding=0) + self.conv2_2 = nn.Conv2d(channels, channels, kernel_size=3, padding=0) + # self.conv2_3 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + # self.conv2_4 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + + self.conv3_1 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + self.conv3_2 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + self.conv3_3 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + self.conv3_4 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + + self.conv3_5 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + self.conv3_6 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + self.conv3_7 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + self.conv3_8 = nn.Conv2d(channels, channels, kernel_size=5, padding=0) + + self.fc1 = nn.Linear(256, 10) + + def forward(self, x): + + con1 = F.relu(F.max_pool2d(self.conv1_1(x), 2)) + + con2_1 = F.relu(F.max_pool2d(self.conv2_1(con1), 2)) + con2_2 = F.relu(F.max_pool2d(self.conv2_2(con1), 2)) + # con2_3 = F.relu(F.max_pool2d(self.conv2_3(con1), 2)) + # con2_4 = F.relu(F.max_pool2d(self.conv2_4(con1), 2)) + + con3_1 = F.relu((self.conv3_1(con2_1))) + con3_2 = F.relu((self.conv3_2(con2_1))) + con3_3 = F.relu((self.conv3_3(con2_1))) + con3_4 = F.relu((self.conv3_4(con2_1))) + + con3_5 = F.relu((self.conv3_1(con2_2))) + con3_6 = F.relu((self.conv3_2(con2_2))) + con3_7 = F.relu((self.conv3_3(con2_2))) + con3_8 = F.relu((self.conv3_4(con2_2))) + + cc=[con3_1,con3_2,con3_3,con3_4,con3_5,con3_6,con3_7,con3_8] + #cc=[con4_1,con4_2,con4_3,con4_4,con4_5,con4_6,con4_7,con4_8] + ccs=torch.cat(cc,1) + ccs=ccs.view(-1,256) + x = self.fc1(ccs) + return x + #return F.log_softmax(x, dim=1) + +class NetMnistRatio(nn.Module): + def __init__(self): + super(NetMnistRatio, self).__init__() + channels=32 + + self.conv1 = nn.Conv2d(1, channels, kernel_size=5) + self.conv2 = nn.Conv2d(channels, channels * 2, kernel_size=3) + self.conv3 = nn.Conv2d(channels*2, channels * 4, kernel_size=5) + + self.fc1 = nn.Linear(128, 10) + + def forward(self, x): + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2(x), 2)) + x = F.relu(self.conv3(x)) + + x = x.view(-1, 128) + x = self.fc1(x) + return x + +#96.4 train slow +class NetMnistNormal(nn.Module): + def __init__(self): + super(NetMnistNormal, self).__init__() + channels=128 + + self.conv1 = nn.Conv2d(1, 10, kernel_size=5) + self.conv2 = nn.Conv2d(10, 20, kernel_size=5) + self.conv2_drop = nn.Dropout2d() + self.fc1 = nn.Linear(320, 50) + self.fc2 = nn.Linear(50, 10) + + def forward(self, x): + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) + x = x.view(-1, 320) + x = F.relu(self.fc1(x)) + x = F.dropout(x, training=self.training) + x = self.fc2(x) + return x + +#98.9 +class NetMnistFCNN(nn.Module): + def __init__(self): + super(NetMnistFCNN, self).__init__() + channels=128 + self.conv1 = nn.Conv2d(1, channels, kernel_size=3 , padding=1) + + self.conv2 = nn.Conv2d(channels, channels, kernel_size=3, padding=0) + + self.conv3 = nn.Conv2d(channels, channels, kernel_size=3, padding=1) + + self.conv4 = nn.Conv2d(channels, 10, kernel_size=3, padding=0) + + def forward(self, x): + + con1 = F.relu(F.max_pool2d(self.conv1(x), 2)) + + con2 = F.relu(F.max_pool2d(self.conv2(con1), 2)) + + con3 = F.relu(F.max_pool2d((self.conv3(con2)),2)) + + con4 = self.conv4(con3) + + x = con4.view(-1,10) + + return x + + +#region loder dataset +train_loader = torch.utils.data.DataLoader( + datasets.MNIST(root=DATA_FOLDER, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=True, num_workers=8) +# Test dataset +val_loader = torch.utils.data.DataLoader( + datasets.MNIST(root=DATA_FOLDER, train=False, transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=True, num_workers=8) +#endregion loder dataset + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +model = (NetMnistRatio()).to(device) +######################################################### +optimizer = optim.Adadelta(model.parameters(), lr=0.000001) +lossfunc=torch.nn.CrossEntropyLoss().to(device) +#lossfunc=torch.nn.NLLLoss() + +# gpu_ids=[0,1,2,3] +# model = torch.nn.DataParallel(model, device_ids = gpu_ids) +# optimizer = torch.nn.DataParallel(optimizer, device_ids = gpu_ids) + +def train(epoch): + model.train() + correct = 0 + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + + + + output = model(data) + loss = lossfunc(output, target) + loss.backward() + optimizer.step() + + pred = output.max(1, keepdim=True)[1] + correct += pred.eq(target.view_as(pred)).sum().item() + + if batch_idx == (len(train_loader) - 2): + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item())) + lens = len(train_loader.dataset) + correct = float(correct) / lens + testtxt.write(str(correct)+'\n') + print('Test set: val: {:.6f}'.format(correct)) +def val(): + with torch.no_grad(): + model.eval() + correct = 0 + for data, target in val_loader: + data, target = data.to(device), target.to(device) + output = model(data) + # get the index of the max log-probability + pred = output.max(1, keepdim=True)[1] + correct += pred.eq(target.view_as(pred)).sum().item() + lens=len(val_loader.dataset) + correct = float(correct)/lens + valtxt.write(str(correct) + '\n') + print('Val set: val: {:.6f}'.format(correct)) + + +testtxt=open('TestPrecision.txt','w') +valtxt=open('ValPrecision.txt','w') + +# optimizer.zero_grad() + +for epoch in range(1, 1000): + train(epoch) + val() + + + + + +# mm = model.conv1(ad) +# datodis = mm * 256 + 128 +# datodis = datodis.view(64, 1, 24 * 10, 24) +# imaglis.append(datodis.detach().cpu().numpy()[0:8,:,:,:]) + + +#cdsa=np.reshape(np.array(imaglis),newshape=[-1,1,240,24]) +#viz.images(cdsa, win=imagewin, opts=dict(title='Random!', caption='How random.'), nrow=8,padding=2) + + +# Visualize the STN transformation on some input batch +# visualize_stn() + +#plt.ioff() +#plt.show() + diff --git a/Other/TestPrecision.txt b/Other/TestPrecision.txt new file mode 100644 index 0000000..e69de29 diff --git a/Other/UnSuppervise.py b/Other/UnSuppervise.py new file mode 100755 index 0000000..16bc9d3 --- /dev/null +++ b/Other/UnSuppervise.py @@ -0,0 +1,122 @@ +from __future__ import print_function +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torch.utils.data import Dataset, DataLoader + + +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom +import cv2 + + + +# viz=Visdom() +# viz.delete_env('main') + + +DATA_FOLDER = os.path.split(os.path.realpath(__file__))[0]+'/Dataset/' +print("Dataset Path :" + DATA_FOLDER) + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Training dataset +train_loader = torch.utils.data.DataLoader( + datasets.MNIST(root=DATA_FOLDER, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + #transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=1, shuffle=True, num_workers=1) + +class NetMnist(nn.Module): + def __init__(self): + super(NetMnist, self).__init__() + channels=1 + self.conv1 = nn.Conv2d(1, channels, kernel_size=3 , padding=0) + + def forward(self, x): + + da = self.conv1.weight.data + da = da.view(9) + damean=da.mean() + da = da - damean + daabssum=da.abs().sum() + da = da/daabssum + da = da.view(1,1,3,3) + self.conv1.weight.data = da + con1 = self.conv1(x) + con1 = con1.abs() + + # con1 = F.sigmoid(F.max_pool2d(self.conv1(x), 2)) + # + # con2 = F.sigmoid(F.max_pool2d(self.conv2(con1), 2)) + # + # con3 = F.sigmoid(F.max_pool2d((self.conv3(con2)),2)) + # + # con4 = F.sigmoid(self.conv4(con3)) + # + # x = con4.view(-1,10) + + return con1 + + +model = (NetMnist()).to(device) + + + +######################################################### +optimizer = optim.SGD(model.parameters(), lr=0.1) +#lossfunc=torch.nn.CrossEntropyLoss() +lossfunc=torch.nn.MSELoss() + + + +gpu_ids=[0,1,2,3] +#model = torch.nn.DataParallel(model, device_ids = gpu_ids) +#optimizer = torch.nn.DataParallel(optimizer, device_ids = gpu_ids) + + +def train(epoch): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + + optimizer.zero_grad() + + output = model(data) + target = output + 0.1 + + var_no_grad = target.detach() + loss = lossfunc(output, var_no_grad) + + + + + loss.backward() + optimizer.step() + + if batch_idx % 10 == 0 and batch_idx>0 : + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item())) + + da=model.conv1.weight.data + da = da.view(9) + damean = da.mean() + da = da - damean + daabssum = da.abs().sum() + da = da / daabssum + da = da.view(1, 1, 3, 3) + + print(da) + + + + +for epoch in range(1, 3000): + train(epoch) diff --git a/Other/UnSupperviseCifar.py b/Other/UnSupperviseCifar.py new file mode 100755 index 0000000..c2d4b9e --- /dev/null +++ b/Other/UnSupperviseCifar.py @@ -0,0 +1,170 @@ +from __future__ import print_function +import os +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torch.utils.data import Dataset, DataLoader + + +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom + + +# viz=Visdom() +# viz.delete_env('main') + + +DATA_FOLDER = os.path.split(os.path.realpath(__file__))[0]+'/Dataset/' +print("Dataset Path :" + DATA_FOLDER) + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +#region User Define Radom Dataset +def default_loader(path): + da=np.random.randint(0,255,(1,28,28)).astype("float32") + da[0,15:17,15:17]=255 + return da + +class MyDataset(Dataset): + def __init__(self,imagepath, transform=None, target_transform=None, loader=default_loader): + imgs = [] + for line in range(10000): + imgs.append((imagepath,int(0))) + self.imgs = imgs + self.transform = transform + self.target_transform = target_transform + self.loader = loader + + def __getitem__(self, index): + fn, label = self.imgs[index] + img = self.loader(fn) + img = torch.from_numpy(img) + return img,label + + def __len__(self): + return len(self.imgs) + + +train_data=MyDataset(imagepath="" , transform=transforms.Compose([ + #transforms.Resize(256), + #transforms.CenterCrop(224), + # transforms.RandomHorizontalFlip(), + # transforms.RandomAffine(degrees=30,translate=(0.2,0.2),scale=(0.8,1.2),resample=PIL.Image.BILINEAR,fillcolor=0), + #transforms.ColorJitter(), + transforms.ToTensor(), + #transforms.Normalize(mean = (0.5, 0.5, 0.5), std = (0.5, 0.5, 0.5)), + ])) + +train_loader = torch.utils.data.DataLoader(train_data, + batch_size=64, + shuffle=True,#if random data + drop_last=True, + num_workers=1, + #collate_fn = collate_fn + ) +#endregion + + + + +# Training dataset +train_loader = torch.utils.data.DataLoader( + datasets.CIFAR10(root=DATA_FOLDER, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + #transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=1, shuffle=True, num_workers=1) + + +class NetMnist(nn.Module): + def __init__(self): + super(NetMnist, self).__init__() + channels=1 + self.conv1 = nn.Conv2d(3, channels, kernel_size=3 , padding=0) + + def forward(self, x): + + da = self.conv1.weight.data + da = da.view(27) + damean=da.mean() + da = da - damean + daabssum=da.abs().sum() + da = da/daabssum + da = da.view(1,3,3,3) + self.conv1.weight.data = da + con1 = self.conv1(x) + con1 = con1.abs() + + # con1 = F.sigmoid(F.max_pool2d(self.conv1(x), 2)) + # + # con2 = F.sigmoid(F.max_pool2d(self.conv2(con1), 2)) + # + # con3 = F.sigmoid(F.max_pool2d((self.conv3(con2)),2)) + # + # con4 = F.sigmoid(self.conv4(con3)) + # + # x = con4.view(-1,10) + + return con1 + + +model = (NetMnist()).to(device) + + + +######################################################### +optimizer = optim.SGD(model.parameters(), lr=1) +#lossfunc=torch.nn.CrossEntropyLoss() +lossfunc=torch.nn.MSELoss() + + + +gpu_ids=[0,1,2,3] +#model = torch.nn.DataParallel(model, device_ids = gpu_ids) +#optimizer = torch.nn.DataParallel(optimizer, device_ids = gpu_ids) + + +def train(epoch): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + + optimizer.zero_grad() + + output = model(data) + target = output + 0.1 + + var_no_grad = target.detach() + loss = lossfunc(output, var_no_grad) + + + + + loss.backward() + optimizer.step() + + if batch_idx % 1 == 0 and batch_idx>0 : + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item())) + + da=model.conv1.weight.data + da = da.view(27) + damean = da.mean() + da = da - damean + daabssum = da.abs().sum() + da = da / daabssum + da = da.view(1, 3, 3, 3) + + print(da) + + + +for epoch in range(1, 3000): + train(epoch) diff --git a/Other/UnSupperviseSelfData.py b/Other/UnSupperviseSelfData.py new file mode 100755 index 0000000..bd08dac --- /dev/null +++ b/Other/UnSupperviseSelfData.py @@ -0,0 +1,186 @@ +from __future__ import print_function +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torch.utils.data import Dataset, DataLoader + + +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom + + +# viz=Visdom() +# viz.delete_env('main') + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + + +def default_loader(path): + da=np.random.randint(0,255,(1,28,28)).astype("float32") + da[0,15:17,15:17]=255 + return da + +class MyDataset(Dataset): + def __init__(self,imagepath, transform=None, target_transform=None, loader=default_loader): + imgs = [] + for line in range(10000): + imgs.append((imagepath,int(0))) + self.imgs = imgs + self.transform = transform + self.target_transform = target_transform + self.loader = loader + + def __getitem__(self, index): + fn, label = self.imgs[index] + img = self.loader(fn) + img = torch.from_numpy(img) + return img,label + + def __len__(self): + return len(self.imgs) + + +train_data=MyDataset(imagepath="" , transform=transforms.Compose([ + #transforms.Resize(256), + #transforms.CenterCrop(224), + # transforms.RandomHorizontalFlip(), + # transforms.RandomAffine(degrees=30,translate=(0.2,0.2),scale=(0.8,1.2),resample=PIL.Image.BILINEAR,fillcolor=0), + #transforms.ColorJitter(), + transforms.ToTensor(), + #transforms.Normalize(mean = (0.5, 0.5, 0.5), std = (0.5, 0.5, 0.5)), + ])) + +train_loader = torch.utils.data.DataLoader(train_data, + batch_size=64, + shuffle=True,#if random data + drop_last=True, + num_workers=1, + #collate_fn = collate_fn + ) + +# # Training dataset +# train_loader = torch.utils.data.DataLoader( +# datasets.CIFAR10(root='.', train=True, download=True, +# transform=transforms.Compose([ +# transforms.ToTensor(), +# #transforms.Normalize((0.1307,), (0.3081,)) +# ])), batch_size=128, shuffle=True, num_workers=1) +# # Test dataset +# val_loader = torch.utils.data.DataLoader( +# datasets.CIFAR10(root='.', train=False, transform=transforms.Compose([ +# transforms.ToTensor(), +# transforms.Normalize((0.1307,), (0.3081,)) +# ])), batch_size=32, shuffle=True, num_workers=1) + + +class NetMnist(nn.Module): + def __init__(self): + super(NetMnist, self).__init__() + channels=1 + self.conv1 = nn.Conv2d(1, channels, kernel_size=3 , padding=0) + + def forward(self, x): + + da = self.conv1.weight.data + da = da.view(9) + damean=da.mean() + da = da - damean + daabssum=da.abs().sum() + da = da/daabssum + da = da.view(1,1,3,3) + self.conv1.weight.data = da + con1 = self.conv1(x) + con1 = con1.abs() + + # con1 = F.sigmoid(F.max_pool2d(self.conv1(x), 2)) + # + # con2 = F.sigmoid(F.max_pool2d(self.conv2(con1), 2)) + # + # con3 = F.sigmoid(F.max_pool2d((self.conv3(con2)),2)) + # + # con4 = F.sigmoid(self.conv4(con3)) + # + # x = con4.view(-1,10) + + return con1 + + +model = (NetMnist()).to(device) + + + +######################################################### +optimizer = optim.SGD(model.parameters(), lr=0.1) +#lossfunc=torch.nn.CrossEntropyLoss() +lossfunc=torch.nn.MSELoss() + + + +gpu_ids=[0,1,2,3] +#model = torch.nn.DataParallel(model, device_ids = gpu_ids) +#optimizer = torch.nn.DataParallel(optimizer, device_ids = gpu_ids) + + +def train(epoch): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + + optimizer.zero_grad() + + output = model(data) + target = output + 0.1 + + var_no_grad = target.detach() + loss = lossfunc(output, var_no_grad) + + + + + loss.backward() + optimizer.step() + + if batch_idx % 10 == 0 and batch_idx>0 : + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item())) + + da=model.conv1.weight.data + da = da.view(9) + damean = da.mean() + da = da - damean + daabssum = da.abs().sum() + da = da / daabssum + da = da.view(1, 1, 3, 3) + + print(da) + +def val(): + with torch.no_grad(): + model.eval() + + correct = 0 + for data, target in val_loader: + data, target = data.to(device), target.to(device) + output = model(data) + + # get the index of the max log-probability + pred = output.max(1, keepdim=True)[1] + correct += pred.eq(target.view_as(pred)).sum().item() + lens=len(val_loader.dataset) + correct = float(correct)/lens + print('\nTest set: val: {:.6f}\n'.format(correct)) + + + + + +for epoch in range(1, 3000): + train(epoch) + + #val() \ No newline at end of file diff --git a/Other/ValPrecision.txt b/Other/ValPrecision.txt new file mode 100644 index 0000000..e69de29 diff --git a/Other/sequence_models_tutorial.py b/Other/sequence_models_tutorial.py new file mode 100755 index 0000000..7396bfc --- /dev/null +++ b/Other/sequence_models_tutorial.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +r""" +Sequence Models and Long-Short Term Memory Networks +=================================================== + +At this point, we have seen various feed-forward networks. That is, +there is no state maintained by the network at all. This might not be +the behavior we want. Sequence models are central to NLP: they are +models where there is some sort of dependence through time between your +inputs. The classical example of a sequence model is the Hidden Markov +Model for part-of-speech tagging. Another example is the conditional +random field. + +A recurrent neural network is a network that maintains some kind of +state. For example, its output could be used as part of the next input, +so that information can propogate along as the network passes over the +sequence. In the case of an LSTM, for each element in the sequence, +there is a corresponding *hidden state* :math:`h_t`, which in principle +can contain information from arbitrary points earlier in the sequence. +We can use the hidden state to predict words in a language model, +part-of-speech tags, and a myriad of other things. + + +LSTM's in Pytorch +~~~~~~~~~~~~~~~~~ + +Before getting to the example, note a few things. Pytorch's LSTM expects +all of its inputs to be 3D tensors. The semantics of the axes of these +tensors is important. The first axis is the sequence itself, the second +indexes instances in the mini-batch, and the third indexes elements of +the input. We haven't discussed mini-batching, so lets just ignore that +and assume we will always have just 1 dimension on the second axis. If +we want to run the sequence model over the sentence "The cow jumped", +our input should look like + +.. math:: + + + \begin{bmatrix} + \overbrace{q_\text{The}}^\text{row vector} \\ + q_\text{cow} \\ + q_\text{jumped} + \end{bmatrix} + +Except remember there is an additional 2nd dimension with size 1. + +In addition, you could go through the sequence one at a time, in which +case the 1st axis will have size 1 also. + +Let's see a quick example. +""" + +# Author: Robert Guthrie + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim + +torch.manual_seed(1) + +###################################################################### +# Example: An LSTM for Part-of-Speech Tagging +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# In this section, we will use an LSTM to get part of speech tags. We will +# not use Viterbi or Forward-Backward or anything like that, but as a +# (challenging) exercise to the reader, think about how Viterbi could be +# used after you have seen what is going on. +# +# The model is as follows: let our input sentence be +# :math:`w_1, \dots, w_M`, where :math:`w_i \in V`, our vocab. Also, let +# :math:`T` be our tag set, and :math:`y_i` the tag of word :math:`w_i`. +# Denote our prediction of the tag of word :math:`w_i` by +# :math:`\hat{y}_i`. +# +# This is a structure prediction, model, where our output is a sequence +# :math:`\hat{y}_1, \dots, \hat{y}_M`, where :math:`\hat{y}_i \in T`. +# +# To do the prediction, pass an LSTM over the sentence. Denote the hidden +# state at timestep :math:`i` as :math:`h_i`. Also, assign each tag a +# unique index (like how we had word\_to\_ix in the word embeddings +# section). Then our prediction rule for :math:`\hat{y}_i` is +# +# .. math:: \hat{y}_i = \text{argmax}_j \ (\log \text{Softmax}(Ah_i + b))_j +# +# That is, take the log softmax of the affine map of the hidden state, +# and the predicted tag is the tag that has the maximum value in this +# vector. Note this implies immediately that the dimensionality of the +# target space of :math:`A` is :math:`|T|`. +# +# +# Prepare data: + +def prepare_sequence(seq, to_ix): + idxs = [to_ix[w] for w in seq] + return torch.tensor(idxs, dtype=torch.long) + + +training_data = [ + ("The dog ate the apple".split(), ["DET", "NN", "V", "DET", "NN"]), + ("Everybody read that book".split(), ["NN", "V", "DET", "NN"]) +] +word_to_ix = {} +for sent, tags in training_data: + for word in sent: + if word not in word_to_ix: + word_to_ix[word] = len(word_to_ix) +print(word_to_ix) +tag_to_ix = {"DET": 0, "NN": 1, "V": 2} + +# These will usually be more like 32 or 64 dimensional. +# We will keep them small, so we can see how the weights change as we train. +EMBEDDING_DIM = 6 +HIDDEN_DIM = 6 + +###################################################################### +# Create the model: + + +class LSTMTagger(nn.Module): + + def __init__(self, embedding_dim, hidden_dim, vocab_size, tagset_size): + super(LSTMTagger, self).__init__() + self.hidden_dim = hidden_dim + + self.word_embeddings = nn.Embedding(vocab_size, embedding_dim) + + # The LSTM takes word embeddings as inputs, and outputs hidden states + # with dimensionality hidden_dim. + self.lstm = nn.LSTM(embedding_dim, hidden_dim ) + + # The linear layer that maps from hidden state space to tag space + self.hidden2tag = nn.Linear(hidden_dim, tagset_size) + self.hidden = self.init_hidden() + + def init_hidden(self): + # Before we've done anything, we dont have any hidden state. + # Refer to the Pytorch documentation to see exactly + # why they have this dimensionality. + # The axes semantics are (num_layers, minibatch_size, hidden_dim) + return (torch.zeros(1, 1, self.hidden_dim), + torch.zeros(1, 1, self.hidden_dim)) + + def forward(self, sentence): + embeds = self.word_embeddings(sentence) + lstm_out, self.hidden = self.lstm( + embeds.view(len(sentence), 1, -1), self.hidden) + tag_space = self.hidden2tag(lstm_out.view(len(sentence), -1)) + tag_scores = F.log_softmax(tag_space, dim=1) + return tag_scores + +###################################################################### +# Train the model: + + +model = LSTMTagger(EMBEDDING_DIM, HIDDEN_DIM, len(word_to_ix), len(tag_to_ix)) +loss_function = nn.NLLLoss() +optimizer = optim.SGD(model.parameters(), lr=0.1) + +# See what the scores are before training +# Note that element i,j of the output is the score for tag j for word i. +# Here we don't need to train, so the code is wrapped in torch.no_grad() +with torch.no_grad(): + inputs = prepare_sequence(training_data[0][0], word_to_ix) + tag_scores = model(inputs) + print(tag_scores) + +for epoch in range(300): # again, normally you would NOT do 300 epochs, it is toy data + for sentence, tags in training_data: + # Step 1. Remember that Pytorch accumulates gradients. + # We need to clear them out before each instance + model.zero_grad() + + # Also, we need to clear out the hidden state of the LSTM, + # detaching it from its history on the last instance. + model.hidden = model.init_hidden() + + # Step 2. Get our inputs ready for the network, that is, turn them into + # Tensors of word indices. + sentence_in = prepare_sequence(sentence, word_to_ix) + targets = prepare_sequence(tags, tag_to_ix) + + # Step 3. Run our forward pass. + tag_scores = model(sentence_in) + + # Step 4. Compute the loss, gradients, and update the parameters by + # calling optimizer.step() + loss = loss_function(tag_scores, targets) + loss.backward() + optimizer.step() + print("epoch:"+str(epoch)) + +# See what the scores are after training +with torch.no_grad(): + inputs = prepare_sequence(training_data[0][0], word_to_ix) + tag_scores = model(inputs) + + # The sentence is "the dog ate the apple". i,j corresponds to score for tag j + # for word i. The predicted tag is the maximum scoring tag. + # Here, we can see the predicted sequence below is 0 1 2 0 1 + # since 0 is index of the maximum value of row 1, + # 1 is the index of maximum value of row 2, etc. + # Which is DET NOUN VERB DET NOUN, the correct sequence! + print(tag_scores) + + +###################################################################### +# Exercise: Augmenting the LSTM part-of-speech tagger with character-level features +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# In the example above, each word had an embedding, which served as the +# inputs to our sequence model. Let's augment the word embeddings with a +# representation derived from the characters of the word. We expect that +# this should help significantly, since character-level information like +# affixes have a large bearing on part-of-speech. For example, words with +# the affix *-ly* are almost always tagged as adverbs in English. +# +# To do this, let :math:`c_w` be the character-level representation of +# word :math:`w`. Let :math:`x_w` be the word embedding as before. Then +# the input to our sequence model is the concatenation of :math:`x_w` and +# :math:`c_w`. So if :math:`x_w` has dimension 5, and :math:`c_w` +# dimension 3, then our LSTM should accept an input of dimension 8. +# +# To get the character level representation, do an LSTM over the +# characters of a word, and let :math:`c_w` be the final hidden state of +# this LSTM. Hints: +# +# * There are going to be two LSTM's in your new model. +# The original one that outputs POS tag scores, and the new one that +# outputs a character-level representation of each word. +# * To do a sequence model over characters, you will have to embed characters. +# The character embeddings will be the input to the character LSTM. +# diff --git a/Other/transformer_tutorial.py b/Other/transformer_tutorial.py new file mode 100755 index 0000000..3fb3b47 --- /dev/null +++ b/Other/transformer_tutorial.py @@ -0,0 +1,258 @@ + +from __future__ import print_function +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom + + +viz=Visdom() +viz.delete_env('main') + +imagewin1=viz.image(np.random.rand(3, 512, 256),opts=dict(title='Random!', caption='How random.')) +imagewin2=viz.image(np.random.rand(3, 512, 256),opts=dict(title='Random!', caption='How random.')) +imagewin3=viz.image(np.random.rand(3, 512, 256),opts=dict(title='Random!', caption='How random.')) +imagewin4=viz.image(np.random.rand(3, 512, 256),opts=dict(title='Random!', caption='How random.')) +imagewin5=viz.image(np.random.rand(3, 512, 256),opts=dict(title='Random!', caption='How random.')) +imagewin6=viz.image(np.random.rand(3, 512, 256),opts=dict(title='Random!', caption='How random.')) + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# Training dataset +train_loader = torch.utils.data.DataLoader( + datasets.MNIST(root='.', train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=64, shuffle=True, num_workers=4) +# Test dataset +test_loader = torch.utils.data.DataLoader( + datasets.MNIST(root='.', train=False, transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=64, shuffle=True, num_workers=4) + + + +#modelnet = models.vgg11(pretrained=True) + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.conv1 = nn.Conv2d(1, 10, kernel_size=5) + self.conv2 = nn.Conv2d(10, 20, kernel_size=5) + self.conv2_drop = nn.Dropout2d() + self.fc1 = nn.Linear(320, 50) + self.fc2 = nn.Linear(50, 10) + + # Spatial transformer localization-network + self.localization = nn.Sequential( + nn.Conv2d(1, 8, kernel_size=7), + nn.MaxPool2d(2, stride=2), + nn.ReLU(True), + nn.Conv2d(8, 10, kernel_size=5), + nn.MaxPool2d(2, stride=2), + nn.ReLU(True) + ) + + # Regressor for the 3 * 2 affine matrix + self.fc_loc = nn.Sequential( + nn.Linear(10 * 3 * 3, 32), + nn.ReLU(True), + nn.Linear(32, 3 * 2) + ) + + # Initialize the weights/bias with identity transformation + self.fc_loc[2].weight.data.zero_() + self.fc_loc[2].bias.data.copy_(torch.tensor([1, 0, 0, 0, 1, 0], dtype=torch.float)) + + # Spatial transformer network forward function + def stn(self, x): + xs = self.localization(x) + xs = xs.view(-1, 10 * 3 * 3) + theta = self.fc_loc(xs) + theta = theta.view(-1, 2, 3) + + grid = F.affine_grid(theta, x.size()) + x = F.grid_sample(x, grid) + + return x + + def forward(self, x): + # transform the input + x = self.stn(x) + + # Perform the usual forward pass + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) + x = x.view(-1, 320) + x = F.relu(self.fc1(x)) + x = F.dropout(x, training=self.training) + x = self.fc2(x) + return F.log_softmax(x, dim=1) +class NetMnist(nn.Module): + def __init__(self): + super(NetMnist, self).__init__() + self.conv1 = nn.Conv2d(1, 4, kernel_size=5) + self.conv2 = nn.Conv2d(4, 8, kernel_size=3) + self.conv3 = nn.Conv2d(8, 16, kernel_size=5) + self.fc1 = nn.Linear(1*16, 10) + + def forward(self, x): + + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2(x), 2)) + x = F.relu(self.conv3(x), 2) + + x = x.view(-1, 1*16) + x = F.relu(self.fc1(x)) + + return F.log_softmax(x, dim=1) + + +#model = torch.nn.DataParallel(NetMnist()).to(device) +model = (NetMnist()).to(device) + + +optimizer = optim.SGD(model.parameters(), lr=0.01) + + + +ad = None; + +def train(epoch): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + optimizer.zero_grad() + global ad + + if ad is None: + ad=data + + # nda=data.numpy() + # nao=np.append(nda,nda,1) + # nao = np.append(nao, nda, 1) + # data=torch.tensor(nao) + + + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + + if batch_idx % 930 == 0 and batch_idx>0 : + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item())) + + +def test(): + with torch.no_grad(): + model.eval() + test_loss = 0 + correct = 0 + for data, target in test_loader: + data, target = data.to(device), target.to(device) + output = model(data) + + # sum up batch loss + test_loss += F.nll_loss(output, target, size_average=False).item() + # get the index of the max log-probability + pred = output.max(1, keepdim=True)[1] + correct += pred.eq(target.view_as(pred)).sum().item() + + test_loss /= len(test_loader.dataset) + print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, len(test_loader.dataset),100. * correct / len(test_loader.dataset))) + +imaglis1=[] +imaglis2=[] +imaglis3=[] +imaglis4=[] +imaglis5=[] +imaglis6=[] + +for epoch in range(1, 100 + 1): + train(epoch) + + + + + + mm1 = model.conv1(ad[0:1, :, :, :]) + datodis = mm1 * 256 + 128 + dashape = datodis.shape + datodis = datodis.view(dashape[1], 1, dashape[2], dashape[3]) + imaglis1.append(datodis.detach().cpu().numpy()) + + imaglisnp = np.array(imaglis1) + cdsa = np.reshape(imaglisnp, newshape=[-1, 1, imaglisnp.shape[3], imaglisnp.shape[4]]) + viz.images(cdsa, win=imagewin1, opts=dict(title='Random!', caption='How random.'), nrow=dashape[1]) + + + mm2 = model.conv2(F.relu(F.max_pool2d(mm1, 2))) + datodis = mm2 * 256 + 128 + dashape = datodis.shape + datodis = datodis.view(dashape[1], 1, dashape[2], dashape[3]) + imaglis2.append(datodis.detach().cpu().numpy()) + + imaglisnp = np.array(imaglis2) + cdsa = np.reshape(imaglisnp, newshape=[-1, 1, imaglisnp.shape[3], imaglisnp.shape[4]]) + viz.images(cdsa, win=imagewin2, opts=dict(title='Random!', caption='How random.'), nrow=dashape[1]) + + + mm3 = model.conv3(F.relu(F.max_pool2d(mm2, 2))) + datodis = mm3 * 256 + 128 + dashape = datodis.shape + datodis = datodis.view(dashape[1], 1, dashape[2], dashape[3]) + imaglis3.append(datodis.detach().cpu().numpy()) + + imaglisnp = np.array(imaglis3) + cdsa = np.reshape(imaglisnp, newshape=[-1, 1, imaglisnp.shape[3], imaglisnp.shape[4]]) + viz.images(cdsa, win=imagewin3, opts=dict(title='Random!', caption='How random.'), nrow=dashape[1]) + + + + + + mm4 = model.conv1.weight.data + datodis = mm4 * 256 + 128 + dashape = datodis.shape + datodis = datodis.view(dashape[1]*dashape[0], 1, dashape[2], dashape[3]) + imaglis4.append(datodis.detach().cpu().numpy()) + + imaglisnp = np.array(imaglis4) + cdsa = np.reshape(imaglisnp, newshape=[-1, 1, imaglisnp.shape[3], imaglisnp.shape[4]]) + viz.images(cdsa, win=imagewin4, opts=dict(title='Random!', caption='How random.'), nrow=dashape[1]*dashape[0]) + + + + + + + + + + # mm = model.conv1(ad) + # datodis = mm * 256 + 128 + # datodis = datodis.view(64, 1, 24 * 10, 24) + # imaglis.append(datodis.detach().cpu().numpy()[0:8,:,:,:]) + + test() + + +#cdsa=np.reshape(np.array(imaglis),newshape=[-1,1,240,24]) +#viz.images(cdsa, win=imagewin, opts=dict(title='Random!', caption='How random.'), nrow=8,padding=2) + + + +# Visualize the STN transformation on some input batch +# visualize_stn() + +#plt.ioff() +#plt.show() diff --git a/PaintVgg19/CaffeToPytorch.py b/PaintVgg19/CaffeToPytorch.py new file mode 100755 index 0000000..ac71280 --- /dev/null +++ b/PaintVgg19/CaffeToPytorch.py @@ -0,0 +1,4 @@ +#python -m mmdnn.conversion._script.convertToIR -f caffe -d vgg19Caffe -n VGG_ILSVRC_19_layers_deploy.prototxt -w VGG_ILSVRC_19_layers.caffemodel +#python -m mmdnn.conversion._script.IRToCode -f pytorch --IRModelPath vgg19Caffe.pb --dstModelPath vgg19Pytorch.py --IRWeightPath vgg19Caffe.npy -dw vgg19Pytorch.npy + + diff --git a/PaintVgg19/PaintVgg19.py b/PaintVgg19/PaintVgg19.py new file mode 100755 index 0000000..4974407 --- /dev/null +++ b/PaintVgg19/PaintVgg19.py @@ -0,0 +1,153 @@ +from __future__ import print_function +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom +import cv2 +import os +import shutil + +from vgg19Pytorch import Vgg19Module + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# vgg19=Vgg19Module(CurrentPath+'/vgg19Pytorch.npy') +vgg19 = torchvision.models.vgg19(True) + +if torch.cuda.is_available(): + vgg19=vgg19.to(device) + + +def readAndPreprocessImage(imagepath): + mean = np.array([103.939, 116.779, 123.68]) + img=cv2.imread(imagepath) + img=img.astype('float32') + img -= mean + img = cv2.resize(img, (224, 224)).transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + # cv image read is by BGR order + # and the network Need RGB + # the following BGR values should be subtracted: [103.939, 116.779, 123.68]. + image = torch.from_numpy(img) + if torch.cuda.is_available(): + image = image.cuda() + return image + + +imgdir = CurrentPath+'/../Dataset/ILSVRC2012_img_val/' +allImageData=[] +allfile=[] +for dirpath, dirnames, filenames in os.walk(imgdir): + for file in filenames[0:1000]: + allImageData.append(dirpath+"/"+file) + allfile.append(file) + + +resultdata=[] +count=0 + +for imagefile in allImageData: + count+=1 + image=readAndPreprocessImage(imagefile) + + conv1_1_pad = F.pad(image, (1L, 1L, 1L, 1L)) + conv1_1 = vgg19.conv1_1(conv1_1_pad) + relu1_1 = F.relu(conv1_1) + conv1_2_pad = F.pad(relu1_1, (1L, 1L, 1L, 1L)) + conv1_2 = vgg19.conv1_2(conv1_2_pad) + relu1_2 = F.relu(conv1_2) + pool1 = F.max_pool2d(relu1_2, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv2_1_pad = F.pad(pool1, (1L, 1L, 1L, 1L)) + conv2_1 = vgg19.conv2_1(conv2_1_pad) + relu2_1 = F.relu(conv2_1) + conv2_2_pad = F.pad(relu2_1, (1L, 1L, 1L, 1L)) + conv2_2 = vgg19.conv2_2(conv2_2_pad) + relu2_2 = F.relu(conv2_2) + pool2 = F.max_pool2d(relu2_2, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv3_1_pad = F.pad(pool2, (1L, 1L, 1L, 1L)) + conv3_1 = vgg19.conv3_1(conv3_1_pad) + relu3_1 = F.relu(conv3_1) + conv3_2_pad = F.pad(relu3_1, (1L, 1L, 1L, 1L)) + conv3_2 = vgg19.conv3_2(conv3_2_pad) + relu3_2 = F.relu(conv3_2) + conv3_3_pad = F.pad(relu3_2, (1L, 1L, 1L, 1L)) + conv3_3 = vgg19.conv3_3(conv3_3_pad) + relu3_3 = F.relu(conv3_3) + conv3_4_pad = F.pad(relu3_3, (1L, 1L, 1L, 1L)) + conv3_4 = vgg19.conv3_4(conv3_4_pad) + relu3_4 = F.relu(conv3_4) + pool3 = F.max_pool2d(relu3_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv4_1_pad = F.pad(pool3, (1L, 1L, 1L, 1L)) + conv4_1 = vgg19.conv4_1(conv4_1_pad) + relu4_1 = F.relu(conv4_1) + conv4_2_pad = F.pad(relu4_1, (1L, 1L, 1L, 1L)) + conv4_2 = vgg19.conv4_2(conv4_2_pad) + relu4_2 = F.relu(conv4_2) + conv4_3_pad = F.pad(relu4_2, (1L, 1L, 1L, 1L)) + conv4_3 = vgg19.conv4_3(conv4_3_pad) + relu4_3 = F.relu(conv4_3) + conv4_4_pad = F.pad(relu4_3, (1L, 1L, 1L, 1L)) + conv4_4 = vgg19.conv4_4(conv4_4_pad) + relu4_4 = F.relu(conv4_4) + pool4 = F.max_pool2d(relu4_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv5_1_pad = F.pad(pool4, (1L, 1L, 1L, 1L)) + conv5_1 = vgg19.conv5_1(conv5_1_pad) + relu5_1 = F.relu(conv5_1) + conv5_2_pad = F.pad(relu5_1, (1L, 1L, 1L, 1L)) + conv5_2 = vgg19.conv5_2(conv5_2_pad) + relu5_2 = F.relu(conv5_2) + conv5_3_pad = F.pad(relu5_2, (1L, 1L, 1L, 1L)) + conv5_3 = vgg19.conv5_3(conv5_3_pad) + relu5_3 = F.relu(conv5_3) + conv5_4_pad = F.pad(relu5_3, (1L, 1L, 1L, 1L)) + conv5_4 = vgg19.conv5_4(conv5_4_pad) + + resultdata.append(conv5_3.detach().cpu().numpy()[0,204,:,:]) + print("CalImageCount:"+str(count)) + + +his=np.histogram(resultdata,256) +xx=np.array(his[0]).astype('float32') +yy=np.array(his[1]).astype('float32') +data=np.empty((2,256)) +data[1,:]=xx +data[0,:]=yy[0:256] +data=data.swapaxes(0,1) + + +threvalue=500 +count=0 +for daimage in resultdata: + if np.max(daimage)>threvalue: + path1 = allImageData[count] + ima=cv2.imread(path1) + imagewidth=ima.shape[1] + imageheight=ima.shape[0] + + datawidth=daimage.shape[1] + dataheight=daimage.shape[0] + + widthradio=float(imagewidth)/float(datawidth) + heithradio=float(imageheight)/float(dataheight) + + for i in range(dataheight): + for j in range(datawidth): + if daimage[i,j]>threvalue : + cv2.circle(ima,(int(j*widthradio),int(i*heithradio)),15,(255,0,0),2); + path2 = CurrentPath+"/imagePointOut/" + allfile[count] + cv2.imwrite(path2,ima) + count+=1 + + + diff --git a/PaintVgg19/PaintVgg19Weight.py b/PaintVgg19/PaintVgg19Weight.py new file mode 100755 index 0000000..265214d --- /dev/null +++ b/PaintVgg19/PaintVgg19Weight.py @@ -0,0 +1,176 @@ +from __future__ import print_function +from vgg19Pytorch import Vgg19Module +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from visdom import Visdom +import cv2 +import os +import shutil + + +viz = Visdom() +# use visdom , we must start visdom Host first +# with python -m visdom.server + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +# vgg19 = Vgg19Module(CurrentPath+'/vgg19Pytorch.npy') +vgg19 = torchvision.models.vgg19(True) + +if torch.cuda.is_available(): + vgg19 = vgg19.to(device) + + +def weightVisual(layer, name=''): + mm4 = layer.weight.data + datodis = mm4 * 256 + 128 + dashape = datodis.shape + datodis = datodis.view(dashape[1] * dashape[0], 1, dashape[2], dashape[3]) + imaglisnp = datodis.detach().cpu().numpy() + viz.images(imaglisnp, opts=dict( + title=name, caption='How random.'), nrow=dashape[1]) + + +def imageVisual(data, name='', rownum=8): + datodis = data + #datodis = datodis * 256 + 128 + dashape = datodis.shape + datodis = datodis.view(dashape[1] * dashape[0], 1, dashape[2], dashape[3]) + imaglisnp = datodis.detach().cpu().numpy() + viz.images(imaglisnp, opts=dict( + title=name, caption='How random.'), nrow=rownum) + + +def readAndPreprocessImage(imagepath): + mean = np.array([103.939, 116.779, 123.68]) + img = cv2.imread(imagepath) + img = img.astype('float32') + img -= mean + img = cv2.resize(img, (224, 224)).transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + # cv image read is by BGR order + # and the network Need RGB + # the following BGR values should be subtracted: [103.939, 116.779, 123.68]. + image = torch.from_numpy(img) + if torch.cuda.is_available(): + image = image.cuda() + return image + + +#region forward image +image = readAndPreprocessImage(CurrentPath+"dog_resize.jpg") +imgfor = vgg19.forward(image) +imgfornumpy = imgfor.cpu().detach().numpy() + +words = open(CurrentPath+'synset_words.txt').readlines() +words = [(w[0], ' '.join(w[1:])) for w in [w.split() for w in words]] +words = np.asarray(words) + +top5 = np.argsort(imgfornumpy)[0][::-1][:5] +probs = np.sort(imgfornumpy)[0][::-1][:5] +for w, p in zip(words[top5], probs): + print('{}\tprobability:{}'.format(w, p)) +#endregion + +# region write image and weight +image = readAndPreprocessImage(CurrentPath+"dog_resize.jpg") +conv1_1_pad = F.pad(image, (1L, 1L, 1L, 1L)) +conv1_1 = vgg19.conv1_1(conv1_1_pad) +relu1_1 = F.relu(conv1_1) +conv1_2_pad = F.pad(relu1_1, (1L, 1L, 1L, 1L)) +conv1_2 = vgg19.conv1_2(conv1_2_pad) +relu1_2 = F.relu(conv1_2) +pool1 = F.max_pool2d(relu1_2, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) +conv2_1_pad = F.pad(pool1, (1L, 1L, 1L, 1L)) +conv2_1 = vgg19.conv2_1(conv2_1_pad) +relu2_1 = F.relu(conv2_1) +conv2_2_pad = F.pad(relu2_1, (1L, 1L, 1L, 1L)) +conv2_2 = vgg19.conv2_2(conv2_2_pad) +relu2_2 = F.relu(conv2_2) +pool2 = F.max_pool2d(relu2_2, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) +conv3_1_pad = F.pad(pool2, (1L, 1L, 1L, 1L)) +conv3_1 = vgg19.conv3_1(conv3_1_pad) +relu3_1 = F.relu(conv3_1) +conv3_2_pad = F.pad(relu3_1, (1L, 1L, 1L, 1L)) +conv3_2 = vgg19.conv3_2(conv3_2_pad) +relu3_2 = F.relu(conv3_2) +conv3_3_pad = F.pad(relu3_2, (1L, 1L, 1L, 1L)) +conv3_3 = vgg19.conv3_3(conv3_3_pad) +relu3_3 = F.relu(conv3_3) +conv3_4_pad = F.pad(relu3_3, (1L, 1L, 1L, 1L)) +conv3_4 = vgg19.conv3_4(conv3_4_pad) +relu3_4 = F.relu(conv3_4) +pool3 = F.max_pool2d(relu3_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) +conv4_1_pad = F.pad(pool3, (1L, 1L, 1L, 1L)) +conv4_1 = vgg19.conv4_1(conv4_1_pad) +relu4_1 = F.relu(conv4_1) +conv4_2_pad = F.pad(relu4_1, (1L, 1L, 1L, 1L)) +conv4_2 = vgg19.conv4_2(conv4_2_pad) +relu4_2 = F.relu(conv4_2) +conv4_3_pad = F.pad(relu4_2, (1L, 1L, 1L, 1L)) +conv4_3 = vgg19.conv4_3(conv4_3_pad) +relu4_3 = F.relu(conv4_3) +conv4_4_pad = F.pad(relu4_3, (1L, 1L, 1L, 1L)) +conv4_4 = vgg19.conv4_4(conv4_4_pad) +relu4_4 = F.relu(conv4_4) +pool4 = F.max_pool2d(relu4_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) +conv5_1_pad = F.pad(pool4, (1L, 1L, 1L, 1L)) +conv5_1 = vgg19.conv5_1(conv5_1_pad) +relu5_1 = F.relu(conv5_1) +conv5_2_pad = F.pad(relu5_1, (1L, 1L, 1L, 1L)) +conv5_2 = vgg19.conv5_2(conv5_2_pad) +relu5_2 = F.relu(conv5_2) +conv5_3_pad = F.pad(relu5_2, (1L, 1L, 1L, 1L)) +conv5_3 = vgg19.conv5_3(conv5_3_pad) +relu5_3 = F.relu(conv5_3) +conv5_4_pad = F.pad(relu5_3, (1L, 1L, 1L, 1L)) +conv5_4 = vgg19.conv5_4(conv5_4_pad) +relu5_4 = F.relu(conv5_4) +pool5 = F.max_pool2d(relu5_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) +fc6_0 = pool5.view(pool5.size(0), -1) + +imageVisual(conv1_1, "conv1_1", 8) +imageVisual(conv1_2, 'conv1_2', 8) +imageVisual(conv2_1, "conv2_1", 16) +imageVisual(conv2_2, "conv2_2", 16) +imageVisual(conv3_1, "conv3_1", 16) +imageVisual(conv3_2, "conv3_2", 16) +imageVisual(conv3_3, "conv3_3", 16) +imageVisual(conv3_4, "conv3_4", 16) +imageVisual(conv4_1, "conv4_1", 32) +imageVisual(conv4_2, "conv4_2", 32) +imageVisual(conv4_3, "conv4_3", 32) +imageVisual(conv4_4, "conv4_4", 32) +imageVisual(conv5_1, "conv5_1", 32) +imageVisual(conv5_2, "conv5_2", 32) +imageVisual(conv5_3, "conv5_3", 32) +imageVisual(conv5_4, "conv5_4", 32) + +weightVisual(vgg19.conv1_1, "conv1_1") +weightVisual(vgg19.conv1_2, 'conv1_2') +weightVisual(vgg19.conv2_1, "conv2_1") +weightVisual(vgg19.conv2_2, "conv2_2") +weightVisual(vgg19.conv3_1, "conv3_1") +weightVisual(vgg19.conv3_2, "conv3_2") +weightVisual(vgg19.conv3_3, "conv3_3") +weightVisual(vgg19.conv3_4, "conv3_4") +weightVisual(vgg19.conv4_1, "conv4_1") +weightVisual(vgg19.conv4_2, "conv4_2") +weightVisual(vgg19.conv4_3, "conv4_3") +weightVisual(vgg19.conv4_4, "conv4_4") +weightVisual(vgg19.conv5_1, "conv5_1") +weightVisual(vgg19.conv5_2, "conv5_2") +weightVisual(vgg19.conv5_3, "conv5_3") +weightVisual(vgg19.conv5_4, "conv5_4") +# endregion diff --git a/PaintVgg19/coco.jpg b/PaintVgg19/coco.jpg new file mode 100755 index 0000000..023b2fc Binary files /dev/null and b/PaintVgg19/coco.jpg differ diff --git a/PaintVgg19/dog_resize.jpg b/PaintVgg19/dog_resize.jpg new file mode 100755 index 0000000..2d9598c Binary files /dev/null and b/PaintVgg19/dog_resize.jpg differ diff --git a/PaintVgg19/dsc.jpg b/PaintVgg19/dsc.jpg new file mode 100755 index 0000000..b6af0dc Binary files /dev/null and b/PaintVgg19/dsc.jpg differ diff --git a/PaintVgg19/image/conv1_1.jpg b/PaintVgg19/image/conv1_1.jpg new file mode 100755 index 0000000..a184dcf Binary files /dev/null and b/PaintVgg19/image/conv1_1.jpg differ diff --git a/PaintVgg19/image/conv1_2.jpg b/PaintVgg19/image/conv1_2.jpg new file mode 100755 index 0000000..b31cabb Binary files /dev/null and b/PaintVgg19/image/conv1_2.jpg differ diff --git a/PaintVgg19/image/conv2_1.jpg b/PaintVgg19/image/conv2_1.jpg new file mode 100755 index 0000000..36a7b53 Binary files /dev/null and b/PaintVgg19/image/conv2_1.jpg differ diff --git a/PaintVgg19/image/conv2_2.jpg b/PaintVgg19/image/conv2_2.jpg new file mode 100755 index 0000000..f1819c6 Binary files /dev/null and b/PaintVgg19/image/conv2_2.jpg differ diff --git a/PaintVgg19/image/conv3_1.jpg b/PaintVgg19/image/conv3_1.jpg new file mode 100755 index 0000000..3b48dba Binary files /dev/null and b/PaintVgg19/image/conv3_1.jpg differ diff --git a/PaintVgg19/image/conv3_2.jpg b/PaintVgg19/image/conv3_2.jpg new file mode 100755 index 0000000..6024b90 Binary files /dev/null and b/PaintVgg19/image/conv3_2.jpg differ diff --git a/PaintVgg19/image/conv3_3.jpg b/PaintVgg19/image/conv3_3.jpg new file mode 100755 index 0000000..d12ca74 Binary files /dev/null and b/PaintVgg19/image/conv3_3.jpg differ diff --git a/PaintVgg19/image/conv3_3.png b/PaintVgg19/image/conv3_3.png new file mode 100755 index 0000000..958c3b1 Binary files /dev/null and b/PaintVgg19/image/conv3_3.png differ diff --git a/PaintVgg19/image/conv3_4.jpg b/PaintVgg19/image/conv3_4.jpg new file mode 100755 index 0000000..08f4d39 Binary files /dev/null and b/PaintVgg19/image/conv3_4.jpg differ diff --git a/PaintVgg19/image/conv4_1.jpg b/PaintVgg19/image/conv4_1.jpg new file mode 100755 index 0000000..3a97ff6 Binary files /dev/null and b/PaintVgg19/image/conv4_1.jpg differ diff --git a/PaintVgg19/image/conv4_2.jpg b/PaintVgg19/image/conv4_2.jpg new file mode 100755 index 0000000..2aba225 Binary files /dev/null and b/PaintVgg19/image/conv4_2.jpg differ diff --git a/PaintVgg19/image/conv4_3.jpg b/PaintVgg19/image/conv4_3.jpg new file mode 100755 index 0000000..7e4a1e5 Binary files /dev/null and b/PaintVgg19/image/conv4_3.jpg differ diff --git a/PaintVgg19/image/conv4_4.jpg b/PaintVgg19/image/conv4_4.jpg new file mode 100755 index 0000000..524a759 Binary files /dev/null and b/PaintVgg19/image/conv4_4.jpg differ diff --git a/PaintVgg19/image/conv5_1.jpg b/PaintVgg19/image/conv5_1.jpg new file mode 100755 index 0000000..231a117 Binary files /dev/null and b/PaintVgg19/image/conv5_1.jpg differ diff --git a/PaintVgg19/image/conv5_2.jpg b/PaintVgg19/image/conv5_2.jpg new file mode 100755 index 0000000..9a81a56 Binary files /dev/null and b/PaintVgg19/image/conv5_2.jpg differ diff --git a/PaintVgg19/image/conv5_3.jpg b/PaintVgg19/image/conv5_3.jpg new file mode 100755 index 0000000..4ff1b01 Binary files /dev/null and b/PaintVgg19/image/conv5_3.jpg differ diff --git a/PaintVgg19/image/conv5_4.jpg b/PaintVgg19/image/conv5_4.jpg new file mode 100755 index 0000000..fd04741 Binary files /dev/null and b/PaintVgg19/image/conv5_4.jpg differ diff --git a/PaintVgg19/imagePointOutCON5_3_204.zip b/PaintVgg19/imagePointOutCON5_3_204.zip new file mode 100644 index 0000000..1656d7e Binary files /dev/null and b/PaintVgg19/imagePointOutCON5_3_204.zip differ diff --git a/PaintVgg19/imagePointOutCON5_4_204.zip b/PaintVgg19/imagePointOutCON5_4_204.zip new file mode 100644 index 0000000..32bfbc7 Binary files /dev/null and b/PaintVgg19/imagePointOutCON5_4_204.zip differ diff --git a/PaintVgg19/imagePointOutCON5_4_205.zip b/PaintVgg19/imagePointOutCON5_4_205.zip new file mode 100644 index 0000000..e140ab4 Binary files /dev/null and b/PaintVgg19/imagePointOutCON5_4_205.zip differ diff --git a/PaintVgg19/imagePointOutCON5_4_206.zip b/PaintVgg19/imagePointOutCON5_4_206.zip new file mode 100644 index 0000000..b60b7f1 Binary files /dev/null and b/PaintVgg19/imagePointOutCON5_4_206.zip differ diff --git a/PaintVgg19/synset_words.txt b/PaintVgg19/synset_words.txt new file mode 100755 index 0000000..a9e8c7f --- /dev/null +++ b/PaintVgg19/synset_words.txt @@ -0,0 +1,1000 @@ +n01440764 tench, Tinca tinca +n01443537 goldfish, Carassius auratus +n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias +n01491361 tiger shark, Galeocerdo cuvieri +n01494475 hammerhead, hammerhead shark +n01496331 electric ray, crampfish, numbfish, torpedo +n01498041 stingray +n01514668 cock +n01514859 hen +n01518878 ostrich, Struthio camelus +n01530575 brambling, Fringilla montifringilla +n01531178 goldfinch, Carduelis carduelis +n01532829 house finch, linnet, Carpodacus mexicanus +n01534433 junco, snowbird +n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea +n01558993 robin, American robin, Turdus migratorius +n01560419 bulbul +n01580077 jay +n01582220 magpie +n01592084 chickadee +n01601694 water ouzel, dipper +n01608432 kite +n01614925 bald eagle, American eagle, Haliaeetus leucocephalus +n01616318 vulture +n01622779 great grey owl, great gray owl, Strix nebulosa +n01629819 European fire salamander, Salamandra salamandra +n01630670 common newt, Triturus vulgaris +n01631663 eft +n01632458 spotted salamander, Ambystoma maculatum +n01632777 axolotl, mud puppy, Ambystoma mexicanum +n01641577 bullfrog, Rana catesbeiana +n01644373 tree frog, tree-frog +n01644900 tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui +n01664065 loggerhead, loggerhead turtle, Caretta caretta +n01665541 leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea +n01667114 mud turtle +n01667778 terrapin +n01669191 box turtle, box tortoise +n01675722 banded gecko +n01677366 common iguana, iguana, Iguana iguana +n01682714 American chameleon, anole, Anolis carolinensis +n01685808 whiptail, whiptail lizard +n01687978 agama +n01688243 frilled lizard, Chlamydosaurus kingi +n01689811 alligator lizard +n01692333 Gila monster, Heloderma suspectum +n01693334 green lizard, Lacerta viridis +n01694178 African chameleon, Chamaeleo chamaeleon +n01695060 Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis +n01697457 African crocodile, Nile crocodile, Crocodylus niloticus +n01698640 American alligator, Alligator mississipiensis +n01704323 triceratops +n01728572 thunder snake, worm snake, Carphophis amoenus +n01728920 ringneck snake, ring-necked snake, ring snake +n01729322 hognose snake, puff adder, sand viper +n01729977 green snake, grass snake +n01734418 king snake, kingsnake +n01735189 garter snake, grass snake +n01737021 water snake +n01739381 vine snake +n01740131 night snake, Hypsiglena torquata +n01742172 boa constrictor, Constrictor constrictor +n01744401 rock python, rock snake, Python sebae +n01748264 Indian cobra, Naja naja +n01749939 green mamba +n01751748 sea snake +n01753488 horned viper, cerastes, sand viper, horned asp, Cerastes cornutus +n01755581 diamondback, diamondback rattlesnake, Crotalus adamanteus +n01756291 sidewinder, horned rattlesnake, Crotalus cerastes +n01768244 trilobite +n01770081 harvestman, daddy longlegs, Phalangium opilio +n01770393 scorpion +n01773157 black and gold garden spider, Argiope aurantia +n01773549 barn spider, Araneus cavaticus +n01773797 garden spider, Aranea diademata +n01774384 black widow, Latrodectus mactans +n01774750 tarantula +n01775062 wolf spider, hunting spider +n01776313 tick +n01784675 centipede +n01795545 black grouse +n01796340 ptarmigan +n01797886 ruffed grouse, partridge, Bonasa umbellus +n01798484 prairie chicken, prairie grouse, prairie fowl +n01806143 peacock +n01806567 quail +n01807496 partridge +n01817953 African grey, African gray, Psittacus erithacus +n01818515 macaw +n01819313 sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita +n01820546 lorikeet +n01824575 coucal +n01828970 bee eater +n01829413 hornbill +n01833805 hummingbird +n01843065 jacamar +n01843383 toucan +n01847000 drake +n01855032 red-breasted merganser, Mergus serrator +n01855672 goose +n01860187 black swan, Cygnus atratus +n01871265 tusker +n01872401 echidna, spiny anteater, anteater +n01873310 platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus +n01877812 wallaby, brush kangaroo +n01882714 koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus +n01883070 wombat +n01910747 jellyfish +n01914609 sea anemone, anemone +n01917289 brain coral +n01924916 flatworm, platyhelminth +n01930112 nematode, nematode worm, roundworm +n01943899 conch +n01944390 snail +n01945685 slug +n01950731 sea slug, nudibranch +n01955084 chiton, coat-of-mail shell, sea cradle, polyplacophore +n01968897 chambered nautilus, pearly nautilus, nautilus +n01978287 Dungeness crab, Cancer magister +n01978455 rock crab, Cancer irroratus +n01980166 fiddler crab +n01981276 king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica +n01983481 American lobster, Northern lobster, Maine lobster, Homarus americanus +n01984695 spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish +n01985128 crayfish, crawfish, crawdad, crawdaddy +n01986214 hermit crab +n01990800 isopod +n02002556 white stork, Ciconia ciconia +n02002724 black stork, Ciconia nigra +n02006656 spoonbill +n02007558 flamingo +n02009229 little blue heron, Egretta caerulea +n02009912 American egret, great white heron, Egretta albus +n02011460 bittern +n02012849 crane +n02013706 limpkin, Aramus pictus +n02017213 European gallinule, Porphyrio porphyrio +n02018207 American coot, marsh hen, mud hen, water hen, Fulica americana +n02018795 bustard +n02025239 ruddy turnstone, Arenaria interpres +n02027492 red-backed sandpiper, dunlin, Erolia alpina +n02028035 redshank, Tringa totanus +n02033041 dowitcher +n02037110 oystercatcher, oyster catcher +n02051845 pelican +n02056570 king penguin, Aptenodytes patagonica +n02058221 albatross, mollymawk +n02066245 grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus +n02071294 killer whale, killer, orca, grampus, sea wolf, Orcinus orca +n02074367 dugong, Dugong dugon +n02077923 sea lion +n02085620 Chihuahua +n02085782 Japanese spaniel +n02085936 Maltese dog, Maltese terrier, Maltese +n02086079 Pekinese, Pekingese, Peke +n02086240 Shih-Tzu +n02086646 Blenheim spaniel +n02086910 papillon +n02087046 toy terrier +n02087394 Rhodesian ridgeback +n02088094 Afghan hound, Afghan +n02088238 basset, basset hound +n02088364 beagle +n02088466 bloodhound, sleuthhound +n02088632 bluetick +n02089078 black-and-tan coonhound +n02089867 Walker hound, Walker foxhound +n02089973 English foxhound +n02090379 redbone +n02090622 borzoi, Russian wolfhound +n02090721 Irish wolfhound +n02091032 Italian greyhound +n02091134 whippet +n02091244 Ibizan hound, Ibizan Podenco +n02091467 Norwegian elkhound, elkhound +n02091635 otterhound, otter hound +n02091831 Saluki, gazelle hound +n02092002 Scottish deerhound, deerhound +n02092339 Weimaraner +n02093256 Staffordshire bullterrier, Staffordshire bull terrier +n02093428 American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier +n02093647 Bedlington terrier +n02093754 Border terrier +n02093859 Kerry blue terrier +n02093991 Irish terrier +n02094114 Norfolk terrier +n02094258 Norwich terrier +n02094433 Yorkshire terrier +n02095314 wire-haired fox terrier +n02095570 Lakeland terrier +n02095889 Sealyham terrier, Sealyham +n02096051 Airedale, Airedale terrier +n02096177 cairn, cairn terrier +n02096294 Australian terrier +n02096437 Dandie Dinmont, Dandie Dinmont terrier +n02096585 Boston bull, Boston terrier +n02097047 miniature schnauzer +n02097130 giant schnauzer +n02097209 standard schnauzer +n02097298 Scotch terrier, Scottish terrier, Scottie +n02097474 Tibetan terrier, chrysanthemum dog +n02097658 silky terrier, Sydney silky +n02098105 soft-coated wheaten terrier +n02098286 West Highland white terrier +n02098413 Lhasa, Lhasa apso +n02099267 flat-coated retriever +n02099429 curly-coated retriever +n02099601 golden retriever +n02099712 Labrador retriever +n02099849 Chesapeake Bay retriever +n02100236 German short-haired pointer +n02100583 vizsla, Hungarian pointer +n02100735 English setter +n02100877 Irish setter, red setter +n02101006 Gordon setter +n02101388 Brittany spaniel +n02101556 clumber, clumber spaniel +n02102040 English springer, English springer spaniel +n02102177 Welsh springer spaniel +n02102318 cocker spaniel, English cocker spaniel, cocker +n02102480 Sussex spaniel +n02102973 Irish water spaniel +n02104029 kuvasz +n02104365 schipperke +n02105056 groenendael +n02105162 malinois +n02105251 briard +n02105412 kelpie +n02105505 komondor +n02105641 Old English sheepdog, bobtail +n02105855 Shetland sheepdog, Shetland sheep dog, Shetland +n02106030 collie +n02106166 Border collie +n02106382 Bouvier des Flandres, Bouviers des Flandres +n02106550 Rottweiler +n02106662 German shepherd, German shepherd dog, German police dog, alsatian +n02107142 Doberman, Doberman pinscher +n02107312 miniature pinscher +n02107574 Greater Swiss Mountain dog +n02107683 Bernese mountain dog +n02107908 Appenzeller +n02108000 EntleBucher +n02108089 boxer +n02108422 bull mastiff +n02108551 Tibetan mastiff +n02108915 French bulldog +n02109047 Great Dane +n02109525 Saint Bernard, St Bernard +n02109961 Eskimo dog, husky +n02110063 malamute, malemute, Alaskan malamute +n02110185 Siberian husky +n02110341 dalmatian, coach dog, carriage dog +n02110627 affenpinscher, monkey pinscher, monkey dog +n02110806 basenji +n02110958 pug, pug-dog +n02111129 Leonberg +n02111277 Newfoundland, Newfoundland dog +n02111500 Great Pyrenees +n02111889 Samoyed, Samoyede +n02112018 Pomeranian +n02112137 chow, chow chow +n02112350 keeshond +n02112706 Brabancon griffon +n02113023 Pembroke, Pembroke Welsh corgi +n02113186 Cardigan, Cardigan Welsh corgi +n02113624 toy poodle +n02113712 miniature poodle +n02113799 standard poodle +n02113978 Mexican hairless +n02114367 timber wolf, grey wolf, gray wolf, Canis lupus +n02114548 white wolf, Arctic wolf, Canis lupus tundrarum +n02114712 red wolf, maned wolf, Canis rufus, Canis niger +n02114855 coyote, prairie wolf, brush wolf, Canis latrans +n02115641 dingo, warrigal, warragal, Canis dingo +n02115913 dhole, Cuon alpinus +n02116738 African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus +n02117135 hyena, hyaena +n02119022 red fox, Vulpes vulpes +n02119789 kit fox, Vulpes macrotis +n02120079 Arctic fox, white fox, Alopex lagopus +n02120505 grey fox, gray fox, Urocyon cinereoargenteus +n02123045 tabby, tabby cat +n02123159 tiger cat +n02123394 Persian cat +n02123597 Siamese cat, Siamese +n02124075 Egyptian cat +n02125311 cougar, puma, catamount, mountain lion, painter, panther, Felis concolor +n02127052 lynx, catamount +n02128385 leopard, Panthera pardus +n02128757 snow leopard, ounce, Panthera uncia +n02128925 jaguar, panther, Panthera onca, Felis onca +n02129165 lion, king of beasts, Panthera leo +n02129604 tiger, Panthera tigris +n02130308 cheetah, chetah, Acinonyx jubatus +n02132136 brown bear, bruin, Ursus arctos +n02133161 American black bear, black bear, Ursus americanus, Euarctos americanus +n02134084 ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus +n02134418 sloth bear, Melursus ursinus, Ursus ursinus +n02137549 mongoose +n02138441 meerkat, mierkat +n02165105 tiger beetle +n02165456 ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle +n02167151 ground beetle, carabid beetle +n02168699 long-horned beetle, longicorn, longicorn beetle +n02169497 leaf beetle, chrysomelid +n02172182 dung beetle +n02174001 rhinoceros beetle +n02177972 weevil +n02190166 fly +n02206856 bee +n02219486 ant, emmet, pismire +n02226429 grasshopper, hopper +n02229544 cricket +n02231487 walking stick, walkingstick, stick insect +n02233338 cockroach, roach +n02236044 mantis, mantid +n02256656 cicada, cicala +n02259212 leafhopper +n02264363 lacewing, lacewing fly +n02268443 dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk +n02268853 damselfly +n02276258 admiral +n02277742 ringlet, ringlet butterfly +n02279972 monarch, monarch butterfly, milkweed butterfly, Danaus plexippus +n02280649 cabbage butterfly +n02281406 sulphur butterfly, sulfur butterfly +n02281787 lycaenid, lycaenid butterfly +n02317335 starfish, sea star +n02319095 sea urchin +n02321529 sea cucumber, holothurian +n02325366 wood rabbit, cottontail, cottontail rabbit +n02326432 hare +n02328150 Angora, Angora rabbit +n02342885 hamster +n02346627 porcupine, hedgehog +n02356798 fox squirrel, eastern fox squirrel, Sciurus niger +n02361337 marmot +n02363005 beaver +n02364673 guinea pig, Cavia cobaya +n02389026 sorrel +n02391049 zebra +n02395406 hog, pig, grunter, squealer, Sus scrofa +n02396427 wild boar, boar, Sus scrofa +n02397096 warthog +n02398521 hippopotamus, hippo, river horse, Hippopotamus amphibius +n02403003 ox +n02408429 water buffalo, water ox, Asiatic buffalo, Bubalus bubalis +n02410509 bison +n02412080 ram, tup +n02415577 bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis +n02417914 ibex, Capra ibex +n02422106 hartebeest +n02422699 impala, Aepyceros melampus +n02423022 gazelle +n02437312 Arabian camel, dromedary, Camelus dromedarius +n02437616 llama +n02441942 weasel +n02442845 mink +n02443114 polecat, fitch, foulmart, foumart, Mustela putorius +n02443484 black-footed ferret, ferret, Mustela nigripes +n02444819 otter +n02445715 skunk, polecat, wood pussy +n02447366 badger +n02454379 armadillo +n02457408 three-toed sloth, ai, Bradypus tridactylus +n02480495 orangutan, orang, orangutang, Pongo pygmaeus +n02480855 gorilla, Gorilla gorilla +n02481823 chimpanzee, chimp, Pan troglodytes +n02483362 gibbon, Hylobates lar +n02483708 siamang, Hylobates syndactylus, Symphalangus syndactylus +n02484975 guenon, guenon monkey +n02486261 patas, hussar monkey, Erythrocebus patas +n02486410 baboon +n02487347 macaque +n02488291 langur +n02488702 colobus, colobus monkey +n02489166 proboscis monkey, Nasalis larvatus +n02490219 marmoset +n02492035 capuchin, ringtail, Cebus capucinus +n02492660 howler monkey, howler +n02493509 titi, titi monkey +n02493793 spider monkey, Ateles geoffroyi +n02494079 squirrel monkey, Saimiri sciureus +n02497673 Madagascar cat, ring-tailed lemur, Lemur catta +n02500267 indri, indris, Indri indri, Indri brevicaudatus +n02504013 Indian elephant, Elephas maximus +n02504458 African elephant, Loxodonta africana +n02509815 lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens +n02510455 giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca +n02514041 barracouta, snoek +n02526121 eel +n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch +n02606052 rock beauty, Holocanthus tricolor +n02607072 anemone fish +n02640242 sturgeon +n02641379 gar, garfish, garpike, billfish, Lepisosteus osseus +n02643566 lionfish +n02655020 puffer, pufferfish, blowfish, globefish +n02666196 abacus +n02667093 abaya +n02669723 academic gown, academic robe, judge's robe +n02672831 accordion, piano accordion, squeeze box +n02676566 acoustic guitar +n02687172 aircraft carrier, carrier, flattop, attack aircraft carrier +n02690373 airliner +n02692877 airship, dirigible +n02699494 altar +n02701002 ambulance +n02704792 amphibian, amphibious vehicle +n02708093 analog clock +n02727426 apiary, bee house +n02730930 apron +n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin +n02749479 assault rifle, assault gun +n02769748 backpack, back pack, knapsack, packsack, rucksack, haversack +n02776631 bakery, bakeshop, bakehouse +n02777292 balance beam, beam +n02782093 balloon +n02783161 ballpoint, ballpoint pen, ballpen, Biro +n02786058 Band Aid +n02787622 banjo +n02788148 bannister, banister, balustrade, balusters, handrail +n02790996 barbell +n02791124 barber chair +n02791270 barbershop +n02793495 barn +n02794156 barometer +n02795169 barrel, cask +n02797295 barrow, garden cart, lawn cart, wheelbarrow +n02799071 baseball +n02802426 basketball +n02804414 bassinet +n02804610 bassoon +n02807133 bathing cap, swimming cap +n02808304 bath towel +n02808440 bathtub, bathing tub, bath, tub +n02814533 beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon +n02814860 beacon, lighthouse, beacon light, pharos +n02815834 beaker +n02817516 bearskin, busby, shako +n02823428 beer bottle +n02823750 beer glass +n02825657 bell cote, bell cot +n02834397 bib +n02835271 bicycle-built-for-two, tandem bicycle, tandem +n02837789 bikini, two-piece +n02840245 binder, ring-binder +n02841315 binoculars, field glasses, opera glasses +n02843684 birdhouse +n02859443 boathouse +n02860847 bobsled, bobsleigh, bob +n02865351 bolo tie, bolo, bola tie, bola +n02869837 bonnet, poke bonnet +n02870880 bookcase +n02871525 bookshop, bookstore, bookstall +n02877765 bottlecap +n02879718 bow +n02883205 bow tie, bow-tie, bowtie +n02892201 brass, memorial tablet, plaque +n02892767 brassiere, bra, bandeau +n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty +n02895154 breastplate, aegis, egis +n02906734 broom +n02909870 bucket, pail +n02910353 buckle +n02916936 bulletproof vest +n02917067 bullet train, bullet +n02927161 butcher shop, meat market +n02930766 cab, hack, taxi, taxicab +n02939185 caldron, cauldron +n02948072 candle, taper, wax light +n02950826 cannon +n02951358 canoe +n02951585 can opener, tin opener +n02963159 cardigan +n02965783 car mirror +n02966193 carousel, carrousel, merry-go-round, roundabout, whirligig +n02966687 carpenter's kit, tool kit +n02971356 carton +n02974003 car wheel +n02977058 cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM +n02978881 cassette +n02979186 cassette player +n02980441 castle +n02981792 catamaran +n02988304 CD player +n02992211 cello, violoncello +n02992529 cellular telephone, cellular phone, cellphone, cell, mobile phone +n02999410 chain +n03000134 chainlink fence +n03000247 chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour +n03000684 chain saw, chainsaw +n03014705 chest +n03016953 chiffonier, commode +n03017168 chime, bell, gong +n03018349 china cabinet, china closet +n03026506 Christmas stocking +n03028079 church, church building +n03032252 cinema, movie theater, movie theatre, movie house, picture palace +n03041632 cleaver, meat cleaver, chopper +n03042490 cliff dwelling +n03045698 cloak +n03047690 clog, geta, patten, sabot +n03062245 cocktail shaker +n03063599 coffee mug +n03063689 coffeepot +n03065424 coil, spiral, volute, whorl, helix +n03075370 combination lock +n03085013 computer keyboard, keypad +n03089624 confectionery, confectionary, candy store +n03095699 container ship, containership, container vessel +n03100240 convertible +n03109150 corkscrew, bottle screw +n03110669 cornet, horn, trumpet, trump +n03124043 cowboy boot +n03124170 cowboy hat, ten-gallon hat +n03125729 cradle +n03126707 crane +n03127747 crash helmet +n03127925 crate +n03131574 crib, cot +n03133878 Crock Pot +n03134739 croquet ball +n03141823 crutch +n03146219 cuirass +n03160309 dam, dike, dyke +n03179701 desk +n03180011 desktop computer +n03187595 dial telephone, dial phone +n03188531 diaper, nappy, napkin +n03196217 digital clock +n03197337 digital watch +n03201208 dining table, board +n03207743 dishrag, dishcloth +n03207941 dishwasher, dish washer, dishwashing machine +n03208938 disk brake, disc brake +n03216828 dock, dockage, docking facility +n03218198 dogsled, dog sled, dog sleigh +n03220513 dome +n03223299 doormat, welcome mat +n03240683 drilling platform, offshore rig +n03249569 drum, membranophone, tympan +n03250847 drumstick +n03255030 dumbbell +n03259280 Dutch oven +n03271574 electric fan, blower +n03272010 electric guitar +n03272562 electric locomotive +n03290653 entertainment center +n03291819 envelope +n03297495 espresso maker +n03314780 face powder +n03325584 feather boa, boa +n03337140 file, file cabinet, filing cabinet +n03344393 fireboat +n03345487 fire engine, fire truck +n03347037 fire screen, fireguard +n03355925 flagpole, flagstaff +n03372029 flute, transverse flute +n03376595 folding chair +n03379051 football helmet +n03384352 forklift +n03388043 fountain +n03388183 fountain pen +n03388549 four-poster +n03393912 freight car +n03394916 French horn, horn +n03400231 frying pan, frypan, skillet +n03404251 fur coat +n03417042 garbage truck, dustcart +n03424325 gasmask, respirator, gas helmet +n03425413 gas pump, gasoline pump, petrol pump, island dispenser +n03443371 goblet +n03444034 go-kart +n03445777 golf ball +n03445924 golfcart, golf cart +n03447447 gondola +n03447721 gong, tam-tam +n03450230 gown +n03452741 grand piano, grand +n03457902 greenhouse, nursery, glasshouse +n03459775 grille, radiator grille +n03461385 grocery store, grocery, food market, market +n03467068 guillotine +n03476684 hair slide +n03476991 hair spray +n03478589 half track +n03481172 hammer +n03482405 hamper +n03483316 hand blower, blow dryer, blow drier, hair dryer, hair drier +n03485407 hand-held computer, hand-held microcomputer +n03485794 handkerchief, hankie, hanky, hankey +n03492542 hard disc, hard disk, fixed disk +n03494278 harmonica, mouth organ, harp, mouth harp +n03495258 harp +n03496892 harvester, reaper +n03498962 hatchet +n03527444 holster +n03529860 home theater, home theatre +n03530642 honeycomb +n03532672 hook, claw +n03534580 hoopskirt, crinoline +n03535780 horizontal bar, high bar +n03538406 horse cart, horse-cart +n03544143 hourglass +n03584254 iPod +n03584829 iron, smoothing iron +n03590841 jack-o'-lantern +n03594734 jean, blue jean, denim +n03594945 jeep, landrover +n03595614 jersey, T-shirt, tee shirt +n03598930 jigsaw puzzle +n03599486 jinrikisha, ricksha, rickshaw +n03602883 joystick +n03617480 kimono +n03623198 knee pad +n03627232 knot +n03630383 lab coat, laboratory coat +n03633091 ladle +n03637318 lampshade, lamp shade +n03642806 laptop, laptop computer +n03649909 lawn mower, mower +n03657121 lens cap, lens cover +n03658185 letter opener, paper knife, paperknife +n03661043 library +n03662601 lifeboat +n03666591 lighter, light, igniter, ignitor +n03670208 limousine, limo +n03673027 liner, ocean liner +n03676483 lipstick, lip rouge +n03680355 Loafer +n03690938 lotion +n03691459 loudspeaker, speaker, speaker unit, loudspeaker system, speaker system +n03692522 loupe, jeweler's loupe +n03697007 lumbermill, sawmill +n03706229 magnetic compass +n03709823 mailbag, postbag +n03710193 mailbox, letter box +n03710637 maillot +n03710721 maillot, tank suit +n03717622 manhole cover +n03720891 maraca +n03721384 marimba, xylophone +n03724870 mask +n03729826 matchstick +n03733131 maypole +n03733281 maze, labyrinth +n03733805 measuring cup +n03742115 medicine chest, medicine cabinet +n03743016 megalith, megalithic structure +n03759954 microphone, mike +n03761084 microwave, microwave oven +n03763968 military uniform +n03764736 milk can +n03769881 minibus +n03770439 miniskirt, mini +n03770679 minivan +n03773504 missile +n03775071 mitten +n03775546 mixing bowl +n03776460 mobile home, manufactured home +n03777568 Model T +n03777754 modem +n03781244 monastery +n03782006 monitor +n03785016 moped +n03786901 mortar +n03787032 mortarboard +n03788195 mosque +n03788365 mosquito net +n03791053 motor scooter, scooter +n03792782 mountain bike, all-terrain bike, off-roader +n03792972 mountain tent +n03793489 mouse, computer mouse +n03794056 mousetrap +n03796401 moving van +n03803284 muzzle +n03804744 nail +n03814639 neck brace +n03814906 necklace +n03825788 nipple +n03832673 notebook, notebook computer +n03837869 obelisk +n03838899 oboe, hautboy, hautbois +n03840681 ocarina, sweet potato +n03841143 odometer, hodometer, mileometer, milometer +n03843555 oil filter +n03854065 organ, pipe organ +n03857828 oscilloscope, scope, cathode-ray oscilloscope, CRO +n03866082 overskirt +n03868242 oxcart +n03868863 oxygen mask +n03871628 packet +n03873416 paddle, boat paddle +n03874293 paddlewheel, paddle wheel +n03874599 padlock +n03876231 paintbrush +n03877472 pajama, pyjama, pj's, jammies +n03877845 palace +n03884397 panpipe, pandean pipe, syrinx +n03887697 paper towel +n03888257 parachute, chute +n03888605 parallel bars, bars +n03891251 park bench +n03891332 parking meter +n03895866 passenger car, coach, carriage +n03899768 patio, terrace +n03902125 pay-phone, pay-station +n03903868 pedestal, plinth, footstall +n03908618 pencil box, pencil case +n03908714 pencil sharpener +n03916031 perfume, essence +n03920288 Petri dish +n03924679 photocopier +n03929660 pick, plectrum, plectron +n03929855 pickelhaube +n03930313 picket fence, paling +n03930630 pickup, pickup truck +n03933933 pier +n03935335 piggy bank, penny bank +n03937543 pill bottle +n03938244 pillow +n03942813 ping-pong ball +n03944341 pinwheel +n03947888 pirate, pirate ship +n03950228 pitcher, ewer +n03954731 plane, carpenter's plane, woodworking plane +n03956157 planetarium +n03958227 plastic bag +n03961711 plate rack +n03967562 plow, plough +n03970156 plunger, plumber's helper +n03976467 Polaroid camera, Polaroid Land camera +n03976657 pole +n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria +n03980874 poncho +n03982430 pool table, billiard table, snooker table +n03983396 pop bottle, soda bottle +n03991062 pot, flowerpot +n03992509 potter's wheel +n03995372 power drill +n03998194 prayer rug, prayer mat +n04004767 printer +n04005630 prison, prison house +n04008634 projectile, missile +n04009552 projector +n04019541 puck, hockey puck +n04023962 punching bag, punch bag, punching ball, punchball +n04026417 purse +n04033901 quill, quill pen +n04033995 quilt, comforter, comfort, puff +n04037443 racer, race car, racing car +n04039381 racket, racquet +n04040759 radiator +n04041544 radio, wireless +n04044716 radio telescope, radio reflector +n04049303 rain barrel +n04065272 recreational vehicle, RV, R.V. +n04067472 reel +n04069434 reflex camera +n04070727 refrigerator, icebox +n04074963 remote control, remote +n04081281 restaurant, eating house, eating place, eatery +n04086273 revolver, six-gun, six-shooter +n04090263 rifle +n04099969 rocking chair, rocker +n04111531 rotisserie +n04116512 rubber eraser, rubber, pencil eraser +n04118538 rugby ball +n04118776 rule, ruler +n04120489 running shoe +n04125021 safe +n04127249 safety pin +n04131690 saltshaker, salt shaker +n04133789 sandal +n04136333 sarong +n04141076 sax, saxophone +n04141327 scabbard +n04141975 scale, weighing machine +n04146614 school bus +n04147183 schooner +n04149813 scoreboard +n04152593 screen, CRT screen +n04153751 screw +n04154565 screwdriver +n04162706 seat belt, seatbelt +n04179913 sewing machine +n04192698 shield, buckler +n04200800 shoe shop, shoe-shop, shoe store +n04201297 shoji +n04204238 shopping basket +n04204347 shopping cart +n04208210 shovel +n04209133 shower cap +n04209239 shower curtain +n04228054 ski +n04229816 ski mask +n04235860 sleeping bag +n04238763 slide rule, slipstick +n04239074 sliding door +n04243546 slot, one-armed bandit +n04251144 snorkel +n04252077 snowmobile +n04252225 snowplow, snowplough +n04254120 soap dispenser +n04254680 soccer ball +n04254777 sock +n04258138 solar dish, solar collector, solar furnace +n04259630 sombrero +n04263257 soup bowl +n04264628 space bar +n04265275 space heater +n04266014 space shuttle +n04270147 spatula +n04273569 speedboat +n04275548 spider web, spider's web +n04277352 spindle +n04285008 sports car, sport car +n04286575 spotlight, spot +n04296562 stage +n04310018 steam locomotive +n04311004 steel arch bridge +n04311174 steel drum +n04317175 stethoscope +n04325704 stole +n04326547 stone wall +n04328186 stopwatch, stop watch +n04330267 stove +n04332243 strainer +n04335435 streetcar, tram, tramcar, trolley, trolley car +n04336792 stretcher +n04344873 studio couch, day bed +n04346328 stupa, tope +n04347754 submarine, pigboat, sub, U-boat +n04350905 suit, suit of clothes +n04355338 sundial +n04355933 sunglass +n04356056 sunglasses, dark glasses, shades +n04357314 sunscreen, sunblock, sun blocker +n04366367 suspension bridge +n04367480 swab, swob, mop +n04370456 sweatshirt +n04371430 swimming trunks, bathing trunks +n04371774 swing +n04372370 switch, electric switch, electrical switch +n04376876 syringe +n04380533 table lamp +n04389033 tank, army tank, armored combat vehicle, armoured combat vehicle +n04392985 tape player +n04398044 teapot +n04399382 teddy, teddy bear +n04404412 television, television system +n04409515 tennis ball +n04417672 thatch, thatched roof +n04418357 theater curtain, theatre curtain +n04423845 thimble +n04428191 thresher, thrasher, threshing machine +n04429376 throne +n04435653 tile roof +n04442312 toaster +n04443257 tobacco shop, tobacconist shop, tobacconist +n04447861 toilet seat +n04456115 torch +n04458633 totem pole +n04461696 tow truck, tow car, wrecker +n04462240 toyshop +n04465501 tractor +n04467665 trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi +n04476259 tray +n04479046 trench coat +n04482393 tricycle, trike, velocipede +n04483307 trimaran +n04485082 tripod +n04486054 triumphal arch +n04487081 trolleybus, trolley coach, trackless trolley +n04487394 trombone +n04493381 tub, vat +n04501370 turnstile +n04505470 typewriter keyboard +n04507155 umbrella +n04509417 unicycle, monocycle +n04515003 upright, upright piano +n04517823 vacuum, vacuum cleaner +n04522168 vase +n04523525 vault +n04525038 velvet +n04525305 vending machine +n04532106 vestment +n04532670 viaduct +n04536866 violin, fiddle +n04540053 volleyball +n04542943 waffle iron +n04548280 wall clock +n04548362 wallet, billfold, notecase, pocketbook +n04550184 wardrobe, closet, press +n04552348 warplane, military plane +n04553703 washbasin, handbasin, washbowl, lavabo, wash-hand basin +n04554684 washer, automatic washer, washing machine +n04557648 water bottle +n04560804 water jug +n04562935 water tower +n04579145 whiskey jug +n04579432 whistle +n04584207 wig +n04589890 window screen +n04590129 window shade +n04591157 Windsor tie +n04591713 wine bottle +n04592741 wing +n04596742 wok +n04597913 wooden spoon +n04599235 wool, woolen, woollen +n04604644 worm fence, snake fence, snake-rail fence, Virginia fence +n04606251 wreck +n04612504 yawl +n04613696 yurt +n06359193 web site, website, internet site, site +n06596364 comic book +n06785654 crossword puzzle, crossword +n06794110 street sign +n06874185 traffic light, traffic signal, stoplight +n07248320 book jacket, dust cover, dust jacket, dust wrapper +n07565083 menu +n07579787 plate +n07583066 guacamole +n07584110 consomme +n07590611 hot pot, hotpot +n07613480 trifle +n07614500 ice cream, icecream +n07615774 ice lolly, lolly, lollipop, popsicle +n07684084 French loaf +n07693725 bagel, beigel +n07695742 pretzel +n07697313 cheeseburger +n07697537 hotdog, hot dog, red hot +n07711569 mashed potato +n07714571 head cabbage +n07714990 broccoli +n07715103 cauliflower +n07716358 zucchini, courgette +n07716906 spaghetti squash +n07717410 acorn squash +n07717556 butternut squash +n07718472 cucumber, cuke +n07718747 artichoke, globe artichoke +n07720875 bell pepper +n07730033 cardoon +n07734744 mushroom +n07742313 Granny Smith +n07745940 strawberry +n07747607 orange +n07749582 lemon +n07753113 fig +n07753275 pineapple, ananas +n07753592 banana +n07754684 jackfruit, jak, jack +n07760859 custard apple +n07768694 pomegranate +n07802026 hay +n07831146 carbonara +n07836838 chocolate sauce, chocolate syrup +n07860988 dough +n07871810 meat loaf, meatloaf +n07873807 pizza, pizza pie +n07875152 potpie +n07880968 burrito +n07892512 red wine +n07920052 espresso +n07930864 cup +n07932039 eggnog +n09193705 alp +n09229709 bubble +n09246464 cliff, drop, drop-off +n09256479 coral reef +n09288635 geyser +n09332890 lakeside, lakeshore +n09399592 promontory, headland, head, foreland +n09421951 sandbar, sand bar +n09428293 seashore, coast, seacoast, sea-coast +n09468604 valley, vale +n09472597 volcano +n09835506 ballplayer, baseball player +n10148035 groom, bridegroom +n10565667 scuba diver +n11879895 rapeseed +n11939491 daisy +n12057211 yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum +n12144580 corn +n12267677 acorn +n12620546 hip, rose hip, rosehip +n12768682 buckeye, horse chestnut, conker +n12985857 coral fungus +n12998815 agaric +n13037406 gyromitra +n13040303 stinkhorn, carrion fungus +n13044778 earthstar +n13052670 hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa +n13054560 bolete +n13133613 ear, spike, capitulum +n15075141 toilet tissue, toilet paper, bathroom tissue diff --git a/PaintVgg19/vgg19Pytorch.py b/PaintVgg19/vgg19Pytorch.py new file mode 100755 index 0000000..ee2deb5 --- /dev/null +++ b/PaintVgg19/vgg19Pytorch.py @@ -0,0 +1,133 @@ +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F + +__weights_dict = dict() + +def load_weights(weight_file): + if weight_file == None: + return + + try: + weights_dict = np.load(weight_file).item() + except: + weights_dict = np.load(weight_file, encoding='bytes').item() + + return weights_dict + +class Vgg19Module(nn.Module): + + + def __init__(self, weight_file): + super(Vgg19Module, self).__init__() + global __weights_dict + __weights_dict = load_weights(weight_file) + + self.conv1_1 = self.__conv(2, name='conv1_1', in_channels=3, out_channels=64, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv1_2 = self.__conv(2, name='conv1_2', in_channels=64, out_channels=64, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv2_1 = self.__conv(2, name='conv2_1', in_channels=64, out_channels=128, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv2_2 = self.__conv(2, name='conv2_2', in_channels=128, out_channels=128, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv3_1 = self.__conv(2, name='conv3_1', in_channels=128, out_channels=256, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv3_2 = self.__conv(2, name='conv3_2', in_channels=256, out_channels=256, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv3_3 = self.__conv(2, name='conv3_3', in_channels=256, out_channels=256, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv3_4 = self.__conv(2, name='conv3_4', in_channels=256, out_channels=256, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv4_1 = self.__conv(2, name='conv4_1', in_channels=256, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv4_2 = self.__conv(2, name='conv4_2', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv4_3 = self.__conv(2, name='conv4_3', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv4_4 = self.__conv(2, name='conv4_4', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv5_1 = self.__conv(2, name='conv5_1', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv5_2 = self.__conv(2, name='conv5_2', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv5_3 = self.__conv(2, name='conv5_3', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.conv5_4 = self.__conv(2, name='conv5_4', in_channels=512, out_channels=512, kernel_size=(3L, 3L), stride=(1L, 1L), groups=1, bias=True) + self.fc6_1 = self.__dense(name = 'fc6_1', in_features = 25088, out_features = 4096, bias = True) + self.fc7_1 = self.__dense(name = 'fc7_1', in_features = 4096, out_features = 4096, bias = True) + self.fc8_1 = self.__dense(name = 'fc8_1', in_features = 4096, out_features = 1000, bias = True) + + def forward(self, x): + conv1_1_pad = F.pad(x, (1L, 1L, 1L, 1L)) + conv1_1 = self.conv1_1(conv1_1_pad) + relu1_1 = F.relu(conv1_1) + conv1_2_pad = F.pad(relu1_1, (1L, 1L, 1L, 1L)) + conv1_2 = self.conv1_2(conv1_2_pad) + relu1_2 = F.relu(conv1_2) + pool1 = F.max_pool2d(relu1_2, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv2_1_pad = F.pad(pool1, (1L, 1L, 1L, 1L)) + conv2_1 = self.conv2_1(conv2_1_pad) + relu2_1 = F.relu(conv2_1) + conv2_2_pad = F.pad(relu2_1, (1L, 1L, 1L, 1L)) + conv2_2 = self.conv2_2(conv2_2_pad) + relu2_2 = F.relu(conv2_2) + pool2 = F.max_pool2d(relu2_2, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv3_1_pad = F.pad(pool2, (1L, 1L, 1L, 1L)) + conv3_1 = self.conv3_1(conv3_1_pad) + relu3_1 = F.relu(conv3_1) + conv3_2_pad = F.pad(relu3_1, (1L, 1L, 1L, 1L)) + conv3_2 = self.conv3_2(conv3_2_pad) + relu3_2 = F.relu(conv3_2) + conv3_3_pad = F.pad(relu3_2, (1L, 1L, 1L, 1L)) + conv3_3 = self.conv3_3(conv3_3_pad) + relu3_3 = F.relu(conv3_3) + conv3_4_pad = F.pad(relu3_3, (1L, 1L, 1L, 1L)) + conv3_4 = self.conv3_4(conv3_4_pad) + relu3_4 = F.relu(conv3_4) + pool3 = F.max_pool2d(relu3_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv4_1_pad = F.pad(pool3, (1L, 1L, 1L, 1L)) + conv4_1 = self.conv4_1(conv4_1_pad) + relu4_1 = F.relu(conv4_1) + conv4_2_pad = F.pad(relu4_1, (1L, 1L, 1L, 1L)) + conv4_2 = self.conv4_2(conv4_2_pad) + relu4_2 = F.relu(conv4_2) + conv4_3_pad = F.pad(relu4_2, (1L, 1L, 1L, 1L)) + conv4_3 = self.conv4_3(conv4_3_pad) + relu4_3 = F.relu(conv4_3) + conv4_4_pad = F.pad(relu4_3, (1L, 1L, 1L, 1L)) + conv4_4 = self.conv4_4(conv4_4_pad) + relu4_4 = F.relu(conv4_4) + pool4 = F.max_pool2d(relu4_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + conv5_1_pad = F.pad(pool4, (1L, 1L, 1L, 1L)) + conv5_1 = self.conv5_1(conv5_1_pad) + relu5_1 = F.relu(conv5_1) + conv5_2_pad = F.pad(relu5_1, (1L, 1L, 1L, 1L)) + conv5_2 = self.conv5_2(conv5_2_pad) + relu5_2 = F.relu(conv5_2) + conv5_3_pad = F.pad(relu5_2, (1L, 1L, 1L, 1L)) + conv5_3 = self.conv5_3(conv5_3_pad) + relu5_3 = F.relu(conv5_3) + conv5_4_pad = F.pad(relu5_3, (1L, 1L, 1L, 1L)) + conv5_4 = self.conv5_4(conv5_4_pad) + relu5_4 = F.relu(conv5_4) + pool5 = F.max_pool2d(relu5_4, kernel_size=(2L, 2L), stride=(2L, 2L), padding=(0L,), ceil_mode=True) + fc6_0 = pool5.view(pool5.size(0), -1) + fc6_1 = self.fc6_1(fc6_0) + relu6 = F.relu(fc6_1) + drop6 = F.dropout(input = relu6, p = 0.5, training = self.training, inplace = True) + fc7_0 = drop6.view(drop6.size(0), -1) + fc7_1 = self.fc7_1(fc7_0) + relu7 = F.relu(fc7_1) + drop7 = F.dropout(input = relu7, p = 0.5, training = self.training, inplace = True) + fc8_0 = drop7.view(drop7.size(0), -1) + fc8_1 = self.fc8_1(fc8_0) + prob = F.softmax(fc8_1) + return prob + + + @staticmethod + def __conv(dim, name, **kwargs): + if dim == 1: layer = nn.Conv1d(**kwargs) + elif dim == 2: layer = nn.Conv2d(**kwargs) + elif dim == 3: layer = nn.Conv3d(**kwargs) + else: raise NotImplementedError() + + layer.state_dict()['weight'].copy_(torch.from_numpy(__weights_dict[name]['weights'])) + if 'bias' in __weights_dict[name]: + layer.state_dict()['bias'].copy_(torch.from_numpy(__weights_dict[name]['bias'])) + return layer + + @staticmethod + def __dense(name, **kwargs): + layer = nn.Linear(**kwargs) + layer.state_dict()['weight'].copy_(torch.from_numpy(__weights_dict[name]['weights'])) + if 'bias' in __weights_dict[name]: + layer.state_dict()['bias'].copy_(torch.from_numpy(__weights_dict[name]['bias'])) + return layer diff --git a/PaintVgg19/weight/conv1_1.jpg b/PaintVgg19/weight/conv1_1.jpg new file mode 100755 index 0000000..884de33 Binary files /dev/null and b/PaintVgg19/weight/conv1_1.jpg differ diff --git a/PaintVgg19/weight/conv1_2.jpg b/PaintVgg19/weight/conv1_2.jpg new file mode 100755 index 0000000..b18ca8f Binary files /dev/null and b/PaintVgg19/weight/conv1_2.jpg differ diff --git a/PaintVgg19/weight/conv2_1.jpg b/PaintVgg19/weight/conv2_1.jpg new file mode 100755 index 0000000..64b08e8 Binary files /dev/null and b/PaintVgg19/weight/conv2_1.jpg differ diff --git a/PaintVgg19/weight/conv2_2.jpg b/PaintVgg19/weight/conv2_2.jpg new file mode 100755 index 0000000..be9ccc0 Binary files /dev/null and b/PaintVgg19/weight/conv2_2.jpg differ diff --git a/PaintVgg19/weight/conv3_1.jpg b/PaintVgg19/weight/conv3_1.jpg new file mode 100755 index 0000000..974a91c Binary files /dev/null and b/PaintVgg19/weight/conv3_1.jpg differ diff --git a/PaintVgg19/weight/conv3_2.jpg b/PaintVgg19/weight/conv3_2.jpg new file mode 100755 index 0000000..d3a8a4c Binary files /dev/null and b/PaintVgg19/weight/conv3_2.jpg differ diff --git a/PaintVgg19/weight/conv3_3.jpg b/PaintVgg19/weight/conv3_3.jpg new file mode 100755 index 0000000..fe0a45d Binary files /dev/null and b/PaintVgg19/weight/conv3_3.jpg differ diff --git a/PaintVgg19/weight/conv3_4.jpg b/PaintVgg19/weight/conv3_4.jpg new file mode 100755 index 0000000..c153bfb Binary files /dev/null and b/PaintVgg19/weight/conv3_4.jpg differ diff --git a/PaintVgg19/weight/conv4_1.jpg b/PaintVgg19/weight/conv4_1.jpg new file mode 100755 index 0000000..d703e81 Binary files /dev/null and b/PaintVgg19/weight/conv4_1.jpg differ diff --git a/PaintVgg19/weight/conv4_2.jpg b/PaintVgg19/weight/conv4_2.jpg new file mode 100755 index 0000000..a2d6619 Binary files /dev/null and b/PaintVgg19/weight/conv4_2.jpg differ diff --git a/PaintVgg19/weight/conv4_3.jpg b/PaintVgg19/weight/conv4_3.jpg new file mode 100755 index 0000000..0f64dbc Binary files /dev/null and b/PaintVgg19/weight/conv4_3.jpg differ diff --git a/PaintVgg19/weight/conv4_4.jpg b/PaintVgg19/weight/conv4_4.jpg new file mode 100755 index 0000000..d884fa7 Binary files /dev/null and b/PaintVgg19/weight/conv4_4.jpg differ diff --git a/PaintVgg19/weight/conv5_1.jpg b/PaintVgg19/weight/conv5_1.jpg new file mode 100755 index 0000000..0cda92b Binary files /dev/null and b/PaintVgg19/weight/conv5_1.jpg differ diff --git a/PaintVgg19/weight/conv5_2.jpg b/PaintVgg19/weight/conv5_2.jpg new file mode 100755 index 0000000..6c234e7 Binary files /dev/null and b/PaintVgg19/weight/conv5_2.jpg differ diff --git a/PaintVgg19/weight/conv5_3.jpg b/PaintVgg19/weight/conv5_3.jpg new file mode 100755 index 0000000..c995d46 Binary files /dev/null and b/PaintVgg19/weight/conv5_3.jpg differ diff --git a/PaintVgg19/weight/conv5_4.jpg b/PaintVgg19/weight/conv5_4.jpg new file mode 100755 index 0000000..e7e71e2 Binary files /dev/null and b/PaintVgg19/weight/conv5_4.jpg differ diff --git a/RBM/README.md b/RBM/README.md new file mode 100755 index 0000000..377faaa --- /dev/null +++ b/RBM/README.md @@ -0,0 +1,9 @@ +# Restricted Boltzmann Machines (RBMs) in PyTorch + +> **Author:** [Gabriel Bianconi](http://www.gabrielbianconi.com/) + +## Overview + +This project implements Restricted Boltzmann Machines (RBMs) using PyTorch (see `rbm.py`). Our implementation includes momentum, weight decay, L2 regularization, and CD-*k* contrastive divergence. We also provide support for CPU and GPU (CUDA) calculations. + +In addition, we provide an example file applying our model to the MNIST dataset (see `mnist_dataset.py`). The example trains an RBM, uses the trained model to extract features from the images, and finally uses a SciPy-based logistic regression for classification. It achieves 92.8% classification accuracy (this is obviously not a cutting-edge model). diff --git a/RBM/mnist_example.py b/RBM/mnist_example.py new file mode 100755 index 0000000..a8d18dd --- /dev/null +++ b/RBM/mnist_example.py @@ -0,0 +1,95 @@ +import os +import numpy as np +from sklearn.linear_model import LogisticRegression +import torch +import torchvision.datasets +import torchvision.models +import torchvision.transforms + +from rbm import RBM + + +########## CONFIGURATION ########## +BATCH_SIZE = 64 +VISIBLE_UNITS = 784 # 28 x 28 images +HIDDEN_UNITS = 128 +CD_K = 2 +EPOCHS = 100 + +DATA_FOLDER = os.path.split(os.path.realpath(__file__))[0]+'/../Dataset/' +print("Dataset Path :" + DATA_FOLDER) + +CUDA = torch.cuda.is_available() +CUDA_DEVICE = 0 + +if CUDA: + torch.cuda.set_device(CUDA_DEVICE) + + +########## LOADING DATASET ########## +print('Loading dataset...') + +train_dataset = torchvision.datasets.MNIST(root=DATA_FOLDER, train=True, transform=torchvision.transforms.ToTensor(), download=True) +train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=BATCH_SIZE) + +test_dataset = torchvision.datasets.MNIST(root=DATA_FOLDER, train=False, transform=torchvision.transforms.ToTensor(), download=True) +test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=BATCH_SIZE) + + +########## TRAINING RBM ########## +print('Training RBM...') + +rbm = RBM(VISIBLE_UNITS, HIDDEN_UNITS, CD_K, use_cuda=CUDA) + +for epoch in range(EPOCHS): + epoch_error = 0.0 + + for batch, _ in train_loader: + batch = batch.view(len(batch), VISIBLE_UNITS) # flatten input data + + if CUDA: + batch = batch.cuda() + + batch_error = rbm.contrastive_divergence(batch) + + epoch_error += batch_error + + print('Epoch Error (epoch=%d): %.4f' % (epoch, epoch_error)) + + +########## EXTRACT FEATURES ########## +print('Extracting features...') + +train_features = np.zeros((len(train_dataset), HIDDEN_UNITS)) +train_labels = np.zeros(len(train_dataset)) +test_features = np.zeros((len(test_dataset), HIDDEN_UNITS)) +test_labels = np.zeros(len(test_dataset)) + +for i, (batch, labels) in enumerate(train_loader): + batch = batch.view(len(batch), VISIBLE_UNITS) # flatten input data + + if CUDA: + batch = batch.cuda() + + train_features[i*BATCH_SIZE:i*BATCH_SIZE+len(batch)] = rbm.sample_hidden(batch).cpu().numpy() + train_labels[i*BATCH_SIZE:i*BATCH_SIZE+len(batch)] = labels.numpy() + +for i, (batch, labels) in enumerate(test_loader): + batch = batch.view(len(batch), VISIBLE_UNITS) # flatten input data + + if CUDA: + batch = batch.cuda() + + test_features[i*BATCH_SIZE:i*BATCH_SIZE+len(batch)] = rbm.sample_hidden(batch).cpu().numpy() + test_labels[i*BATCH_SIZE:i*BATCH_SIZE+len(batch)] = labels.numpy() + + +########## CLASSIFICATION ########## +print('Classifying...') + +clf = LogisticRegression() +clf.fit(train_features, train_labels) +predictions = clf.predict(test_features) + +print('Result: %d/%d' % (sum(predictions == test_labels), test_labels.shape[0])) + diff --git a/RBM/rbm.py b/RBM/rbm.py new file mode 100755 index 0000000..6daab5a --- /dev/null +++ b/RBM/rbm.py @@ -0,0 +1,95 @@ +import torch + + +class RBM(): + + def __init__(self, num_visible, num_hidden, k, learning_rate=1e-3, momentum_coefficient=0.5, weight_decay=1e-4, use_cuda=True): + self.num_visible = num_visible + self.num_hidden = num_hidden + self.k = k + self.learning_rate = learning_rate + self.momentum_coefficient = momentum_coefficient + self.weight_decay = weight_decay + self.use_cuda = use_cuda + + self.weights = torch.randn(num_visible, num_hidden) * 0.1 + self.visible_bias = torch.ones(num_visible) * 0.5 + self.hidden_bias = torch.zeros(num_hidden) + + self.weights_momentum = torch.zeros(num_visible, num_hidden) + self.visible_bias_momentum = torch.zeros(num_visible) + self.hidden_bias_momentum = torch.zeros(num_hidden) + + if self.use_cuda: + self.weights = self.weights.cuda() + self.visible_bias = self.visible_bias.cuda() + self.hidden_bias = self.hidden_bias.cuda() + + self.weights_momentum = self.weights_momentum.cuda() + self.visible_bias_momentum = self.visible_bias_momentum.cuda() + self.hidden_bias_momentum = self.hidden_bias_momentum.cuda() + + def sample_hidden(self, visible_probabilities): + hidden_activations = torch.matmul(visible_probabilities, self.weights) + self.hidden_bias + hidden_probabilities = self._sigmoid(hidden_activations) + return hidden_probabilities + + def sample_visible(self, hidden_probabilities): + visible_activations = torch.matmul(hidden_probabilities, self.weights.t()) + self.visible_bias + visible_probabilities = self._sigmoid(visible_activations) + return visible_probabilities + + def contrastive_divergence(self, input_data): + # Positive phase + positive_hidden_probabilities = self.sample_hidden(input_data) + positive_hidden_activations = (positive_hidden_probabilities >= self._random_probabilities(self.num_hidden)).float() + positive_associations = torch.matmul(input_data.t(), positive_hidden_activations) + + # Negative phase + hidden_activations = positive_hidden_activations + + for step in range(self.k): + visible_probabilities = self.sample_visible(hidden_activations) + hidden_probabilities = self.sample_hidden(visible_probabilities) + hidden_activations = (hidden_probabilities >= self._random_probabilities(self.num_hidden)).float() + + negative_visible_probabilities = visible_probabilities + negative_hidden_probabilities = hidden_probabilities + + negative_associations = torch.matmul(negative_visible_probabilities.t(), negative_hidden_probabilities) + + # Update parameters + self.weights_momentum *= self.momentum_coefficient + self.weights_momentum += (positive_associations - negative_associations) + + self.visible_bias_momentum *= self.momentum_coefficient + self.visible_bias_momentum += torch.sum(input_data - negative_visible_probabilities, dim=0) + + self.hidden_bias_momentum *= self.momentum_coefficient + self.hidden_bias_momentum += torch.sum(positive_hidden_probabilities - negative_hidden_probabilities, dim=0) + + batch_size = input_data.size(0) + + self.weights += self.weights_momentum * self.learning_rate / batch_size + self.visible_bias += self.visible_bias_momentum * self.learning_rate / batch_size + self.hidden_bias += self.hidden_bias_momentum * self.learning_rate / batch_size + + self.weights -= self.weights * self.weight_decay # L2 weight decay + + # Compute reconstruction error + error = torch.sum((input_data - negative_visible_probabilities)**2) + + return error + + def _sigmoid(self, x): + return 1 / (1 + torch.exp(-x)) + + def _random_probabilities(self, num): + random_probabilities = torch.rand(num) + + if self.use_cuda: + random_probabilities = random_probabilities.cuda() + + return random_probabilities + + diff --git a/VisualNetwork/TrainNetwork.py b/VisualNetwork/TrainNetwork.py new file mode 100644 index 0000000..d88cd1e --- /dev/null +++ b/VisualNetwork/TrainNetwork.py @@ -0,0 +1,147 @@ +from __future__ import print_function +import os +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +from model import Net +from torch.utils.data import Dataset, DataLoader +from PIL import Image +import random +import cv2 + + +batchsize = 16 + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +print("device: " + str(device)) + + +class ManualDataset(Dataset): + def __init__(self, transform=None): + self.transform = transform + + def __getitem__(self, index): + + # data = np.random.random_integers(0,255,(28,28)) + data = np.zeros((28, 28), dtype="float32") + data = data.astype("float32") + + radiu = int(random.random()*7+3) + basex = random.randint(radiu, 29-radiu) + basey = random.randint(radiu, 29-radiu) + ifcircle = random.random() + + if ifcircle>0.5: + cv2.circle(data,(basex,basey),radiu,255,-1) + angle = random.random() * 360 + M = cv2.getRotationMatrix2D((basex, basey), angle, 1.0) + data = cv2.warpAffine(data, M, (28, 28)) + label = 0 + else: + cv2.rectangle(data,(basex-radiu,basey-radiu),(basex+radiu,basey+radiu),255,-1) + angle = random.random() * 360 + M = cv2.getRotationMatrix2D((basex,basey), angle, 1.0) + data = cv2.warpAffine(data, M, (28,28)) + label = 1 + + # cv2.imwrite("test.jpg",data) + + data = (data - 128) / 256.0 + img = torch.from_numpy(data) + img = img.view(1, 28, 28) + return img, label + + def __len__(self): + return 10000 + + +train_loader = torch.utils.data.DataLoader( + ManualDataset(transform=transforms.Compose([ + # transforms.ColorJitter(0.2,0.2), + # transforms.RandomRotation(30), + # transforms.RandomResizedCrop(28), + transforms.ToTensor(), + transforms.Normalize((128,), (256,)), ])), + batch_size=batchsize, shuffle=True, num_workers=2) +test_loader = torch.utils.data.DataLoader( + ManualDataset(transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((128,), (256,))])), + batch_size=batchsize, shuffle=True, num_workers=2) + + +# train_loader = torch.utils.data.DataLoader( +# datasets.MNIST(root='.', train=True, download=False, +# transform=transforms.Compose([ +# transforms.ColorJitter(0.2,0.2), +# transforms.RandomRotation(30), +# transforms.RandomResizedCrop(28), +# transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))])), +# batch_size=batchsize, shuffle=True, num_workers=4) +# test_loader = torch.utils.data.DataLoader( +# datasets.MNIST(root='.', train=False, transform=transforms.Compose([ +# transforms.ToTensor(), +# transforms.Normalize((0.1307,), (0.3081,)) +# ])), batch_size=batchsize, shuffle=True, num_workers=4) + + +model = (Net()).to(device) +optimizer = optim.SGD(model.parameters(), lr=0.01) + + +def train(epoch): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.to(device), target.to(device) + optimizer.zero_grad() + + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + + if batch_idx % 100 == 0 and batch_idx > 0: + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), + len(train_loader.dataset), + 100. * batch_idx / len(train_loader), + loss.item())) + + +def test(): + with torch.no_grad(): + model.eval() + test_loss = 0 + correct = 0 + for data, target in test_loader: + data, target = data.to(device), target.to(device) + output = model(data) + + # sum up batch loss + test_loss += F.nll_loss(output, target, size_average=False).item() + # get the index of the max log-probability + pred = output.max(1, keepdim=True)[1] + correct += pred.eq(target.view_as(pred)).sum().item() + + test_loss /= len(test_loader.dataset) + print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, + len(test_loader.dataset), + 100. * correct / len( + test_loader.dataset))) + + +for epoch in range(1, 15): + train(epoch) + test() + +torch.save(model.state_dict(), CurrentPath+"mnistcnn.pth.tar") diff --git a/VisualNetwork/VisualNetwork.py b/VisualNetwork/VisualNetwork.py new file mode 100644 index 0000000..eafa27a --- /dev/null +++ b/VisualNetwork/VisualNetwork.py @@ -0,0 +1,133 @@ +from __future__ import print_function +import os +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +import cv2 +from model import Net + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + + +image_out_path=CurrentPath+"/imageout/" +if not os.path.exists(image_out_path): + os.mkdir(image_out_path) + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +netmodel = Net() + +state_dict = torch.load(CurrentPath+"mnistcnn.pth.tar", map_location='cpu') +from collections import OrderedDict + +new_state_dict = OrderedDict() +for k, v in state_dict.items(): + name = k + if k[0:7] == "module.": + name = k[7:] + new_state_dict[name] = v +netmodel.load_state_dict(new_state_dict) +netmodel.eval() + + +def visualmodle(initimagefile, netmodel, layer, channel): + class Suggest(nn.Module): + def __init__(self, initdata=None): + super(Suggest, self).__init__() + + # self.weight = nn.Parameter(torch.randn((1,1,28,28))) + + if initdata is not None: + self.weight = nn.Parameter(initdata) + else: + data = np.random.uniform(-1, 1, (1, 1, 28, 28)) + data = data.astype("float32") + data = torch.from_numpy(data) + self.weight = nn.Parameter(data) + + def forward(self, x): + x = x * self.weight + return F.upsample(x, (28, 28), mode='bilinear', align_corners=True) + + netmodel.eval() + + if initimagefile is None: + model = Suggest(None) + else: + img = cv2.imread(initimagefile) + b, g, r = cv2.split(img) + img = cv2.merge([r, g, b]) + img = img.astype("float32") + img = np.transpose(img, (2, 0, 1)) + img = torch.from_numpy(img) + normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) + img = img / 256 + img = normalize(img) + model = Suggest(img) + + optimizer = optim.SGD(model.parameters(), lr=1.0) + model.train() + data = np.ones((1, 1, 28, 28), dtype="float32") + data = torch.from_numpy(data) + + criterion = nn.MSELoss() + if torch.cuda.is_available(): + criterion = criterion.cuda() + model = model.cuda() + netmodel = netmodel.cuda() + data = data.cuda() + + for i in range(100): + output = model(data) + + netout = [] + netint = [] + + def getnet(self, input, output): + netout.append(output) + netint.append(input) + + # print(netmodel.features) + + handle = netmodel.features[layer].register_forward_hook(getnet) + output = netmodel(output) + output = netout[0][0,channel,:,:] + + # output = output.view(1, 1, output.shape[0], output.shape[1]) + # output = F.max_pool2d(output, netmodel.conv2.kernel_size[0]) + + netout = [] + netint = [] + + # output = output.mean() + target = output + 256.0 + target = target.detach() + loss = criterion(output, target) + optimizer.zero_grad() + loss.backward() + optimizer.step() + print('Train Inter:' + str(i) + " loss:" + str(loss.cpu().detach().numpy())) + handle.remove() + + model.eval() + output = model(data) + out = output.view(28, 28) + out = out.cpu().detach().numpy() + outmax = out.max() + outmin = out.min() + out = out * (256.0 / (outmax - outmin)) - outmin * (256.0 / (outmax - outmin)) + return out + + + +for i in range(8): + out = visualmodle(None, netmodel, 3, i) + cv2.imwrite(image_out_path+"/L3_C" + str(i) + ".jpg", out) diff --git a/VisualNetwork/VisualVgg19.py b/VisualNetwork/VisualVgg19.py new file mode 100644 index 0000000..f3dad66 --- /dev/null +++ b/VisualNetwork/VisualVgg19.py @@ -0,0 +1,215 @@ +from __future__ import print_function +import os +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np +import cv2 + + +CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" +print("Current Path :" + CurrentPath) + +image_out_path=CurrentPath+"/imageoutVgg19/" +if not os.path.exists(image_out_path): + os.mkdir(image_out_path) + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +#region define network myself +# class Net(nn.Module): +# def __init__(self): +# super(Net, self).__init__() +# self.conv1 = nn.Conv2d(1, 4, kernel_size=5) +# self.conv2 = nn.Conv2d(4, 8, kernel_size=3) +# self.conv3 = nn.Conv2d(8, 16, kernel_size=5) +# self.fc1 = nn.Linear(1*16, 10) +# +# def forward(self, x): +# +# x = F.relu(F.max_pool2d(self.conv1(x), 2)) +# x = F.relu(F.max_pool2d(self.conv2(x), 2)) +# x = F.relu(self.conv3(x), 2) +# +# x = x.view(-1, 1*16) +# x = F.relu(self.fc1(x)) +# +# return F.log_softmax(x, dim=1) +# +# netmodel = Net() +# +# state_dict = torch.load("mnistcnn.pth.tar", map_location='cpu') +# from collections import OrderedDict +# new_state_dict = OrderedDict() +# for k, v in state_dict.items(): +# name = k +# if k[0:7] == "module.": +# name = k[7:] +# new_state_dict[name] = v +# netmodel.load_state_dict(new_state_dict) +# netmodel.eval() + + + +# train_loader = torch.utils.data.DataLoader( +# datasets.MNIST(root='.', train=True, download=True, +# transform=transforms.Compose([ +# transforms.ToTensor(), +# transforms.Normalize((0.1307,), (0.3081,)) +# ])), batch_size=1, shuffle=True, num_workers=4) +# test_loader = torch.utils.data.DataLoader( +# datasets.MNIST(root='.', train=False, transform=transforms.Compose([ +# transforms.ToTensor(), +# transforms.Normalize((0.1307,), (0.3081,)) +# ])), batch_size=1, shuffle=True, num_workers=4) +# +# for batch_idx, (data, target) in enumerate(train_loader): +# data, target = data.to(device), target.to(device) +# +# output = netmodel(data) +# i=0 + + +#endregion define network myself + +#region define from torchvision models +netmodel = torchvision.models.vgg19(True) +netmodel.eval() + + +# img = cv2.imread("t.jpg") +# b,g,r = cv2.split(img) +# img = cv2.merge([r,g,b]) +# img = img.astype("float32") +# img = np.transpose(img,(2,0,1)) +# img = torch.from_numpy(img) +# +# normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], +# std=[0.229, 0.224, 0.225]) +# img = img/256 +# img = normalize(img) +# +# img = img.view(1,3,224,224) +# out = netmodel(img) +# out = out.view(-1).detach().numpy() +# index = np.argmax(out) +# value = out[index] +# i=0 +#endregion define from torchvision models + + +def visualmodle(initimagefile,netmodel,layer,channel): + + class Suggest(nn.Module): + def __init__(self, initdata=None): + super(Suggest, self).__init__() + + # self.weight = nn.Parameter(torch.randn((1,1,28,28))) + + if initdata is not None: + self.weight = nn.Parameter(initdata) + else: + data = np.random.uniform(-1, 1, (1, 3, 224, 224)) + data = data.astype("float32") + data = torch.from_numpy(data) + self.weight = nn.Parameter(data) + + def forward(self, x): + x = x * self.weight + return F.upsample(x, (224, 224), mode='bilinear', align_corners=True) + + netmodel.eval() + + if initimagefile is None: + model = Suggest(None) + else: + img = cv2.imread(initimagefile) + b, g, r = cv2.split(img) + img = cv2.merge([r, g, b]) + img = img.astype("float32") + img = np.transpose(img, (2, 0, 1)) + img = torch.from_numpy(img) + normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) + img = img / 256 + img = normalize(img) + model = Suggest(img) + + optimizer = optim.SGD(model.parameters(), lr= 1.0) + model.train() + data = np.ones((1,3,224,224), dtype="float32") + data = torch.from_numpy(data) + + # target = np.zeros((1),dtype='int64') + # target[0]=14 + # target = torch.from_numpy(target) + + # criterion = nn.CrossEntropyLoss() + criterion = nn.MSELoss() + if torch.cuda.is_available(): + criterion = criterion.cuda() + model = model.cuda() + netmodel = netmodel.cuda() + data = data.cuda() + + for i in range(100): + output = model(data) + + netout=[] + netint=[] + def getnet(self, input, output): + netout.append(output) + netint.append(input) + # print(netmodel.features) + handle = netmodel.features[layer].register_forward_hook(getnet) + output = netmodel(output) + output = netout[0][0,channel,:,:] + netout=[] + netint=[] + + # output = output.mean() + target = output+256.0 + target = target.detach() + loss = criterion(output, target) + optimizer.zero_grad() + loss.backward() + optimizer.step() + print('Train Inter:'+str(i) + " loss:"+str(loss.cpu().detach().numpy())) + handle.remove() + + # model = model.cpu() + # netmodel = netmodel.cpu() + # data = data.cpu() + + model.eval() + output = model(data) + out = output.view(3,224,224) + out = out.cpu().detach().numpy() + outmax = out[0].max() + outmin = out[0].min() + out[0] = out[0] * (256.0/(outmax-outmin)) - outmin * (256.0/(outmax-outmin)) + outmax = out[1].max() + outmin = out[1].min() + out[1] = out[1] * (256.0/(outmax-outmin)) - outmin * (256.0/(outmax-outmin)) + outmax = out[2].max() + outmin = out[2].min() + out[2] = out[2] * (256.0/(outmax-outmin)) - outmin * (256.0/(outmax-outmin)) + out = np.transpose(out,(1,2,0)) + b,g,r = cv2.split(out) + out = cv2.merge([r,g,b]) + out = out*2 + out = out- (128*(2-1)) + return out + + +# 128 7 +# 512 30 +for i in range(512): + out = visualmodle(None,netmodel,36,i) + cv2.imwrite(image_out_path+"L36_C"+str(i)+".jpg",out) +i=0 \ No newline at end of file diff --git a/VisualNetwork/imageout/L1_C0.jpg b/VisualNetwork/imageout/L1_C0.jpg new file mode 100644 index 0000000..afad6dd Binary files /dev/null and b/VisualNetwork/imageout/L1_C0.jpg differ diff --git a/VisualNetwork/imageout/L1_C1.jpg b/VisualNetwork/imageout/L1_C1.jpg new file mode 100644 index 0000000..611306c Binary files /dev/null and b/VisualNetwork/imageout/L1_C1.jpg differ diff --git a/VisualNetwork/imageout/L1_C2.jpg b/VisualNetwork/imageout/L1_C2.jpg new file mode 100644 index 0000000..5044dbf Binary files /dev/null and b/VisualNetwork/imageout/L1_C2.jpg differ diff --git a/VisualNetwork/imageout/L1_C3.jpg b/VisualNetwork/imageout/L1_C3.jpg new file mode 100644 index 0000000..d4c2abc Binary files /dev/null and b/VisualNetwork/imageout/L1_C3.jpg differ diff --git a/VisualNetwork/imageout/L1_C4.jpg b/VisualNetwork/imageout/L1_C4.jpg new file mode 100644 index 0000000..08aae1d Binary files /dev/null and b/VisualNetwork/imageout/L1_C4.jpg differ diff --git a/VisualNetwork/imageout/L1_C5.jpg b/VisualNetwork/imageout/L1_C5.jpg new file mode 100644 index 0000000..31e2e8b Binary files /dev/null and b/VisualNetwork/imageout/L1_C5.jpg differ diff --git a/VisualNetwork/imageout/L1_C6.jpg b/VisualNetwork/imageout/L1_C6.jpg new file mode 100644 index 0000000..887f1b4 Binary files /dev/null and b/VisualNetwork/imageout/L1_C6.jpg differ diff --git a/VisualNetwork/imageout/L1_C7.jpg b/VisualNetwork/imageout/L1_C7.jpg new file mode 100644 index 0000000..86adeee Binary files /dev/null and b/VisualNetwork/imageout/L1_C7.jpg differ diff --git a/VisualNetwork/imageout/L2_C0.jpg b/VisualNetwork/imageout/L2_C0.jpg new file mode 100644 index 0000000..ec6cd81 Binary files /dev/null and b/VisualNetwork/imageout/L2_C0.jpg differ diff --git a/VisualNetwork/imageout/L2_C1.jpg b/VisualNetwork/imageout/L2_C1.jpg new file mode 100644 index 0000000..0273042 Binary files /dev/null and b/VisualNetwork/imageout/L2_C1.jpg differ diff --git a/VisualNetwork/imageout/L2_C2.jpg b/VisualNetwork/imageout/L2_C2.jpg new file mode 100644 index 0000000..0105f35 Binary files /dev/null and b/VisualNetwork/imageout/L2_C2.jpg differ diff --git a/VisualNetwork/imageout/L2_C3.jpg b/VisualNetwork/imageout/L2_C3.jpg new file mode 100644 index 0000000..e750c09 Binary files /dev/null and b/VisualNetwork/imageout/L2_C3.jpg differ diff --git a/VisualNetwork/imageout/L2_C4.jpg b/VisualNetwork/imageout/L2_C4.jpg new file mode 100644 index 0000000..5f951de Binary files /dev/null and b/VisualNetwork/imageout/L2_C4.jpg differ diff --git a/VisualNetwork/imageout/L2_C5.jpg b/VisualNetwork/imageout/L2_C5.jpg new file mode 100644 index 0000000..e1bc38c Binary files /dev/null and b/VisualNetwork/imageout/L2_C5.jpg differ diff --git a/VisualNetwork/imageout/L2_C6.jpg b/VisualNetwork/imageout/L2_C6.jpg new file mode 100644 index 0000000..1825bc0 Binary files /dev/null and b/VisualNetwork/imageout/L2_C6.jpg differ diff --git a/VisualNetwork/imageout/L2_C7.jpg b/VisualNetwork/imageout/L2_C7.jpg new file mode 100644 index 0000000..a811c13 Binary files /dev/null and b/VisualNetwork/imageout/L2_C7.jpg differ diff --git a/VisualNetwork/imageout/L3_C0.jpg b/VisualNetwork/imageout/L3_C0.jpg new file mode 100644 index 0000000..6bf99ae Binary files /dev/null and b/VisualNetwork/imageout/L3_C0.jpg differ diff --git a/VisualNetwork/imageout/L3_C1.jpg b/VisualNetwork/imageout/L3_C1.jpg new file mode 100644 index 0000000..fe4524e Binary files /dev/null and b/VisualNetwork/imageout/L3_C1.jpg differ diff --git a/VisualNetwork/imageout/L3_C2.jpg b/VisualNetwork/imageout/L3_C2.jpg new file mode 100644 index 0000000..ee51d33 Binary files /dev/null and b/VisualNetwork/imageout/L3_C2.jpg differ diff --git a/VisualNetwork/imageout/L3_C3.jpg b/VisualNetwork/imageout/L3_C3.jpg new file mode 100644 index 0000000..4fbc7d6 Binary files /dev/null and b/VisualNetwork/imageout/L3_C3.jpg differ diff --git a/VisualNetwork/imageout/L3_C4.jpg b/VisualNetwork/imageout/L3_C4.jpg new file mode 100644 index 0000000..27e0c5d Binary files /dev/null and b/VisualNetwork/imageout/L3_C4.jpg differ diff --git a/VisualNetwork/imageout/L3_C5.jpg b/VisualNetwork/imageout/L3_C5.jpg new file mode 100644 index 0000000..e062ee8 Binary files /dev/null and b/VisualNetwork/imageout/L3_C5.jpg differ diff --git a/VisualNetwork/imageout/L3_C6.jpg b/VisualNetwork/imageout/L3_C6.jpg new file mode 100644 index 0000000..de69570 Binary files /dev/null and b/VisualNetwork/imageout/L3_C6.jpg differ diff --git a/VisualNetwork/imageout/L3_C7.jpg b/VisualNetwork/imageout/L3_C7.jpg new file mode 100644 index 0000000..8366619 Binary files /dev/null and b/VisualNetwork/imageout/L3_C7.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C0.jpg b/VisualNetwork/imageoutVgg19/L36_C0.jpg new file mode 100644 index 0000000..6c8d99a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C0.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C1.jpg b/VisualNetwork/imageoutVgg19/L36_C1.jpg new file mode 100644 index 0000000..e3418ac Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C1.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C10.jpg b/VisualNetwork/imageoutVgg19/L36_C10.jpg new file mode 100644 index 0000000..e972a0b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C10.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C100.jpg b/VisualNetwork/imageoutVgg19/L36_C100.jpg new file mode 100644 index 0000000..41b8a19 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C100.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C101.jpg b/VisualNetwork/imageoutVgg19/L36_C101.jpg new file mode 100644 index 0000000..74efecd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C101.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C102.jpg b/VisualNetwork/imageoutVgg19/L36_C102.jpg new file mode 100644 index 0000000..a08f72a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C102.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C103.jpg b/VisualNetwork/imageoutVgg19/L36_C103.jpg new file mode 100644 index 0000000..aba4312 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C103.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C104.jpg b/VisualNetwork/imageoutVgg19/L36_C104.jpg new file mode 100644 index 0000000..c87e85b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C104.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C105.jpg b/VisualNetwork/imageoutVgg19/L36_C105.jpg new file mode 100644 index 0000000..faa1dce Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C105.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C106.jpg b/VisualNetwork/imageoutVgg19/L36_C106.jpg new file mode 100644 index 0000000..5ade0b9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C106.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C107.jpg b/VisualNetwork/imageoutVgg19/L36_C107.jpg new file mode 100644 index 0000000..f68a685 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C107.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C108.jpg b/VisualNetwork/imageoutVgg19/L36_C108.jpg new file mode 100644 index 0000000..655dae0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C108.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C109.jpg b/VisualNetwork/imageoutVgg19/L36_C109.jpg new file mode 100644 index 0000000..15ceec4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C109.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C11.jpg b/VisualNetwork/imageoutVgg19/L36_C11.jpg new file mode 100644 index 0000000..04d762e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C11.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C110.jpg b/VisualNetwork/imageoutVgg19/L36_C110.jpg new file mode 100644 index 0000000..0f0b3d6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C110.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C111.jpg b/VisualNetwork/imageoutVgg19/L36_C111.jpg new file mode 100644 index 0000000..c0f4731 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C111.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C112.jpg b/VisualNetwork/imageoutVgg19/L36_C112.jpg new file mode 100644 index 0000000..3225eff Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C112.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C113.jpg b/VisualNetwork/imageoutVgg19/L36_C113.jpg new file mode 100644 index 0000000..5ea991a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C113.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C114.jpg b/VisualNetwork/imageoutVgg19/L36_C114.jpg new file mode 100644 index 0000000..eede4d3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C114.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C115.jpg b/VisualNetwork/imageoutVgg19/L36_C115.jpg new file mode 100644 index 0000000..42b00a2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C115.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C116.jpg b/VisualNetwork/imageoutVgg19/L36_C116.jpg new file mode 100644 index 0000000..4189e24 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C116.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C117.jpg b/VisualNetwork/imageoutVgg19/L36_C117.jpg new file mode 100644 index 0000000..a6ef4b4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C117.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C118.jpg b/VisualNetwork/imageoutVgg19/L36_C118.jpg new file mode 100644 index 0000000..0c8c06f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C118.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C119.jpg b/VisualNetwork/imageoutVgg19/L36_C119.jpg new file mode 100644 index 0000000..e25e26a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C119.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C12.jpg b/VisualNetwork/imageoutVgg19/L36_C12.jpg new file mode 100644 index 0000000..2b559eb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C12.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C120.jpg b/VisualNetwork/imageoutVgg19/L36_C120.jpg new file mode 100644 index 0000000..68618d3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C120.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C121.jpg b/VisualNetwork/imageoutVgg19/L36_C121.jpg new file mode 100644 index 0000000..c139c57 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C121.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C122.jpg b/VisualNetwork/imageoutVgg19/L36_C122.jpg new file mode 100644 index 0000000..d1ff265 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C122.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C123.jpg b/VisualNetwork/imageoutVgg19/L36_C123.jpg new file mode 100644 index 0000000..79aee13 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C123.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C124.jpg b/VisualNetwork/imageoutVgg19/L36_C124.jpg new file mode 100644 index 0000000..fc8756f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C124.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C125.jpg b/VisualNetwork/imageoutVgg19/L36_C125.jpg new file mode 100644 index 0000000..792ecb3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C125.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C126.jpg b/VisualNetwork/imageoutVgg19/L36_C126.jpg new file mode 100644 index 0000000..601c1b1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C126.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C127.jpg b/VisualNetwork/imageoutVgg19/L36_C127.jpg new file mode 100644 index 0000000..f394e9a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C127.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C128.jpg b/VisualNetwork/imageoutVgg19/L36_C128.jpg new file mode 100644 index 0000000..f193526 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C128.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C129.jpg b/VisualNetwork/imageoutVgg19/L36_C129.jpg new file mode 100644 index 0000000..50dcb18 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C129.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C13.jpg b/VisualNetwork/imageoutVgg19/L36_C13.jpg new file mode 100644 index 0000000..eaa7e13 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C13.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C130.jpg b/VisualNetwork/imageoutVgg19/L36_C130.jpg new file mode 100644 index 0000000..b9cbaa0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C130.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C131.jpg b/VisualNetwork/imageoutVgg19/L36_C131.jpg new file mode 100644 index 0000000..4da3a94 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C131.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C132.jpg b/VisualNetwork/imageoutVgg19/L36_C132.jpg new file mode 100644 index 0000000..af07c06 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C132.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C133.jpg b/VisualNetwork/imageoutVgg19/L36_C133.jpg new file mode 100644 index 0000000..470f03e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C133.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C134.jpg b/VisualNetwork/imageoutVgg19/L36_C134.jpg new file mode 100644 index 0000000..67aa772 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C134.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C135.jpg b/VisualNetwork/imageoutVgg19/L36_C135.jpg new file mode 100644 index 0000000..9219e4f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C135.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C136.jpg b/VisualNetwork/imageoutVgg19/L36_C136.jpg new file mode 100644 index 0000000..87b6995 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C136.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C137.jpg b/VisualNetwork/imageoutVgg19/L36_C137.jpg new file mode 100644 index 0000000..e0f5b65 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C137.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C138.jpg b/VisualNetwork/imageoutVgg19/L36_C138.jpg new file mode 100644 index 0000000..70822e0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C138.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C139.jpg b/VisualNetwork/imageoutVgg19/L36_C139.jpg new file mode 100644 index 0000000..aa4f331 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C139.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C14.jpg b/VisualNetwork/imageoutVgg19/L36_C14.jpg new file mode 100644 index 0000000..a514584 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C14.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C140.jpg b/VisualNetwork/imageoutVgg19/L36_C140.jpg new file mode 100644 index 0000000..04f5f05 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C140.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C141.jpg b/VisualNetwork/imageoutVgg19/L36_C141.jpg new file mode 100644 index 0000000..915a27d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C141.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C142.jpg b/VisualNetwork/imageoutVgg19/L36_C142.jpg new file mode 100644 index 0000000..a2ee09b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C142.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C143.jpg b/VisualNetwork/imageoutVgg19/L36_C143.jpg new file mode 100644 index 0000000..16f7afc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C143.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C144.jpg b/VisualNetwork/imageoutVgg19/L36_C144.jpg new file mode 100644 index 0000000..0e97dd2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C144.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C145.jpg b/VisualNetwork/imageoutVgg19/L36_C145.jpg new file mode 100644 index 0000000..e44ad99 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C145.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C146.jpg b/VisualNetwork/imageoutVgg19/L36_C146.jpg new file mode 100644 index 0000000..43ec0dd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C146.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C147.jpg b/VisualNetwork/imageoutVgg19/L36_C147.jpg new file mode 100644 index 0000000..7854c4e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C147.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C148.jpg b/VisualNetwork/imageoutVgg19/L36_C148.jpg new file mode 100644 index 0000000..e7e23da Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C148.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C149.jpg b/VisualNetwork/imageoutVgg19/L36_C149.jpg new file mode 100644 index 0000000..56a1cd4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C149.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C15.jpg b/VisualNetwork/imageoutVgg19/L36_C15.jpg new file mode 100644 index 0000000..3d20755 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C15.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C150.jpg b/VisualNetwork/imageoutVgg19/L36_C150.jpg new file mode 100644 index 0000000..9b1ba0a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C150.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C151.jpg b/VisualNetwork/imageoutVgg19/L36_C151.jpg new file mode 100644 index 0000000..c80bb40 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C151.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C152.jpg b/VisualNetwork/imageoutVgg19/L36_C152.jpg new file mode 100644 index 0000000..f3a34ca Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C152.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C153.jpg b/VisualNetwork/imageoutVgg19/L36_C153.jpg new file mode 100644 index 0000000..dc609b9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C153.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C154.jpg b/VisualNetwork/imageoutVgg19/L36_C154.jpg new file mode 100644 index 0000000..640d909 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C154.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C155.jpg b/VisualNetwork/imageoutVgg19/L36_C155.jpg new file mode 100644 index 0000000..b84b7fc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C155.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C156.jpg b/VisualNetwork/imageoutVgg19/L36_C156.jpg new file mode 100644 index 0000000..e25e711 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C156.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C157.jpg b/VisualNetwork/imageoutVgg19/L36_C157.jpg new file mode 100644 index 0000000..0f05b97 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C157.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C158.jpg b/VisualNetwork/imageoutVgg19/L36_C158.jpg new file mode 100644 index 0000000..77d4480 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C158.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C159.jpg b/VisualNetwork/imageoutVgg19/L36_C159.jpg new file mode 100644 index 0000000..3ee2763 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C159.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C16.jpg b/VisualNetwork/imageoutVgg19/L36_C16.jpg new file mode 100644 index 0000000..3f695fc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C16.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C160.jpg b/VisualNetwork/imageoutVgg19/L36_C160.jpg new file mode 100644 index 0000000..523eb6e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C160.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C161.jpg b/VisualNetwork/imageoutVgg19/L36_C161.jpg new file mode 100644 index 0000000..b488fb6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C161.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C162.jpg b/VisualNetwork/imageoutVgg19/L36_C162.jpg new file mode 100644 index 0000000..2e5b10a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C162.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C163.jpg b/VisualNetwork/imageoutVgg19/L36_C163.jpg new file mode 100644 index 0000000..0a00e8c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C163.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C164.jpg b/VisualNetwork/imageoutVgg19/L36_C164.jpg new file mode 100644 index 0000000..9f5b3ab Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C164.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C165.jpg b/VisualNetwork/imageoutVgg19/L36_C165.jpg new file mode 100644 index 0000000..a58ccd6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C165.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C166.jpg b/VisualNetwork/imageoutVgg19/L36_C166.jpg new file mode 100644 index 0000000..28c714d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C166.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C167.jpg b/VisualNetwork/imageoutVgg19/L36_C167.jpg new file mode 100644 index 0000000..3104f01 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C167.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C168.jpg b/VisualNetwork/imageoutVgg19/L36_C168.jpg new file mode 100644 index 0000000..5481138 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C168.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C169.jpg b/VisualNetwork/imageoutVgg19/L36_C169.jpg new file mode 100644 index 0000000..88089b4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C169.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C17.jpg b/VisualNetwork/imageoutVgg19/L36_C17.jpg new file mode 100644 index 0000000..35cd8a5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C17.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C170.jpg b/VisualNetwork/imageoutVgg19/L36_C170.jpg new file mode 100644 index 0000000..dfb156e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C170.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C171.jpg b/VisualNetwork/imageoutVgg19/L36_C171.jpg new file mode 100644 index 0000000..4aa2d27 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C171.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C172.jpg b/VisualNetwork/imageoutVgg19/L36_C172.jpg new file mode 100644 index 0000000..d6c301a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C172.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C173.jpg b/VisualNetwork/imageoutVgg19/L36_C173.jpg new file mode 100644 index 0000000..59079a1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C173.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C174.jpg b/VisualNetwork/imageoutVgg19/L36_C174.jpg new file mode 100644 index 0000000..f3bc26c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C174.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C175.jpg b/VisualNetwork/imageoutVgg19/L36_C175.jpg new file mode 100644 index 0000000..18aac98 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C175.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C176.jpg b/VisualNetwork/imageoutVgg19/L36_C176.jpg new file mode 100644 index 0000000..a9bd726 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C176.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C177.jpg b/VisualNetwork/imageoutVgg19/L36_C177.jpg new file mode 100644 index 0000000..b7af01a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C177.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C178.jpg b/VisualNetwork/imageoutVgg19/L36_C178.jpg new file mode 100644 index 0000000..d710cdd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C178.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C179.jpg b/VisualNetwork/imageoutVgg19/L36_C179.jpg new file mode 100644 index 0000000..f34cda4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C179.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C18.jpg b/VisualNetwork/imageoutVgg19/L36_C18.jpg new file mode 100644 index 0000000..419ad0a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C18.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C180.jpg b/VisualNetwork/imageoutVgg19/L36_C180.jpg new file mode 100644 index 0000000..a4a32af Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C180.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C181.jpg b/VisualNetwork/imageoutVgg19/L36_C181.jpg new file mode 100644 index 0000000..b995b2d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C181.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C182.jpg b/VisualNetwork/imageoutVgg19/L36_C182.jpg new file mode 100644 index 0000000..176e77f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C182.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C183.jpg b/VisualNetwork/imageoutVgg19/L36_C183.jpg new file mode 100644 index 0000000..a23953a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C183.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C184.jpg b/VisualNetwork/imageoutVgg19/L36_C184.jpg new file mode 100644 index 0000000..191d18a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C184.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C185.jpg b/VisualNetwork/imageoutVgg19/L36_C185.jpg new file mode 100644 index 0000000..eff95b5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C185.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C186.jpg b/VisualNetwork/imageoutVgg19/L36_C186.jpg new file mode 100644 index 0000000..28b149a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C186.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C187.jpg b/VisualNetwork/imageoutVgg19/L36_C187.jpg new file mode 100644 index 0000000..76728be Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C187.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C188.jpg b/VisualNetwork/imageoutVgg19/L36_C188.jpg new file mode 100644 index 0000000..02d9fc1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C188.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C189.jpg b/VisualNetwork/imageoutVgg19/L36_C189.jpg new file mode 100644 index 0000000..a10fb87 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C189.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C19.jpg b/VisualNetwork/imageoutVgg19/L36_C19.jpg new file mode 100644 index 0000000..9e9fdc7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C19.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C190.jpg b/VisualNetwork/imageoutVgg19/L36_C190.jpg new file mode 100644 index 0000000..7868844 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C190.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C191.jpg b/VisualNetwork/imageoutVgg19/L36_C191.jpg new file mode 100644 index 0000000..88de4a4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C191.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C192.jpg b/VisualNetwork/imageoutVgg19/L36_C192.jpg new file mode 100644 index 0000000..a3790f1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C192.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C193.jpg b/VisualNetwork/imageoutVgg19/L36_C193.jpg new file mode 100644 index 0000000..64d302a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C193.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C194.jpg b/VisualNetwork/imageoutVgg19/L36_C194.jpg new file mode 100644 index 0000000..166a3be Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C194.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C195.jpg b/VisualNetwork/imageoutVgg19/L36_C195.jpg new file mode 100644 index 0000000..4f4057b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C195.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C196.jpg b/VisualNetwork/imageoutVgg19/L36_C196.jpg new file mode 100644 index 0000000..b2c3fca Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C196.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C197.jpg b/VisualNetwork/imageoutVgg19/L36_C197.jpg new file mode 100644 index 0000000..b8f6f42 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C197.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C198.jpg b/VisualNetwork/imageoutVgg19/L36_C198.jpg new file mode 100644 index 0000000..56d2901 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C198.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C199.jpg b/VisualNetwork/imageoutVgg19/L36_C199.jpg new file mode 100644 index 0000000..e83c07f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C199.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C2.jpg b/VisualNetwork/imageoutVgg19/L36_C2.jpg new file mode 100644 index 0000000..e4c45bf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C2.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C20.jpg b/VisualNetwork/imageoutVgg19/L36_C20.jpg new file mode 100644 index 0000000..b6b11f7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C20.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C200.jpg b/VisualNetwork/imageoutVgg19/L36_C200.jpg new file mode 100644 index 0000000..b88399e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C200.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C201.jpg b/VisualNetwork/imageoutVgg19/L36_C201.jpg new file mode 100644 index 0000000..d81f2f3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C201.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C202.jpg b/VisualNetwork/imageoutVgg19/L36_C202.jpg new file mode 100644 index 0000000..0fa9373 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C202.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C203.jpg b/VisualNetwork/imageoutVgg19/L36_C203.jpg new file mode 100644 index 0000000..ceecaea Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C203.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C204.jpg b/VisualNetwork/imageoutVgg19/L36_C204.jpg new file mode 100644 index 0000000..260a851 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C204.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C205.jpg b/VisualNetwork/imageoutVgg19/L36_C205.jpg new file mode 100644 index 0000000..76e3ba2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C205.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C206.jpg b/VisualNetwork/imageoutVgg19/L36_C206.jpg new file mode 100644 index 0000000..1759add Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C206.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C207.jpg b/VisualNetwork/imageoutVgg19/L36_C207.jpg new file mode 100644 index 0000000..77a3e95 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C207.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C208.jpg b/VisualNetwork/imageoutVgg19/L36_C208.jpg new file mode 100644 index 0000000..b7985ed Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C208.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C209.jpg b/VisualNetwork/imageoutVgg19/L36_C209.jpg new file mode 100644 index 0000000..5c47e82 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C209.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C21.jpg b/VisualNetwork/imageoutVgg19/L36_C21.jpg new file mode 100644 index 0000000..e40e612 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C21.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C210.jpg b/VisualNetwork/imageoutVgg19/L36_C210.jpg new file mode 100644 index 0000000..5930c9c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C210.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C211.jpg b/VisualNetwork/imageoutVgg19/L36_C211.jpg new file mode 100644 index 0000000..d8378d7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C211.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C212.jpg b/VisualNetwork/imageoutVgg19/L36_C212.jpg new file mode 100644 index 0000000..0328ad4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C212.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C213.jpg b/VisualNetwork/imageoutVgg19/L36_C213.jpg new file mode 100644 index 0000000..2b124d8 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C213.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C214.jpg b/VisualNetwork/imageoutVgg19/L36_C214.jpg new file mode 100644 index 0000000..419b9a7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C214.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C215.jpg b/VisualNetwork/imageoutVgg19/L36_C215.jpg new file mode 100644 index 0000000..fc63dbf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C215.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C216.jpg b/VisualNetwork/imageoutVgg19/L36_C216.jpg new file mode 100644 index 0000000..e004fef Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C216.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C217.jpg b/VisualNetwork/imageoutVgg19/L36_C217.jpg new file mode 100644 index 0000000..4f4c423 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C217.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C218.jpg b/VisualNetwork/imageoutVgg19/L36_C218.jpg new file mode 100644 index 0000000..b02eb4c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C218.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C219.jpg b/VisualNetwork/imageoutVgg19/L36_C219.jpg new file mode 100644 index 0000000..454abd1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C219.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C22.jpg b/VisualNetwork/imageoutVgg19/L36_C22.jpg new file mode 100644 index 0000000..6bb9581 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C22.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C220.jpg b/VisualNetwork/imageoutVgg19/L36_C220.jpg new file mode 100644 index 0000000..9f32670 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C220.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C221.jpg b/VisualNetwork/imageoutVgg19/L36_C221.jpg new file mode 100644 index 0000000..cfa65ff Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C221.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C222.jpg b/VisualNetwork/imageoutVgg19/L36_C222.jpg new file mode 100644 index 0000000..f4c73bb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C222.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C223.jpg b/VisualNetwork/imageoutVgg19/L36_C223.jpg new file mode 100644 index 0000000..cf7eafc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C223.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C224.jpg b/VisualNetwork/imageoutVgg19/L36_C224.jpg new file mode 100644 index 0000000..0311f63 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C224.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C225.jpg b/VisualNetwork/imageoutVgg19/L36_C225.jpg new file mode 100644 index 0000000..91f2951 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C225.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C226.jpg b/VisualNetwork/imageoutVgg19/L36_C226.jpg new file mode 100644 index 0000000..19f4b87 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C226.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C227.jpg b/VisualNetwork/imageoutVgg19/L36_C227.jpg new file mode 100644 index 0000000..ba766ec Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C227.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C228.jpg b/VisualNetwork/imageoutVgg19/L36_C228.jpg new file mode 100644 index 0000000..d2b7bfd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C228.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C229.jpg b/VisualNetwork/imageoutVgg19/L36_C229.jpg new file mode 100644 index 0000000..44bdfe7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C229.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C23.jpg b/VisualNetwork/imageoutVgg19/L36_C23.jpg new file mode 100644 index 0000000..1fb32c8 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C23.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C230.jpg b/VisualNetwork/imageoutVgg19/L36_C230.jpg new file mode 100644 index 0000000..52fe549 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C230.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C231.jpg b/VisualNetwork/imageoutVgg19/L36_C231.jpg new file mode 100644 index 0000000..af65452 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C231.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C232.jpg b/VisualNetwork/imageoutVgg19/L36_C232.jpg new file mode 100644 index 0000000..7088e41 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C232.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C233.jpg b/VisualNetwork/imageoutVgg19/L36_C233.jpg new file mode 100644 index 0000000..d076793 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C233.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C234.jpg b/VisualNetwork/imageoutVgg19/L36_C234.jpg new file mode 100644 index 0000000..fba6519 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C234.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C235.jpg b/VisualNetwork/imageoutVgg19/L36_C235.jpg new file mode 100644 index 0000000..8db5bba Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C235.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C236.jpg b/VisualNetwork/imageoutVgg19/L36_C236.jpg new file mode 100644 index 0000000..234bf0b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C236.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C237.jpg b/VisualNetwork/imageoutVgg19/L36_C237.jpg new file mode 100644 index 0000000..7176e3d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C237.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C238.jpg b/VisualNetwork/imageoutVgg19/L36_C238.jpg new file mode 100644 index 0000000..4ac1435 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C238.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C239.jpg b/VisualNetwork/imageoutVgg19/L36_C239.jpg new file mode 100644 index 0000000..47b6ec4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C239.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C24.jpg b/VisualNetwork/imageoutVgg19/L36_C24.jpg new file mode 100644 index 0000000..f325804 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C24.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C240.jpg b/VisualNetwork/imageoutVgg19/L36_C240.jpg new file mode 100644 index 0000000..1863f02 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C240.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C241.jpg b/VisualNetwork/imageoutVgg19/L36_C241.jpg new file mode 100644 index 0000000..441a8fa Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C241.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C242.jpg b/VisualNetwork/imageoutVgg19/L36_C242.jpg new file mode 100644 index 0000000..2e97c4d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C242.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C243.jpg b/VisualNetwork/imageoutVgg19/L36_C243.jpg new file mode 100644 index 0000000..70df744 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C243.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C244.jpg b/VisualNetwork/imageoutVgg19/L36_C244.jpg new file mode 100644 index 0000000..224ae8a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C244.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C245.jpg b/VisualNetwork/imageoutVgg19/L36_C245.jpg new file mode 100644 index 0000000..e447cec Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C245.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C246.jpg b/VisualNetwork/imageoutVgg19/L36_C246.jpg new file mode 100644 index 0000000..cf13636 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C246.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C247.jpg b/VisualNetwork/imageoutVgg19/L36_C247.jpg new file mode 100644 index 0000000..f05eacc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C247.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C248.jpg b/VisualNetwork/imageoutVgg19/L36_C248.jpg new file mode 100644 index 0000000..122c138 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C248.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C249.jpg b/VisualNetwork/imageoutVgg19/L36_C249.jpg new file mode 100644 index 0000000..40d7778 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C249.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C25.jpg b/VisualNetwork/imageoutVgg19/L36_C25.jpg new file mode 100644 index 0000000..521d415 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C25.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C250.jpg b/VisualNetwork/imageoutVgg19/L36_C250.jpg new file mode 100644 index 0000000..da0e4f0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C250.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C251.jpg b/VisualNetwork/imageoutVgg19/L36_C251.jpg new file mode 100644 index 0000000..74539de Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C251.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C252.jpg b/VisualNetwork/imageoutVgg19/L36_C252.jpg new file mode 100644 index 0000000..3a23360 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C252.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C253.jpg b/VisualNetwork/imageoutVgg19/L36_C253.jpg new file mode 100644 index 0000000..2e9dc07 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C253.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C254.jpg b/VisualNetwork/imageoutVgg19/L36_C254.jpg new file mode 100644 index 0000000..e8eff51 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C254.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C255.jpg b/VisualNetwork/imageoutVgg19/L36_C255.jpg new file mode 100644 index 0000000..316f213 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C255.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C256.jpg b/VisualNetwork/imageoutVgg19/L36_C256.jpg new file mode 100644 index 0000000..332e164 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C256.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C257.jpg b/VisualNetwork/imageoutVgg19/L36_C257.jpg new file mode 100644 index 0000000..c4b479c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C257.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C258.jpg b/VisualNetwork/imageoutVgg19/L36_C258.jpg new file mode 100644 index 0000000..6268a1c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C258.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C259.jpg b/VisualNetwork/imageoutVgg19/L36_C259.jpg new file mode 100644 index 0000000..afee9cc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C259.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C26.jpg b/VisualNetwork/imageoutVgg19/L36_C26.jpg new file mode 100644 index 0000000..cce569e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C26.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C260.jpg b/VisualNetwork/imageoutVgg19/L36_C260.jpg new file mode 100644 index 0000000..094e3f5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C260.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C261.jpg b/VisualNetwork/imageoutVgg19/L36_C261.jpg new file mode 100644 index 0000000..cead861 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C261.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C262.jpg b/VisualNetwork/imageoutVgg19/L36_C262.jpg new file mode 100644 index 0000000..9def3eb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C262.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C263.jpg b/VisualNetwork/imageoutVgg19/L36_C263.jpg new file mode 100644 index 0000000..f14b25e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C263.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C264.jpg b/VisualNetwork/imageoutVgg19/L36_C264.jpg new file mode 100644 index 0000000..dc74e6a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C264.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C265.jpg b/VisualNetwork/imageoutVgg19/L36_C265.jpg new file mode 100644 index 0000000..18b9aeb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C265.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C266.jpg b/VisualNetwork/imageoutVgg19/L36_C266.jpg new file mode 100644 index 0000000..84c510b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C266.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C267.jpg b/VisualNetwork/imageoutVgg19/L36_C267.jpg new file mode 100644 index 0000000..57ab5fa Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C267.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C268.jpg b/VisualNetwork/imageoutVgg19/L36_C268.jpg new file mode 100644 index 0000000..6ac6c07 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C268.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C269.jpg b/VisualNetwork/imageoutVgg19/L36_C269.jpg new file mode 100644 index 0000000..190462f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C269.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C27.jpg b/VisualNetwork/imageoutVgg19/L36_C27.jpg new file mode 100644 index 0000000..7845f4e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C27.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C270.jpg b/VisualNetwork/imageoutVgg19/L36_C270.jpg new file mode 100644 index 0000000..b3ab9d0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C270.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C271.jpg b/VisualNetwork/imageoutVgg19/L36_C271.jpg new file mode 100644 index 0000000..66726f3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C271.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C272.jpg b/VisualNetwork/imageoutVgg19/L36_C272.jpg new file mode 100644 index 0000000..16d9a72 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C272.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C273.jpg b/VisualNetwork/imageoutVgg19/L36_C273.jpg new file mode 100644 index 0000000..794a77f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C273.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C274.jpg b/VisualNetwork/imageoutVgg19/L36_C274.jpg new file mode 100644 index 0000000..53e9308 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C274.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C275.jpg b/VisualNetwork/imageoutVgg19/L36_C275.jpg new file mode 100644 index 0000000..0d86d5c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C275.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C276.jpg b/VisualNetwork/imageoutVgg19/L36_C276.jpg new file mode 100644 index 0000000..7d8389b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C276.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C277.jpg b/VisualNetwork/imageoutVgg19/L36_C277.jpg new file mode 100644 index 0000000..af62f5c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C277.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C278.jpg b/VisualNetwork/imageoutVgg19/L36_C278.jpg new file mode 100644 index 0000000..46b8701 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C278.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C279.jpg b/VisualNetwork/imageoutVgg19/L36_C279.jpg new file mode 100644 index 0000000..f7b4681 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C279.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C28.jpg b/VisualNetwork/imageoutVgg19/L36_C28.jpg new file mode 100644 index 0000000..9832e74 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C28.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C280.jpg b/VisualNetwork/imageoutVgg19/L36_C280.jpg new file mode 100644 index 0000000..05d32fd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C280.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C281.jpg b/VisualNetwork/imageoutVgg19/L36_C281.jpg new file mode 100644 index 0000000..c067b75 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C281.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C282.jpg b/VisualNetwork/imageoutVgg19/L36_C282.jpg new file mode 100644 index 0000000..8bc78e5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C282.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C283.jpg b/VisualNetwork/imageoutVgg19/L36_C283.jpg new file mode 100644 index 0000000..52db84e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C283.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C284.jpg b/VisualNetwork/imageoutVgg19/L36_C284.jpg new file mode 100644 index 0000000..1f3efae Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C284.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C285.jpg b/VisualNetwork/imageoutVgg19/L36_C285.jpg new file mode 100644 index 0000000..09100d0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C285.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C286.jpg b/VisualNetwork/imageoutVgg19/L36_C286.jpg new file mode 100644 index 0000000..6a1c066 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C286.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C287.jpg b/VisualNetwork/imageoutVgg19/L36_C287.jpg new file mode 100644 index 0000000..fbeecad Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C287.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C288.jpg b/VisualNetwork/imageoutVgg19/L36_C288.jpg new file mode 100644 index 0000000..d26731a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C288.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C289.jpg b/VisualNetwork/imageoutVgg19/L36_C289.jpg new file mode 100644 index 0000000..0ef0870 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C289.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C29.jpg b/VisualNetwork/imageoutVgg19/L36_C29.jpg new file mode 100644 index 0000000..bec0504 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C29.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C290.jpg b/VisualNetwork/imageoutVgg19/L36_C290.jpg new file mode 100644 index 0000000..f30f4fa Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C290.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C291.jpg b/VisualNetwork/imageoutVgg19/L36_C291.jpg new file mode 100644 index 0000000..f78dc77 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C291.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C292.jpg b/VisualNetwork/imageoutVgg19/L36_C292.jpg new file mode 100644 index 0000000..4921731 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C292.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C293.jpg b/VisualNetwork/imageoutVgg19/L36_C293.jpg new file mode 100644 index 0000000..850fc84 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C293.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C294.jpg b/VisualNetwork/imageoutVgg19/L36_C294.jpg new file mode 100644 index 0000000..7e4ab65 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C294.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C295.jpg b/VisualNetwork/imageoutVgg19/L36_C295.jpg new file mode 100644 index 0000000..f7ca294 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C295.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C296.jpg b/VisualNetwork/imageoutVgg19/L36_C296.jpg new file mode 100644 index 0000000..c8a78a1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C296.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C297.jpg b/VisualNetwork/imageoutVgg19/L36_C297.jpg new file mode 100644 index 0000000..f7fbf20 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C297.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C298.jpg b/VisualNetwork/imageoutVgg19/L36_C298.jpg new file mode 100644 index 0000000..f6e9581 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C298.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C299.jpg b/VisualNetwork/imageoutVgg19/L36_C299.jpg new file mode 100644 index 0000000..06bc0a9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C299.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C3.jpg b/VisualNetwork/imageoutVgg19/L36_C3.jpg new file mode 100644 index 0000000..3b3f60b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C3.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C30.jpg b/VisualNetwork/imageoutVgg19/L36_C30.jpg new file mode 100644 index 0000000..fcc0598 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C30.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C300.jpg b/VisualNetwork/imageoutVgg19/L36_C300.jpg new file mode 100644 index 0000000..de44056 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C300.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C301.jpg b/VisualNetwork/imageoutVgg19/L36_C301.jpg new file mode 100644 index 0000000..585f891 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C301.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C302.jpg b/VisualNetwork/imageoutVgg19/L36_C302.jpg new file mode 100644 index 0000000..2f6036b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C302.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C303.jpg b/VisualNetwork/imageoutVgg19/L36_C303.jpg new file mode 100644 index 0000000..64b7e29 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C303.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C304.jpg b/VisualNetwork/imageoutVgg19/L36_C304.jpg new file mode 100644 index 0000000..486d980 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C304.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C305.jpg b/VisualNetwork/imageoutVgg19/L36_C305.jpg new file mode 100644 index 0000000..4be3648 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C305.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C306.jpg b/VisualNetwork/imageoutVgg19/L36_C306.jpg new file mode 100644 index 0000000..ffff5c2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C306.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C307.jpg b/VisualNetwork/imageoutVgg19/L36_C307.jpg new file mode 100644 index 0000000..95ebf1c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C307.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C308.jpg b/VisualNetwork/imageoutVgg19/L36_C308.jpg new file mode 100644 index 0000000..11e4ed0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C308.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C309.jpg b/VisualNetwork/imageoutVgg19/L36_C309.jpg new file mode 100644 index 0000000..71f5f57 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C309.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C31.jpg b/VisualNetwork/imageoutVgg19/L36_C31.jpg new file mode 100644 index 0000000..6a56840 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C31.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C310.jpg b/VisualNetwork/imageoutVgg19/L36_C310.jpg new file mode 100644 index 0000000..cc45504 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C310.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C311.jpg b/VisualNetwork/imageoutVgg19/L36_C311.jpg new file mode 100644 index 0000000..ba74dd8 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C311.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C312.jpg b/VisualNetwork/imageoutVgg19/L36_C312.jpg new file mode 100644 index 0000000..ae9885a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C312.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C313.jpg b/VisualNetwork/imageoutVgg19/L36_C313.jpg new file mode 100644 index 0000000..0e68e38 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C313.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C314.jpg b/VisualNetwork/imageoutVgg19/L36_C314.jpg new file mode 100644 index 0000000..b6fe5d6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C314.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C315.jpg b/VisualNetwork/imageoutVgg19/L36_C315.jpg new file mode 100644 index 0000000..ab4cfbd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C315.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C316.jpg b/VisualNetwork/imageoutVgg19/L36_C316.jpg new file mode 100644 index 0000000..d127d6c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C316.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C317.jpg b/VisualNetwork/imageoutVgg19/L36_C317.jpg new file mode 100644 index 0000000..4dade3c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C317.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C318.jpg b/VisualNetwork/imageoutVgg19/L36_C318.jpg new file mode 100644 index 0000000..d40c6ea Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C318.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C319.jpg b/VisualNetwork/imageoutVgg19/L36_C319.jpg new file mode 100644 index 0000000..0280342 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C319.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C32.jpg b/VisualNetwork/imageoutVgg19/L36_C32.jpg new file mode 100644 index 0000000..07ea928 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C32.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C320.jpg b/VisualNetwork/imageoutVgg19/L36_C320.jpg new file mode 100644 index 0000000..870c801 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C320.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C321.jpg b/VisualNetwork/imageoutVgg19/L36_C321.jpg new file mode 100644 index 0000000..7d8c89d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C321.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C322.jpg b/VisualNetwork/imageoutVgg19/L36_C322.jpg new file mode 100644 index 0000000..a8708ce Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C322.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C323.jpg b/VisualNetwork/imageoutVgg19/L36_C323.jpg new file mode 100644 index 0000000..c227f6f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C323.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C324.jpg b/VisualNetwork/imageoutVgg19/L36_C324.jpg new file mode 100644 index 0000000..62c9500 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C324.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C325.jpg b/VisualNetwork/imageoutVgg19/L36_C325.jpg new file mode 100644 index 0000000..4806407 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C325.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C326.jpg b/VisualNetwork/imageoutVgg19/L36_C326.jpg new file mode 100644 index 0000000..adb393e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C326.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C327.jpg b/VisualNetwork/imageoutVgg19/L36_C327.jpg new file mode 100644 index 0000000..80b5f95 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C327.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C328.jpg b/VisualNetwork/imageoutVgg19/L36_C328.jpg new file mode 100644 index 0000000..02f7809 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C328.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C329.jpg b/VisualNetwork/imageoutVgg19/L36_C329.jpg new file mode 100644 index 0000000..bf7db01 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C329.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C33.jpg b/VisualNetwork/imageoutVgg19/L36_C33.jpg new file mode 100644 index 0000000..a610a2f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C33.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C330.jpg b/VisualNetwork/imageoutVgg19/L36_C330.jpg new file mode 100644 index 0000000..bd891f0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C330.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C331.jpg b/VisualNetwork/imageoutVgg19/L36_C331.jpg new file mode 100644 index 0000000..85c1c80 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C331.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C332.jpg b/VisualNetwork/imageoutVgg19/L36_C332.jpg new file mode 100644 index 0000000..82b30d5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C332.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C333.jpg b/VisualNetwork/imageoutVgg19/L36_C333.jpg new file mode 100644 index 0000000..d34cfbe Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C333.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C334.jpg b/VisualNetwork/imageoutVgg19/L36_C334.jpg new file mode 100644 index 0000000..f222cde Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C334.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C335.jpg b/VisualNetwork/imageoutVgg19/L36_C335.jpg new file mode 100644 index 0000000..c73ad37 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C335.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C336.jpg b/VisualNetwork/imageoutVgg19/L36_C336.jpg new file mode 100644 index 0000000..d96586d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C336.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C337.jpg b/VisualNetwork/imageoutVgg19/L36_C337.jpg new file mode 100644 index 0000000..7379308 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C337.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C338.jpg b/VisualNetwork/imageoutVgg19/L36_C338.jpg new file mode 100644 index 0000000..750997a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C338.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C339.jpg b/VisualNetwork/imageoutVgg19/L36_C339.jpg new file mode 100644 index 0000000..5496066 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C339.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C34.jpg b/VisualNetwork/imageoutVgg19/L36_C34.jpg new file mode 100644 index 0000000..83e308d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C34.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C340.jpg b/VisualNetwork/imageoutVgg19/L36_C340.jpg new file mode 100644 index 0000000..d0908a3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C340.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C341.jpg b/VisualNetwork/imageoutVgg19/L36_C341.jpg new file mode 100644 index 0000000..a7dfefc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C341.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C342.jpg b/VisualNetwork/imageoutVgg19/L36_C342.jpg new file mode 100644 index 0000000..318e7ff Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C342.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C343.jpg b/VisualNetwork/imageoutVgg19/L36_C343.jpg new file mode 100644 index 0000000..eeada48 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C343.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C344.jpg b/VisualNetwork/imageoutVgg19/L36_C344.jpg new file mode 100644 index 0000000..2026742 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C344.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C345.jpg b/VisualNetwork/imageoutVgg19/L36_C345.jpg new file mode 100644 index 0000000..1aba60f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C345.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C346.jpg b/VisualNetwork/imageoutVgg19/L36_C346.jpg new file mode 100644 index 0000000..4312e8e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C346.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C347.jpg b/VisualNetwork/imageoutVgg19/L36_C347.jpg new file mode 100644 index 0000000..3d2c0c9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C347.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C348.jpg b/VisualNetwork/imageoutVgg19/L36_C348.jpg new file mode 100644 index 0000000..7e5d030 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C348.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C349.jpg b/VisualNetwork/imageoutVgg19/L36_C349.jpg new file mode 100644 index 0000000..8df4611 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C349.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C35.jpg b/VisualNetwork/imageoutVgg19/L36_C35.jpg new file mode 100644 index 0000000..b330644 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C35.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C350.jpg b/VisualNetwork/imageoutVgg19/L36_C350.jpg new file mode 100644 index 0000000..595002c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C350.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C351.jpg b/VisualNetwork/imageoutVgg19/L36_C351.jpg new file mode 100644 index 0000000..eb9fa86 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C351.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C352.jpg b/VisualNetwork/imageoutVgg19/L36_C352.jpg new file mode 100644 index 0000000..9286f92 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C352.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C353.jpg b/VisualNetwork/imageoutVgg19/L36_C353.jpg new file mode 100644 index 0000000..d4d2a2a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C353.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C354.jpg b/VisualNetwork/imageoutVgg19/L36_C354.jpg new file mode 100644 index 0000000..9586d8c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C354.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C355.jpg b/VisualNetwork/imageoutVgg19/L36_C355.jpg new file mode 100644 index 0000000..2ff48f8 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C355.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C356.jpg b/VisualNetwork/imageoutVgg19/L36_C356.jpg new file mode 100644 index 0000000..8a23f6b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C356.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C357.jpg b/VisualNetwork/imageoutVgg19/L36_C357.jpg new file mode 100644 index 0000000..7e67ca3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C357.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C358.jpg b/VisualNetwork/imageoutVgg19/L36_C358.jpg new file mode 100644 index 0000000..ee750fe Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C358.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C359.jpg b/VisualNetwork/imageoutVgg19/L36_C359.jpg new file mode 100644 index 0000000..6a475fb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C359.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C36.jpg b/VisualNetwork/imageoutVgg19/L36_C36.jpg new file mode 100644 index 0000000..8f69431 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C36.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C360.jpg b/VisualNetwork/imageoutVgg19/L36_C360.jpg new file mode 100644 index 0000000..7baa5d6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C360.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C361.jpg b/VisualNetwork/imageoutVgg19/L36_C361.jpg new file mode 100644 index 0000000..b867e5f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C361.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C362.jpg b/VisualNetwork/imageoutVgg19/L36_C362.jpg new file mode 100644 index 0000000..8e0456b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C362.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C363.jpg b/VisualNetwork/imageoutVgg19/L36_C363.jpg new file mode 100644 index 0000000..e5279c4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C363.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C364.jpg b/VisualNetwork/imageoutVgg19/L36_C364.jpg new file mode 100644 index 0000000..c286159 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C364.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C365.jpg b/VisualNetwork/imageoutVgg19/L36_C365.jpg new file mode 100644 index 0000000..f77761f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C365.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C366.jpg b/VisualNetwork/imageoutVgg19/L36_C366.jpg new file mode 100644 index 0000000..7e8a7f6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C366.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C367.jpg b/VisualNetwork/imageoutVgg19/L36_C367.jpg new file mode 100644 index 0000000..6b75d40 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C367.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C368.jpg b/VisualNetwork/imageoutVgg19/L36_C368.jpg new file mode 100644 index 0000000..2cbe4ab Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C368.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C369.jpg b/VisualNetwork/imageoutVgg19/L36_C369.jpg new file mode 100644 index 0000000..3bfb55f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C369.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C37.jpg b/VisualNetwork/imageoutVgg19/L36_C37.jpg new file mode 100644 index 0000000..f4054c9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C37.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C370.jpg b/VisualNetwork/imageoutVgg19/L36_C370.jpg new file mode 100644 index 0000000..b0597a4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C370.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C371.jpg b/VisualNetwork/imageoutVgg19/L36_C371.jpg new file mode 100644 index 0000000..8a6ddb8 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C371.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C372.jpg b/VisualNetwork/imageoutVgg19/L36_C372.jpg new file mode 100644 index 0000000..2fdb602 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C372.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C373.jpg b/VisualNetwork/imageoutVgg19/L36_C373.jpg new file mode 100644 index 0000000..d3d3b87 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C373.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C374.jpg b/VisualNetwork/imageoutVgg19/L36_C374.jpg new file mode 100644 index 0000000..f4007be Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C374.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C375.jpg b/VisualNetwork/imageoutVgg19/L36_C375.jpg new file mode 100644 index 0000000..b80959d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C375.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C376.jpg b/VisualNetwork/imageoutVgg19/L36_C376.jpg new file mode 100644 index 0000000..900bd82 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C376.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C377.jpg b/VisualNetwork/imageoutVgg19/L36_C377.jpg new file mode 100644 index 0000000..83a855e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C377.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C378.jpg b/VisualNetwork/imageoutVgg19/L36_C378.jpg new file mode 100644 index 0000000..d1e85a9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C378.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C379.jpg b/VisualNetwork/imageoutVgg19/L36_C379.jpg new file mode 100644 index 0000000..5e9fe65 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C379.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C38.jpg b/VisualNetwork/imageoutVgg19/L36_C38.jpg new file mode 100644 index 0000000..e3e1964 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C38.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C380.jpg b/VisualNetwork/imageoutVgg19/L36_C380.jpg new file mode 100644 index 0000000..6e0f927 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C380.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C381.jpg b/VisualNetwork/imageoutVgg19/L36_C381.jpg new file mode 100644 index 0000000..9064805 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C381.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C382.jpg b/VisualNetwork/imageoutVgg19/L36_C382.jpg new file mode 100644 index 0000000..2222f12 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C382.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C383.jpg b/VisualNetwork/imageoutVgg19/L36_C383.jpg new file mode 100644 index 0000000..953e80b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C383.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C384.jpg b/VisualNetwork/imageoutVgg19/L36_C384.jpg new file mode 100644 index 0000000..ac9811f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C384.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C385.jpg b/VisualNetwork/imageoutVgg19/L36_C385.jpg new file mode 100644 index 0000000..e5798b6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C385.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C386.jpg b/VisualNetwork/imageoutVgg19/L36_C386.jpg new file mode 100644 index 0000000..b0021f3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C386.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C387.jpg b/VisualNetwork/imageoutVgg19/L36_C387.jpg new file mode 100644 index 0000000..fde7498 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C387.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C388.jpg b/VisualNetwork/imageoutVgg19/L36_C388.jpg new file mode 100644 index 0000000..dc2215d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C388.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C389.jpg b/VisualNetwork/imageoutVgg19/L36_C389.jpg new file mode 100644 index 0000000..f7e9137 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C389.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C39.jpg b/VisualNetwork/imageoutVgg19/L36_C39.jpg new file mode 100644 index 0000000..a693a58 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C39.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C390.jpg b/VisualNetwork/imageoutVgg19/L36_C390.jpg new file mode 100644 index 0000000..0327cd4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C390.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C391.jpg b/VisualNetwork/imageoutVgg19/L36_C391.jpg new file mode 100644 index 0000000..ceee33b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C391.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C392.jpg b/VisualNetwork/imageoutVgg19/L36_C392.jpg new file mode 100644 index 0000000..8b93d20 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C392.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C393.jpg b/VisualNetwork/imageoutVgg19/L36_C393.jpg new file mode 100644 index 0000000..914fb73 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C393.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C394.jpg b/VisualNetwork/imageoutVgg19/L36_C394.jpg new file mode 100644 index 0000000..c576185 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C394.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C395.jpg b/VisualNetwork/imageoutVgg19/L36_C395.jpg new file mode 100644 index 0000000..61a1446 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C395.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C396.jpg b/VisualNetwork/imageoutVgg19/L36_C396.jpg new file mode 100644 index 0000000..2a59d9c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C396.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C397.jpg b/VisualNetwork/imageoutVgg19/L36_C397.jpg new file mode 100644 index 0000000..21c3a65 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C397.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C398.jpg b/VisualNetwork/imageoutVgg19/L36_C398.jpg new file mode 100644 index 0000000..391d98d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C398.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C399.jpg b/VisualNetwork/imageoutVgg19/L36_C399.jpg new file mode 100644 index 0000000..9277bdf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C399.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C4.jpg b/VisualNetwork/imageoutVgg19/L36_C4.jpg new file mode 100644 index 0000000..121812d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C4.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C40.jpg b/VisualNetwork/imageoutVgg19/L36_C40.jpg new file mode 100644 index 0000000..f17dc0c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C40.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C400.jpg b/VisualNetwork/imageoutVgg19/L36_C400.jpg new file mode 100644 index 0000000..0cf0103 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C400.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C401.jpg b/VisualNetwork/imageoutVgg19/L36_C401.jpg new file mode 100644 index 0000000..db5861e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C401.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C402.jpg b/VisualNetwork/imageoutVgg19/L36_C402.jpg new file mode 100644 index 0000000..39d3e98 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C402.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C403.jpg b/VisualNetwork/imageoutVgg19/L36_C403.jpg new file mode 100644 index 0000000..c3c6e90 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C403.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C404.jpg b/VisualNetwork/imageoutVgg19/L36_C404.jpg new file mode 100644 index 0000000..def943f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C404.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C405.jpg b/VisualNetwork/imageoutVgg19/L36_C405.jpg new file mode 100644 index 0000000..2761cc2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C405.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C406.jpg b/VisualNetwork/imageoutVgg19/L36_C406.jpg new file mode 100644 index 0000000..eae8383 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C406.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C407.jpg b/VisualNetwork/imageoutVgg19/L36_C407.jpg new file mode 100644 index 0000000..f734df6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C407.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C408.jpg b/VisualNetwork/imageoutVgg19/L36_C408.jpg new file mode 100644 index 0000000..3f62342 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C408.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C409.jpg b/VisualNetwork/imageoutVgg19/L36_C409.jpg new file mode 100644 index 0000000..a755b12 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C409.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C41.jpg b/VisualNetwork/imageoutVgg19/L36_C41.jpg new file mode 100644 index 0000000..e564bc6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C41.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C410.jpg b/VisualNetwork/imageoutVgg19/L36_C410.jpg new file mode 100644 index 0000000..28fba36 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C410.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C411.jpg b/VisualNetwork/imageoutVgg19/L36_C411.jpg new file mode 100644 index 0000000..bcd2258 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C411.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C412.jpg b/VisualNetwork/imageoutVgg19/L36_C412.jpg new file mode 100644 index 0000000..7bb54e3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C412.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C413.jpg b/VisualNetwork/imageoutVgg19/L36_C413.jpg new file mode 100644 index 0000000..06cc253 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C413.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C414.jpg b/VisualNetwork/imageoutVgg19/L36_C414.jpg new file mode 100644 index 0000000..ce0b0dc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C414.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C415.jpg b/VisualNetwork/imageoutVgg19/L36_C415.jpg new file mode 100644 index 0000000..4972ebb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C415.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C416.jpg b/VisualNetwork/imageoutVgg19/L36_C416.jpg new file mode 100644 index 0000000..7909eb7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C416.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C417.jpg b/VisualNetwork/imageoutVgg19/L36_C417.jpg new file mode 100644 index 0000000..06821e2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C417.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C418.jpg b/VisualNetwork/imageoutVgg19/L36_C418.jpg new file mode 100644 index 0000000..a7038ed Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C418.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C419.jpg b/VisualNetwork/imageoutVgg19/L36_C419.jpg new file mode 100644 index 0000000..98cac4f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C419.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C42.jpg b/VisualNetwork/imageoutVgg19/L36_C42.jpg new file mode 100644 index 0000000..9a6d520 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C42.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C420.jpg b/VisualNetwork/imageoutVgg19/L36_C420.jpg new file mode 100644 index 0000000..70cb983 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C420.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C421.jpg b/VisualNetwork/imageoutVgg19/L36_C421.jpg new file mode 100644 index 0000000..f195700 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C421.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C422.jpg b/VisualNetwork/imageoutVgg19/L36_C422.jpg new file mode 100644 index 0000000..d8091f9 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C422.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C423.jpg b/VisualNetwork/imageoutVgg19/L36_C423.jpg new file mode 100644 index 0000000..f319e9c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C423.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C424.jpg b/VisualNetwork/imageoutVgg19/L36_C424.jpg new file mode 100644 index 0000000..e64be66 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C424.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C425.jpg b/VisualNetwork/imageoutVgg19/L36_C425.jpg new file mode 100644 index 0000000..541efd0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C425.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C426.jpg b/VisualNetwork/imageoutVgg19/L36_C426.jpg new file mode 100644 index 0000000..c1bdd2f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C426.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C427.jpg b/VisualNetwork/imageoutVgg19/L36_C427.jpg new file mode 100644 index 0000000..7d14f67 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C427.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C428.jpg b/VisualNetwork/imageoutVgg19/L36_C428.jpg new file mode 100644 index 0000000..80e522d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C428.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C429.jpg b/VisualNetwork/imageoutVgg19/L36_C429.jpg new file mode 100644 index 0000000..f23c4ce Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C429.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C43.jpg b/VisualNetwork/imageoutVgg19/L36_C43.jpg new file mode 100644 index 0000000..0383372 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C43.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C430.jpg b/VisualNetwork/imageoutVgg19/L36_C430.jpg new file mode 100644 index 0000000..06e27f1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C430.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C431.jpg b/VisualNetwork/imageoutVgg19/L36_C431.jpg new file mode 100644 index 0000000..d698a5e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C431.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C432.jpg b/VisualNetwork/imageoutVgg19/L36_C432.jpg new file mode 100644 index 0000000..6f111a3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C432.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C433.jpg b/VisualNetwork/imageoutVgg19/L36_C433.jpg new file mode 100644 index 0000000..1754a3c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C433.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C434.jpg b/VisualNetwork/imageoutVgg19/L36_C434.jpg new file mode 100644 index 0000000..5e2cf0c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C434.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C435.jpg b/VisualNetwork/imageoutVgg19/L36_C435.jpg new file mode 100644 index 0000000..6a60a5c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C435.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C436.jpg b/VisualNetwork/imageoutVgg19/L36_C436.jpg new file mode 100644 index 0000000..a70d6fd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C436.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C437.jpg b/VisualNetwork/imageoutVgg19/L36_C437.jpg new file mode 100644 index 0000000..23b499d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C437.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C438.jpg b/VisualNetwork/imageoutVgg19/L36_C438.jpg new file mode 100644 index 0000000..02c4015 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C438.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C439.jpg b/VisualNetwork/imageoutVgg19/L36_C439.jpg new file mode 100644 index 0000000..c919a92 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C439.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C44.jpg b/VisualNetwork/imageoutVgg19/L36_C44.jpg new file mode 100644 index 0000000..047ad13 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C44.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C440.jpg b/VisualNetwork/imageoutVgg19/L36_C440.jpg new file mode 100644 index 0000000..9444159 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C440.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C441.jpg b/VisualNetwork/imageoutVgg19/L36_C441.jpg new file mode 100644 index 0000000..cc821be Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C441.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C442.jpg b/VisualNetwork/imageoutVgg19/L36_C442.jpg new file mode 100644 index 0000000..540ee32 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C442.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C443.jpg b/VisualNetwork/imageoutVgg19/L36_C443.jpg new file mode 100644 index 0000000..e7f71fb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C443.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C444.jpg b/VisualNetwork/imageoutVgg19/L36_C444.jpg new file mode 100644 index 0000000..6be404a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C444.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C445.jpg b/VisualNetwork/imageoutVgg19/L36_C445.jpg new file mode 100644 index 0000000..1e68bb7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C445.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C446.jpg b/VisualNetwork/imageoutVgg19/L36_C446.jpg new file mode 100644 index 0000000..2c560fb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C446.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C447.jpg b/VisualNetwork/imageoutVgg19/L36_C447.jpg new file mode 100644 index 0000000..1b3a0d2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C447.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C448.jpg b/VisualNetwork/imageoutVgg19/L36_C448.jpg new file mode 100644 index 0000000..61e1f07 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C448.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C449.jpg b/VisualNetwork/imageoutVgg19/L36_C449.jpg new file mode 100644 index 0000000..9a7a127 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C449.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C45.jpg b/VisualNetwork/imageoutVgg19/L36_C45.jpg new file mode 100644 index 0000000..575e474 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C45.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C450.jpg b/VisualNetwork/imageoutVgg19/L36_C450.jpg new file mode 100644 index 0000000..0a80c55 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C450.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C451.jpg b/VisualNetwork/imageoutVgg19/L36_C451.jpg new file mode 100644 index 0000000..29943da Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C451.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C452.jpg b/VisualNetwork/imageoutVgg19/L36_C452.jpg new file mode 100644 index 0000000..db3e275 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C452.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C453.jpg b/VisualNetwork/imageoutVgg19/L36_C453.jpg new file mode 100644 index 0000000..26548c3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C453.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C454.jpg b/VisualNetwork/imageoutVgg19/L36_C454.jpg new file mode 100644 index 0000000..8fc28fd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C454.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C455.jpg b/VisualNetwork/imageoutVgg19/L36_C455.jpg new file mode 100644 index 0000000..bbe54f0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C455.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C456.jpg b/VisualNetwork/imageoutVgg19/L36_C456.jpg new file mode 100644 index 0000000..f3d0626 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C456.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C457.jpg b/VisualNetwork/imageoutVgg19/L36_C457.jpg new file mode 100644 index 0000000..533c876 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C457.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C458.jpg b/VisualNetwork/imageoutVgg19/L36_C458.jpg new file mode 100644 index 0000000..bab5acf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C458.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C459.jpg b/VisualNetwork/imageoutVgg19/L36_C459.jpg new file mode 100644 index 0000000..78d0f04 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C459.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C46.jpg b/VisualNetwork/imageoutVgg19/L36_C46.jpg new file mode 100644 index 0000000..f0b1e74 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C46.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C460.jpg b/VisualNetwork/imageoutVgg19/L36_C460.jpg new file mode 100644 index 0000000..2ec393c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C460.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C461.jpg b/VisualNetwork/imageoutVgg19/L36_C461.jpg new file mode 100644 index 0000000..8b688cb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C461.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C462.jpg b/VisualNetwork/imageoutVgg19/L36_C462.jpg new file mode 100644 index 0000000..32d7382 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C462.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C463.jpg b/VisualNetwork/imageoutVgg19/L36_C463.jpg new file mode 100644 index 0000000..be39790 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C463.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C464.jpg b/VisualNetwork/imageoutVgg19/L36_C464.jpg new file mode 100644 index 0000000..85b8f96 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C464.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C465.jpg b/VisualNetwork/imageoutVgg19/L36_C465.jpg new file mode 100644 index 0000000..d1060a0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C465.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C466.jpg b/VisualNetwork/imageoutVgg19/L36_C466.jpg new file mode 100644 index 0000000..45e92a2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C466.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C467.jpg b/VisualNetwork/imageoutVgg19/L36_C467.jpg new file mode 100644 index 0000000..2aab899 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C467.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C468.jpg b/VisualNetwork/imageoutVgg19/L36_C468.jpg new file mode 100644 index 0000000..cd6318c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C468.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C469.jpg b/VisualNetwork/imageoutVgg19/L36_C469.jpg new file mode 100644 index 0000000..a510cbc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C469.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C47.jpg b/VisualNetwork/imageoutVgg19/L36_C47.jpg new file mode 100644 index 0000000..f69766d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C47.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C470.jpg b/VisualNetwork/imageoutVgg19/L36_C470.jpg new file mode 100644 index 0000000..12c2bcf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C470.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C471.jpg b/VisualNetwork/imageoutVgg19/L36_C471.jpg new file mode 100644 index 0000000..33e73ce Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C471.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C472.jpg b/VisualNetwork/imageoutVgg19/L36_C472.jpg new file mode 100644 index 0000000..e2f8544 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C472.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C473.jpg b/VisualNetwork/imageoutVgg19/L36_C473.jpg new file mode 100644 index 0000000..955dd4a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C473.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C474.jpg b/VisualNetwork/imageoutVgg19/L36_C474.jpg new file mode 100644 index 0000000..702d103 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C474.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C475.jpg b/VisualNetwork/imageoutVgg19/L36_C475.jpg new file mode 100644 index 0000000..538620e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C475.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C476.jpg b/VisualNetwork/imageoutVgg19/L36_C476.jpg new file mode 100644 index 0000000..fc3dbc7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C476.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C477.jpg b/VisualNetwork/imageoutVgg19/L36_C477.jpg new file mode 100644 index 0000000..48b6575 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C477.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C478.jpg b/VisualNetwork/imageoutVgg19/L36_C478.jpg new file mode 100644 index 0000000..9356bed Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C478.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C479.jpg b/VisualNetwork/imageoutVgg19/L36_C479.jpg new file mode 100644 index 0000000..2b4cd49 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C479.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C48.jpg b/VisualNetwork/imageoutVgg19/L36_C48.jpg new file mode 100644 index 0000000..fe18f16 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C48.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C480.jpg b/VisualNetwork/imageoutVgg19/L36_C480.jpg new file mode 100644 index 0000000..0927d6a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C480.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C481.jpg b/VisualNetwork/imageoutVgg19/L36_C481.jpg new file mode 100644 index 0000000..03dedc5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C481.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C482.jpg b/VisualNetwork/imageoutVgg19/L36_C482.jpg new file mode 100644 index 0000000..3e0bcec Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C482.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C483.jpg b/VisualNetwork/imageoutVgg19/L36_C483.jpg new file mode 100644 index 0000000..299e286 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C483.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C484.jpg b/VisualNetwork/imageoutVgg19/L36_C484.jpg new file mode 100644 index 0000000..d9fdbbb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C484.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C485.jpg b/VisualNetwork/imageoutVgg19/L36_C485.jpg new file mode 100644 index 0000000..4f4b33e Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C485.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C486.jpg b/VisualNetwork/imageoutVgg19/L36_C486.jpg new file mode 100644 index 0000000..ef660c5 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C486.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C487.jpg b/VisualNetwork/imageoutVgg19/L36_C487.jpg new file mode 100644 index 0000000..69891ee Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C487.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C488.jpg b/VisualNetwork/imageoutVgg19/L36_C488.jpg new file mode 100644 index 0000000..aeb5923 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C488.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C489.jpg b/VisualNetwork/imageoutVgg19/L36_C489.jpg new file mode 100644 index 0000000..ff943ab Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C489.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C49.jpg b/VisualNetwork/imageoutVgg19/L36_C49.jpg new file mode 100644 index 0000000..d11936b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C49.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C490.jpg b/VisualNetwork/imageoutVgg19/L36_C490.jpg new file mode 100644 index 0000000..e208df8 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C490.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C491.jpg b/VisualNetwork/imageoutVgg19/L36_C491.jpg new file mode 100644 index 0000000..307c2fa Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C491.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C492.jpg b/VisualNetwork/imageoutVgg19/L36_C492.jpg new file mode 100644 index 0000000..911805a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C492.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C493.jpg b/VisualNetwork/imageoutVgg19/L36_C493.jpg new file mode 100644 index 0000000..b859689 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C493.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C494.jpg b/VisualNetwork/imageoutVgg19/L36_C494.jpg new file mode 100644 index 0000000..49bb39f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C494.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C495.jpg b/VisualNetwork/imageoutVgg19/L36_C495.jpg new file mode 100644 index 0000000..257aacc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C495.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C496.jpg b/VisualNetwork/imageoutVgg19/L36_C496.jpg new file mode 100644 index 0000000..3b9a250 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C496.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C497.jpg b/VisualNetwork/imageoutVgg19/L36_C497.jpg new file mode 100644 index 0000000..2f2ec83 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C497.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C498.jpg b/VisualNetwork/imageoutVgg19/L36_C498.jpg new file mode 100644 index 0000000..b23e2c7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C498.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C499.jpg b/VisualNetwork/imageoutVgg19/L36_C499.jpg new file mode 100644 index 0000000..bf957ec Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C499.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C5.jpg b/VisualNetwork/imageoutVgg19/L36_C5.jpg new file mode 100644 index 0000000..7b91831 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C5.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C50.jpg b/VisualNetwork/imageoutVgg19/L36_C50.jpg new file mode 100644 index 0000000..377ff32 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C50.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C500.jpg b/VisualNetwork/imageoutVgg19/L36_C500.jpg new file mode 100644 index 0000000..1391ca4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C500.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C501.jpg b/VisualNetwork/imageoutVgg19/L36_C501.jpg new file mode 100644 index 0000000..e6705f3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C501.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C502.jpg b/VisualNetwork/imageoutVgg19/L36_C502.jpg new file mode 100644 index 0000000..e2c4c1a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C502.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C503.jpg b/VisualNetwork/imageoutVgg19/L36_C503.jpg new file mode 100644 index 0000000..521a297 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C503.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C504.jpg b/VisualNetwork/imageoutVgg19/L36_C504.jpg new file mode 100644 index 0000000..7702f9c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C504.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C505.jpg b/VisualNetwork/imageoutVgg19/L36_C505.jpg new file mode 100644 index 0000000..9f307dd Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C505.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C506.jpg b/VisualNetwork/imageoutVgg19/L36_C506.jpg new file mode 100644 index 0000000..a833951 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C506.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C507.jpg b/VisualNetwork/imageoutVgg19/L36_C507.jpg new file mode 100644 index 0000000..78a4ab3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C507.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C508.jpg b/VisualNetwork/imageoutVgg19/L36_C508.jpg new file mode 100644 index 0000000..a064db7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C508.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C509.jpg b/VisualNetwork/imageoutVgg19/L36_C509.jpg new file mode 100644 index 0000000..d3c2c9c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C509.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C51.jpg b/VisualNetwork/imageoutVgg19/L36_C51.jpg new file mode 100644 index 0000000..8903cb1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C51.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C510.jpg b/VisualNetwork/imageoutVgg19/L36_C510.jpg new file mode 100644 index 0000000..01949bc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C510.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C511.jpg b/VisualNetwork/imageoutVgg19/L36_C511.jpg new file mode 100644 index 0000000..54e3df1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C511.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C52.jpg b/VisualNetwork/imageoutVgg19/L36_C52.jpg new file mode 100644 index 0000000..447e698 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C52.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C53.jpg b/VisualNetwork/imageoutVgg19/L36_C53.jpg new file mode 100644 index 0000000..87b87c3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C53.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C54.jpg b/VisualNetwork/imageoutVgg19/L36_C54.jpg new file mode 100644 index 0000000..b5e9746 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C54.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C55.jpg b/VisualNetwork/imageoutVgg19/L36_C55.jpg new file mode 100644 index 0000000..fc9d58a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C55.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C56.jpg b/VisualNetwork/imageoutVgg19/L36_C56.jpg new file mode 100644 index 0000000..cf5afce Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C56.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C57.jpg b/VisualNetwork/imageoutVgg19/L36_C57.jpg new file mode 100644 index 0000000..41375f7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C57.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C58.jpg b/VisualNetwork/imageoutVgg19/L36_C58.jpg new file mode 100644 index 0000000..d9c0949 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C58.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C59.jpg b/VisualNetwork/imageoutVgg19/L36_C59.jpg new file mode 100644 index 0000000..a5742de Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C59.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C6.jpg b/VisualNetwork/imageoutVgg19/L36_C6.jpg new file mode 100644 index 0000000..578cdff Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C6.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C60.jpg b/VisualNetwork/imageoutVgg19/L36_C60.jpg new file mode 100644 index 0000000..f72020a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C60.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C61.jpg b/VisualNetwork/imageoutVgg19/L36_C61.jpg new file mode 100644 index 0000000..9d61076 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C61.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C62.jpg b/VisualNetwork/imageoutVgg19/L36_C62.jpg new file mode 100644 index 0000000..eb6b95b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C62.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C63.jpg b/VisualNetwork/imageoutVgg19/L36_C63.jpg new file mode 100644 index 0000000..2500013 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C63.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C64.jpg b/VisualNetwork/imageoutVgg19/L36_C64.jpg new file mode 100644 index 0000000..b9c7141 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C64.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C65.jpg b/VisualNetwork/imageoutVgg19/L36_C65.jpg new file mode 100644 index 0000000..4deb2ed Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C65.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C66.jpg b/VisualNetwork/imageoutVgg19/L36_C66.jpg new file mode 100644 index 0000000..1efd8e7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C66.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C67.jpg b/VisualNetwork/imageoutVgg19/L36_C67.jpg new file mode 100644 index 0000000..037245f Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C67.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C68.jpg b/VisualNetwork/imageoutVgg19/L36_C68.jpg new file mode 100644 index 0000000..daa9a56 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C68.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C69.jpg b/VisualNetwork/imageoutVgg19/L36_C69.jpg new file mode 100644 index 0000000..55a685a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C69.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C7.jpg b/VisualNetwork/imageoutVgg19/L36_C7.jpg new file mode 100644 index 0000000..55b6621 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C7.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C70.jpg b/VisualNetwork/imageoutVgg19/L36_C70.jpg new file mode 100644 index 0000000..3f876b0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C70.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C71.jpg b/VisualNetwork/imageoutVgg19/L36_C71.jpg new file mode 100644 index 0000000..90c342c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C71.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C72.jpg b/VisualNetwork/imageoutVgg19/L36_C72.jpg new file mode 100644 index 0000000..39e79d3 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C72.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C73.jpg b/VisualNetwork/imageoutVgg19/L36_C73.jpg new file mode 100644 index 0000000..da2abcc Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C73.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C74.jpg b/VisualNetwork/imageoutVgg19/L36_C74.jpg new file mode 100644 index 0000000..885b8d7 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C74.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C75.jpg b/VisualNetwork/imageoutVgg19/L36_C75.jpg new file mode 100644 index 0000000..a7e9737 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C75.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C76.jpg b/VisualNetwork/imageoutVgg19/L36_C76.jpg new file mode 100644 index 0000000..0af171a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C76.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C77.jpg b/VisualNetwork/imageoutVgg19/L36_C77.jpg new file mode 100644 index 0000000..5ba215d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C77.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C78.jpg b/VisualNetwork/imageoutVgg19/L36_C78.jpg new file mode 100644 index 0000000..659660a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C78.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C79.jpg b/VisualNetwork/imageoutVgg19/L36_C79.jpg new file mode 100644 index 0000000..ee01101 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C79.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C8.jpg b/VisualNetwork/imageoutVgg19/L36_C8.jpg new file mode 100644 index 0000000..eecbd7c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C8.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C80.jpg b/VisualNetwork/imageoutVgg19/L36_C80.jpg new file mode 100644 index 0000000..733cdb0 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C80.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C81.jpg b/VisualNetwork/imageoutVgg19/L36_C81.jpg new file mode 100644 index 0000000..d569f90 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C81.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C82.jpg b/VisualNetwork/imageoutVgg19/L36_C82.jpg new file mode 100644 index 0000000..321891b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C82.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C83.jpg b/VisualNetwork/imageoutVgg19/L36_C83.jpg new file mode 100644 index 0000000..c09f170 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C83.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C84.jpg b/VisualNetwork/imageoutVgg19/L36_C84.jpg new file mode 100644 index 0000000..f95931c Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C84.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C85.jpg b/VisualNetwork/imageoutVgg19/L36_C85.jpg new file mode 100644 index 0000000..77f32fb Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C85.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C86.jpg b/VisualNetwork/imageoutVgg19/L36_C86.jpg new file mode 100644 index 0000000..ceec666 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C86.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C87.jpg b/VisualNetwork/imageoutVgg19/L36_C87.jpg new file mode 100644 index 0000000..7a73fdf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C87.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C88.jpg b/VisualNetwork/imageoutVgg19/L36_C88.jpg new file mode 100644 index 0000000..f76b0bf Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C88.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C89.jpg b/VisualNetwork/imageoutVgg19/L36_C89.jpg new file mode 100644 index 0000000..05d1ba1 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C89.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C9.jpg b/VisualNetwork/imageoutVgg19/L36_C9.jpg new file mode 100644 index 0000000..d131e7a Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C9.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C90.jpg b/VisualNetwork/imageoutVgg19/L36_C90.jpg new file mode 100644 index 0000000..1fb71f2 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C90.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C91.jpg b/VisualNetwork/imageoutVgg19/L36_C91.jpg new file mode 100644 index 0000000..bd197ed Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C91.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C92.jpg b/VisualNetwork/imageoutVgg19/L36_C92.jpg new file mode 100644 index 0000000..81620a4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C92.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C93.jpg b/VisualNetwork/imageoutVgg19/L36_C93.jpg new file mode 100644 index 0000000..e1d5a4d Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C93.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C94.jpg b/VisualNetwork/imageoutVgg19/L36_C94.jpg new file mode 100644 index 0000000..d0eff5b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C94.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C95.jpg b/VisualNetwork/imageoutVgg19/L36_C95.jpg new file mode 100644 index 0000000..579b3f4 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C95.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C96.jpg b/VisualNetwork/imageoutVgg19/L36_C96.jpg new file mode 100644 index 0000000..7d6329b Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C96.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C97.jpg b/VisualNetwork/imageoutVgg19/L36_C97.jpg new file mode 100644 index 0000000..8118973 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C97.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C98.jpg b/VisualNetwork/imageoutVgg19/L36_C98.jpg new file mode 100644 index 0000000..5ff12f6 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C98.jpg differ diff --git a/VisualNetwork/imageoutVgg19/L36_C99.jpg b/VisualNetwork/imageoutVgg19/L36_C99.jpg new file mode 100644 index 0000000..b455830 Binary files /dev/null and b/VisualNetwork/imageoutVgg19/L36_C99.jpg differ diff --git a/VisualNetwork/mnistcnn.pth.tar b/VisualNetwork/mnistcnn.pth.tar new file mode 100644 index 0000000..e3ecf94 Binary files /dev/null and b/VisualNetwork/mnistcnn.pth.tar differ diff --git a/VisualNetwork/model.py b/VisualNetwork/model.py new file mode 100644 index 0000000..66a88ac --- /dev/null +++ b/VisualNetwork/model.py @@ -0,0 +1,72 @@ +from __future__ import print_function +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np + + +# class Net(nn.Module): +# def __init__(self): +# super(Net, self).__init__() +# self.conv1 = nn.Conv2d(1, 64, kernel_size=5) +# self.conv2 = nn.Conv2d(64, 32, kernel_size=3) +# self.conv3 = nn.Conv2d(32, 16, kernel_size=5) +# self.fc1 = nn.Linear(1*16, 10) +# +# def forward(self, x): +# +# x = F.relu(F.max_pool2d(self.conv1(x), 2)) +# x = F.relu(F.max_pool2d(self.conv2(x), 2)) +# x = F.relu(self.conv3(x), 2) +# +# x = x.view(-1, 1*16) +# x = F.relu(self.fc1(x)) +# +# return F.log_softmax(x, dim=1) + +# class Net(nn.Module): +# def __init__(self): +# super(Net, self).__init__() +# self.conv1 = nn.Conv2d(1, 16, kernel_size=5) +# self.conv2 = nn.Conv2d(16, 16, kernel_size=3) +# self.conv3 = nn.Conv2d(16, 10, kernel_size=5) +# +# def forward(self, x): +# +# x = F.sigmoid(F.max_pool2d(self.conv1(x), 2)) +# x = F.sigmoid(F.max_pool2d(self.conv2(x), 2)) +# x = self.conv3(x) +# +# x = x.view(-1, 1*10) +# +# return F.log_softmax(x, dim=1) + + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + layers = [] + layers += [nn.Conv2d(1, 8, kernel_size=5),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 8, kernel_size=3),nn.MaxPool2d(kernel_size=2, stride=2),nn.Sigmoid()] + layers += [nn.Conv2d(8, 10, kernel_size=5)] + self.features = nn.Sequential(*layers) + + # self.conv1 = nn.Conv2d(1, 8, kernel_size=5) + # self.conv2 = self.__conv(8, 8, kernel_size=3) + # self.conv3 = self.__conv(8, 10, kernel_size=5) + + def forward(self, x): + + + # x = F.sigmoid(F.max_pool2d(self.conv1(x), 2)) + # x = F.sigmoid(F.max_pool2d(self.conv2(x), 2)) + # x = self.conv3(x) + x = self.features(x) + x = x.view(-1, 1*10) + + return F.log_softmax(x, dim=1) \ No newline at end of file diff --git a/tools/Loader.py b/tools/Loader.py new file mode 100644 index 0000000..6f1b289 --- /dev/null +++ b/tools/Loader.py @@ -0,0 +1,143 @@ +# from __future__ import print_function +import os +import torch +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import numpy as np +from torch.utils.data import Dataset, DataLoader +import random + + + + + +def MNIST(batchsize=8, num_workers=0, shuffle=False): + CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" + train_loader = torch.utils.data.DataLoader( + datasets.MNIST(root=CurrentPath+'../Dataset/', train=True, download=True, + transform=transforms.Compose([ + transforms.ColorJitter(0.2, 0.2), + transforms.RandomRotation(30), + transforms.RandomResizedCrop(28), + transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])), + batch_size=batchsize, shuffle=shuffle, num_workers=num_workers, drop_last=True) + test_loader = torch.utils.data.DataLoader( + datasets.MNIST(root=CurrentPath+'../Dataset/', train=False, transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=shuffle, num_workers=num_workers, drop_last=True) + return train_loader, test_loader + +def Cifar10(batchsize=8, num_workers=0, shuffle=False): + CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" + + train_loader = torch.utils.data.DataLoader( + datasets.CIFAR10(root=CurrentPath+'../Dataset/', train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=shuffle, num_workers=num_workers, drop_last=True) + test_loader = torch.utils.data.DataLoader( + datasets.CIFAR10(root=CurrentPath+'../Dataset/', train=False, transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=shuffle, num_workers=num_workers, drop_last=True) + + return train_loader, test_loader + +def Cifar10Mono(batchsize=8, num_workers=0, shuffle=False): + CurrentPath = os.path.split(os.path.realpath(__file__))[0]+"/" + + train_loader = torch.utils.data.DataLoader( + datasets.CIFAR10(root=CurrentPath+'../Dataset/', train=True, download=True, + transform=transforms.Compose([ + transforms.Grayscale(), + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=shuffle, num_workers=num_workers, drop_last=True) + test_loader = torch.utils.data.DataLoader( + datasets.CIFAR10(root=CurrentPath+'../Dataset/', train=False, transform=transforms.Compose([ + transforms.Grayscale(), + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), batch_size=batchsize, shuffle=shuffle, num_workers=num_workers, drop_last=True) + + return train_loader, test_loader + +def RandomMnist(batchsize=8, num_workers=0, shuffle=False, style=""): + def default_loader(path): + if path == "0": + return np.random.randint(0, 255, (1, 28, 28)).astype("float32") + if style == "Vertical": + da = np.random.randint(0, 255, (28)).astype("float32") + return np.array([[da for x in range(28)]], dtype="float32") + if style == "VerticalOneLine": + da = np.zeros((1, 28, 28)).astype("float32") + da[0, :, 14] = 100 + return da + if style == "VerticalZebra": + da = np.zeros((1, 28, 28)).astype("float32") + da[0, :, ::2] = 100 + return da + if style == "Horizontal": + return np.array([[np.ones((28))*random.randint(0, 255) for x in range(28)]], dtype="float32") + if style == "HorizontalOneLine": + da = np.zeros((1, 28, 28)).astype("float32") + da[0, 14, :] = 100 + return da + if style == "HorizontalZebra": + da = np.zeros((1, 28, 28)).astype("float32") + da[0, ::2, :] = 100 + return da + return np.random.randint(0, 255, (1, 28, 28)).astype("float32") + + class MyDataset(Dataset): + def __init__(self, size, transform=None, target_transform=None, loader=default_loader): + imgs = [] + for line in range(size): + if random.randint(0, 1) == 0: + imgs.append(("0", int(0))) + else: + imgs.append(("1", int(1))) + self.imgs = imgs + self.transform = transform + self.target_transform = target_transform + self.loader = loader + + def __getitem__(self, index): + fn, label = self.imgs[index] + img = self.loader(fn) + img = torch.from_numpy(img) + return img, label + + def __len__(self): + return len(self.imgs) + + train_data = MyDataset(size=50000, transform=transforms.Compose([ + transforms.ColorJitter(0.2, 0.2), + transforms.RandomRotation(30), + transforms.RandomResizedCrop(28), + transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])) + test_data = MyDataset(size=10000, transform=transforms.Compose([ + transforms.ColorJitter(0.2, 0.2), + transforms.RandomRotation(30), + transforms.RandomResizedCrop(28), + transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])) + train_loader = torch.utils.data.DataLoader(train_data, + batch_size=batchsize, + shuffle=shuffle, + drop_last=True, + num_workers=num_workers, + #collate_fn = collate_fn + ) + test_loader = torch.utils.data.DataLoader(test_data, + batch_size=batchsize, + shuffle=shuffle, + drop_last=True, + num_workers=num_workers, + #collate_fn = collate_fn + ) + return train_loader, test_loader + + diff --git a/tools/Train.py b/tools/Train.py new file mode 100644 index 0000000..ba9d3dd --- /dev/null +++ b/tools/Train.py @@ -0,0 +1,57 @@ +from torch.utils.data import Dataset, DataLoader +import numpy as np +import torchvision.models as models +from torchvision import datasets, transforms +import torchvision +import torch.optim as optim +import torch.nn.functional as F +import torch.nn as nn +import torch +import os +import utils as utils + + +def train(model, train_loader, optimizer, epoch=0, deviceid=[0]): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data = utils.SetDevice(data, deviceid) + target = utils.SetDevice(target, deviceid) + optimizer.zero_grad() + + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + + if batch_idx % 100 == 0 and batch_idx > 0: + print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}' + .format(epoch, batch_idx * len(data), + len(train_loader.dataset), + 100. * batch_idx / + len(train_loader), + loss.item())) + + +def test(model, test_loader, deviceid=[0]): + with torch.no_grad(): + model.eval() + test_loss = 0 + correct = 0 + for data, target in test_loader: + data = utils.SetDevice(data, deviceid) + target = utils.SetDevice(target, deviceid) + output = model(data) + + # sum up batch loss + test_loss += F.nll_loss(output, target, reduction='sum').item() + # get the index of the max log-probability + pred = output.max(1, keepdim=True)[1] + correct += pred.eq(target.view_as(pred)).sum().item() + + test_loss /= len(test_loader.dataset) + print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n' + .format(test_loss, correct, + len( + test_loader.dataset), + 100. * correct / len( + test_loader.dataset))) diff --git a/tools/UniModule.py b/tools/UniModule.py new file mode 100644 index 0000000..b3447f5 --- /dev/null +++ b/tools/UniModule.py @@ -0,0 +1,26 @@ +from __future__ import print_function +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +from torchvision import datasets, transforms +import torchvision.models as models +import matplotlib.pyplot as plt +import numpy as np + + +class ModuleBase(nn.Module): + def __init__(self): + super(ModuleBase, self).__init__() + + def SetConvRequiresGrad(self, layer, requiregrad): + self.features[layer].weight.requires_grad = requiregrad + b = self.features[layer].bias + if b != None: + self.features[layer].bias.requires_grad = requiregrad + + def forwardLayer(self, x, layer=0): + layers = self.features[0:layer+1] + x = layers(x) + diff --git a/tools/__init__.py b/tools/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/tools/imgtransforms.py b/tools/imgtransforms.py new file mode 100755 index 0000000..d569d54 --- /dev/null +++ b/tools/imgtransforms.py @@ -0,0 +1,642 @@ +from __future__ import division +import torch +import math +import random +import numpy as np +import numbers +import types +import collections +import warnings +import cv2 +from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION + +try: + import accimage +except ImportError: + accimage = None + + +def _is_pil_image(img): + if accimage is not None: + return isinstance(img, (Image.Image, accimage.Image)) + else: + return isinstance(img, Image.Image) + + +def normalize(tensor, mean, std): + """Normalize a ``torch.tensor`` + + Args: + tensor (torch.tensor): tensor to be normalized. + mean: (list): the mean of BGR + std: (list): the std of BGR + + Returns: + Tensor: Normalized tensor. + """ + + for t, m, s in zip(tensor, mean, std): + t.sub_(m).div_(s) + return tensor + + +def to_tensor(pic): + """Convert a ``numpy.ndarray`` to tensor. + + See ``ToTensor`` for more details. + + Args: + pic (numpy.ndarray): Image to be converted to tensor. + + Returns: + Tensor: Converted image. + """ + + img = torch.from_numpy(pic.transpose((2, 0, 1))) + + return img.float() + + +def resize(img, mask, kpt, ratio): + """Resize the ``numpy.ndarray`` and points as ratio. + + Args: + img (numpy.ndarray): Image to be resized. + mask (numpy.ndarray): Mask to be resized. + kpt (list): Keypoints to be resized. + ratio (tuple or number): the ratio to resize. + + Returns: + numpy.ndarray: Resized image. + numpy.ndarray: Resized mask. + lists: Resized keypoints. + """ + + if not (isinstance(ratio, numbers.Number) or (isinstance(ratio, collections.Iterable) and len(ratio) == 2)): + raise TypeError('Got inappropriate ratio arg: {}'.format(ratio)) + + h, w, _ = img.shape + if w < 64: + img = cv2.copyMakeBorder(img, 0, 0, 0, 64 - w, cv2.BORDER_CONSTANT, value=(128, 128, 128)) + mask = cv2.copyMakeBorder(mask, 0, 0, 0, 64 - w, cv2.BORDER_CONSTANT, value=(1, 1, 1)) + w = 64 + + if isinstance(ratio, numbers.Number): + length = len(kpt) + for j in range(length): + kpt[j][0] *= ratio + kpt[j][1] *= ratio + kpt[j][2] *= ratio + return cv2.resize(img, (0, 0), fx=ratio, fy=ratio), cv2.resize(mask, (0, 0), fx=ratio, fy=ratio), kpt + + else: + length = len(kpt) + for j in range(length): + kpt[j][0] *= ratio[0] + kpt[j][1] *= ratio[1] + kpt[j][2] *= ratio[2] + return np.ascontiguousarray(cv2.resize(img, (0, 0), fx=ratio[0], fy=ratio[1])), np.ascontiguousarray( + cv2.resize(mask, (0, 0), fx=ratio[0], fy=ratio[1])), kpt + + +def rotate(img, mask, kpt, degree): + """Rotate the ``numpy.ndarray`` and points as degree. + + Args: + img (numpy.ndarray): Image to be rotated. + mask (numpy.ndarray): Mask to be rotated. + kpt (list): Keypoints to be rotated. + degree (number): the degree to rotate. + + Returns: + numpy.ndarray: Resized image. + numpy.ndarray: Resized mask. + list: Resized keypoints. + """ + + height, width, _ = img.shape + + img_center = (width / 2.0, height / 2.0) + + rotateMat = cv2.getRotationMatrix2D(img_center, degree, 1.0) + cos_val = np.abs(rotateMat[0, 0]) + sin_val = np.abs(rotateMat[0, 1]) + new_width = int(height * sin_val + width * cos_val) + new_height = int(height * cos_val + width * sin_val) + rotateMat[0, 2] += (new_width / 2.) - img_center[0] + rotateMat[1, 2] += (new_height / 2.) - img_center[1] + + img = cv2.warpAffine(img, rotateMat, (new_width, new_height), borderValue=(128, 128, 128)) + mask = cv2.warpAffine(mask, rotateMat, (new_width, new_height), borderValue=(1, 1, 1)) + + length = len(kpt) + for j in range(length): + x = kpt[j][0] + y = kpt[j][1] + p = np.array([x, y, 1]) + p = rotateMat.dot(p) + kpt[j][0] = p[0] + kpt[j][1] = p[1] + + return np.ascontiguousarray(img), np.ascontiguousarray(mask), kpt + + +def adjust_brightness(img, brightness_factor): + """Adjust brightness of an Image. + + Args: + img (PIL Image): PIL Image to be adjusted. + brightness_factor (float): How much to adjust the brightness. Can be + any non negative number. 0 gives a black image, 1 gives the + original image while 2 increases the brightness by a factor of 2. + + Returns: + PIL Image: Brightness adjusted image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + enhancer = ImageEnhance.Brightness(img) + img = enhancer.enhance(brightness_factor) + return img + + +def adjust_contrast(img, contrast_factor): + """Adjust contrast of an Image. + + Args: + img (PIL Image): PIL Image to be adjusted. + contrast_factor (float): How much to adjust the contrast. Can be any + non negative number. 0 gives a solid gray image, 1 gives the + original image while 2 increases the contrast by a factor of 2. + + Returns: + PIL Image: Contrast adjusted image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + enhancer = ImageEnhance.Contrast(img) + img = enhancer.enhance(contrast_factor) + return img + + +def adjust_saturation(img, saturation_factor): + """Adjust color saturation of an image. + + Args: + img (PIL Image): PIL Image to be adjusted. + saturation_factor (float): How much to adjust the saturation. 0 will + give a black and white image, 1 will give the original image while + 2 will enhance the saturation by a factor of 2. + + Returns: + PIL Image: Saturation adjusted image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + enhancer = ImageEnhance.Color(img) + img = enhancer.enhance(saturation_factor) + return img + + +def adjust_hue(img, hue_factor): + """Adjust hue of an image. + + The image hue is adjusted by converting the image to HSV and + cyclically shifting the intensities in the hue channel (H). + The image is then converted back to original image mode. + + `hue_factor` is the amount of shift in H channel and must be in the + interval `[-0.5, 0.5]`. + + See https://en.wikipedia.org/wiki/Hue for more details on Hue. + + Args: + img (PIL Image): PIL Image to be adjusted. + hue_factor (float): How much to shift the hue channel. Should be in + [-0.5, 0.5]. 0.5 and -0.5 give complete reversal of hue channel in + HSV space in positive and negative direction respectively. + 0 means no shift. Therefore, both -0.5 and 0.5 will give an image + with complementary colors while 0 gives the original image. + + Returns: + PIL Image: Hue adjusted image. + """ + if not (-0.5 <= hue_factor <= 0.5): + raise ValueError('hue_factor is not in [-0.5, 0.5].'.format(hue_factor)) + + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + input_mode = img.mode + if input_mode in {'L', '1', 'I', 'F'}: + return img + + h, s, v = img.convert('HSV').split() + + np_h = np.array(h, dtype=np.uint8) + # uint8 addition take cares of rotation across boundaries + with np.errstate(over='ignore'): + np_h += np.uint8(hue_factor * 255) + h = Image.fromarray(np_h, 'L') + + img = Image.merge('HSV', (h, s, v)).convert(input_mode) + return img + + +def hflip(img, mask, kpt): + height, width, _ = img.shape + mask = mask.reshape((height, width, 1)) + + img = img[:, ::-1, :] + mask = mask[:, ::-1, :] + + length = len(kpt) + for j in range(length): + # if kpt[j][2] > 0: + kpt[j][0] = width - 1 - kpt[j][0] + + if length == 17: + swap_pair = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12], [13, 14], [15, 16]] + if length == 13: + swap_pair = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12] ] + if length == 68: + swap_pair = [[0, 16], [1, 15], [2, 14], [3, 13], [4, 12], [5, 11], [6, 10], [7, 9], + [17, 26], [18, 25], [19, 24], [20, 23], [21, 22], + [31, 35], [32, 34], + [36, 45], [37, 44], [38, 43], [39, 42], [40, 47], [41, 46], + [48, 54], [49, 53], [50, 52], [59, 55], [60, 64], [61, 63], [58, 56], [67, 65], + ] + if length == 5: + swap_pair = [[0, 1], [3, 4]] + if length == 10: + swap_pair = [[0, 1], [3, 4] , [5, 9], [6, 8]] + + for x in swap_pair: + temp_point0 = kpt[x[0]].copy() + temp_point1 = kpt[x[1]].copy() + kpt[x[0]] = temp_point1 + kpt[x[1]] = temp_point0 + + return np.ascontiguousarray(img), np.ascontiguousarray(mask), kpt + + +def crop(img, mask, kpt, offset_left, offset_up, w, h): + length = len(kpt) + + for y in range(length): + kpt[y][0] -= offset_left + kpt[y][1] -= offset_up + + height, width, _ = img.shape + mask = mask.reshape((height, width)) + + new_img = np.empty((h, w, 3), dtype=img.dtype) + new_img.fill(128) + + new_mask = np.empty((h, w), dtype=mask.dtype) + new_mask.fill(1) + + st_x = 0 + ed_x = w + st_y = 0 + ed_y = h + or_st_x = offset_left + or_ed_x = offset_left + w + or_st_y = offset_up + or_ed_y = offset_up + h + + if offset_left < 0: + st_x = -offset_left + or_st_x = 0 + if offset_left + w > width: + ed_x = width - offset_left + or_ed_x = width + if offset_up < 0: + st_y = -offset_up + or_st_y = 0 + if offset_up + h > height: + ed_y = height - offset_up + or_ed_y = height + + new_img[st_y: ed_y, st_x: ed_x, :] = img[or_st_y: or_ed_y, or_st_x: or_ed_x, :].copy() + new_mask[st_y: ed_y, st_x: ed_x] = mask[or_st_y: or_ed_y, or_st_x: or_ed_x].copy() + + return np.ascontiguousarray(new_img), np.ascontiguousarray(new_mask), kpt + + +class RandomResized(object): + """Resize the given numpy.ndarray to random size and aspect ratio. + + Args: + scale_min: the min scale to resize. + scale_max: the max scale to resize. + """ + + def __init__(self, targetsize=256 , scale_min=0.5, scale_max=1.1): + self.scale_min = scale_min + self.scale_max = scale_max + self.targetsize = targetsize + + @staticmethod + def get_params(img, targetsize ,scale_min, scale_max): + height, width, _ = img.shape + + ratio = random.uniform(scale_min, scale_max) + + ratio = (float(targetsize) / max(height,width))*ratio + + return ratio + + def __call__(self, img, mask, kpt): + """ + Args: + img (numpy.ndarray): Image to be resized. + mask (numpy.ndarray): Mask to be resized. + kpt (list): keypoints to be resized. + + Returns: + numpy.ndarray: Randomly resize image. + numpy.ndarray: Randomly resize mask. + list: Randomly resize keypoints. + """ + ratio = self.get_params(img, self.targetsize ,self.scale_min, self.scale_max) + + return resize(img, mask, kpt, ratio) + + +class TestResized(object): + """Resize the given numpy.ndarray to the size for test. + + Args: + size: the size to resize. + """ + + def __init__(self, size): + assert (isinstance(size, int) or (isinstance(size, collections.Iterable) and len(size) == 2)) + if isinstance(size, int): + self.size = (size, size) + else: + self.size = size + + @staticmethod + def get_params(img, output_size): + + height, width, _ = img.shape + radiow = output_size[0] * 1.0 / width + radioh = output_size[1] * 1.0 / height + + return min(radioh, radiow) + + def __call__(self, img, mask, kpt): + """ + Args: + img (numpy.ndarray): Image to be resized. + mask (numpy.ndarray): Mask to be resized. + kpt (list): keypoints to be resized. + + Returns: + numpy.ndarray: Randomly resize image. + numpy.ndarray: Randomly resize mask. + list: Randomly resize keypoints. + """ + ratio = self.get_params(img, self.size) + + height, width, c = img.shape + if height > width: + newimg = np.zeros((height, height, c), img.dtype) + start = int((height - width) / 2) + newimg[:, start:start + width, :] = img + else: + newimg = np.zeros((width, width, c), img.dtype) + start = int((width - height) / 2) + newimg[start:start + height, :, :] = img + + if newimg.shape[0] < 64: + ratio = ratio / 64.0 * newimg.shape[0] + newimg = cv2.resize(newimg, (64, 64)) + + return resize(newimg, mask, kpt, ratio) + + +class RandomRotate(object): + """Rotate the input numpy.ndarray and points to the given degree. + + Args: + degree (number): Desired rotate degree. + """ + + def __init__(self, max_degree): + assert isinstance(max_degree, numbers.Number) + self.max_degree = max_degree + + @staticmethod + def get_params(max_degree): + """Get parameters for ``rotate`` for a random rotate. + + Returns: + number: degree to be passed to ``rotate`` for random rotate. + """ + degree = random.uniform(-max_degree, max_degree) + + return degree + + def __call__(self, img, mask, kpt): + """ + Args: + img (numpy.ndarray): Image to be rotated. + mask (numpy.ndarray): Mask to be rotated. + kpt (list): Keypoints to be rotated. + + Returns: + numpy.ndarray: Rotated image. + list: Rotated key points. + """ + degree = self.get_params(self.max_degree) + + return rotate(img, mask, kpt, degree) + + +class ColorJitter(object): + """Randomly change the brightness, contrast and saturation of an image. + + Args: + brightness (float): How much to jitter brightness. brightness_factor + is chosen uniformly from [max(0, 1 - brightness), 1 + brightness]. + contrast (float): How much to jitter contrast. contrast_factor + is chosen uniformly from [max(0, 1 - contrast), 1 + contrast]. + saturation (float): How much to jitter saturation. saturation_factor + is chosen uniformly from [max(0, 1 - saturation), 1 + saturation]. + hue(float): How much to jitter hue. hue_factor is chosen uniformly from + [-hue, hue]. Should be >=0 and <= 0.5. + """ + + def __init__(self, brightness=0, contrast=0, saturation=0, hue=0): + self.brightness = brightness + self.contrast = contrast + self.saturation = saturation + self.hue = hue + + @staticmethod + def get_params(brightness, contrast, saturation, hue): + if brightness > 0: + brightness_factor = random.uniform(max(0, 1 - brightness), 1 + brightness) + + if contrast > 0: + contrast_factor = random.uniform(max(0, 1 - contrast), 1 + contrast) + + if saturation > 0: + saturation_factor = random.uniform(max(0, 1 - saturation), 1 + saturation) + + if hue > 0: + hue_factor = random.uniform(-hue, hue) + + return brightness_factor, contrast, saturation, hue + + def __call__(self, img, mask, kpt): + brightness_factor, contrast, saturation, hue = self.get_params(self.brightness, self.contrast, self.saturation, + self.hue) + + img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) + + img = adjust_brightness(img, brightness_factor) + img = adjust_contrast(img, contrast) + img = adjust_saturation(img, saturation) + img = adjust_hue(img, hue) + + img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) + + return img, mask, kpt + + +class RandomCrop(object): + """Crop the given numpy.ndarray and at a random location. + + Args: + size (int): Desired output size of the crop. + """ + + def __init__(self, size, center_perturb_max=40): + assert isinstance(size, numbers.Number) + self.size = (int(size), int(size)) # (w, h) + self.center_perturb_max = center_perturb_max + + @staticmethod + def get_params(img, output_size, center_perturb_max): + """Get parameters for ``crop`` for a random crop. + + Args: + img (numpy.ndarray): Image to be cropped. + output_size (tuple): Expected output size of the crop. + + Returns: + tuple: params (i, j, h, w) to be passed to ``crop`` for random crop. + """ + ratio_x = random.uniform(0, 1) + ratio_y = random.uniform(0, 1) + x_offset = int((ratio_x - 0.5) * 2 * center_perturb_max) + y_offset = int((ratio_y - 0.5) * 2 * center_perturb_max) + center_x = img.shape[1] / 2.0 + x_offset + center_y = img.shape[0] / 2.0 + y_offset + + return int(round(center_x - output_size[0] / 2)), int(round(center_y - output_size[1] / 2)) + + def __call__(self, img, mask, kpt): + """ + Args: + img (numpy.ndarray): Image to be cropped. + mask (numpy.ndarray): Mask to be cropped. + kpt (list): keypoints to be cropped. + + Returns: + numpy.ndarray: Cropped image. + numpy.ndarray: Cropped mask. + list: Cropped keypoints. + """ + + offset_left, offset_up = self.get_params(img, self.size, self.center_perturb_max) + + return crop(img, mask, kpt, offset_left, offset_up, self.size[0], self.size[1]) + + +class RandomNoise(object): + def __init__(self, meanscale=0.3, samplescale=0.3): + self.meanscale = meanscale + self.samplescale = samplescale + + @staticmethod + def get_params(img, meanscale, samplescale): + meanscale = random.uniform(0, 1) * meanscale + samplescale = random.uniform(0, 1) * samplescale + + meanrandom = np.random.random(img.shape) + samplerandom = np.random.random(img.shape) + + imagemean = np.mean(img) + meanrandom = (meanrandom - 0.5) * (meanscale * imagemean) + + img = img.astype("float32") + img = ((samplerandom - 0.5) * (2 * samplescale) + 1) * img + img = img + meanrandom + + return img + + def __call__(self, img, mask, kpt): + img = self.get_params(img, self.meanscale, self.samplescale) + + return img, mask, kpt + + +class RandomHorizontalFlip(object): + """Random horizontal flip the image. + + Args: + prob (number): the probability to flip. + """ + + def __init__(self, prob=0.5): + self.prob = prob + + def __call__(self, img, mask, kpt): + """ + Args: + img (numpy.ndarray): Image to be flipped. + mask (numpy.ndarray): Mask to be flipped. + kpt (list): Keypoints to be flipped. + + Returns: + numpy.ndarray: Randomly flipped image. + list: Randomly flipped points. + """ + if random.random() < self.prob: + return hflip(img, mask, kpt) + return img, mask, kpt + + +class Compose(object): + """Composes several imgtransforms together. + + Args: + imgtransforms (list of ``Transform`` objects): list of transforms to compose. + + Example: + >>> imgtransforms.Compose([ + >>> imgtransforms.CenterCrop(10), + >>> imgtransforms.ToTensor(), + >>> ]) + """ + + def __init__(self, imgtransforms): + self.transforms = imgtransforms + + def __call__(self, img, mask, kpt): + + for t in self.transforms: + if isinstance(t, RandomResized): + img, mask, kpt = t(img, mask, kpt) + else: + img, mask, kpt = t(img, mask, kpt) + + return img, mask, kpt diff --git a/tools/utils.py b/tools/utils.py new file mode 100755 index 0000000..775b747 --- /dev/null +++ b/tools/utils.py @@ -0,0 +1,151 @@ +import sys +import math +import torch +import shutil +import time +import os +import random +from easydict import EasyDict as edict +import yaml +import numpy as np +import argparse + +class AverageMeter(object): + """ Computes ans stores the average and current value""" + def __init__(self): + self.reset() + + def reset(self): + self.val = 0. + self.avg = 0. + self.sum = 0. + self.count = 0 + + def update(self, val, n=1): + self.val = val + self.sum += val * n + self.count += n + self.avg = self.sum / self.count + +def AdjustLearningRate(optimizermodule, iters, base_lr, policy_parameter, policy='step', multiple=[1]): + + if policy == 'fixed': + lr = base_lr + elif policy == 'step': + lr = base_lr * (policy_parameter['gamma'] ** (iters // policy_parameter['step_size'])) + elif policy == 'exp': + lr = base_lr * (policy_parameter['gamma'] ** iters) + elif policy == 'inv': + lr = base_lr * ((1 + policy_parameter['gamma'] * iters) ** (-policy_parameter['power'])) + elif policy == 'multistep': + lr = base_lr + for stepvalue in policy_parameter['stepvalue']: + if iters >= stepvalue: + lr *= policy_parameter['gamma'] + else: + break + elif policy == 'poly': + lr = base_lr * ((1 - iters * 1.0 / policy_parameter['max_iter']) ** policy_parameter['power']) + elif policy == 'sigmoid': + lr = base_lr * (1.0 / (1 + math.exp(-policy_parameter['gamma'] * (iters - policy_parameter['stepsize'])))) + elif policy == 'multistep-poly': + lr = base_lr + stepstart = 0 + stepend = policy_parameter['max_iter'] + for stepvalue in policy_parameter['stepvalue']: + if iters >= stepvalue: + lr *= policy_parameter['gamma'] + stepstart = stepvalue + else: + stepend = stepvalue + break + lr = max(lr * policy_parameter['gamma'], lr * (1 - (iters - stepstart) * 1.0 / (stepend - stepstart)) ** policy_parameter['power']) + + for i, param_group in enumerate(optimizermodule.param_groups): + param_group['lr'] = lr * multiple[i] + return lr + +def ConstructModel(args): + sys.path.append('../network/') + m = __import__(args.modelname) + model = m.ConstructModel(args) + return model + + +def GetCheckpoint(filename): + state_dict = torch.load(filename, map_location='cpu')['state_dict'] + from collections import OrderedDict + new_state_dict = OrderedDict() + for k, v in state_dict.items(): + name = k + if k[0:7] == "module.": + name = k[7:] + new_state_dict[name] = v + return new_state_dict +def SaveCheckpoint(model, filename='checkpoint_'+str(time.time()) + '.pth.tar', is_best=False): + state = model.state_dict + torch.save(state, filename) + if is_best: + shutil.copyfile(filename, "best_"+filename) +def LoadCheckpoint(model , pretrained): + if pretrained != 'None' and os.path.exists(pretrained): + model.load_state_dict(GetCheckpoint(pretrained)) + return model + else: + return "" + + +def SaveModel(model , filename='checkpoint_'+str(time.time()) + '.pkl'): + torch.save({ + # 'epoch': epoch, + 'model_state_dict': model.state_dict(), + # 'optimizer_state_dict': optimizer.state_dict(), + # 'loss': loss, + }, filename) +def LoadModel(model, filename): + checkpoint = torch.load(filename) + model.load_state_dict(checkpoint['model_state_dict']) + # optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + # epoch = checkpoint['epoch'] + # loss = checkpoint['loss'] + return model + + +def SetDevice(Obj , deviceid=range(torch.cuda.device_count())): + if torch.cuda.is_available(): + if len(deviceid) > 1: + gpu = range(len(deviceid)) + return torch.nn.DataParallel(Obj, device_ids=gpu).cuda() + else: + return Obj.cuda() + else: + return Obj + +def ConstructDataset(args): + sys.path.append('../dataset/') + m = __import__(args.dataset) + train_loader, val_loader = m.ConstructDataset(args) + return train_loader , val_loader + + + + +def parse(): + + parser = argparse.ArgumentParser() + parser.add_argument('--config', type=str, default='config.yml', + dest='config', help='to set the parameters') + return parser.parse_args() + +def Config(filename): + with open(filename, 'r') as f: + parser = edict(yaml.load(f)) + for x in parser: + print('{}: {}'.format(x, parser[x])) + return parser + +def SetCUDAVISIBLEDEVICES(deviceid): + os.environ["CUDA_VISIBLE_DEVICES"] = str(tuple(deviceid))[1:-1] + print("Use GPU IDs :" + str(tuple(deviceid))[1:-1]) + +