from natthaphon import Model from torchvision import transforms from xml.etree import cElementTree as ET import numpy as np import cv2 import tensorflow as tf import keras import shutil import time gpu_options = tf.GPUOptions(allow_growth=True) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) keras.backend.set_session(sess) if __name__ == '__main__': model = Model(ResNet(predict=True)) model.compile(torch.optim.SGD(model.model.parameters(), lr=0.001, momentum=0.9, weight_decay=1e-4), ContrastiveLoss(), metric=None, device='cuda') model.load_weights( '/home/palm/PycharmProjects/seven2/snapshots/pairs/4/epoch_0_0.016697616640688282.pth' ) model.model.eval() normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) transform = transforms.Compose( [transforms.Resize((224, 224)),
class ThresholdAcc: def __call__(self, inputs, targets): distant = F.cosine_similarity(inputs[0], inputs[1]) predict = (distant > 0.7).long() acc = torch.sum(predict != targets.long()).float() / targets.size(0) return acc def __str__(self): return 'acc()' if __name__ == '__main__': save_no = len(os.listdir('./snapshots/pairs')) impath = '/home/palm/PycharmProjects/seven/images/cropped3/train' model = Model(ResNet(zero_init_residual=False)) model.compile(torch.optim.SGD(model.model.parameters(), lr=0.001, momentum=0.9, weight_decay=1e-4), ContrastiveLoss(), metric=None, device='cuda') model.load_weights('./snapshots/base.pth', load_opt=False) normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) train_datagen = DirectorySiameseLoader( impath, transforms.Compose([
def predict(): model = Model(ResNet(predict=True)) model.compile(torch.optim.SGD(model.model.parameters(), lr=0.001, momentum=0.9, weight_decay=1e-4), ContrastiveLoss(), metric=None, device='cuda') model.load_weights( '/home/palm/PycharmProjects/seven2/snapshots/pairs/5/epoch_1_0.012463876953125.pth' ) model.model.eval() normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) transform = transforms.Compose( [transforms.Resize((224, 224)), transforms.ToTensor(), normalize]) target_path = '/home/palm/PycharmProjects/seven/images/test6/train' query_path = '/home/palm/PycharmProjects/seven/images/cropped6/train' cache_path = '/home/palm/PycharmProjects/seven/caches' cache_dict = {} predicted_dict = {} correct = 0 count = 0 with torch.no_grad(): for target_image_folder in os.listdir(target_path): if target_image_folder not in os.listdir(query_path): continue predicted_dict[target_image_folder] = {} for target_image_path in os.listdir( os.path.join(target_path, target_image_folder)): count += 1 target = os.path.join(target_path, target_image_folder, target_image_path) target_image_ori = Image.open(target) target_image = transform(target_image_ori) x = torch.zeros((1, 3, 224, 224)) x[0] = target_image target_features = model.model._forward_impl(x.cuda()) minimum = (float('inf'), 0) for query_folder in os.listdir(query_path): for query_image_path in os.listdir( os.path.join(query_path, query_folder)): query = os.path.join(query_path, query_folder, query_image_path) cache_dict, query_features = memory_cache( cache_dict, model.model, query, os.path.join(cache_path, query_folder, query_image_path + '.pth'), transform) y = LSHash.euclidean_dist( target_features.cpu().numpy()[0], query_features.cpu().numpy()[0]) if y < minimum[0]: minimum = (y, query_folder) print(*minimum, target_image_folder) predicted_dict[target_image_folder][ target_image_path] = minimum[1] if minimum[1] == target_image_folder: correct += 1 print(count / correct) pk.dump(predicted_dict, open('cls_eval.pk', 'wb'))
def forward(self, y_pred, y_true): y_true = to_categorical(y_true.long().cpu().detach().numpy(), 10) y_true = torch.from_numpy(y_true).cuda().float() y_pred = nn.Sigmoid()(y_pred.float()) return nn.BCELoss()(y_pred, y_true) if __name__ == '__main__': try: os.listdir('/root') rootpath = '/root/palm/DATA/' except PermissionError: rootpath = '/home/palm/PycharmProjects/DATA/' name = 'cifar10' root = os.path.join(rootpath, name) model = Model(ResNet()) sgd = SGD(model.model.parameters(), 0.01, 0.9) model.compile(optimizer=sgd, loss=SparceBCELoss(), metric=model.categorical_accuracy(), device='cuda') transform_train = transforms.Compose([ transforms.RandomCrop(32, padding=4), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)), ]) transform_test = transforms.Compose([ transforms.ToTensor(),