def classifier(img_path, model_name): # load the image try: img_pil = Image.open(img_path) except: # has not been tested sys.exit("Exception: unable to open " + img_path) # define transforms preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # preprocess the image img_tensor = preprocess(img_pil) # resize the tensor (add dimension for batch) img_tensor.unsqueeze_(0) # wrap input in variable, wrap input in variable - no longer needed for # v 0.4 & higher code changed 04/26/2018 by Jennifer S. to handle PyTorch upgrade pytorch_ver = __version__.split('.') # pytorch versions 0.4 & hihger - Variable depreciated so that it returns # a tensor. So to address tensor as output (not wrapper) and to mimic the # affect of setting volatile = True (because we are using pretrained models # for inference) we can set requires_gradient to False. Here we just set # requires_grad_ to False on our tensor if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: img_tensor.requires_grad_(False) # pytorch versions less than 0.4 - uses Variable because not-depreciated else: # apply model to input # wrap input in variable data = Variable(img_tensor, volatile = True) # apply model to input model = models[model_name] # puts model in evaluation mode # instead of (default)training mode model = model.eval() # apply data to model - adjusted based upon version to account for # operating on a Tensor for version 0.4 & higher. if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: output = model(img_tensor) # pytorch versions less than 0.4 else: # apply data to model output = model(data) # return index corresponding to predicted class pred_idx = output.data.numpy().argmax() return imagenet_classes_dict[pred_idx]
def classifier(img_path, model_name): # load the image img_pil = Image.open(img_path) # define transforms preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # preprocess the image img_tensor = preprocess(img_pil) # resize the tensor (add dimension for batch) img_tensor.unsqueeze_(0) # wrap input in variable, wrap input in variable - no longer needed for # v 0.4 & higher code changed 04/26/2018 by Jennifer S. to handle PyTorch upgrade pytorch_ver = __version__.split('.') # pytorch versions 0.4 & hihger - Variable depreciated so that it returns # a tensor. So to address tensor as output (not wrapper) and to mimic the # affect of setting volatile = True (because we are using pretrained models # for inference) we can set requires_gradient to False. Here we just set # requires_grad_ to False on our tensor if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: img_tensor.requires_grad_(False) # pytorch versions less than 0.4 - uses Variable because not-depreciated else: # apply model to input # wrap input in variable data = Variable(img_tensor, volatile = True) # apply model to input model = models[model_name] # puts model in evaluation mode # instead of (default)training mode model = model.eval() # apply data to model - adjusted based upon version to account for # operating on a Tensor for version 0.4 & higher. if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: output = model(img_tensor) # pytorch versions less than 0.4 else: # apply data to model output = model(data) # return index corresponding to predicted class pred_idx = output.data.numpy().argmax() return imagenet_classes_dict[pred_idx]
def classifier(img_path, model_name): # load the image img_pil = Image.open(img_path) # define transforms preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # preprocess the image img_tensor = preprocess(img_pil) # resize the tensor (add dimension for batch) img_tensor.unsqueeze_(0) # wrap input in variable, wrap input in variable - no longer needed for # v0.4 & higher code to handle PyTorch upgrade pytorch_ver = __version__.split(".") if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: img_tensor.requires_grad_(False) else: data = Variable(img_tensor, volatile=True) # apply model to input model = models[model_name] # puts model in evaluation mode # instead of (default)training mode model = model.eval() if int(pytorch_ver[0])>0 or int(pytorch_ver[1])>=4: output = model(img_tensor) else: output = model(data) pred_idx = output.data.numpy().argmax() return imagenet_classes_dict[pred_idx]
def classifier(img_path, model_name): # load the image img_pil = Image.open(img_path) # define transforms preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # preprocess the image img_tensor = preprocess(img_pil) img_tensor.unsqueeze_(0) pytorch_ver = __version__.split('.') if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: img_tensor.requires_grad_(False) # pytorch versions less than 0.4 - uses Variable because not-depreciated else: # apply model to input # wrap input in variable data = Variable(img_tensor, volatile=True) # apply model to input model = models[model_name] model = model.eval() # apply data to model - adjusted based upon version to account for # operating on a Tensor for version 0.4 & higher. if int(pytorch_ver[0]) > 0 or int(pytorch_ver[1]) >= 4: output = model(img_tensor) # pytorch versions less than 0.4 else: # apply data to model output = model(data) pred_idx = output.data.numpy().argmax() return imagenet_classes_dict[pred_idx]
config = ConfigParser() rootdir = os.path.dirname(os.path.abspath(__file__)) config.read(os.path.join(rootdir, 'setup.cfg')) INSTALL_REQUIRES = config['options']['install_requires'] INSTALL_REQUIRES = INSTALL_REQUIRES.split('\n') COMPILED_BACKEND = os.environ.get('NI_COMPILED_BACKEND', '') if not COMPILED_BACKEND: warn(c_deprecation_warning, DeprecationWarning) COMPILED_BACKEND = 'TS' if COMPILED_BACKEND.upper() == 'C': from setup_cext import prepare_extensions from buildtools import build_ext from torch import __version__ as torch_version torch_version = torch_version.split('.') if '.'.join(torch_version[:2]) == '1.7': torch_version = '.'.join(torch_version[:3]) # we need the patch else: torch_version = '.'.join(torch_version[:3]) PYTORCH_TARGET = os.environ.get('NI_PYTORCH_TARGET', '') SETUP_KWARGS['ext_package'] = 'nitorch' SETUP_KWARGS['ext_modules'] = prepare_extensions() CMDCLASS.update({'build_ext': build_ext}) INSTALL_REQUIRES += [f'torch=={torch_version}'] if COMPILED_BACKEND.upper() == 'MONAI': INSTALL_REQUIRES += ['monai>=0.5'] SETUP_KWARGS['install_requires'] = INSTALL_REQUIRES SETUP_KWARGS['cmdclass'] = CMDCLASS
# # Copyright (C) Mellanox Technologies Ltd. 2001-2020. ALL RIGHTS RESERVED. # import os import sys from setuptools import setup from torch.utils import cpp_extension from torch import __version__ as torch_version ver_major, ver_minor = torch_version.split(".")[:2] ver_major = '-DTORCH_VER_MAJOR=' + ver_major ver_minor = '-DTORCH_VER_MINOR=' + ver_minor ucc_plugin_dir = os.path.dirname(os.path.abspath(__file__)) ucx_home = os.environ.get("UCX_HOME") if ucx_home is None: ucx_home = os.environ.get("HPCX_UCX_DIR") if ucx_home is None: print("Couldn't find UCX install dir, please set UCX_HOME env variable") sys.exit(1) plugin_sources = [ "src/torch_ucc.cpp", "src/torch_ucc_sendrecv.cpp", "src/torch_ucx_alltoall.cpp", "src/torch_ucx_coll.cpp" ] plugin_include_dirs = [ "{}/include/".format(ucc_plugin_dir), "{}/include/".format(ucx_home) ] plugin_library_dirs = ["{}/lib/".format(ucx_home)] plugin_libraries = ["ucp", "uct", "ucm", "ucs"]