장윤호

init

Showing 106 changed files with 2345 additions and 0 deletions
This diff is collapsed. Click to expand it.
File mode changed
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
# code in this file is adpated from rpmcruz/autoaugment
# https://github.com/rpmcruz/autoaugment/blob/master/transformations.py
import random
import PIL, PIL.ImageOps, PIL.ImageEnhance, PIL.ImageDraw
import numpy as np
import torch
from PIL import Image
def ShearX(img, v): # [-0.3, 0.3]
assert -0.3 <= v <= 0.3
if random.random() > 0.5:
v = -v
return img.transform(img.size, PIL.Image.AFFINE, (1, v, 0, 0, 1, 0))
def ShearY(img, v): # [-0.3, 0.3]
assert -0.3 <= v <= 0.3
if random.random() > 0.5:
v = -v
return img.transform(img.size, PIL.Image.AFFINE, (1, 0, 0, v, 1, 0))
def TranslateX(img, v): # [-150, 150] => percentage: [-0.45, 0.45]
assert -0.45 <= v <= 0.45
if random.random() > 0.5:
v = -v
v = v * img.size[0]
return img.transform(img.size, PIL.Image.AFFINE, (1, 0, v, 0, 1, 0))
def TranslateXabs(img, v): # [-150, 150] => percentage: [-0.45, 0.45]
assert 0 <= v
if random.random() > 0.5:
v = -v
return img.transform(img.size, PIL.Image.AFFINE, (1, 0, v, 0, 1, 0))
def TranslateY(img, v): # [-150, 150] => percentage: [-0.45, 0.45]
assert -0.45 <= v <= 0.45
if random.random() > 0.5:
v = -v
v = v * img.size[1]
return img.transform(img.size, PIL.Image.AFFINE, (1, 0, 0, 0, 1, v))
def TranslateYabs(img, v): # [-150, 150] => percentage: [-0.45, 0.45]
assert 0 <= v
if random.random() > 0.5:
v = -v
return img.transform(img.size, PIL.Image.AFFINE, (1, 0, 0, 0, 1, v))
def Rotate(img, v): # [-30, 30]
assert -30 <= v <= 30
if random.random() > 0.5:
v = -v
return img.rotate(v)
def AutoContrast(img, _):
return PIL.ImageOps.autocontrast(img)
def Invert(img, _):
return PIL.ImageOps.invert(img)
def Equalize(img, _):
return PIL.ImageOps.equalize(img)
def Flip(img, _): # not from the paper
return PIL.ImageOps.mirror(img)
def Solarize(img, v): # [0, 256]
assert 0 <= v <= 256
return PIL.ImageOps.solarize(img, v)
def SolarizeAdd(img, addition=0, threshold=128):
img_np = np.array(img).astype(np.int)
img_np = img_np + addition
img_np = np.clip(img_np, 0, 255)
img_np = img_np.astype(np.uint8)
img = Image.fromarray(img_np)
return PIL.ImageOps.solarize(img, threshold)
def Posterize(img, v): # [4, 8]
v = int(v)
v = max(1, v)
return PIL.ImageOps.posterize(img, v)
def Contrast(img, v): # [0.1,1.9]
assert 0.1 <= v <= 1.9
return PIL.ImageEnhance.Contrast(img).enhance(v)
def Color(img, v): # [0.1,1.9]
assert 0.1 <= v <= 1.9
return PIL.ImageEnhance.Color(img).enhance(v)
def Brightness(img, v): # [0.1,1.9]
assert 0.1 <= v <= 1.9
return PIL.ImageEnhance.Brightness(img).enhance(v)
def Sharpness(img, v): # [0.1,1.9]
assert 0.1 <= v <= 1.9
return PIL.ImageEnhance.Sharpness(img).enhance(v)
def Cutout(img, v): # [0, 60] => percentage: [0, 0.2]
assert 0.0 <= v <= 0.2
if v <= 0.:
return img
v = v * img.size[0]
return CutoutAbs(img, v)
def CutoutAbs(img, v): # [0, 60] => percentage: [0, 0.2]
# assert 0 <= v <= 20
if v < 0:
return img
w, h = img.size
x0 = np.random.uniform(w)
y0 = np.random.uniform(h)
x0 = int(max(0, x0 - v / 2.))
y0 = int(max(0, y0 - v / 2.))
x1 = min(w, x0 + v)
y1 = min(h, y0 + v)
xy = (x0, y0, x1, y1)
color = (125, 123, 114)
# color = (0, 0, 0)
img = img.copy()
PIL.ImageDraw.Draw(img).rectangle(xy, color)
return img
def SamplePairing(imgs): # [0, 0.4]
def f(img1, v):
i = np.random.choice(len(imgs))
img2 = PIL.Image.fromarray(imgs[i])
return PIL.Image.blend(img1, img2, v)
return f
def Identity(img, v):
return img
def augment_list(): # 16 oeprations and their ranges
# https://github.com/google-research/uda/blob/master/image/randaugment/policies.py#L57
# l = [
# (Identity, 0., 1.0),
# (ShearX, 0., 0.3), # 0
# (ShearY, 0., 0.3), # 1
# (TranslateX, 0., 0.33), # 2
# (TranslateY, 0., 0.33), # 3
# (Rotate, 0, 30), # 4
# (AutoContrast, 0, 1), # 5
# (Invert, 0, 1), # 6
# (Equalize, 0, 1), # 7
# (Solarize, 0, 110), # 8
# (Posterize, 4, 8), # 9
# # (Contrast, 0.1, 1.9), # 10
# (Color, 0.1, 1.9), # 11
# (Brightness, 0.1, 1.9), # 12
# (Sharpness, 0.1, 1.9), # 13
# # (Cutout, 0, 0.2), # 14
# # (SamplePairing(imgs), 0, 0.4), # 15
# ]
# https://github.com/tensorflow/tpu/blob/8462d083dd89489a79e3200bcc8d4063bf362186/models/official/efficientnet/autoaugment.py#L505
l = [
(AutoContrast, 0, 1),
(Equalize, 0, 1),
(Invert, 0, 1),
(Rotate, 0, 30),
(Posterize, 0, 4),
(Solarize, 0, 256),
(SolarizeAdd, 0, 110),
(Color, 0.1, 1.9),
(Contrast, 0.1, 1.9),
(Brightness, 0.1, 1.9),
(Sharpness, 0.1, 1.9),
(ShearX, 0., 0.3),
(ShearY, 0., 0.3),
(CutoutAbs, 0, 40),
(TranslateXabs, 0., 100),
(TranslateYabs, 0., 100),
]
return l
class Lighting(object):
"""Lighting noise(AlexNet - style PCA - based noise)"""
def __init__(self, alphastd, eigval, eigvec):
self.alphastd = alphastd
self.eigval = torch.Tensor(eigval)
self.eigvec = torch.Tensor(eigvec)
def __call__(self, img):
if self.alphastd == 0:
return img
alpha = img.new().resize_(3).normal_(0, self.alphastd)
rgb = self.eigvec.type_as(img).clone() \
.mul(alpha.view(1, 3).expand(3, 3)) \
.mul(self.eigval.view(1, 3).expand(3, 3)) \
.sum(1).squeeze()
return img.add(rgb.view(3, 1, 1).expand_as(img))
class CutoutDefault(object):
"""
Reference : https://github.com/quark0/darts/blob/master/cnn/utils.py
"""
def __init__(self, length):
self.length = length
def __call__(self, img):
h, w = img.size(1), img.size(2)
mask = np.ones((h, w), np.float32)
y = np.random.randint(h)
x = np.random.randint(w)
y1 = np.clip(y - self.length // 2, 0, h)
y2 = np.clip(y + self.length // 2, 0, h)
x1 = np.clip(x - self.length // 2, 0, w)
x2 = np.clip(x + self.length // 2, 0, w)
mask[y1: y2, x1: x2] = 0.
mask = torch.from_numpy(mask)
mask = mask.expand_as(img)
img *= mask
return img
class RandAugment:
def __init__(self, n, m):
self.n = n # augmentation을 적용하는 수.
self.m = m # [0, 30]
self.augment_list = augment_list()
def __call__(self, img):
ops = random.choices(self.augment_list, k=self.n)
for op, minval, maxval in ops:
val = (float(self.m) / 30) * float(maxval - minval) + minval
img = op(img, val)
return img
\ No newline at end of file
task: All
modelname: MobilenetV3
output: output
checkpoint: "output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar"
gpu: [2]
data:
train: ../data/Fifth_data/All
val: ../data/Fifth_data/All
test: ../data/Fifth_data/All
train:
epochs: 3000
start-epoch: 0
batch-size: 256
worker: 16
resume: ''
augment: True
size: 224
confidence: False
weight: [1., 1., 1., 1., 1., 1., 1., 1.] #Crack, Double, Empty, Flip, Leave, Normal, Pollute, Scratch
predict:
batch-size: 256
worker: 16
cam: False
normalize: True
save: False
optimizer:
type: 'Adam'
lr: 0.001
momentum: 0.9
weight_decay: 0.0001
loss:
gamma: 2.
alpha: 0.8
model:
blocks: 6
class: 8
etc:
tensorboard: False
print_freq: 10
\ No newline at end of file
task: Type
modelname: MobilenetV3
output: output
checkpoint: "output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar"
gpu: [1]
data:
train: ../data/Fifth_data/ErrorType
val: ../data/Fifth_data/ErrorType
test: ../data/Fifth_data/ErrorType
train:
epochs: 3000
start-epoch: 0
batch-size: 256
worker: 16
resume: ''
augment: True
size: 64
confidence: False
weight: [1., 1., 1., 1., 1., 1., 1.] #Crack, Double, Empty, Flip, Leave, Scratch
predict:
batch-size: 256
worker: 16
cam: False
normalize: True
save: False
optimizer:
type: 'SGD'
lr: 0.1
momentum: 0.9
weight_decay: 0.0001
loss:
gamma: 2.
alpha: 0.8
model:
blocks: 4
class: 7
etc:
tensorboard: False
print_freq: 10
\ No newline at end of file
task: Error
modelname: MobilenetV3
output: output
checkpoint: "output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar"
gpu: [1]
data:
train: ../data/Fifth_data/Error
val: ../data/Fifth_data/Error
test: ../data/Fifth_data/Error
train:
epochs: 3000
start-epoch: 0
batch-size: 256
worker: 16
resume: ''
augment: True
size: 64
confidence: False
weight: [1., 1.] #Error , Normal
predict:
batch-size: 256
worker: 16
cam: False
cam-class: "Error"
normalize: True
save: False
optimizer:
type: 'SGD'
lr: 0.1
momentum: 0.9
weight_decay: 0.0001
loss:
gamma: 2.
alpha: 0.8
model:
blocks: 4
class: 2
etc:
tensorboard: False
print_freq: 10
\ No newline at end of file
import torch
import torchvision
import torch.nn as nn
import argparse
from model import AutoEncoder, pytorch_autoencoder
from get_mean_std import get_params
from torchvision.utils import save_image
parser = argparse.ArgumentParser(description='Process autoencoder')
parser.add_argument('--config', type=str, help='select type')
args = parser.parse_args()
# Scratch에서만 넣은 데이터
data_path = "../data/Fourth_data/Auto_test"
checkpoint_path = "./dc_img/checkpoint.pth"
resize_size = 128
batch_size = 128
# 보고서를 참고하여 만든 autoencoder 와 pytorch 에서 제공하는 autoencoder
if args.config == "my":
model = AutoEncoder().cuda("cuda:1")
else:
model = pytorch_autoencoder().cuda("cuda:1")
checkpoint = torch.load(checkpoint_path)
model.load_state_dict(checkpoint)
print("checkpoint loaded finish!")
img_transform = torchvision.transforms.Compose([
torchvision.transforms.Resize((resize_size, resize_size)),
torchvision.transforms.Grayscale(),
torchvision.transforms.ToTensor(),
])
dataset = torchvision.datasets.ImageFolder(data_path, transform=img_transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=False)
criterion = nn.L1Loss()
for idx, data in enumerate(dataloader):
img, _ = data
img = img.cuda("cuda:1")
output = model(img)
save_image(output, f'./dc_img/test_output_{idx}.png')
loss = criterion(output, img)
img = img - output
save_image(img, f'./dc_img/scratch_dif_{idx}.png')
print(f"loss : {loss}")
\ No newline at end of file
import torch
import torchvision
import torch.nn as nn
import argparse
from model import AutoEncoder, pytorch_autoencoder, AutoEncoder_s
from get_mean_std import get_params
from torchvision.utils import save_image
parser = argparse.ArgumentParser(description='Process autoencoder')
parser.add_argument('--config', type=str, help='select type')
args = parser.parse_args()
# 노말만 넣은 데이터
data_path = "../data/Fourth_data/Auto"
resize_size = 128
num_epochs = 100
batch_size = 128
learning_rate = 1e-3
# 보고서를 참고하여 만든 autoencoder 와 pytorch 에서 제공하는 autoencoder
if args.config == "my":
model = AutoEncoder().cuda("cuda:1")
elif args.config == "pytorch":
model = pytorch_autoencoder().cuda("cuda:1")
else:
model = AutoEncoder_s().cuda("cuda:1")
print(model)
#mean, std = get_params(data_path, resize_size)
img_transform = torchvision.transforms.Compose([
torchvision.transforms.Resize((resize_size, resize_size)),
torchvision.transforms.Grayscale(),
torchvision.transforms.ToTensor(),
])
dataset = torchvision.datasets.ImageFolder(data_path, transform=img_transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True)
criterion = nn.L1Loss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate, weight_decay=1e-4)
for epoch in range(num_epochs):
for data in dataloader:
img, _ = data
img = img.cuda("cuda:1")
output = model(img)
loss = criterion(output, img)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print('epoch [{}/{}], loss:{:.4f}'.format(epoch+1, num_epochs, loss.item()))
if epoch % 10 ==0:
save_image(output, './dc_img/image_{}.png'.format(epoch))
torch.save(model.state_dict(), './dc_img/checkpoint.pth')
\ No newline at end of file
import torch
import torch.nn as nn
import os
import shutil
import logging
from model import mobilenetv3
from utils import get_args_from_yaml
import torchvision.datasets as datasets
from utils import AverageMeter, accuracy, printlog, precision, recall
import torchvision.transforms as transforms
from torch.utils.data.sampler import SubsetRandomSampler
import numpy as np
import time
from get_mean_std import get_params
model = mobilenetv3(n_class=7, blocknum=6, dropout=0.5)
model = model.train()
data_path = "../data/All"
check_path = "output/All/30114_model=MobilenetV3-ep=3000-block=6-class=8/model_best.pth.tar"
validation_ratio = 0.1
random_seed = 10
gpus=[0]
epochs = 3000
resize_size=128
logger = logging.getLogger()
logger.setLevel(logging.INFO)
streamHandler = logging.StreamHandler()
logger.addHandler(streamHandler)
fileHandler = logging.FileHandler("logs/finetune.log")
logger.addHandler(fileHandler)
def save_checkpoint(state, is_best, block =6, filename='checkpoint.pth.tar'):
"""Saves checkpoint to disk"""
directory = "%s/%s/" % ('output', 'All')
if not os.path.exists(directory):
os.makedirs(directory)
filename = directory + filename
torch.save(state, filename)
logger.info(f"Checkpoint Saved: {filename}")
best_filename = f"output/All/model_best.pth.tar"
if is_best:
shutil.copyfile(filename, best_filename)
logger.info(f"New Best Checkpoint saved: {best_filename}")
return best_filename
def validate(val_loader, model, criterion, epoch, q=None):
"""Perform validaadd_model_to_queuetion on the validation set"""
with torch.no_grad():
batch_time = AverageMeter()
losses = AverageMeter()
top1 = AverageMeter()
prec = []
rec = []
for i in range(7):
prec.append(AverageMeter())
rec.append(AverageMeter())
# switch to evaluate mode
model.eval()
end = time.time()
for i, (input, target) in enumerate(val_loader):
if torch.cuda.is_available():
target = target.cuda()
input = input.cuda()
# compute output
output = model(input)
loss = criterion(output, target)
# measure accuracy and record loss
prec1 = accuracy(output.data, target, topk=(1,))[0]
losses.update(loss.item(), input.size(0))
top1.update(prec1.item(), input.size(0))
for k in range(7):
prec[k].update(precision(output.data, target, target_class=k), input.size(0))
rec[k].update(recall(output.data, target, target_class=k), input.size(0))
# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()
if i % 10 == 0:
logger.info('Test: [{0}/{1}]\t'
'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
'Loss {loss.val:.4f} ({loss.avg:.4f})\t'
'Prec@1 {top1.val:.3f} ({top1.avg:.3f})'
.format(
i, len(val_loader), batch_time=batch_time, loss=losses,
top1=top1))
printlog(' * epoch: {epoch} Prec@1 {top1.avg:.3f}'.format(epoch=epoch,top1=top1), logger, q)
return top1.avg, prec, rec
def train(model, train_loader, criterion, optimizer, epoch):
batch_time = AverageMeter()
losses = AverageMeter()
top1 = AverageMeter()
prec = AverageMeter()
# switch to train mode
model.train()
end = time.time()
for i, (input, target) in enumerate(train_loader):
if torch.cuda.is_available():
target = target.cuda()
input = input.cuda()
# compute output
output = model(input)
loss = criterion(output, target)
# measure accuracy and record loss
prec1 = accuracy(output, target, topk=(1,))[0]
losses.update(loss.item(), input.size(0))
top1.update(prec1.item(), input.size(0))
# compute gradient and do SGD step
optimizer.zero_grad()
loss.backward()
optimizer.step()
# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()
if i % 10 == 0:
logger.info('Epoch: [{0}][{1}/{2}]\t'
'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
'Loss {loss.val:.4f} ({loss.avg:.4f})\t'
'Prec@1 {top1.val:.3f} ({top1.avg:.3f})\t'
.format(
epoch, i, len(train_loader), batch_time=batch_time,
loss=losses, top1=top1))
for idx, (name, module) in enumerate(model.named_modules()):
if(idx < 62):
for param in module.parameters():
param.requires_grad = False
else:
for param in module.parameters():
param.requires_grad = True
mean, std = get_params(data_path, resize_size)
normalize = transforms.Normalize(mean=[mean[0].item()],
std=[std[0].item()])
transform_train = transforms.Compose([
transforms.Resize((resize_size, resize_size)), # 가로세로 크기 조정
transforms.ColorJitter(0.2,0.2,0.2), # 밝기, 대비, 채도 조정
transforms.RandomRotation(2), # -2~ 2도 만큼 회전
transforms.RandomAffine(5), # affine 변환 (평행사변형이 된다든지, 사다리꼴이 된다든지)
transforms.RandomCrop(resize_size, padding=2), # 원본에서 padding을 상하좌우 2로 둔 뒤, 64만큼 자름
transforms.RandomHorizontalFlip(), # Data 변환 좌우 반전
transforms.Grayscale(),
transforms.ToTensor(),
normalize
])
transform_test = transforms.Compose([
transforms.Resize((resize_size, resize_size)),
transforms.Grayscale(),
transforms.ToTensor(),
normalize
])
kwargs = {'num_workers': 16, 'pin_memory': True}
train_data = datasets.ImageFolder(data_path, transform_train)
val_data = datasets.ImageFolder(data_path,transform_test)
num_train = len(train_data)
indices = list(range(num_train))
split = int(np.floor(validation_ratio * num_train))
# 랜덤 시드 설정. (Train이나 ,Test 일때 모두 10 이므로 같은 데이터셋이라 할 수 있다)
np.random.seed(random_seed)
np.random.shuffle(indices)
# Train set, Validation set 나누기.
train_idx, valid_idx = indices[split:], indices[:split]
train_sampler = SubsetRandomSampler(train_idx)
valid_sampler = SubsetRandomSampler(valid_idx)
train_loader = torch.utils.data.DataLoader(
train_data, batch_size=256, sampler=train_sampler, #shuffle = True
**kwargs)
val_loader = torch.utils.data.DataLoader(
val_data, batch_size=256, sampler=valid_sampler, #shuffle = False
**kwargs)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), 0.0001, weight_decay=0.0001)
if torch.cuda.is_available():
torch.cuda.set_device(gpus[0])
with torch.cuda.device(gpus[0]):
model = model.cuda()
criterion = criterion.cuda()
model = torch.nn.DataParallel(model, device_ids=gpus, output_device=gpus[0])
checkpoint = torch.load(check_path)
pretrained_dict = checkpoint['state_dict']
new_model_dict = model.state_dict()
for k, v in pretrained_dict.items():
if 'classifier' in k:
continue
new_model_dict.update({k : v})
model.load_state_dict(new_model_dict)
#model.load_state_dict(checkpoint['state_dict'], strict=False)
best_prec1 = checkpoint['best_prec1']
for epoch in range(epochs):
train(model, train_loader, criterion, optimizer, epoch)
prec1, prec, rec = validate(val_loader, model, criterion, epoch)
is_best = prec1 >= best_prec1
best_prec1 = max(prec1, best_prec1)
checkpoint = save_checkpoint({
'epoch': epoch + 1,
'state_dict': model.state_dict(),
'best_prec1': best_prec1,
}, is_best)
for i in range(len(prec)):
logger.info(' * Precision {prec.avg:.3f}'.format(prec=prec[i]))
logger.info(' * recall {rec.avg:.3f}'.format(rec=rec[i]))
\ No newline at end of file
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
class FocalLoss(nn.Module):
def __init__(self, gamma=0, alpha=None, size_average=True):
super(FocalLoss, self).__init__()
self.gamma = gamma
self.alpha = alpha
if isinstance(alpha,(float,int)): self.alpha = torch.Tensor([alpha,1-alpha])
if isinstance(alpha,list): self.alpha = torch.Tensor(alpha)
self.size_average = size_average
def forward(self, input, target):
if input.dim() > 2:
input = input.view(input.size(0),input.size(1),-1) # N,C,H,W => N,C,H*W
input = input.transpose(1,2) # N,C,H*W => N,H*W,C
input = input.contiguous().view(-1,input.size(2)) # N,H*W,C => N*H*W,C
target = target.view(-1,1)
logpt = F.log_softmax(input)
logpt = logpt.gather(1,target)
logpt = logpt.view(-1)
pt = Variable(logpt.data.exp())
#pt = logpt.data.exp() #pt = (256), input = (256,5), target = (256,1)
#pt는 logpt에 exponatial 적용
self.alpha = self.alpha.cuda()
if self.alpha is not None:
if self.alpha.type()!=input.data.type():
self.alpha = self.alpha.type_as(input.data)
at = self.alpha.gather(0,target.data.view(-1))
logpt = logpt * at
loss = -1 * (1-pt)**self.gamma * logpt
if self.size_average: return loss.mean()
else: return loss.sum()
\ No newline at end of file
import torch.multiprocessing as mp
import torch
import torchvision.datasets as datasets
import torchvision.transforms as transforms
import argparse
import numpy as np
from get_mean_std import get_params
from model import mobilenetv3
import parmap
#Image resize 계수
resize_size = 64
#Class 의 개수.
class_num = 7
#사용한 Random Seed
seeds = [39396, 2798, 3843, 62034, 8817, 65014, 45385]
#기기에 있는 GPU 개수.
gpu = 4
#저장된 Checkpoint.
checkpoints = [
"output/ErrorType/39396_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar",
"output/ErrorType/2798_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar",
"output/ErrorType/3843_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar",
"output/ErrorType/62034_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar",
"output/ErrorType/8817_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar",
"output/ErrorType/65014_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar",
"output/ErrorType/45385_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar"
]
class AverageMeter(object):
"""Computes and 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 accuracy(output, target, topk=(1,)):
"""Computes the precision@k for the specified values of k"""
maxk = max(topk)
batch_size = target.size(0)
_, pred = output.topk(maxk, 1, True, True)
pred = pred.t()
correct = pred.eq(target.view(1, -1).expand_as(pred))
res = []
for k in topk:
correct_k = correct[:k].view(-1).float().sum(0)
res.append(correct_k.mul_(100.0 / batch_size))
return res
def get_models():
models=[]
for idx, checkpoint in enumerate(checkpoints):
gpu_idx = idx % gpu
weights = torch.load(checkpoint)
model = mobilenetv3(n_class=class_num)
torch.cuda.set_device(gpu_idx)
with torch.cuda.device(gpu_idx):
model = model.cuda()
model = torch.nn.DataParallel(model, device_ids=[gpu_idx], output_device=gpu_idx)
model.load_state_dict(weights['state_dict'])
model.share_memory()
models.append(model)
return models
def get_loader(path, resize_size):
mean, std = get_params(path, resize_size)
normalize = transforms.Normalize(mean=[mean[0].item()],
std=[std[0].item()])
transform = transforms.Compose([
transforms.Resize((resize_size, resize_size)),
transforms.Grayscale(),
transforms.ToTensor(),
normalize
])
dataset = datasets.ImageFolder(args.path, transform)
kwargs = {'num_workers': 4, 'pin_memory': True}
loader = torch.utils.data.DataLoader(dataset, batch_size=256, shuffle=False, **kwargs)
return loader
def get_data(processnum ,model, loader, return_dict):
with torch.no_grad():
top1 = AverageMeter()
model.eval()
gpu_idx = processnum % gpu
for i, data in enumerate(loader):
(input, target) = data
target = target.cuda(gpu_idx)
input = input.cuda(gpu_idx)
output = model(input)
prec1 = accuracy(output, target, topk=(1,))[0]
top1.update(prec1.item(), input.size(0))
return_dict[processnum] = top1.avg
if __name__ == '__main__':
mp.set_start_method('spawn')
parser = argparse.ArgumentParser()
parser.add_argument("--path", required=True, help="path")
args = parser.parse_args()
manager = mp.Manager()
return_dict = manager.dict()
# get one loader
loader = get_loader(args.path, resize_size)
# multi model with other checkpoint.
models = get_models()
#loader is not array so can arise error
processes = []
for i, model in enumerate(models):
p = mp.Process(target=get_data, args=(i, model, loader, return_dict))
p.start()
processes.append(p)
for p in processes: p.join()
for idx, seed in enumerate(seeds):
print(f"process {idx}, seed {seed} : {return_dict[idx]}")
print(f"total variance : {np.var(return_dict.values())}")
#print(return_dict.values())
\ No newline at end of file
import os
import numpy as np
import torch
import torch.backends.cudnn as cudnn
import torch.nn as nn
import torchvision.models as models
import torchvision.datasets as datasets
import torchvision.transforms as transforms
from torchvision.utils import save_image
from PIL.ImageOps import grayscale
from PIL import Image
from torchvision.datasets import ImageFolder
class MyDataset(ImageFolder):
def __init__(self, root, trainsform):
super(MyDataset, self).__init__(root, trainsform)
def __getitem__(self, index):
image, label = super(MyDataset, self).__getitem__(index)
return image, label
def get_params(path, resize_size):
my_transform = transforms.Compose([
transforms.Resize((resize_size,resize_size)),
transforms.Grayscale(),
transforms.ToTensor()
])
my_dataset = MyDataset(path, my_transform)
loader = torch.utils.data.DataLoader(
my_dataset,
batch_size=256,
num_workers=8,
shuffle=False
)
mean = 0.
std = 0.
nb_samples = 0.
for i, (data, target) in enumerate(loader):
batch_samples = data.size(0)
data = data.view(batch_samples, data.size(1), -1)
mean += data.mean(2).sum(0)
std += data.std(2).sum(0)
nb_samples += batch_samples
mean /= nb_samples
std /= nb_samples
print(f"mean : {mean} , std : {std}")
return mean, std
"""
my_transform = transforms.Compose([
transforms.Resize((64,64)),
transforms.ToTensor()
])
my_dataset = MyDataset("../data/Third_data/not_binary", my_transform)
loader = torch.utils.data.DataLoader(
my_dataset,
batch_size=256,
num_workers=8,
shuffle=False
)
mean = 0.
std = 0.
nb_samples = 0.
for i, (data, target) in enumerate(loader):
batch_samples = data.size(0)
data = data.view(batch_samples, data.size(1), -1)
mean += data.mean(2).sum(0)
std += data.std(2).sum(0)
nb_samples += batch_samples
mean /= nb_samples
std /= nb_samples
print(f"mean : {mean}, std : {std}")
"""
\ No newline at end of file
import os
import time
import sys
import torch.nn.functional as F
import numpy as np
import PIL
import torch
import torch.backends.cudnn as cudnn
import torch.nn as nn
import torch.nn.parallel
import torch.utils.data
import torchvision.datasets as datasets
import torchvision.transforms as transforms
import yaml
import cv2
from get_mean_std import get_params
sys.path.append(os.path.join(os.path.dirname(__name__)))
from model import mobilenetv3
if not os.path.exists("threshold"):
os.mkdir("threshold")
thresholds = [.05, .1, .15, .2, .25, .3, .35, .4, .45, .5]
for threshold in thresholds:
if not os.path.exists(f"threshold/{threshold}"):
os.mkdir(f"threshold/{threshold}")
def get_args_from_yaml(file='trainer/configs/Error_config.yml'):
with open(file) as f:
conf = yaml.load(f)
return conf
class MyImageFolder(datasets.ImageFolder):
def __getitem__(self, index):
# return image path
return super(MyImageFolder, self).__getitem__(index), self.imgs[index]
def main(args):
run_model(args)
print(f"[{args['id']}] done")
def run_model(args):
resize_size = args['train']['size']
gpus = args['gpu']
mean, std = get_params(args['data']['train'], resize_size)
normalize = transforms.Normalize(mean=[mean[0].item()],
std=[std[0].item()])
normalize_factor = [mean, std]
# data loader
transform_test = transforms.Compose([
transforms.Resize((resize_size,resize_size)),
transforms.Grayscale(),
transforms.ToTensor(),
normalize
])
kwargs = {'num_workers': args['predict']['worker'], 'pin_memory': True}
test_data = MyImageFolder(args['data']['val'], transform_test)
val_loader = torch.utils.data.DataLoader(
test_data, batch_size=args['predict']['batch-size'], shuffle=False,
**kwargs)
# load model
model = mobilenetv3(n_class= args['model']['class'], blocknum= args['model']['blocks'])
torch.cuda.set_device(gpus[0])
with torch.cuda.device(gpus[0]):
model = model.cuda()
model = torch.nn.DataParallel(model, device_ids=gpus, output_device=gpus[0])
print("=> loading checkpoint '{}'".format(args['checkpoint']))
checkpoint = torch.load(args['checkpoint'])
model.load_state_dict(checkpoint['state_dict'])
print("=> loaded checkpoint '{}' (epoch {})"
.format(args['checkpoint'], checkpoint['epoch']))
cudnn.benchmark = True
extract_data(val_loader, model, normalize_factor, args)
def extract_data(val_loader, model, normalize_factor, args):
with torch.no_grad():
# switch to evaluate mode
model.eval()
for data in(val_loader):
(input, target), (path , _) = data
target = target.cuda()
input = input.cuda()
output = model(input)
print("save data!")
save_data(output, target, path)
class AverageMeter(object):
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 accuracy(output, target, topk=(1,)):
"""Computes the precision@k for the specified values of k"""
maxk = max(topk)
batch_size = target.size(0)
_, pred = output.topk(maxk, 1, True, True)
pred = pred.t()
correct = pred.eq(target.view(1, -1).expand_as(pred))
res = []
for k in topk:
correct_k = correct[:k].view(-1).float().sum(0)
res.append(correct_k.mul_(100.0 / batch_size))
return res
def save_data(output, target, path):
n_digits = 3
prob = F.softmax(output, dim=1)
prob = torch.round(prob * 10**n_digits) / (10**n_digits)
for idx, p in enumerate(prob):
value = torch.topk(p, 2).values
indice = torch.topk(p,2).indices
value = value.tolist()
indice = indice.tolist()
gap = abs(value[0]-value[1])
for threshold in thresholds:
if(gap < threshold):
img = cv2.imread(path[idx])
filename = path[idx].split('/')[-1]
cv2.imwrite(f'threshold/{threshold}/pred_{indice[0]}_{indice[1]}_{filename}', img)
if __name__ == '__main__':
args = get_args_from_yaml('configs/All_config.yml')
args['config'] = 'All'
args['id'] = 'threshold'
main(args)
\ No newline at end of file
This diff could not be displayed because it is too large.
2020-03-31-19-11-26
use seed 963
use dataset : ../data/Fourth_data/All
{'task': 'All/train_2020-03-31-19-11-26_model=MobilenetV3-ep=3000-block=6', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar', 'gpu': [2], 'data': {'train': '../data/Fourth_data/All', 'val': '../data/Fourth_data/All', 'test': '../data/Fourth_data/All'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'weight': [2.0, 4.0, 1.0, 1.0, 3.0, 1.0, 1.0], 'resume': '', 'augment': True, 'size': 224, 'confidence': False}, 'predict': {'batch-size': 256, 'worker': 64, 'cam': False, 'normalize': True, 'save': False}, 'optimizer': {'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 7}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-03-31-19-11-26'}
2020-04-03-17-46-05
use seed 635
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'All/train_2020-04-03-17-46-05_model=MobilenetV3-ep=4000-block=6-class=8', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar', 'gpu': [2], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/All', 'test': '../data/Fifth_data/All'}, 'train': {'epochs': 4000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar', 'augment': True, 'size': 224, 'confidence': False, 'weight': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 8}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-46-05'}
Number of model parameters: 462840
=> loading checkpoint 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar'
=> loaded checkpoint 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar' (epoch 3000)
Epoch: [0][0/26] Time 113.958 (113.958) Loss 0.0051 (0.0051) Prec@1 100.000 (100.000)
2020-04-08-19-38-36
use seed 283
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'All/train_2020-04-08-19-38-36_model=MobilenetV3-ep=3000-block=6-class=8', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar', 'gpu': [2], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/All', 'test': '../data/Fifth_data/All'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': '', 'augment': True, 'size': 224, 'confidence': False, 'weight': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 8}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-08-19-38-36'}
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 104, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 221, in run_model
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, len(train_loader))
TypeError: object of type 'DataLoader' has no len()
[train_2020-04-08-19-38-36] failed
This diff could not be displayed because it is too large.
2020-03-31-18-30-33
use seed 626
use dataset : ../data/Fourth_data/Error
{'task': 'Error/train_2020-03-31-18-30-33_model=MobilenetV3-ep=3000-block=4', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [0], 'data': {'train': '../data/Fourth_data/Error', 'val': '../data/Fourth_data/Error', 'test': '../data/Fourth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 2.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True}, 'optimizer': {'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-03-31-18-30-33'}
Number of model parameters: 154706
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 91, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 264, in run_model
train(train_loader, model, criterion, optimizer, scheduler, epoch, args, q)
File "E:\code\detection\trainer\train.py", line 309, in train
for i, (input, target) in enumerate(train_loader):
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 279, in __iter__
return _MultiProcessingDataLoaderIter(self)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 719, in __init__
w.start()
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
reduction.dump(process_obj, to_child)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
BrokenPipeError: [Errno 32] Broken pipe
[train_2020-03-31-18-30-33] failed
2020-04-01-17-53-24
use seed 420
use dataset : ../data/Fifth_data/Error
{'task': 'Error/train_2020-04-01-17-53-24_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 1024, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 1024, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-17-53-24'}
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 91, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 125, in run_model
mean, std = get_params(args['data']['train'], resize_size)
File "E:\code\detection\trainer\get_mean_std.py", line 31, in get_params
my_dataset = MyDataset(path, my_transform)
File "E:\code\detection\trainer\get_mean_std.py", line 16, in __init__
super(MyDataset, self).__init__(root, trainsform)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torchvision\datasets\folder.py", line 209, in __init__
target_transform=target_transform)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torchvision\datasets\folder.py", line 83, in __init__
classes, class_to_idx = self._find_classes(root)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torchvision\datasets\folder.py", line 116, in _find_classes
classes = [d.name for d in os.scandir(dir) if d.is_dir()]
FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다: '../data/Fifth_data/Error'
[train_2020-04-01-17-53-24] failed
2020-04-01-18-16-36
use seed 95
use dataset : ../data/Fifth_data/Error
{'task': 'Error/train_2020-04-01-18-16-36_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 1024, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 1024, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-18-16-36'}
Number of model parameters: 154706
Epoch: [0][0/7] Time 43.018 (43.018) Loss 0.6986 (0.6986) Prec@1 34.473 (34.473) Precision 0.000 (0.000)
2020-04-01-20-18-29
use seed 997
use dataset : ../data/Fifth_data/Error
{'task': 'Error/train_2020-04-01-20-18-29_model=MobilenetV3-ep=3000-block=6-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 1024, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 1024, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-20-18-29'}
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 93, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 127, in run_model
mean, std = get_params(args['data']['train'], resize_size)
File "E:\code\detection\trainer\get_mean_std.py", line 43, in get_params
for i, (data, target) in enumerate(loader):
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 279, in __iter__
return _MultiProcessingDataLoaderIter(self)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 719, in __init__
w.start()
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
reduction.dump(process_obj, to_child)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
BrokenPipeError: [Errno 32] Broken pipe
[train_2020-04-01-20-18-29] failed
2020-04-01-21-07-25
use seed 880
use dataset : ../data/Fifth_data/Error
{'task': 'Error/train_2020-04-01-21-07-25_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 1024, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 1024, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-21-07-25'}
2020-04-01-22-40-24
use seed 238
use dataset : ../data/Fifth_data/Error
{'task': 'Error/train_2020-04-01-22-40-24_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 1024, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 1024, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-22-40-24'}
Number of model parameters: 154706
Epoch: [0][0/7] Time 44.533 (44.533) Loss 0.6956 (0.6956) Prec@1 41.504 (41.504) Precision 0.000 (0.000)
2020-04-01-23-15-24
use seed 666
use dataset : ../data/Fifth_data/Error
{'task': 'Error/train_2020-04-01-23-15-24_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 1024, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 1024, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-23-15-24'}
2020-04-03-17-02-42
use seed 185
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'Error/train_2020-04-03-17-02-42_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': '3000', 'start-epoch': 0, 'batch-size': '256', 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': '256', 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': '0.001', 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-02-42'}
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 102, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 195, in run_model
**kwargs)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 219, in __init__
batch_sampler = BatchSampler(sampler, batch_size, drop_last)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\sampler.py", line 190, in __init__
"but got batch_size={}".format(batch_size))
ValueError: batch_size should be a positive integer value, but got batch_size=256
[train_2020-04-03-17-02-42] failed
2020-04-03-17-04-30
use seed 54
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'Error/train_2020-04-03-17-04-30_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': '3000', 'start-epoch': 0, 'batch-size': '256', 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': '256', 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': '0.001', 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-04-30'}
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 103, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 196, in run_model
**kwargs)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 219, in __init__
batch_sampler = BatchSampler(sampler, batch_size, drop_last)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\sampler.py", line 190, in __init__
"but got batch_size={}".format(batch_size))
ValueError: batch_size should be a positive integer value, but got batch_size=256
[train_2020-04-03-17-04-30] failed
2020-04-03-17-07-00
use seed 809
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'Error/train_2020-04-03-17-07-00_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': '3000', 'start-epoch': 0, 'batch-size': '256', 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': '256', 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': '0.001', 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-07-00'}
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 103, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 196, in run_model
**kwargs)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\dataloader.py", line 219, in __init__
batch_sampler = BatchSampler(sampler, batch_size, drop_last)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\utils\data\sampler.py", line 190, in __init__
"but got batch_size={}".format(batch_size))
ValueError: batch_size should be a positive integer value, but got batch_size=256
[train_2020-04-03-17-07-00] failed
2020-04-03-17-08-43
use seed 420
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'Error/train_2020-04-03-17-08-43_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-08-43'}
Number of model parameters: 154706
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\train.py", line 102, in main
run_model(args, q)
File "E:\code\detection\trainer\train.py", line 276, in run_model
train(train_loader, model, criterion, optimizer, scheduler, epoch, args, q)
File "E:\code\detection\trainer\train.py", line 327, in train
loss = criterion(output, target)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
result = self.forward(*input, **kwargs)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\nn\modules\loss.py", line 916, in forward
ignore_index=self.ignore_index, reduction=self.reduction)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\nn\functional.py", line 2021, in cross_entropy
return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\nn\functional.py", line 1838, in nll_loss
ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
IndexError: Target 5 is out of bounds.
[train_2020-04-03-17-08-43] failed
2020-04-03-17-09-59
use seed 420
use dataset : E:/code/detection/data/Fifth_data/Error
{'task': 'Error/train_2020-04-03-17-09-59_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-09-59'}
Number of model parameters: 154706
Epoch: [0][0/26] Time 32.853 (32.853) Loss 0.6907 (0.6907) Prec@1 56.641 (56.641) Precision 0.000 (0.000)
2020-04-03-17-09-59
use seed 420
use dataset : E:/code/detection/data/Fifth_data/Error
{'task': 'Error/train_2020-04-03-17-09-59_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-09-59'}
Number of model parameters: 154706
Epoch: [0][0/26] Time 32.853 (32.853) Loss 0.6907 (0.6907) Prec@1 56.641 (56.641) Precision 0.000 (0.000)
2020-04-03-17-22-28
use seed 845
use dataset : E:/code/detection/data/Fifth_data/Error
{'task': 'Error/train_2020-04-03-17-22-28_model=MobilenetV3-ep=1000-block=5-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/Error', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 1000, 'start-epoch': 0, 'batch-size': 128, 'worker': 16, 'resume': '', 'augment': True, 'size': 128, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 128, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.01, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 5, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-03-17-22-28'}
Number of model parameters: 400114
2020-04-08-19-37-53
use seed 41
use dataset : E:/code/detection/data/Fifth_data/All
{'task': 'Error/train_2020-04-08-19-37-53_model=MobilenetV3-ep=3000-block=4-class=2', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/Error/2456_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar', 'gpu': [1], 'data': {'train': 'E:/code/detection/data/Fifth_data/All', 'val': '../data/Fifth_data/Error', 'test': '../data/Fifth_data/Error'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0]}, 'predict': {'batch-size': 256, 'worker': 16, 'cam': False, 'cam-class': 'Error', 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 4, 'class': 2}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-08-19-37-53'}
This diff could not be displayed because it is too large.
2020-04-01-19-51-23
use seed 355
use dataset : ../data/Fifth_data/ErrorType
{'task': 'ErrorType/train_2020-04-01-19-51-23_model=MobilenetV3-ep=3000-block=6-class=7', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/ErrorType', 'val': '../data/Fifth_data/ErrorType', 'test': '../data/Fifth_data/ErrorType'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 4048, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, 'predict': {'batch-size': 4048, 'worker': 16, 'cam': False, 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 7}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-19-51-23'}
Number of model parameters: 461559
2020-04-01-22-42-16
use seed 805
use dataset : ../data/Fifth_data/ErrorType
{'task': 'Type/train_2020-04-01-22-42-16_model=MobilenetV3-ep=3000-block=6-class=7', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar', 'gpu': [1], 'data': {'train': '../data/Fifth_data/ErrorType', 'val': '../data/Fifth_data/ErrorType', 'test': '../data/Fifth_data/ErrorType'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 4048, 'worker': 16, 'resume': '', 'augment': True, 'size': 64, 'confidence': False, 'weight': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, 'predict': {'batch-size': 4048, 'worker': 16, 'cam': False, 'normalize': True, 'save': False}, 'optimizer': {'type': 'SGD', 'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 7}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-04-01-22-42-16'}
Number of model parameters: 461559
This diff is collapsed. Click to expand it.
Number of model parameters: 461559
=> loading checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 2382)
* Prec@1 95.495
* Prec@1 95.495
Best accuracy: 95.49549572460644
[validate_2020-03-26-17-26-14] done
[validate_2020-03-26-17-26-14] done
/home/yh9468/detection/data/Fourth_data/demo Test dir submitted
start test using path : /home/yh9468/detection/data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
start test
data path directory is /home/yh9468/detection/data/Fourth_data/demo
finish test
/home/yh9468/detection/data/Fourth_data/demo/demoset/1-7.bmp test file submitted
start test using path : ('/home/yh9468/detection/data/Fourth_data/demo/demoset/1-7.bmp', 'All Files(*)')
Test start
loading checkpoint...
checkpoint already loaded!
start test
finish test
Number of model parameters: 461559
=> loading checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 2382)
* Prec@1 95.495
* Prec@1 95.495
Best accuracy: 95.49549572460644
[validate_2020-03-26-17-48-44] done
[validate_2020-03-26-17-48-44] done
set error
using default checkpoint
Number of model parameters: 461559
=> loading checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 2382)
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\test.py", line 270, in main
run_model(args, q)
File "E:\code\detection\trainer\test.py", line 360, in run_model
prec1 = validate(val_loader, model, criterion, normalize_factor, args ,q)
File "E:\code\detection\trainer\test.py", line 394, in validate
save_error_case(output.data, target, path, args, topk=(1,), input=input, save_correct=True)
File "E:\code\detection\trainer\test.py", line 455, in save_error_case
os.mkdir(f"eval_results/{args['task']}")
FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다: 'eval_results/All'
[validate_2020-03-31-18-34-56] failed
Number of model parameters: 461559
=> loading checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 2382)
Test: [0/2] Time 118.781 (118.781) Loss 0.3068 (0.3068) Prec@1 95.703 (95.703)
Test: [1/2] Time 3.661 (61.221) Loss 0.4321 (0.3358) Prec@1 94.805 (95.495)
* Prec@1 95.495
* Prec@1 95.495
Best accuracy: 95.49549572460644
[validate_2020-03-31-19-08-47] done
[validate_2020-03-31-19-08-47] done
train start
2020-03-31-19-11-26
use seed 963
use dataset : ../data/Fourth_data/All
{'task': 'All/train_2020-03-31-19-11-26_model=MobilenetV3-ep=3000-block=6', 'modelname': 'MobilenetV3', 'output': 'output', 'checkpoint': 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar', 'gpu': [2], 'data': {'train': '../data/Fourth_data/All', 'val': '../data/Fourth_data/All', 'test': '../data/Fourth_data/All'}, 'train': {'epochs': 3000, 'start-epoch': 0, 'batch-size': 256, 'worker': 16, 'weight': [2.0, 4.0, 1.0, 1.0, 3.0, 1.0, 1.0], 'resume': '', 'augment': True, 'size': 224, 'confidence': False}, 'predict': {'batch-size': 256, 'worker': 64, 'cam': False, 'normalize': True, 'save': False}, 'optimizer': {'lr': 0.1, 'momentum': 0.9, 'weight_decay': 0.0001}, 'loss': {'gamma': 2.0, 'alpha': 0.8}, 'model': {'blocks': 6, 'class': 7}, 'etc': {'tensorboard': False, 'print_freq': 10}, 'id': 'train_2020-03-31-19-11-26'}
using default checkpoint
Number of model parameters: 462840
=> loading checkpoint 'output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 1617)
Test: [0/3] Time 31.288 (31.288) Loss 0.2660 (0.2660) Prec@1 95.703 (95.703)
Test: [1/3] Time 7.587 (19.437) Loss 0.3209 (0.2934) Prec@1 95.312 (95.508)
Test: [2/3] Time 6.625 (15.167) Loss 0.1835 (0.2602) Prec@1 96.396 (95.777)
* Prec@1 95.777
* Prec@1 95.777
Best accuracy: 95.77656669512757
[validate_2020-04-01-23-00-04] done
[validate_2020-04-01-23-00-04] done
set error
Test를 수행하기 위해 데이터를 입력해 주세요.
Test를 수행하기 위해 데이터를 입력해 주세요.
using user's checkpoint E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar
Number of model parameters: 462840
=> loading checkpoint 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar'
=> loaded checkpoint 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar' (epoch 3000)
Test: [0/3] Time 32.591 (32.591) Loss 0.1575 (0.1575) Prec@1 94.531 (94.531)
Test: [1/3] Time 8.179 (20.385) Loss 0.2475 (0.2025) Prec@1 93.750 (94.141)
Test: [2/3] Time 7.374 (16.048) Loss 0.4568 (0.2794) Prec@1 94.595 (94.278)
* Prec@1 94.278
* Prec@1 94.278
Best accuracy: 96.04904700754774
[validate_2020-04-03-17-39-50] done
[validate_2020-04-03-17-39-50] done
E:/code/detection/data/Fifth_data/All/Empty/1-5.bmp test file submitted
Test start
start test using path : E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar
using user's checkpoint E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar
loading checkpoint...
checkpoint already loaded!
start test
single_file_test() missing 1 required positional argument: 'q'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
This diff is collapsed. Click to expand it.
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
Fatal error in main loop
Traceback (most recent call last):
File "/home/yh9468/detection/trainer/test.py", line 181, in main
run_model(args, q)
File "/home/yh9468/detection/trainer/test.py", line 263, in run_model
prec1 = validate(val_loader, model, criterion, normalize_factor, args ,q)
File "/home/yh9468/detection/trainer/test.py", line 296, in validate
save_error_case(output.data, target, path, args, topk=(1,), input=input, save_correct=True)
File "/home/yh9468/detection/trainer/test.py", line 373, in save_error_case
cv2.imwrite(f"eval_results/{args['task']}/correct_case/idx_{correct_case_idx}_label_{class_arr[target[idx]]}_real.bmp" ,img)
NameError: name 'correct_case_idx' is not defined
[validate_2020-03-26-16-50-29] failed
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
Fatal error in main loop
Traceback (most recent call last):
File "/home/yh9468/detection/trainer/test.py", line 184, in main
run_model(args, q)
File "/home/yh9468/detection/trainer/test.py", line 266, in run_model
prec1 = validate(val_loader, model, criterion, normalize_factor, args ,q)
File "/home/yh9468/detection/trainer/test.py", line 299, in validate
save_error_case(output.data, target, path, args, topk=(1,), input=input, save_correct=True)
File "/home/yh9468/detection/trainer/test.py", line 376, in save_error_case
cv2.imwrite(f"eval_results/{args['task']}/correct_case/idx_{correct_case_idx}_label_{class_arr[target[idx]]}_real.bmp" ,img)
NameError: name 'correct_case_idx' is not defined
[validate_2020-03-26-16-55-37] failed
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
* Prec@1 98.193
* Prec@1 98.193
Best accuracy: 98.19277163585984
[validate_2020-03-26-16-57-52] done
[validate_2020-03-26-16-57-52] done
start test using path : ../data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
* Prec@1 98.193
* Prec@1 98.193
Best accuracy: 98.1927713600986
[validate_2020-03-26-17-02-22] done
[validate_2020-03-26-17-02-22] done
start test using path : ../data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
start test
data path directory is ../data/Fourth_data/demo
finish test
start test using path : ../data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
start test
data path directory is ../data/Fourth_data/demo
finish test
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
* Prec@1 98.193
* Prec@1 98.193
Best accuracy: 98.1927713600986
[validate_2020-03-26-17-26-07] done
[validate_2020-03-26-17-26-07] done
set Type
Number of model parameters: 461559
=> loading checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/16166_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 2382)
* Prec@1 95.495
* Prec@1 95.495
Best accuracy: 95.49549572460644
[validate_2020-03-26-17-26-14] done
[validate_2020-03-26-17-26-14] done
/home/yh9468/detection/data/Fourth_data/demo Test dir submitted
start test using path : /home/yh9468/detection/data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
start test
data path directory is /home/yh9468/detection/data/Fourth_data/demo
finish test
/home/yh9468/detection/data/Fourth_data/demo/demoset/1-7.bmp test file submitted
start test using path : ('/home/yh9468/detection/data/Fourth_data/demo/demoset/1-7.bmp', 'All Files(*)')
Test start
loading checkpoint...
checkpoint already loaded!
start test
finish test
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
* Prec@1 98.193
* Prec@1 98.193
Best accuracy: 98.1927713600986
[validate_2020-03-27-11-52-28] done
[validate_2020-03-27-11-52-28] done
start test using path : ../data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
start test
data path directory is ../data/Fourth_data/demo
Inference time 21 images : 0.37514
finish test
set Type
start test using path : ../data/Fourth_data/demo
Test start
loading checkpoint...
checkpoint already loaded!
start test
data path directory is ../data/Fourth_data/demo
Inference time 21 images : 0.7917
finish test
/home/yh9468/detection/data/Fourth_data/demo/demoset/1-1.bmp test file submitted
start test using path : ('/home/yh9468/detection/data/Fourth_data/demo/demoset/1-1.bmp', 'All Files(*)')
Test start
loading checkpoint...
checkpoint already loaded!
start test
Inference time 1 image : 0.03704
finish test
using user's checkpoint ('E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar', 'All Files(*)')
Number of model parameters: 154706
=> loading checkpoint '('E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar', 'All Files(*)')'
Fatal error in main loop
Traceback (most recent call last):
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 289, in _check_seekable
f.seek(f.tell())
AttributeError: 'tuple' object has no attribute 'seek'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\code\detection\trainer\test.py", line 256, in main
run_model(args, q)
File "E:\code\detection\trainer\test.py", line 328, in run_model
checkpoint = torch.load(args['checkpoint'])
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 525, in load
with _open_file_like(f, 'rb') as opened_file:
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 217, in _open_file_like
return _open_buffer_reader(name_or_buffer)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 202, in __init__
_check_seekable(buffer)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 292, in _check_seekable
raise_err_msg(["seek", "tell"], e)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 285, in raise_err_msg
raise type(e)(msg)
AttributeError: 'tuple' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.
[validate_2020-03-31-14-53-49] failed
using user's checkpoint E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar
Number of model parameters: 154706
=> loading checkpoint 'E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar'
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\test.py", line 261, in main
run_model(args, q)
File "E:\code\detection\trainer\test.py", line 333, in run_model
checkpoint = torch.load(args['checkpoint'])
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 529, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 702, in _legacy_load
result = unpickler.load()
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 665, in persistent_load
deserialized_objects[root_key] = restore_location(obj, location)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 156, in default_restore_location
result = fn(storage, location)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 132, in _cuda_deserialize
device = validate_cuda_device(location)
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\serialization.py", line 116, in validate_cuda_device
raise RuntimeError('Attempting to deserialize object on a CUDA '
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.
[validate_2020-03-31-14-58-23] failed
using user's checkpoint E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar
Number of model parameters: 154706
=> loading checkpoint 'E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar'
=> loaded checkpoint 'E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar' (epoch 3000)
* Prec@1 91.867
* Prec@1 91.867
Best accuracy: 95.90643257007264
using user's checkpoint E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar
Number of model parameters: 154706
=> loading checkpoint 'E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar'
=> loaded checkpoint 'E:/code/detection/trainer/output/Error/47098_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar' (epoch 3000)
Test: [0/2] Time 23.714 (23.714) Loss 0.1847 (0.1847) Prec@1 92.969 (92.969)
Test: [1/2] Time 0.464 (12.089) Loss 0.2262 (0.1942) Prec@1 88.158 (91.867)
* Prec@1 91.867
* Prec@1 91.867
Best accuracy: 95.90643257007264
[validate_2020-03-31-15-08-03] done
[validate_2020-03-31-15-08-03] done
using default checkpoint
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\test.py", line 271, in main
run_model(args, q)
File "E:\code\detection\trainer\test.py", line 359, in run_model
prec1 = validate(val_loader, model, criterion, normalize_factor, args ,q)
File "E:\code\detection\trainer\test.py", line 393, in validate
if args['predict']['save']:
KeyError: 'save'
[validate_2020-04-01-18-17-52] failed
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
Test: [0/1] Time 26.222 (26.222) Loss 0.2174 (0.2174) Prec@1 94.823 (94.823)
* Prec@1 94.823
* Prec@1 94.823
Best accuracy: 98.1927713600986
[validate_2020-04-01-18-45-23] done
[validate_2020-04-01-18-45-23] done
start test using path : default checkpoint
Test start
using default checkpoint
loading checkpoint...
checkpoint already loaded!
start test
data path directory is ../data/Fourth_data/demo
Inference time 120 images : 4.358
finish test
start test using path : default checkpoint
Test start
using default checkpoint
loading checkpoint...
[Errno 2] No such file or directory: 'n'
checkpoint already loaded!
start test
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
E:/code/detection/data/Fifth_data/All/Flip/1-1.bmp test file submitted
start test using path : default checkpoint
Test start
using default checkpoint
loading checkpoint...
[Errno 2] No such file or directory: 'E'
checkpoint already loaded!
start test
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
start test using path : default checkpoint
Test start
using default checkpoint
loading checkpoint...
[Errno 2] No such file or directory: 'E'
checkpoint already loaded!
start test
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
using default checkpoint
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
Test: [0/1] Time 27.498 (27.498) Loss 0.2174 (0.2174) Prec@1 94.823 (94.823)
* Prec@1 94.823
* Prec@1 94.823
Best accuracy: 98.1927713600986
[validate_2020-04-01-20-18-55] done
[validate_2020-04-01-20-18-55] done
using default checkpoint
Number of model parameters: 400114
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\test.py", line 274, in main
run_model(args, q)
File "E:\code\detection\trainer\test.py", line 351, in run_model
model.load_state_dict(checkpoint['state_dict'])
File "C:\Users\younho\AppData\Local\Programs\Python\Python36\lib\site-packages\torch\nn\modules\module.py", line 830, in load_state_dict
self.__class__.__name__, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for DataParallel:
Missing key(s) in state_dict: "module.features.5.conv.0.weight", "module.features.5.conv.1.weight", "module.features.5.conv.1.bias", "module.features.5.conv.1.running_mean", "module.features.5.conv.1.running_var", "module.features.5.conv.3.weight", "module.features.5.conv.4.weight", "module.features.5.conv.4.bias", "module.features.5.conv.4.running_mean", "module.features.5.conv.4.running_var", "module.features.5.conv.5.fc.0.weight", "module.features.5.conv.5.fc.2.weight", "module.features.5.conv.7.weight", "module.features.5.conv.8.weight", "module.features.5.conv.8.bias", "module.features.5.conv.8.running_mean", "module.features.5.conv.8.running_var", "module.features.6.0.weight", "module.features.6.1.weight", "module.features.6.1.bias", "module.features.6.1.running_mean", "module.features.6.1.running_var", "module.features.8.weight", "module.features.8.bias".
Unexpected key(s) in state_dict: "module.features.5.0.weight", "module.features.5.1.weight", "module.features.5.1.bias", "module.features.5.1.running_mean", "module.features.5.1.running_var", "module.features.5.1.num_batches_tracked", "module.features.7.weight", "module.features.7.bias".
[validate_2020-04-01-20-21-14] failed
Number of model parameters: 400114
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
printlog() missing 2 required positional arguments: 'logger' and 'q'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
using default checkpoint
Number of model parameters: 154706
=> loading checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/Error/12613_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 2877)
Test: [0/1] Time 26.242 (26.242) Loss 0.2174 (0.2174) Prec@1 94.823 (94.823)
* Prec@1 94.823
* Prec@1 94.823
Best accuracy: 98.1927713600986
[validate_2020-04-01-22-45-31] done
[validate_2020-04-01-22-45-31] done
set Type
start test using path : ../data/Fourth_data/demo
val start
using default checkpoint
Number of model parameters: 461559
=> loading checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
printlog() missing 2 required positional arguments: 'logger' and 'q'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
This diff is collapsed. Click to expand it.
Number of model parameters: 460278
=> loading checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 1865)
Test: [0/1] Time 29.993 (29.993) Loss 0.4449 (0.4449) Prec@1 92.952 (92.952)
* Prec@1 92.952
* Prec@1 92.952
Best accuracy: 92.9515380859375
[validate_2020-03-31-16-28-46] done
[validate_2020-03-31-16-28-46] done
set All processing
start test using path : ../data/Fourth_data/demo
Test start
[Errno 2] No such file or directory: 'configs/overall_config.yaml'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
using default checkpoint
Number of model parameters: 460278
=> loading checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 1865)
Fatal error in main loop
Traceback (most recent call last):
File "E:\code\detection\trainer\test.py", line 270, in main
run_model(args, q)
File "E:\code\detection\trainer\test.py", line 358, in run_model
prec1 = validate(val_loader, model, criterion, normalize_factor, args ,q)
File "E:\code\detection\trainer\test.py", line 392, in validate
if args['predict']['save']:
KeyError: 'save'
[validate_2020-03-31-18-52-03] failed
using default checkpoint
Number of model parameters: 461559
=> loading checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
printlog() missing 2 required positional arguments: 'logger' and 'q'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
using default checkpoint
Number of model parameters: 461559
=> loading checkpoint 'output/ErrorType/2715_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
Error(s) in loading state_dict for DataParallel:
size mismatch for module.classifier.1.weight: copying a param with shape torch.Size([6, 1280]) from checkpoint, the shape in current model is torch.Size([7, 1280]).
size mismatch for module.classifier.1.bias: copying a param with shape torch.Size([6]) from checkpoint, the shape in current model is torch.Size([7]).
start test using path : ../data/Fourth_data/demo
val start
using default checkpoint
Number of model parameters: 461559
=> loading checkpoint 'output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
Error(s) in loading state_dict for DataParallel:
Missing key(s) in state_dict: "module.features.5.conv.0.weight", "module.features.5.conv.1.weight", "module.features.5.conv.1.bias", "module.features.5.conv.1.running_mean", "module.features.5.conv.1.running_var", "module.features.5.conv.3.weight", "module.features.5.conv.4.weight", "module.features.5.conv.4.bias", "module.features.5.conv.4.running_mean", "module.features.5.conv.4.running_var", "module.features.5.conv.5.fc.0.weight", "module.features.5.conv.5.fc.2.weight", "module.features.5.conv.7.weight", "module.features.5.conv.8.weight", "module.features.5.conv.8.bias", "module.features.5.conv.8.running_mean", "module.features.5.conv.8.running_var", "module.features.6.conv.0.weight", "module.features.6.conv.1.weight", "module.features.6.conv.1.bias", "module.features.6.conv.1.running_mean", "module.features.6.conv.1.running_var", "module.features.6.conv.3.weight", "module.features.6.conv.4.weight", "module.features.6.conv.4.bias", "module.features.6.conv.4.running_mean", "module.features.6.conv.4.running_var", "module.features.6.conv.5.fc.0.weight", "module.features.6.conv.5.fc.2.weight", "module.features.6.conv.7.weight", "module.features.6.conv.8.weight", "module.features.6.conv.8.bias", "module.features.6.conv.8.running_mean", "module.features.6.conv.8.running_var", "module.features.7.0.weight", "module.features.7.1.weight", "module.features.7.1.bias", "module.features.7.1.running_mean", "module.features.7.1.running_var", "module.features.9.weight", "module.features.9.bias".
Unexpected key(s) in state_dict: "module.features.5.0.weight", "module.features.5.1.weight", "module.features.5.1.bias", "module.features.5.1.running_mean", "module.features.5.1.running_var", "module.features.5.1.num_batches_tracked", "module.features.7.weight", "module.features.7.bias".
Number of model parameters: 461559
=> loading checkpoint 'output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
Error(s) in loading state_dict for DataParallel:
Missing key(s) in state_dict: "module.features.5.conv.0.weight", "module.features.5.conv.1.weight", "module.features.5.conv.1.bias", "module.features.5.conv.1.running_mean", "module.features.5.conv.1.running_var", "module.features.5.conv.3.weight", "module.features.5.conv.4.weight", "module.features.5.conv.4.bias", "module.features.5.conv.4.running_mean", "module.features.5.conv.4.running_var", "module.features.5.conv.5.fc.0.weight", "module.features.5.conv.5.fc.2.weight", "module.features.5.conv.7.weight", "module.features.5.conv.8.weight", "module.features.5.conv.8.bias", "module.features.5.conv.8.running_mean", "module.features.5.conv.8.running_var", "module.features.6.conv.0.weight", "module.features.6.conv.1.weight", "module.features.6.conv.1.bias", "module.features.6.conv.1.running_mean", "module.features.6.conv.1.running_var", "module.features.6.conv.3.weight", "module.features.6.conv.4.weight", "module.features.6.conv.4.bias", "module.features.6.conv.4.running_mean", "module.features.6.conv.4.running_var", "module.features.6.conv.5.fc.0.weight", "module.features.6.conv.5.fc.2.weight", "module.features.6.conv.7.weight", "module.features.6.conv.8.weight", "module.features.6.conv.8.bias", "module.features.6.conv.8.running_mean", "module.features.6.conv.8.running_var", "module.features.7.0.weight", "module.features.7.1.weight", "module.features.7.1.bias", "module.features.7.1.running_mean", "module.features.7.1.running_var", "module.features.9.weight", "module.features.9.bias".
Unexpected key(s) in state_dict: "module.features.5.0.weight", "module.features.5.1.weight", "module.features.5.1.bias", "module.features.5.1.running_mean", "module.features.5.1.running_var", "module.features.5.1.num_batches_tracked", "module.features.7.weight", "module.features.7.bias".
using default checkpoint
Number of model parameters: 161111
=> loading checkpoint 'output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar'
=> loaded checkpoint 'output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/model_best.pth.tar' (epoch 1884)
Test: [0/1] Time 25.026 (25.026) Loss 0.2817 (0.2817) Prec@1 95.918 (95.918)
* Prec@1 95.918
* Prec@1 95.918
Best accuracy: 95.91837310791016
[validate_2020-04-01-22-59-05] done
[validate_2020-04-01-22-59-05] done
set All processing
start test using path : ../data/Fourth_data/demo
val start
using default checkpoint
Number of model parameters: 462840
=> loading checkpoint 'output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar'
=> loaded checkpoint 'output/All/14835_model=MobilenetV3-ep=3000-block=6/model_best.pth.tar' (epoch 1617)
Test: [0/3] Time 31.288 (31.288) Loss 0.2660 (0.2660) Prec@1 95.703 (95.703)
Test: [1/3] Time 7.587 (19.437) Loss 0.3209 (0.2934) Prec@1 95.312 (95.508)
Test: [2/3] Time 6.625 (15.167) Loss 0.1835 (0.2602) Prec@1 96.396 (95.777)
* Prec@1 95.777
* Prec@1 95.777
Best accuracy: 95.77656669512757
[validate_2020-04-01-23-00-04] done
[validate_2020-04-01-23-00-04] done
set error
Test를 수행하기 위해 데이터를 입력해 주세요.
Test를 수행하기 위해 데이터를 입력해 주세요.
using user's checkpoint E:/code/detection/trainer/output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar
Number of model parameters: 161111
=> loading checkpoint 'E:/code/detection/trainer/output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar'
=> loaded checkpoint 'E:/code/detection/trainer/output/ErrorType/85804_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar' (epoch 3000)
Test: [0/2] Time 26.118 (26.118) Loss 0.2720 (0.2720) Prec@1 93.359 (93.359)
Test: [1/2] Time 0.848 (13.483) Loss 0.4744 (0.3686) Prec@1 91.453 (92.449)
* Prec@1 92.449
* Prec@1 92.449
Best accuracy: 95.91836762720224
[validate_2020-04-03-17-24-24] done
[validate_2020-04-03-17-24-24] done
set All processing
E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar checkpoint file submitted
E:/code/detection/data/Fifth_data/All Test dir submitted
val start
using user's checkpoint E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar
Number of model parameters: 462840
=> loading checkpoint 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar'
=> loaded checkpoint 'E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar' (epoch 3000)
Test: [0/3] Time 32.591 (32.591) Loss 0.1575 (0.1575) Prec@1 94.531 (94.531)
Test: [1/3] Time 8.179 (20.385) Loss 0.2475 (0.2025) Prec@1 93.750 (94.141)
Test: [2/3] Time 7.374 (16.048) Loss 0.4568 (0.2794) Prec@1 94.595 (94.278)
* Prec@1 94.278
* Prec@1 94.278
Best accuracy: 96.04904700754774
[validate_2020-04-03-17-39-50] done
[validate_2020-04-03-17-39-50] done
E:/code/detection/data/Fifth_data/All/Empty/1-5.bmp test file submitted
Test start
start test using path : E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar
using user's checkpoint E:/code/detection/trainer/output/All/14835_model=MobilenetV3-ep=3000-block=6/checkpoint.pth.tar
loading checkpoint...
checkpoint already loaded!
start test
single_file_test() missing 1 required positional argument: 'q'
실행 중 에러가 발생하였습니다. 자세한 사항은 보시려면 로그를 확인해 주세요.
import argparse
import random
import os
import cv2
import logging
import datetime
import torch
import torch.nn as nn
import torchvision.datasets as datasets
import torchvision.transforms as transforms
from torchvision.utils import save_image
from model import mobilenetv3
from utils import get_args_from_yaml, MyImageFolder
from get_mean_std import get_params
## 해당 코드는 전체 inference를 모두 담은 code.
# make Logger
logger = logging.getLogger(os.path.dirname(__name__))
logger.setLevel(logging.INFO)
# make Logger stream
streamHandler = logging.StreamHandler()
logger.addHandler(streamHandler)
if not os.path.exists('eval_results/main'):
os.mkdir('eval_results/main')
if not os.path.exists('eval_results/main/Normal'):
os.mkdir('eval_results/main/Normal')
if not os.path.exists('eval_results/main/Crack'):
os.mkdir('eval_results/main/Crack')
if not os.path.exists('eval_results/main/Empty'):
os.mkdir('eval_results/main/Empty')
if not os.path.exists('eval_results/main/Flip'):
os.mkdir('eval_results/main/Flip')
if not os.path.exists('eval_results/main/Pollute'):
os.mkdir('eval_results/main/Pollute')
if not os.path.exists('eval_results/main/Double'):
os.mkdir('eval_results/main/Double')
if not os.path.exists('eval_results/main/Leave'):
os.mkdir('eval_results/main/Leave')
if not os.path.exists('eval_results/main/Scratch'):
os.mkdir('eval_results/main/Scratch')
def main(Error_args, Error_Type_args):
logdir = f"logs/main/"
if not os.path.exists(logdir):
os.mkdir(logdir)
fileHander = logging.FileHandler(logdir + f"{datetime.datetime.now().strftime('%Y%m%d-%H:%M:%S')}_log.log")
logger.addHandler(fileHander)
run(Error_args, Error_Type_args)
def run(Error_args, Error_Type_args):
Error_args['checkpoint'] = "output/Error/25678_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar"
Error_Type_args['checkpoint'] = "output/ErrorType/2798_model=MobilenetV3-ep=3000-block=4/checkpoint.pth.tar"
Error_model = mobilenetv3(n_class= Error_args['model']['class'], blocknum=Error_args['model']['blocks'])
Error_Type_model = mobilenetv3(n_class=Error_Type_args['model']['class'], blocknum=Error_Type_args['model']['blocks'])
gpus = Error_args['gpu']
resize_size = Error_args['train']['size']
torch.cuda.set_device(gpus[0])
with torch.cuda.device(gpus[0]):
Error_model = Error_model.cuda()
Error_Type_model = Error_Type_model.cuda()
Error_model = torch.nn.DataParallel(Error_model, device_ids=gpus, output_device=gpus[0])
Error_Type_model = torch.nn.DataParallel(Error_Type_model, device_ids=gpus, output_device=gpus[0])
Error_checkpoint = torch.load(Error_args['checkpoint'])
Error_Type_checkpoint = torch.load(Error_Type_args['checkpoint'])
Error_model.load_state_dict(Error_checkpoint['state_dict'])
Error_Type_model.load_state_dict(Error_Type_checkpoint['state_dict'])
mean, std = get_params(Error_args['data']['test'], resize_size)
normalize = transforms.Normalize(mean=[mean[0].item()],
std=[std[0].item()])
transform = transforms.Compose([
transforms.Resize((resize_size, resize_size)),
transforms.Grayscale(),
transforms.ToTensor(),
normalize
])
dataset = MyImageFolder(Error_args['data']['test'], transform)
print(len(dataset))
loader = torch.utils.data.DataLoader(
dataset, batch_size=Error_args['predict']['batch-size'], shuffle=False,
num_workers=Error_args['predict']['worker'], pin_memory=True
)
for data in loader:
(input, _), (path, _) = data
input= input.cuda()
output = Error_model(input)
_, output = output.topk(1 ,1 ,True,True)
error_cases = torch.ones((1,1,64,64)).cuda()
new_paths = []
error = 0
normal = 0
for idx in range(input.shape[0]):
# if Error Case
if output[idx] == 0:
error_cases = torch.cat((error_cases, input[idx:idx+1]), dim=0)
new_paths.append(path[idx])
error = error +1
# Normal Case
else:
img = cv2.imread(path[idx])
cv2.imwrite(f"eval_results/main/Normal/{path[idx].split('/')[-1]}", img)
normal = normal+1
print(f"error path : {len(new_paths)}")
print(f"error : {error}")
print(f"normal : {normal}")
error_cases = error_cases[1:]
print(error_cases.shape[0])
output = Error_Type_model(error_cases)
_, output = output.topk(1 ,1 ,True,True)
for idx in range(error_cases.shape[0]):
# Crack
if output[idx] == 0:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Crack/{new_paths[idx].split('/')[-1]}", img)
# Double
elif output[idx] == 1:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Double/{new_paths[idx].split('/')[-1]}", img)
# Empty
elif output[idx] == 2:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Empty/{new_paths[idx].split('/')[-1]}", img)
# Flip
elif output[idx] == 3:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Flip/{new_paths[idx].split('/')[-1]}", img)
# Leave
elif output[idx] == 4:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Leave/{new_paths[idx].split('/')[-1]}", img)
# Pollute
elif output[idx] == 5:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Pollute/{new_paths[idx].split('/')[-1]}", img)
# Scratch
elif output[idx] == 6:
img = cv2.imread(new_paths[idx])
cv2.imwrite(f"eval_results/main/Scratch/{new_paths[idx].split('/')[-1]}", img)
if __name__ == '__main__':
Error_args = get_args_from_yaml("configs/Error_config.yml")
Error_Type_args = get_args_from_yaml("configs/ErrorType_config.yml")
main(Error_args, Error_Type_args)
\ No newline at end of file
import torch
import torch.nn as nn
from model import mobilenetv3
import argparse
import torchvision
from torchvision.transforms import transforms
import torchvision.datasets as datasets
from augmentations import RandAugment
from get_mean_std import get_params
from torch.utils.data.sampler import SubsetRandomSampler
import numpy as np
import os
import cv2
from utils import MyImageFolder
class ConcatDataset(torch.utils.data.Dataset):
def __init__(self, *datasets):
self.datasets = datasets
def __getitem__(self, i):
return tuple(d[i %len(d)] for d in self.datasets)
def __len__(self):
return max(len(d) for d in self.datasets)
def make_dir():
if not os.path.exists('../data/Fourth_data/teacher_data/Double'):
os.mkdir('../data/Fourth_data/teacher_data/Double')
if not os.path.exists('../data/Fourth_data/teacher_data/Flip'):
os.mkdir('../data/Fourth_data/teacher_data/Flip')
if not os.path.exists('../data/Fourth_data/teacher_data/Scratch'):
os.mkdir('../data/Fourth_data/teacher_data/Scratch')
if not os.path.exists('../data/Fourth_data/teacher_data/Leave'):
os.mkdir('../data/Fourth_data/teacher_data/Leave')
if not os.path.exists('../data/Fourth_data/teacher_data/Normal'):
os.mkdir('../data/Fourth_data/teacher_data/Normal')
if not os.path.exists('../data/Fourth_data/teacher_data/Empty'):
os.mkdir('../data/Fourth_data/teacher_data/Empty')
parser = argparse.ArgumentParser(description='Process make noisy student model')
parser.add_argument('--checkpoint_path', type=str, help='checkpoint path')
parser.add_argument('--size', type=int, help='resize integer of input')
parser.add_argument('--batch_size', type=int, default=256,help='set batch size')
parser.add_argument('--teacher_checkpoint_path', type=str, help='teacher first checkpoint path')
parser.add_argument('--Labeled_dataset_path', default='../data/Fourth_data/noisy_data/Labeled', type=str, help='path of dataset')
parser.add_argument('--Unlabeled_dataset_path', default='../data/Fourth_data/noisy_data/Unlabeled', type=str, help='path of unlabeled dataset')
parser.add_argument('--num_workers', default=8, type=int, help="number of gpu worker")
parser.add_argument('--epochs', default=350, type=int, help='epoch')
parser.add_argument('--finetune_epochs', default=2, type=int, help='finetuning epochs')
parser.add_argument('--data_save_path', default='../data/Fourth_data/teacher_data', type=str, help='teacher save unlabeled data in this path')
args = parser.parse_args()
print(args)
# by paper of https://arxiv.org/pdf/1911.04252.pdf
Aug_number = 2
Aug_magnitude = 27
#my customize network
blocks = [4,5,6,7,8]
# data loader parameters
kwargs = {'num_workers': args.num_workers, 'pin_memory': True}
Labeled_mean, Labeled_std = get_params(args.Labeled_dataset_path, args.size)
Unlabeled_mean, Unlabeled_std = get_params(args.Unlabeled_dataset_path, args.size)
transform_labeled = transforms.Compose([
transforms.Resize((args.size, args.size)),
transforms.RandomCrop(args.size, padding=4),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(Labeled_mean[0].item(), Labeled_std[0].item())
])
#이건 Teacher가 raw data를 받아서 판단하는거기 때문에 따로 Augmentation할 필요 x
transform_unlabeled = transforms.Compose([
transforms.Resize((args.size, args.size)),
transforms.RandomCrop(args.size, padding=4),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(Unlabeled_mean[0].item(), Unlabeled_std[0].item())
])
# Add RandAugment with N, M(hyperparameter)
transform_labeled.transforms.insert(0, RandAugment(Aug_number, Aug_magnitude))
# set dataset
Labeled_dataset = datasets.ImageFolder(args.Labeled_dataset_path, transform_labeled)
Unlabeled_dataset = MyImageFolder(args.Unlabeled_dataset_path, transform_unlabeled)
labeled_data_loader = torch.utils.data.DataLoader(
Labeled_dataset, batch_size=args.batch_size, shuffle=True, **kwargs)
unlabeled_data_loader = torch.utils.data.DataLoader(
Unlabeled_dataset, batch_size=args.batch_size, shuffle=True, **kwargs)
# noisy teacher은 student보다 더 작게 설정하며, dropout을 0으로 설정.
noisy_teacher_model = mobilenetv3(n_class=2, dropout=0.0, blocknum=4)
checkpoint = torch.load(args.teacher_checkpoint_path)
noisy_teacher_model.load_state_dict(checkpoint['state_dict'])
# make loss function
criterion = nn.CrossEntropyLoss()
# make class directory
make_dir()
classes = os.listdir(args.data_save_path)
classes.sort()
for block in blocks:
#noisy student는 더 크게 설정하고 dropout은 논문에 나와있는대로 0.5로 설정.
noisy_student_model = mobilenetv3(n_class=2, dropout=0.5, blocknum=block, stochastic=True)
noisy_student_model.cuda()
noisy_teacher_model.cuda()
criterion.cuda()
# make optimizer same as official code lr = 0.128 and decays by 0.97 every 2.4epochs
optimizer = torch.optim.RMSprop(noisy_student_model.parameters(), lr=0.128, weight_decay=0.9, momentum=0.9)
# exp scheduler like tf offical code
scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer,0.7)
for epoch in range(args.epochs):
# unlabeled data를 labeling하는 과정.
for idx, data in enumerate(unlabeled_data_loader):
(unlabeled_input, _), (path, _) = data
unlabeled_input = unlabeled_input.cuda()
output=noisy_teacher_model(unlabeled_input)
prob = F.softmax(output, dim=1)
for idx, p in enumerate(prob):
indices = torch.topk(p,1).indices.tolist()
img = cv2.imread(path[idx])
cv2.imwrite(f"{args.data_save_path}/{classes[indices[0]]}/{path[idx].split('/')[-1]}", img)
# teacher 모델이 구성한 data에 대해서 다시 loader 구성.
transform_teacher_data = transforms.Compose([
transforms.Resize((args.size, args.size)),
transforms.RandomCrop(args.size, padding=4),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(Unlabeled_mean[0].item(), Unlabeled_std[0].item())
])
transform_teacher_data.transforms.insert(0, RandAugment(Aug_number, Aug_magnitude))
teacher_data = datasets.ImageFolder(args.data_save_path, transform_teacher_data)
teacher_data_loader = torch.utils.data.DataLoader(
teacher_data, batch_size=args.batch_size, shuffle=True, **kwargs)
merged_dataset = ConcatDataset(teacher_data_loader, labeled_data_loader) #앞은 teacher가 예측한거 뒤는 실제 데이터
merged_data_loader = torch.utils.data.DataLoader(
merged_dataset, batch_size=args.batch_size, shuffle=True, num_workers=8, pin_memory=True)
#일단 코드상으로는 unlabeled된 data에 대해서 hard하게 구성. todo: soft labeling.
for i, (input, target) in enumerate(merged_data_loader):
input = input.cuda()
target = target.cuda()
output = noisy_student_model(input)
loss = criterion(target, output)
optimizer.zero_grad()
loss.backward()
optimizer.step()
#논문에서는 2.4epoch마다라고 하였지만 현재는 2에폭마다로 설정.
if epoch % 2 == 0:
scheduler.step()
# iterative learning.
noisy_teacher_model = noisy_student_model
\ No newline at end of file
from model import mobilenetv3
import torch
import torch.nn as nn
model = mobilenetv3(n_class=8, blocknum=6)
model = torch.nn.DataParallel(model)
device = torch.device('cpu')
checkpoint = torch.load('output/All/48860_model=MobilenetV3-ep=3000-block=6-class=8/model_best.pth.tar', map_location = device)
model.load_state_dict(checkpoint['state_dict'])
model.to(device)
model.eval()
x = torch.randn(256,1,224,224)
print(x.shape)
jit_model = torch.jit.trace(model.module,x)
jit_model.save("mobilenetv3.pt")
#check jitModel is working
#output = jit_model(torch.ones(3,1,224,224))
#print(output)
\ No newline at end of file
This diff is collapsed. Click to expand it.
adabound==0.0.5
altgraph==0.17
click==7.1.1
cycler==0.10.0
future==0.18.2
kiwisolver==1.1.0
lxml==4.5.0
macholib==1.14
matplotlib==2.2.4
numpy==1.18.1
opencv-python==4.2.0.32
pandas==1.0.3
pefile==2019.4.18
Pillow==6.2.2
protobuf==3.11.3
PyInstaller==3.6
pyparsing==2.4.6
PyQt5==5.14.1
PyQt5-sip==12.7.1
python-dateutil==2.8.1
pytz==2019.3
pywin32-ctypes==0.2.0
PyYAML==5.3.1
scipy==1.4.1
six==1.14.0
tensorboard-logger==0.1.0
torch==1.4.0+cpu
torchvision==0.2.2.post3
tqdm==4.44.1
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type