def tta_predict(network, path_model, args): # load model if network.load(path_model) is not True: return 0 tta_preprocess = [ get_transforms_det(network.size_input), get_transforms_hflip(network.size_input), get_transforms_gray(network.size_input), get_transforms_aug(network.size_input), get_transforms_aug(network.size_input), ] dataloaders = [] for transform in tta_preprocess: # test dataset data = gdata.Dataset( data=factory.FactoryDataset.factory(pathname=args.data, name=args.name_dataset, subset=factory.validation, download=True), num_channels=network.num_input_channels, transform=transform, ) dataloader = DataLoader(test_data, batch_size=args.batch_size, shuffle=False, num_workers=args.workers) dataloaders.append(dataloader) # print neural net class print('NeuralNet: {}'.format(datetime.datetime.now()), flush=True) #print(network) pathnameout = args.out print('dir: {}'.format(pathnameout)) files = [ f for f in sorted(os.listdir(pathnameout)) if f.split('.')[-1] == 'csv' ] for i, data in enumerate(dataloaders): Yhat, Y = network.test(data) df = pd.DataFrame(np.concatenate((Y, Yhat), axis=1)) df.to_csv(os.path.join(pathnameout, 'val_dp{}.csv'.format(i + len(files))), index=False, encoding='utf-8') print('DONE !!!')
def predict( network, path_model, args ): # load model if network.load( args.path_model ) is not True: return 0 data = IMaterialistImageDataset( pathname=args.data, ext='jpg', num_channels=network.num_input_channels, transform=get_transforms_det(network.size_input) ) dataloader = DataLoader(test_data, batch_size=args.batch_size, shuffle=False, num_workers=args.workers ) dataloaders.append(dataloader) # print neural net class print('NeuralNet: {}'.format(datetime.datetime.now()), flush=True ) #print(network) Ids, Yhat = network.predict( data ) return Id, pred
def main(): parser = arg_parser(); args = parser.parse_args(); # Configuration project = args.project projectname = args.projectname pathnamedataset = args.pathdataset pathnamemodel = args.model pathproject = os.path.join( project, projectname ) pathnameout = args.pathnameout filename = args.filename pathname = os.path.expanduser( '~/.datasets' ) num_workers=0 no_cuda=False parallel=False gpu=0 seed=1 # experiments experiments = [ { 'name': 'ferp', 'subset': FactoryDataset.test, 'real': True }, { 'name': 'affectnet', 'subset': FactoryDataset.validation, 'real': True }, { 'name': 'ck', 'subset': FactoryDataset.training, 'real': True }, { 'name': 'jaffe', 'subset': FactoryDataset.training, 'real': True }, { 'name': 'bu3dfe', 'subset': FactoryDataset.training, 'real': True }, ] # Load models network = NeuralNetClassifier( patchproject=project, nameproject=projectname, no_cuda=no_cuda, seed=seed, gpu=gpu ) cudnn.benchmark = True # load model if network.load( pathnamemodel ) is not True: print('>>Error!!! load model') assert(False) size_input = network.size_input tuplas=[] for i, experiment in enumerate(experiments): name_dataset = experiment['name'] subset = experiment['subset'] breal = experiment['real'] dataset = [] # real dataset dataset = Dataset( data=FactoryDataset.factory( pathname=pathnamedataset, name=name_dataset, subset=subset, #idenselect=idenselect, download=True ), num_channels=3, transform=get_transforms_det( network.size_input ), ) dataloader = DataLoader(dataset, batch_size=100, shuffle=False, num_workers=num_workers ) Yhat, Y = network.test( dataloader ) df = pd.DataFrame( np.concatenate((Yhat, Y), axis=1) ) df.to_csv( os.path.join(pathproject , '{}_{}_{}_dp.csv'.format(subset,projectname,name_dataset)), index=False, encoding='utf-8') yhat = np.argmax( Yhat, axis=1 ) y = Y acc = metrics.accuracy_score(y, yhat) precision = metrics.precision_score(y, yhat, average='macro') recall = metrics.recall_score(y, yhat, average='macro') f1_score = 2*precision*recall/(precision+recall) #|Name|Dataset|Cls|Acc| ... tupla = { #'Name':projectname, 'Dataset': '{}({})'.format( name_dataset, subset ), 'Accuracy': acc*100, 'Precision': precision*100, 'Recall': recall*100, 'F1 score': f1_score*100, } tuplas.append(tupla) df = pd.DataFrame(tuplas) df.to_csv( os.path.join( pathproject, 'experiments_cls.csv' ) , index=False, encoding='utf-8') print('save experiments class ...') print('DONE!!!')
def main(): # parameters parser = arg_parser(); args = parser.parse_args(); random.seed(0) print('Baseline clasification {}!!!'.format(datetime.datetime.now())) print('\nArgs:') [ print('\t* {}: {}'.format(k,v) ) for k,v in vars(args).items() ] print('') network = NeuralNetClassifier( patchproject=args.project, nameproject=args.name, no_cuda=args.no_cuda, parallel=args.parallel, seed=args.seed, print_freq=args.print_freq, gpu=args.gpu ) network.create( arch=args.arch, num_output_channels=args.num_classes, num_input_channels=args.channels, loss=args.loss, lr=args.lr, momentum=args.momentum, optimizer=args.opt, lrsch=args.scheduler, pretrained=args.finetuning, th=0.5, size_input=args.image_size, ) cudnn.benchmark = True # resume model if args.resume: network.resume( os.path.join(network.pathmodels, args.resume ) ) # print neural net class print('Load model: ') print(network) # datasets # training dataset train_data_kaggle = ATLASDataset( path=args.data, train=True, folders_images='train', #train, cloud/train_full metadata='train.csv', ext='png', #png, tif #count=20000, num_channels=args.channels, transform=get_transforms_aug( network.size_input ), #get_transforms_aug ) # train_data_external = ATLASDataset( # path=args.data, # train=True, # folders_images='train_external', # metadata='train_external.csv', # #count=20000, # num_channels=args.channels, # transform=get_transforms_aug( network.size_input ), #get_transforms_aug # ) # train_data = torch.utils.data.ConcatDataset( [train_data_kaggle, train_data_external] ) train_data = train_data_kaggle frec = np.array([ x for x in train_data_kaggle.data.data['Target'] ]).sum(axis=0) weights = 1 / frec # target_external = train_data_external.data.data['Target'] target_kaggle = train_data_kaggle.data.data['Target'] # target = np.concatenate( ( target_kaggle, target_external ) ) target = target_kaggle samples_weights = np.array([ weights[ np.array(x).astype( np.uint8 ) ].max() for x in target ]) num_train = len(train_data) #sampler = SubsetRandomSampler(np.random.permutation( num_train ) ) sampler = WeightedRandomSampler( weights=samples_weights, num_samples=len(samples_weights) , replacement=True ) train_loader = DataLoader(train_data, batch_size=args.batch_size, sampler=sampler, num_workers=args.workers, pin_memory=network.cuda, drop_last=True) # validate dataset val_data = ATLASDataset( path=args.data, train=True, folders_images='train', #train, cloud/train_full metadata='train.csv', ext='png', #png, tif count=5000, num_channels=args.channels, transform=get_transforms_det( network.size_input ), ) num_val = len(val_data) val_loader = DataLoader(val_data, batch_size=80, shuffle=False, num_workers=args.workers, pin_memory=network.cuda, drop_last=False) print('Load datset') print('Train: ', len(train_data)) print('Val: ', len(val_data)) # training neural net network.fit( train_loader, val_loader, args.epochs, args.snapshot ) print("Optimization Finished!") print("DONE!!!")
def main(): # parameters parser = arg_parser() args = parser.parse_args() random.seed(0) print('Baseline clasification {}!!!'.format(datetime.datetime.now())) print('\nArgs:') [print('\t* {}: {}'.format(k, v)) for k, v in vars(args).items()] print('') network = NeuralNetClassifier(patchproject=args.project, nameproject=args.name, no_cuda=args.no_cuda, parallel=args.parallel, seed=args.seed, print_freq=args.print_freq, gpu=args.gpu) network.create( arch=args.arch, num_output_channels=args.num_classes, num_input_channels=args.channels, loss=args.loss, lr=args.lr, momentum=args.momentum, optimizer=args.opt, lrsch=args.scheduler, pretrained=args.finetuning, topk=( 1, 2, ), ) cudnn.benchmark = True # resume model if args.resume: network.resume(os.path.join(network.pathmodels, args.resume)) # print neural net class print('Load model: ') print(network) # datasets # training dataset train_data = Dataset( data=FactoryDataset.factory(pathname=args.data, name=args.name_dataset, subset=FactoryDataset.training, download=True), #count=20000, num_channels=network.num_input_channels, transform=get_transforms_aug(network.size_input), ) num_train = len(train_data) sampler = SubsetRandomSampler(np.random.permutation(num_train)) train_loader = DataLoader(train_data, batch_size=args.batch_size, sampler=sampler, num_workers=args.workers, pin_memory=network.cuda, drop_last=True) # validate dataset val_data = Dataset( data=FactoryDataset.factory(pathname=args.data, name=args.name_dataset, subset=FactoryDataset.validation, download=True), num_channels=network.num_input_channels, transform=get_transforms_det(network.size_input), ) num_val = len(val_data) val_loader = DataLoader(val_data, batch_size=args.batch_size, shuffle=False, num_workers=args.workers, pin_memory=network.cuda, drop_last=False) print('Load datset') print('Train: ', len(train_data)) print('Val: ', len(val_data)) # training neural net network.fit(train_loader, val_loader, args.epochs, args.snapshot) print("Optimization Finished!") print("DONE!!!")