@@ -0,0 +1 @@ | |||||
hello world |
@@ -0,0 +1,23 @@ | |||||
# Wild type sequence provided in the "Dataset Description": | |||||
wtseq <- 'VPVNPEPDATSVENVALKTGSGDSQSDPIKADLEVKGQSALPFDVDCWAILCKGAPNVLQRVNEKTKNSNRDRSGANKGPFKDPQKWGIKALPPKNPSWSAQDFKSPEEYAFASSLQGGTNAILAPVNLASQNSQGGVLNGFYSANKVAQFDPSKPQQTKGTWFQITKFTGAAGPYCKALGSNDKSVCDKNKNIAGDWGFDPAKWAYQYDEKNNKFNYVGK' | |||||
# Read testing set sequences and pH: | |||||
test <- read.csv('../input/novozymes-enzyme-stability-prediction/test.csv') | |||||
# Add mutation information to testing set: | |||||
test[,c('type','resid','wt','mut')] <- do.call(rbind,lapply(test$protein_sequence,function(seq){ | |||||
# case 1 = wild type: | |||||
if(seq==wtseq){ | |||||
return(c('WT',-1,'_','_')) | |||||
# case 2 = substitution: | |||||
} else if(nchar(seq)==nchar(wtseq)){ | |||||
i <- mapply(function(x,y) which(x!=y)[1], strsplit(seq,""), strsplit(wtseq,"")) | |||||
return(c('SUB',i,substr(wtseq,i,i),substr(seq,i,i))) | |||||
# case 3 = deletion: | |||||
} else if(nchar(seq)<nchar(wtseq)){ | |||||
wtsub <- substr(wtseq,1,nchar(seq)) | |||||
i <- mapply(function(x,y) which(x!=y)[1], strsplit(seq,""), strsplit(wtsub,"")) | |||||
return(c('DEL',i,substr(wtseq,i,i),'_')) | |||||
} | |||||
})) | |||||
head(test) |
@@ -0,0 +1,251 @@ | |||||
{ | |||||
"cells": [ | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": 1, | |||||
"id": "90e7b1d4", | |||||
"metadata": {}, | |||||
"outputs": [ | |||||
{ | |||||
"ename": "ModuleNotFoundError", | |||||
"evalue": "No module named 'torch'", | |||||
"output_type": "error", | |||||
"traceback": [ | |||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |||||
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", | |||||
"\u001b[0;32m<ipython-input-1-e39e8fd52943>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0myaml\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpickle\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |||||
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'torch'" | |||||
] | |||||
} | |||||
], | |||||
"source": [ | |||||
"# -*- coding: utf-8 -*-\n", | |||||
"from __future__ import print_function, division\n", | |||||
"\n", | |||||
"# import sys\n", | |||||
"# sys.path.append('/home/xujiahong/openI_benchmark/vechicle_reID_VechicleNet/')\n", | |||||
"\n", | |||||
"import time\n", | |||||
"import yaml\n", | |||||
"import pickle\n", | |||||
"import torch\n", | |||||
"import torch.nn as nn\n", | |||||
"import numpy as np\n", | |||||
"from torchvision import datasets,transforms\n", | |||||
"import os\n", | |||||
"import scipy.io\n", | |||||
"from tqdm import tqdm\n", | |||||
"from data_utils.model_train import ft_net\n", | |||||
"from utils.util import get_stream_logger\n", | |||||
"from config.mainconfig import OUTPUT_RESULT_DIR, CONFIG_PATH\n", | |||||
"\n", | |||||
"\n", | |||||
"\n", | |||||
"def fliplr(img):\n", | |||||
" '''flip horizontal'''\n", | |||||
" inv_idx = torch.arange(img.size(3)-1,-1,-1).long() # N x C x H x W\n", | |||||
" img_flip = img.index_select(3,inv_idx)\n", | |||||
" return img_flip\n", | |||||
"\n", | |||||
"def extract_feature(model, dataloaders, flip):\n", | |||||
" features = torch.FloatTensor()\n", | |||||
" count = 0\n", | |||||
" for _, data in enumerate(tqdm(dataloaders),0):\n", | |||||
" img, _ = data\n", | |||||
" n, c, h, w = img.size()\n", | |||||
" count += n\n", | |||||
"\n", | |||||
" input_img = img.cuda()\n", | |||||
" ff = model(input_img)\n", | |||||
"\n", | |||||
" if flip:\n", | |||||
" img = fliplr(img)\n", | |||||
" input_img = img.cuda()\n", | |||||
" outputs_flip = model(input_img)\n", | |||||
" ff += outputs_flip\n", | |||||
"\n", | |||||
" fnorm = torch.norm(ff, p=2, dim=1, keepdim=True)\n", | |||||
" ff = ff.div(fnorm.expand_as(ff))\n", | |||||
" #print(ff.shape)\n", | |||||
" features = torch.cat((features,ff.data.cpu().float()), 0)\n", | |||||
" #features = torch.cat((features,ff.data.float()), 0)\n", | |||||
" return features\n", | |||||
"\n", | |||||
"\n", | |||||
"def get_id(img_path):\n", | |||||
" '''\n", | |||||
" xjh: \n", | |||||
" example of the name of the img: 0769_c013_00074310_0\n", | |||||
" 0769 is the vehicleID, 013 is the cameraID, 00074310 is the frameID\n", | |||||
" '''\n", | |||||
" camera_id = []\n", | |||||
" labels = []\n", | |||||
" for path, _ in img_path:\n", | |||||
" #filename = path.split('/')[-1]\n", | |||||
" filename = os.path.basename(path) #get the name of images\n", | |||||
" # Test Gallery Image\n", | |||||
" if not 'c' in filename: \n", | |||||
" labels.append(9999999)\n", | |||||
" camera_id.append(9999999)\n", | |||||
" else:\n", | |||||
" #label = filename[0:4]\n", | |||||
" label = filename[0:5] #for benchmark_person\n", | |||||
" camera = filename.split('c')[1]\n", | |||||
" if label[0:2]=='-1':\n", | |||||
" labels.append(-1)\n", | |||||
" else:\n", | |||||
" labels.append(int(label))\n", | |||||
" #camera_id.append(int(camera[0:3]))\n", | |||||
" camera_id.append(int(camera[0:2]))#for benchmark_person\n", | |||||
" #print(camera[0:3])\n", | |||||
" return camera_id, labels\n", | |||||
"\n", | |||||
"\n", | |||||
"def test(config_file_path:str, logger):\n", | |||||
" #read config files\n", | |||||
" with open(config_file_path, encoding='utf-8') as f:\n", | |||||
" opts = yaml.load(f, Loader=yaml.SafeLoader)\n", | |||||
"\n", | |||||
" data_dir = opts['input']['dataset']['data_dir']\n", | |||||
" name = \"trained_\" + opts['input']['config']['name']\n", | |||||
" trained_model_name = name + \"_last.pth\"\n", | |||||
" save_path = OUTPUT_RESULT_DIR\n", | |||||
"\n", | |||||
" nclass = opts['input']['config']['nclass']\n", | |||||
" stride = opts['input']['config']['stride']\n", | |||||
" pool = opts['input']['config']['pool']\n", | |||||
" droprate = opts['input']['config']['droprate']\n", | |||||
" inputsize= opts['input']['config']['inputsize']\n", | |||||
" w = opts['input']['config']['w']\n", | |||||
" h = opts['input']['config']['h']\n", | |||||
" batchsize = opts['input']['config']['batchsize']\n", | |||||
" flip = opts['test']['flip_test']\n", | |||||
"\n", | |||||
" trained_model_path = os.path.join(save_path, trained_model_name)\n", | |||||
"\n", | |||||
" ##############################load model#################################################\n", | |||||
" ###self-train\n", | |||||
" model = ft_net(class_num = nclass, droprate = droprate, stride=stride, init_model=None, pool = pool, return_f=False)\n", | |||||
" \n", | |||||
" try:\n", | |||||
" model.load_state_dict(torch.load(trained_model_path))\n", | |||||
" except:\n", | |||||
" model = torch.nn.DataParallel(model)\n", | |||||
" model.load_state_dict(torch.load(trained_model_path))\n", | |||||
" model = model.module\n", | |||||
" model.classifier.classifier = nn.Sequential() #model ends with feature extractor(output len is 512)\n", | |||||
" # print(model)\n", | |||||
" \n", | |||||
" ##############################load dataset###############################################\n", | |||||
" \n", | |||||
" #transforms for input image h==w==299, inputsize==256\n", | |||||
" if h == w:\n", | |||||
" data_transforms = transforms.Compose([\n", | |||||
" transforms.Resize( ( round(inputsize*1.1), round(inputsize*1.1)), interpolation=3),\n", | |||||
" transforms.ToTensor(),\n", | |||||
" transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", | |||||
" ])\n", | |||||
" else:\n", | |||||
" data_transforms = transforms.Compose( [\n", | |||||
" transforms.Resize((round(h*1.1), round(w*1.1)), interpolation=3), #Image.BICUBIC\n", | |||||
" transforms.ToTensor(),\n", | |||||
" transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", | |||||
" ])\n", | |||||
"\n", | |||||
" image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['bounding_box_test','query']}\n", | |||||
" dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=batchsize,\n", | |||||
" shuffle=False, num_workers=8) for x in ['bounding_box_test','query']}\n", | |||||
"\n", | |||||
" #############################check GPU###################################################\n", | |||||
" use_gpu = torch.cuda.is_available()\n", | |||||
"\n", | |||||
"\n", | |||||
" #############################extract features############################################\n", | |||||
" # Change to test mode\n", | |||||
" model = model.eval()\n", | |||||
" if use_gpu:\n", | |||||
" model = model.cuda()\n", | |||||
"\n", | |||||
" gallery_path = image_datasets['bounding_box_test'].imgs\n", | |||||
" query_path = image_datasets['query'].imgs\n", | |||||
"\n", | |||||
" gallery_cam,gallery_label = get_id(gallery_path)\n", | |||||
" query_cam,query_label = get_id(query_path)\n", | |||||
"\n", | |||||
"\n", | |||||
" gallery_label = np.asarray(gallery_label)\n", | |||||
" query_label = np.asarray(query_label)\n", | |||||
" gallery_cam = np.asarray(gallery_cam)\n", | |||||
" query_cam = np.asarray(query_cam)\n", | |||||
" print('Gallery Size: %d'%len(gallery_label))\n", | |||||
" print('Query Size: %d'%len(query_label))\n", | |||||
" # Extract feature\n", | |||||
" since = time.time()\n", | |||||
" with torch.no_grad():\n", | |||||
" gallery_feature = extract_feature(model, dataloaders['bounding_box_test'], flip)\n", | |||||
" query_feature = extract_feature(model, dataloaders['query'], flip)\n", | |||||
" process_time = time.time() - since\n", | |||||
" logger.info('total forward time: %.2f minutes'%(process_time/60))\n", | |||||
" \n", | |||||
" dist = 1-torch.mm(query_feature, torch.transpose(gallery_feature, 0, 1))\n", | |||||
"\n", | |||||
" # Save to Matlab for check\n", | |||||
" extracted_feature = {'gallery_feature': gallery_feature.numpy(), 'gallery_label':gallery_label, 'gallery_cam':gallery_cam, \\\n", | |||||
" 'query_feature': query_feature.numpy(), 'query_label':query_label, 'query_cam':query_cam}\n", | |||||
"\n", | |||||
" result_name = os.path.join(save_path, name+'_feature.mat')\n", | |||||
" scipy.io.savemat(result_name, extracted_feature) \n", | |||||
"\n", | |||||
" return_dict = {}\n", | |||||
"\n", | |||||
" return_dict['dist'] = dist.numpy()\n", | |||||
" return_dict['feature_example'] = query_feature[0].numpy()\n", | |||||
" return_dict['gallery_label'] = gallery_label\n", | |||||
" return_dict['gallery_cam'] = gallery_cam\n", | |||||
" return_dict['query_label'] = query_label\n", | |||||
" return_dict['query_cam'] = query_cam\n", | |||||
"\n", | |||||
" pickle.dump(return_dict, open(OUTPUT_RESULT_DIR+'test_result.pkl', 'wb'), protocol=4)\n", | |||||
"\n", | |||||
" return \n", | |||||
"\n", | |||||
" # eval_result = evaluator(result, logger)\n", | |||||
" # full_table = display_eval_result(dict = eval_result)\n", | |||||
" # logger.info(full_table)\n", | |||||
"\n", | |||||
"if __name__==\"__main__\":\n", | |||||
" logger = get_stream_logger('TEST')\n", | |||||
" test(CONFIG_PATH, logger)" | |||||
] | |||||
}, | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": null, | |||||
"id": "c27b171e", | |||||
"metadata": {}, | |||||
"outputs": [], | |||||
"source": [] | |||||
} | |||||
], | |||||
"metadata": { | |||||
"kernelspec": { | |||||
"display_name": "MindSpore", | |||||
"language": "python", | |||||
"name": "mindspore" | |||||
}, | |||||
"language_info": { | |||||
"codemirror_mode": { | |||||
"name": "ipython", | |||||
"version": 3 | |||||
}, | |||||
"file_extension": ".py", | |||||
"mimetype": "text/x-python", | |||||
"name": "python", | |||||
"nbconvert_exporter": "python", | |||||
"pygments_lexer": "ipython3", | |||||
"version": "3.7.6" | |||||
} | |||||
}, | |||||
"nbformat": 4, | |||||
"nbformat_minor": 5 | |||||
} |
@@ -0,0 +1 @@ | |||||
hello |
@@ -0,0 +1,35 @@ | |||||
{ | |||||
"cells": [ | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": null, | |||||
"id": "14e5e20a", | |||||
"metadata": {}, | |||||
"outputs": [], | |||||
"source": [ | |||||
"print('hello world')" | |||||
] | |||||
} | |||||
], | |||||
"metadata": { | |||||
"kernelspec": { | |||||
"display_name": "MindSpore", | |||||
"language": "python", | |||||
"name": "mindspore" | |||||
}, | |||||
"language_info": { | |||||
"codemirror_mode": { | |||||
"name": "ipython", | |||||
"version": 3 | |||||
}, | |||||
"file_extension": ".py", | |||||
"mimetype": "text/x-python", | |||||
"name": "python", | |||||
"nbconvert_exporter": "python", | |||||
"pygments_lexer": "ipython3", | |||||
"version": "3.7.6" | |||||
} | |||||
}, | |||||
"nbformat": 4, | |||||
"nbformat_minor": 5 | |||||
} |
@@ -0,0 +1 @@ | |||||
well |
@@ -0,0 +1,251 @@ | |||||
{ | |||||
"cells": [ | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": 1, | |||||
"id": "90e7b1d4", | |||||
"metadata": {}, | |||||
"outputs": [ | |||||
{ | |||||
"ename": "ModuleNotFoundError", | |||||
"evalue": "No module named 'torch'", | |||||
"output_type": "error", | |||||
"traceback": [ | |||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |||||
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", | |||||
"\u001b[0;32m<ipython-input-1-e39e8fd52943>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0myaml\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpickle\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |||||
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'torch'" | |||||
] | |||||
} | |||||
], | |||||
"source": [ | |||||
"# -*- coding: utf-8 -*-\n", | |||||
"from __future__ import print_function, division\n", | |||||
"\n", | |||||
"# import sys\n", | |||||
"# sys.path.append('/home/xujiahong/openI_benchmark/vechicle_reID_VechicleNet/')\n", | |||||
"\n", | |||||
"import time\n", | |||||
"import yaml\n", | |||||
"import pickle\n", | |||||
"import torch\n", | |||||
"import torch.nn as nn\n", | |||||
"import numpy as np\n", | |||||
"from torchvision import datasets,transforms\n", | |||||
"import os\n", | |||||
"import scipy.io\n", | |||||
"from tqdm import tqdm\n", | |||||
"from data_utils.model_train import ft_net\n", | |||||
"from utils.util import get_stream_logger\n", | |||||
"from config.mainconfig import OUTPUT_RESULT_DIR, CONFIG_PATH\n", | |||||
"\n", | |||||
"\n", | |||||
"\n", | |||||
"def fliplr(img):\n", | |||||
" '''flip horizontal'''\n", | |||||
" inv_idx = torch.arange(img.size(3)-1,-1,-1).long() # N x C x H x W\n", | |||||
" img_flip = img.index_select(3,inv_idx)\n", | |||||
" return img_flip\n", | |||||
"\n", | |||||
"def extract_feature(model, dataloaders, flip):\n", | |||||
" features = torch.FloatTensor()\n", | |||||
" count = 0\n", | |||||
" for _, data in enumerate(tqdm(dataloaders),0):\n", | |||||
" img, _ = data\n", | |||||
" n, c, h, w = img.size()\n", | |||||
" count += n\n", | |||||
"\n", | |||||
" input_img = img.cuda()\n", | |||||
" ff = model(input_img)\n", | |||||
"\n", | |||||
" if flip:\n", | |||||
" img = fliplr(img)\n", | |||||
" input_img = img.cuda()\n", | |||||
" outputs_flip = model(input_img)\n", | |||||
" ff += outputs_flip\n", | |||||
"\n", | |||||
" fnorm = torch.norm(ff, p=2, dim=1, keepdim=True)\n", | |||||
" ff = ff.div(fnorm.expand_as(ff))\n", | |||||
" #print(ff.shape)\n", | |||||
" features = torch.cat((features,ff.data.cpu().float()), 0)\n", | |||||
" #features = torch.cat((features,ff.data.float()), 0)\n", | |||||
" return features\n", | |||||
"\n", | |||||
"\n", | |||||
"def get_id(img_path):\n", | |||||
" '''\n", | |||||
" xjh: \n", | |||||
" example of the name of the img: 0769_c013_00074310_0\n", | |||||
" 0769 is the vehicleID, 013 is the cameraID, 00074310 is the frameID\n", | |||||
" '''\n", | |||||
" camera_id = []\n", | |||||
" labels = []\n", | |||||
" for path, _ in img_path:\n", | |||||
" #filename = path.split('/')[-1]\n", | |||||
" filename = os.path.basename(path) #get the name of images\n", | |||||
" # Test Gallery Image\n", | |||||
" if not 'c' in filename: \n", | |||||
" labels.append(9999999)\n", | |||||
" camera_id.append(9999999)\n", | |||||
" else:\n", | |||||
" #label = filename[0:4]\n", | |||||
" label = filename[0:5] #for benchmark_person\n", | |||||
" camera = filename.split('c')[1]\n", | |||||
" if label[0:2]=='-1':\n", | |||||
" labels.append(-1)\n", | |||||
" else:\n", | |||||
" labels.append(int(label))\n", | |||||
" #camera_id.append(int(camera[0:3]))\n", | |||||
" camera_id.append(int(camera[0:2]))#for benchmark_person\n", | |||||
" #print(camera[0:3])\n", | |||||
" return camera_id, labels\n", | |||||
"\n", | |||||
"\n", | |||||
"def test(config_file_path:str, logger):\n", | |||||
" #read config files\n", | |||||
" with open(config_file_path, encoding='utf-8') as f:\n", | |||||
" opts = yaml.load(f, Loader=yaml.SafeLoader)\n", | |||||
"\n", | |||||
" data_dir = opts['input']['dataset']['data_dir']\n", | |||||
" name = \"trained_\" + opts['input']['config']['name']\n", | |||||
" trained_model_name = name + \"_last.pth\"\n", | |||||
" save_path = OUTPUT_RESULT_DIR\n", | |||||
"\n", | |||||
" nclass = opts['input']['config']['nclass']\n", | |||||
" stride = opts['input']['config']['stride']\n", | |||||
" pool = opts['input']['config']['pool']\n", | |||||
" droprate = opts['input']['config']['droprate']\n", | |||||
" inputsize= opts['input']['config']['inputsize']\n", | |||||
" w = opts['input']['config']['w']\n", | |||||
" h = opts['input']['config']['h']\n", | |||||
" batchsize = opts['input']['config']['batchsize']\n", | |||||
" flip = opts['test']['flip_test']\n", | |||||
"\n", | |||||
" trained_model_path = os.path.join(save_path, trained_model_name)\n", | |||||
"\n", | |||||
" ##############################load model#################################################\n", | |||||
" ###self-train\n", | |||||
" model = ft_net(class_num = nclass, droprate = droprate, stride=stride, init_model=None, pool = pool, return_f=False)\n", | |||||
" \n", | |||||
" try:\n", | |||||
" model.load_state_dict(torch.load(trained_model_path))\n", | |||||
" except:\n", | |||||
" model = torch.nn.DataParallel(model)\n", | |||||
" model.load_state_dict(torch.load(trained_model_path))\n", | |||||
" model = model.module\n", | |||||
" model.classifier.classifier = nn.Sequential() #model ends with feature extractor(output len is 512)\n", | |||||
" # print(model)\n", | |||||
" \n", | |||||
" ##############################load dataset###############################################\n", | |||||
" \n", | |||||
" #transforms for input image h==w==299, inputsize==256\n", | |||||
" if h == w:\n", | |||||
" data_transforms = transforms.Compose([\n", | |||||
" transforms.Resize( ( round(inputsize*1.1), round(inputsize*1.1)), interpolation=3),\n", | |||||
" transforms.ToTensor(),\n", | |||||
" transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", | |||||
" ])\n", | |||||
" else:\n", | |||||
" data_transforms = transforms.Compose( [\n", | |||||
" transforms.Resize((round(h*1.1), round(w*1.1)), interpolation=3), #Image.BICUBIC\n", | |||||
" transforms.ToTensor(),\n", | |||||
" transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", | |||||
" ])\n", | |||||
"\n", | |||||
" image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['bounding_box_test','query']}\n", | |||||
" dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=batchsize,\n", | |||||
" shuffle=False, num_workers=8) for x in ['bounding_box_test','query']}\n", | |||||
"\n", | |||||
" #############################check GPU###################################################\n", | |||||
" use_gpu = torch.cuda.is_available()\n", | |||||
"\n", | |||||
"\n", | |||||
" #############################extract features############################################\n", | |||||
" # Change to test mode\n", | |||||
" model = model.eval()\n", | |||||
" if use_gpu:\n", | |||||
" model = model.cuda()\n", | |||||
"\n", | |||||
" gallery_path = image_datasets['bounding_box_test'].imgs\n", | |||||
" query_path = image_datasets['query'].imgs\n", | |||||
"\n", | |||||
" gallery_cam,gallery_label = get_id(gallery_path)\n", | |||||
" query_cam,query_label = get_id(query_path)\n", | |||||
"\n", | |||||
"\n", | |||||
" gallery_label = np.asarray(gallery_label)\n", | |||||
" query_label = np.asarray(query_label)\n", | |||||
" gallery_cam = np.asarray(gallery_cam)\n", | |||||
" query_cam = np.asarray(query_cam)\n", | |||||
" print('Gallery Size: %d'%len(gallery_label))\n", | |||||
" print('Query Size: %d'%len(query_label))\n", | |||||
" # Extract feature\n", | |||||
" since = time.time()\n", | |||||
" with torch.no_grad():\n", | |||||
" gallery_feature = extract_feature(model, dataloaders['bounding_box_test'], flip)\n", | |||||
" query_feature = extract_feature(model, dataloaders['query'], flip)\n", | |||||
" process_time = time.time() - since\n", | |||||
" logger.info('total forward time: %.2f minutes'%(process_time/60))\n", | |||||
" \n", | |||||
" dist = 1-torch.mm(query_feature, torch.transpose(gallery_feature, 0, 1))\n", | |||||
"\n", | |||||
" # Save to Matlab for check\n", | |||||
" extracted_feature = {'gallery_feature': gallery_feature.numpy(), 'gallery_label':gallery_label, 'gallery_cam':gallery_cam, \\\n", | |||||
" 'query_feature': query_feature.numpy(), 'query_label':query_label, 'query_cam':query_cam}\n", | |||||
"\n", | |||||
" result_name = os.path.join(save_path, name+'_feature.mat')\n", | |||||
" scipy.io.savemat(result_name, extracted_feature) \n", | |||||
"\n", | |||||
" return_dict = {}\n", | |||||
"\n", | |||||
" return_dict['dist'] = dist.numpy()\n", | |||||
" return_dict['feature_example'] = query_feature[0].numpy()\n", | |||||
" return_dict['gallery_label'] = gallery_label\n", | |||||
" return_dict['gallery_cam'] = gallery_cam\n", | |||||
" return_dict['query_label'] = query_label\n", | |||||
" return_dict['query_cam'] = query_cam\n", | |||||
"\n", | |||||
" pickle.dump(return_dict, open(OUTPUT_RESULT_DIR+'test_result.pkl', 'wb'), protocol=4)\n", | |||||
"\n", | |||||
" return \n", | |||||
"\n", | |||||
" # eval_result = evaluator(result, logger)\n", | |||||
" # full_table = display_eval_result(dict = eval_result)\n", | |||||
" # logger.info(full_table)\n", | |||||
"\n", | |||||
"if __name__==\"__main__\":\n", | |||||
" logger = get_stream_logger('TEST')\n", | |||||
" test(CONFIG_PATH, logger)" | |||||
] | |||||
}, | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": null, | |||||
"id": "c27b171e", | |||||
"metadata": {}, | |||||
"outputs": [], | |||||
"source": [] | |||||
} | |||||
], | |||||
"metadata": { | |||||
"kernelspec": { | |||||
"display_name": "MindSpore", | |||||
"language": "python", | |||||
"name": "mindspore" | |||||
}, | |||||
"language_info": { | |||||
"codemirror_mode": { | |||||
"name": "ipython", | |||||
"version": 3 | |||||
}, | |||||
"file_extension": ".py", | |||||
"mimetype": "text/x-python", | |||||
"name": "python", | |||||
"nbconvert_exporter": "python", | |||||
"pygments_lexer": "ipython3", | |||||
"version": "3.7.6" | |||||
} | |||||
}, | |||||
"nbformat": 4, | |||||
"nbformat_minor": 5 | |||||
} |
@@ -0,0 +1,251 @@ | |||||
{ | |||||
"cells": [ | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": 1, | |||||
"id": "90e7b1d4", | |||||
"metadata": {}, | |||||
"outputs": [ | |||||
{ | |||||
"ename": "ModuleNotFoundError", | |||||
"evalue": "No module named 'torch'", | |||||
"output_type": "error", | |||||
"traceback": [ | |||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |||||
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", | |||||
"\u001b[0;32m<ipython-input-1-e39e8fd52943>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0myaml\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpickle\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |||||
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'torch'" | |||||
] | |||||
} | |||||
], | |||||
"source": [ | |||||
"# -*- coding: utf-8 -*-\n", | |||||
"from __future__ import print_function, division\n", | |||||
"\n", | |||||
"# import sys\n", | |||||
"# sys.path.append('/home/xujiahong/openI_benchmark/vechicle_reID_VechicleNet/')\n", | |||||
"\n", | |||||
"import time\n", | |||||
"import yaml\n", | |||||
"import pickle\n", | |||||
"import torch\n", | |||||
"import torch.nn as nn\n", | |||||
"import numpy as np\n", | |||||
"from torchvision import datasets,transforms\n", | |||||
"import os\n", | |||||
"import scipy.io\n", | |||||
"from tqdm import tqdm\n", | |||||
"from data_utils.model_train import ft_net\n", | |||||
"from utils.util import get_stream_logger\n", | |||||
"from config.mainconfig import OUTPUT_RESULT_DIR, CONFIG_PATH\n", | |||||
"\n", | |||||
"\n", | |||||
"\n", | |||||
"def fliplr(img):\n", | |||||
" '''flip horizontal'''\n", | |||||
" inv_idx = torch.arange(img.size(3)-1,-1,-1).long() # N x C x H x W\n", | |||||
" img_flip = img.index_select(3,inv_idx)\n", | |||||
" return img_flip\n", | |||||
"\n", | |||||
"def extract_feature(model, dataloaders, flip):\n", | |||||
" features = torch.FloatTensor()\n", | |||||
" count = 0\n", | |||||
" for _, data in enumerate(tqdm(dataloaders),0):\n", | |||||
" img, _ = data\n", | |||||
" n, c, h, w = img.size()\n", | |||||
" count += n\n", | |||||
"\n", | |||||
" input_img = img.cuda()\n", | |||||
" ff = model(input_img)\n", | |||||
"\n", | |||||
" if flip:\n", | |||||
" img = fliplr(img)\n", | |||||
" input_img = img.cuda()\n", | |||||
" outputs_flip = model(input_img)\n", | |||||
" ff += outputs_flip\n", | |||||
"\n", | |||||
" fnorm = torch.norm(ff, p=2, dim=1, keepdim=True)\n", | |||||
" ff = ff.div(fnorm.expand_as(ff))\n", | |||||
" #print(ff.shape)\n", | |||||
" features = torch.cat((features,ff.data.cpu().float()), 0)\n", | |||||
" #features = torch.cat((features,ff.data.float()), 0)\n", | |||||
" return features\n", | |||||
"\n", | |||||
"\n", | |||||
"def get_id(img_path):\n", | |||||
" '''\n", | |||||
" xjh: \n", | |||||
" example of the name of the img: 0769_c013_00074310_0\n", | |||||
" 0769 is the vehicleID, 013 is the cameraID, 00074310 is the frameID\n", | |||||
" '''\n", | |||||
" camera_id = []\n", | |||||
" labels = []\n", | |||||
" for path, _ in img_path:\n", | |||||
" #filename = path.split('/')[-1]\n", | |||||
" filename = os.path.basename(path) #get the name of images\n", | |||||
" # Test Gallery Image\n", | |||||
" if not 'c' in filename: \n", | |||||
" labels.append(9999999)\n", | |||||
" camera_id.append(9999999)\n", | |||||
" else:\n", | |||||
" #label = filename[0:4]\n", | |||||
" label = filename[0:5] #for benchmark_person\n", | |||||
" camera = filename.split('c')[1]\n", | |||||
" if label[0:2]=='-1':\n", | |||||
" labels.append(-1)\n", | |||||
" else:\n", | |||||
" labels.append(int(label))\n", | |||||
" #camera_id.append(int(camera[0:3]))\n", | |||||
" camera_id.append(int(camera[0:2]))#for benchmark_person\n", | |||||
" #print(camera[0:3])\n", | |||||
" return camera_id, labels\n", | |||||
"\n", | |||||
"\n", | |||||
"def test(config_file_path:str, logger):\n", | |||||
" #read config files\n", | |||||
" with open(config_file_path, encoding='utf-8') as f:\n", | |||||
" opts = yaml.load(f, Loader=yaml.SafeLoader)\n", | |||||
"\n", | |||||
" data_dir = opts['input']['dataset']['data_dir']\n", | |||||
" name = \"trained_\" + opts['input']['config']['name']\n", | |||||
" trained_model_name = name + \"_last.pth\"\n", | |||||
" save_path = OUTPUT_RESULT_DIR\n", | |||||
"\n", | |||||
" nclass = opts['input']['config']['nclass']\n", | |||||
" stride = opts['input']['config']['stride']\n", | |||||
" pool = opts['input']['config']['pool']\n", | |||||
" droprate = opts['input']['config']['droprate']\n", | |||||
" inputsize= opts['input']['config']['inputsize']\n", | |||||
" w = opts['input']['config']['w']\n", | |||||
" h = opts['input']['config']['h']\n", | |||||
" batchsize = opts['input']['config']['batchsize']\n", | |||||
" flip = opts['test']['flip_test']\n", | |||||
"\n", | |||||
" trained_model_path = os.path.join(save_path, trained_model_name)\n", | |||||
"\n", | |||||
" ##############################load model#################################################\n", | |||||
" ###self-train\n", | |||||
" model = ft_net(class_num = nclass, droprate = droprate, stride=stride, init_model=None, pool = pool, return_f=False)\n", | |||||
" \n", | |||||
" try:\n", | |||||
" model.load_state_dict(torch.load(trained_model_path))\n", | |||||
" except:\n", | |||||
" model = torch.nn.DataParallel(model)\n", | |||||
" model.load_state_dict(torch.load(trained_model_path))\n", | |||||
" model = model.module\n", | |||||
" model.classifier.classifier = nn.Sequential() #model ends with feature extractor(output len is 512)\n", | |||||
" # print(model)\n", | |||||
" \n", | |||||
" ##############################load dataset###############################################\n", | |||||
" \n", | |||||
" #transforms for input image h==w==299, inputsize==256\n", | |||||
" if h == w:\n", | |||||
" data_transforms = transforms.Compose([\n", | |||||
" transforms.Resize( ( round(inputsize*1.1), round(inputsize*1.1)), interpolation=3),\n", | |||||
" transforms.ToTensor(),\n", | |||||
" transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", | |||||
" ])\n", | |||||
" else:\n", | |||||
" data_transforms = transforms.Compose( [\n", | |||||
" transforms.Resize((round(h*1.1), round(w*1.1)), interpolation=3), #Image.BICUBIC\n", | |||||
" transforms.ToTensor(),\n", | |||||
" transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", | |||||
" ])\n", | |||||
"\n", | |||||
" image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['bounding_box_test','query']}\n", | |||||
" dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=batchsize,\n", | |||||
" shuffle=False, num_workers=8) for x in ['bounding_box_test','query']}\n", | |||||
"\n", | |||||
" #############################check GPU###################################################\n", | |||||
" use_gpu = torch.cuda.is_available()\n", | |||||
"\n", | |||||
"\n", | |||||
" #############################extract features############################################\n", | |||||
" # Change to test mode\n", | |||||
" model = model.eval()\n", | |||||
" if use_gpu:\n", | |||||
" model = model.cuda()\n", | |||||
"\n", | |||||
" gallery_path = image_datasets['bounding_box_test'].imgs\n", | |||||
" query_path = image_datasets['query'].imgs\n", | |||||
"\n", | |||||
" gallery_cam,gallery_label = get_id(gallery_path)\n", | |||||
" query_cam,query_label = get_id(query_path)\n", | |||||
"\n", | |||||
"\n", | |||||
" gallery_label = np.asarray(gallery_label)\n", | |||||
" query_label = np.asarray(query_label)\n", | |||||
" gallery_cam = np.asarray(gallery_cam)\n", | |||||
" query_cam = np.asarray(query_cam)\n", | |||||
" print('Gallery Size: %d'%len(gallery_label))\n", | |||||
" print('Query Size: %d'%len(query_label))\n", | |||||
" # Extract feature\n", | |||||
" since = time.time()\n", | |||||
" with torch.no_grad():\n", | |||||
" gallery_feature = extract_feature(model, dataloaders['bounding_box_test'], flip)\n", | |||||
" query_feature = extract_feature(model, dataloaders['query'], flip)\n", | |||||
" process_time = time.time() - since\n", | |||||
" logger.info('total forward time: %.2f minutes'%(process_time/60))\n", | |||||
" \n", | |||||
" dist = 1-torch.mm(query_feature, torch.transpose(gallery_feature, 0, 1))\n", | |||||
"\n", | |||||
" # Save to Matlab for check\n", | |||||
" extracted_feature = {'gallery_feature': gallery_feature.numpy(), 'gallery_label':gallery_label, 'gallery_cam':gallery_cam, \\\n", | |||||
" 'query_feature': query_feature.numpy(), 'query_label':query_label, 'query_cam':query_cam}\n", | |||||
"\n", | |||||
" result_name = os.path.join(save_path, name+'_feature.mat')\n", | |||||
" scipy.io.savemat(result_name, extracted_feature) \n", | |||||
"\n", | |||||
" return_dict = {}\n", | |||||
"\n", | |||||
" return_dict['dist'] = dist.numpy()\n", | |||||
" return_dict['feature_example'] = query_feature[0].numpy()\n", | |||||
" return_dict['gallery_label'] = gallery_label\n", | |||||
" return_dict['gallery_cam'] = gallery_cam\n", | |||||
" return_dict['query_label'] = query_label\n", | |||||
" return_dict['query_cam'] = query_cam\n", | |||||
"\n", | |||||
" pickle.dump(return_dict, open(OUTPUT_RESULT_DIR+'test_result.pkl', 'wb'), protocol=4)\n", | |||||
"\n", | |||||
" return \n", | |||||
"\n", | |||||
" # eval_result = evaluator(result, logger)\n", | |||||
" # full_table = display_eval_result(dict = eval_result)\n", | |||||
" # logger.info(full_table)\n", | |||||
"\n", | |||||
"if __name__==\"__main__\":\n", | |||||
" logger = get_stream_logger('TEST')\n", | |||||
" test(CONFIG_PATH, logger)" | |||||
] | |||||
}, | |||||
{ | |||||
"cell_type": "code", | |||||
"execution_count": null, | |||||
"id": "c27b171e", | |||||
"metadata": {}, | |||||
"outputs": [], | |||||
"source": [] | |||||
} | |||||
], | |||||
"metadata": { | |||||
"kernelspec": { | |||||
"display_name": "MindSpore", | |||||
"language": "python", | |||||
"name": "mindspore" | |||||
}, | |||||
"language_info": { | |||||
"codemirror_mode": { | |||||
"name": "ipython", | |||||
"version": 3 | |||||
}, | |||||
"file_extension": ".py", | |||||
"mimetype": "text/x-python", | |||||
"name": "python", | |||||
"nbconvert_exporter": "python", | |||||
"pygments_lexer": "ipython3", | |||||
"version": "3.7.6" | |||||
} | |||||
}, | |||||
"nbformat": 4, | |||||
"nbformat_minor": 5 | |||||
} |