|
- """eval resnet end."""
- import os
- import time
- import argparse
- import ast
- import numpy as np
- import moxing as mox
- import mindspore
- from mindspore import context
- from mindspore import Tensor
- from mindspore.nn.optim.momentum import Momentum
- from mindspore.train.model import Model
- from mindspore.context import ParallelMode
- from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor
- from mindspore.train.loss_scale_manager import FixedLossScaleManager
- from mindspore.train.serialization import load_checkpoint, load_param_into_net
- from mindspore.common import set_seed
- from mindspore.communication.management import init
- from mindspore.train.callback import Callback
-
- from src.model_utils.config import config
- from src.loss import Softmaxloss
- from src.loss import Tripletloss
- from src.loss import mix_loss
- from src.lr_generator import get_lr
- from src.resnet import resnet50 as resnet
- from src.utility import recall_topk_parallel
- from src.dataset import create_datasetour as create_dataset
-
- workroot = '/home/work/user-job-dir'
-
- parser = argparse.ArgumentParser(description='Image classification')
- # modelarts parameter
- parser.add_argument('--train_url', type=str, default=workroot + '/model/', help='Train output path')
- parser.add_argument('--data_url', type=str, default=workroot + '/data/', help='Dataset path')
- parser.add_argument('--ckpt_url', type=str, default=workroot + '/ckpt/', help='Pretrained ckpt path')
- parser.add_argument('--result_url', type=str, default=workroot + '/result/', help='Save inference result')
- parser.add_argument('--checkpoint_name', type=str, default='resnet-120_625.ckpt', help='Checkpoint file')
- parser.add_argument('--loss_name', type=str, default='softmax',
- help='loss name: softmax(pretrained) triplet quadruplet')
- # Ascend parameter
- parser.add_argument('--dataset_path', type=str, default=None, help='Dataset path')
- parser.add_argument('--ckpt_path', type=str, default=None, help='ckpt path name')
- parser.add_argument('--run_distribute', type=ast.literal_eval, default=False, help='Run distribute')
- parser.add_argument('--device_id', type=int, default=0, help='Device id')
- parser.add_argument('--run_modelarts', type=ast.literal_eval, default=True, help='Run distribute')
- parser.add_argument('--device_target',type=str,default="Ascend",choices=['Ascend', 'CPU'],help='device where the code will be implemented (default: CPU),若要在启智平台上使用NPU,需要在启智平台训练界面上加上运行参数device_target=Ascend')
-
- args_opt = parser.parse_args()
-
-
- if __name__ == '__main__':
-
-
- from src.dataset import create_dataset1 as create_dataset
-
- # init distributed
- if args_opt.run_modelarts:
- import moxing as mox
- device_id = int(os.getenv('DEVICE_ID'))
- device_num = int(os.getenv('RANK_SIZE'))
- context.set_context(device_id=device_id)
- data_dir = workroot + '/data'
- train_dir = workroot + '/model/'
- print("1******************************************")
- #初始化数据存放目录
- if not os.path.exists(data_dir):
- os.mkdir(data_dir)
-
- #初始化模型存放目录
-
-
- print("________________train_model_URL_______________________")
- train_dir = workroot + '/model/'
- if not os.path.exists(train_dir):
- os.mkdir(train_dir)
- local_train_url = train_dir
- print(os.path.exists(train_dir))
-
- #将数据集从local拷贝到推理镜像中:
- local_data_url = args_opt.data_url
- args_opt.data_url = '/home/work/user-job-dir/data/'
- try:
- mox.file.copy_parallel(local_data_url, args_opt.data_url)
- print("Successfully Download {} to {}".format(local_data_url,
- args_opt.data_url))
- except Exception as e:
- print('moxing download {} to {} failed: '.format(
- local_data_url, args_opt.data_url) + str(e))
-
- #将模型文件从local拷贝到推理镜像中:
- local_ckpt_url = args_opt.ckpt_url
- args_opt.ckpt_url = '/home/work/user-job-dir/checkpoint.ckpt'
- try:
- mox.file.copy(local_ckpt_url, args_opt.ckpt_url)
- print("Successfully Download {} to {}".format(local_ckpt_url,
- args_opt.ckpt_url))
- except Exception as e:
- print('moxing download {} to {} failed: '.format(
- local_ckpt_url, args_opt.ckpt_url) + str(e))
-
- #设置输出路径result_url
- local_result_url = args_opt.result_url
- args_opt.result_url = '/home/work/user-job-dir/result/'
- if not os.path.exists(args_opt.result_url):
- os.mkdir(args_opt.result_url)
- args_opt.save_checkpoint_path = args_opt.ckpt_url
-
-
- DATA_DIR = '/home/work/user-job-dir/data/imagenet/val'
- print("**********************DATD_DIR*************************")
- print(os.path.exists(DATA_DIR))
-
- context.set_context(mode=context.GRAPH_MODE, device_target='Ascend', save_graphs=False)
-
- #dataset
-
- eval_dataset = create_dataset(dataset_path=DATA_DIR, do_train=False,
- batch_size=config.batch_size, train_image_size=config.train_image_size,
- eval_image_size=config.eval_image_size,
- target=target, enable_cache=config.enable_cache,
- cache_session_id=config.cache_session_id)
- print("2******************************************")
- step_size = eval_dataset.get_dataset_size()
-
- # define net
- net = resnet50(class_num=1001)
-
- print("============== Starting Testing ==============")
- args_opt.load_ckpt_url = os.path.join(args_opt.save_checkpoint_path)
- print("args.load_ckpt_url is:{}", args_opt.load_ckpt_url )
- param_dict = load_checkpoint(args_opt.load_ckpt_url )
- load_param_into_net(net, param_dict)
- net.set_train(False)
-
- # define model
-
- loss = Softmaxloss()
- model_eval = Model(net, loss_fn = loss, metrics={'top_1_accuracy', 'top_5_accuracy'})
- res = model_eval.eval(eval_dataset)
- print("result:", res, "ckpt=", args_opt.save_checkpoint_path)
|