| @@ -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 | |||
| } | |||