return print('File {} exists, skip.'.format(path)) return print('Downloading from url {} to {}'.format(url, path)) try: urllib.request.urlretrieve(url, path) print('') except: urllib.urlretrieve(url, path) DARKNET_LIB = 'libdarknet2.0.so' DARKNETLIB_URL = 'https://github.com/siju-samuel/darknet/blob/master/lib/' \ + DARKNET_LIB + '?raw=true' _download(DARKNETLIB_URL, DARKNET_LIB) LIB = __darknetffi__.dlopen('./' + DARKNET_LIB) def _read_memory_buffer(shape, data, dtype='float32'): length = 1 for x in shape: length *= x data_np = np.zeros(length, dtype=dtype) for i in range(length): data_np[i] = data[i] return data_np.reshape(shape) def _get_tvm_output(net, data, build_dtype='float32'): '''Compute TVM output''' dtype = 'float32'
by the script. """ import numpy as np import tvm from tvm.contrib import graph_runtime from tvm.contrib.download import download_testdata download_testdata.__test__ = False from nnvm import frontend from nnvm.testing.darknet import LAYERTYPE from nnvm.testing.darknet import __darknetffi__ import nnvm.compiler DARKNET_LIB = 'libdarknet2.0.so' DARKNETLIB_URL = 'https://github.com/siju-samuel/darknet/blob/master/lib/' \ + DARKNET_LIB + '?raw=true' LIB = __darknetffi__.dlopen(download_testdata(DARKNETLIB_URL, DARKNET_LIB, module='darknet')) DARKNET_TEST_IMAGE_NAME = 'dog.jpg' DARKNET_TEST_IMAGE_URL = 'https://github.com/siju-samuel/darknet/blob/master/data/' + DARKNET_TEST_IMAGE_NAME +'?raw=true' DARKNET_TEST_IMAGE_PATH = download_testdata(DARKNET_TEST_IMAGE_URL, DARKNET_TEST_IMAGE_NAME, module='data') def _read_memory_buffer(shape, data, dtype='float32'): length = 1 for x in shape: length *= x data_np = np.zeros(length, dtype=dtype) for i in range(length): data_np[i] = data[i] return data_np.reshape(shape) def _get_tvm_output(net, data, build_dtype='float32'):
weights_path = download_testdata(WEIGHTS_URL, WEIGHTS_NAME, module="darknet") # Download and Load darknet library if sys.platform in ['linux', 'linux2']: DARKNET_LIB = 'libdarknet2.0.so' DARKNET_URL = REPO_URL + 'lib/' + DARKNET_LIB + '?raw=true' elif sys.platform == 'darwin': DARKNET_LIB = 'libdarknet_mac2.0.so' DARKNET_URL = REPO_URL + 'lib_osx/' + DARKNET_LIB + '?raw=true' else: err = "Darknet lib is not supported on {} platform".format(sys.platform) raise NotImplementedError(err) lib_path = download_testdata(DARKNET_URL, DARKNET_LIB, module="darknet") DARKNET_LIB = __darknetffi__.dlopen(lib_path) net = DARKNET_LIB.load_network(cfg_path.encode('utf-8'), weights_path.encode('utf-8'), 0) dtype = 'float32' batch_size = 1 print("Converting darknet to nnvm symbols...") sym, params = nnvm.frontend.darknet.from_darknet(net, dtype) ###################################################################### # Compile the model on NNVM # ------------------------- # compile the model target = 'llvm' ctx = tvm.cpu(0) data = np.empty([batch_size, net.c, net.h, net.w], dtype)
# ----------------------- # Download cfg and weights file if first time. CFG_NAME = MODEL_NAME + '.cfg' WEIGHTS_NAME = MODEL_NAME + '.weights' REPO_URL = 'https://github.com/dmlc/web-data/blob/master/darknet/' CFG_URL = REPO_URL + 'cfg/' + CFG_NAME + '?raw=true' WEIGHTS_URL = REPO_URL + 'weights/' + WEIGHTS_NAME + '?raw=true' cfg_path = download_testdata(CFG_URL, CFG_NAME, module='darknet') weights_path = download_testdata(WEIGHTS_URL, WEIGHTS_NAME, module='darknet') # Download and Load darknet library DARKNET_LIB = 'libdarknet.so' DARKNET_URL = REPO_URL + 'lib/' + DARKNET_LIB + '?raw=true' lib_path = download_testdata(DARKNET_URL, DARKNET_LIB, module='darknet') DARKNET_LIB = __darknetffi__.dlopen(lib_path) net = DARKNET_LIB.load_network(cfg_path.encode('utf-8'), weights_path.encode('utf-8'), 0) dtype = 'float32' batch_size = 1 # Import the graph to NNVM # ------------------------ # Import darknet graph definition to nnvm. # # Results: # sym: nnvm graph for rnn model # params: params converted from darknet weights print("Converting darknet rnn model to nnvm symbols...") sym, params = nnvm.frontend.darknet.from_darknet(net, dtype) # Compile the model on NNVM
download(weights_url, weights_name) ###################################################################### # Download and Load darknet library # --------------------------------- dtype = 'float32' darknet_lib = 'libdarknet.so' darknetlib_url = 'https://github.com/siju-samuel/darknet/blob/master/lib/' + \ darknet_lib + '?raw=true' download(darknetlib_url, darknet_lib) #if the file doesnt exist, then exit normally. if os.path.isfile('./' + darknet_lib) is False: exit(0) darknet_lib = __darknetffi__.dlopen('./' + darknet_lib) cfg = "./" + str(cfg_name) weights = "./" + str(weights_name) net = darknet_lib.load_network(cfg.encode('utf-8'), weights.encode('utf-8'), 0) batch_size = 1 print("Converting darknet to nnvm symbols...") sym, params = nnvm.frontend.darknet.from_darknet(net, dtype) ###################################################################### # Target Creation [CPU/GPU(OPENCL/VULKAN)] # ------------------------- if exec_flavor == "cpu": # Mobile CPU target = "llvm -target=%s-linux-android" % arch target_host = None
# ----------------------- # Download cfg and weights file if first time. CFG_NAME = MODEL_NAME + '.cfg' WEIGHTS_NAME = MODEL_NAME + '.weights' REPO_URL = 'https://github.com/dmlc/web-data/blob/master/darknet/' CFG_URL = REPO_URL + 'cfg/' + CFG_NAME + '?raw=true' WEIGHTS_URL = REPO_URL + 'weights/' + WEIGHTS_NAME + '?raw=true' download(CFG_URL, CFG_NAME) download(WEIGHTS_URL, WEIGHTS_NAME) # Download and Load darknet library DARKNET_LIB = 'libdarknet.so' DARKNET_URL = REPO_URL + 'lib/' + DARKNET_LIB + '?raw=true' download(DARKNET_URL, DARKNET_LIB) DARKNET_LIB = __darknetffi__.dlopen('./' + DARKNET_LIB) cfg = "./" + str(CFG_NAME) weights = "./" + str(WEIGHTS_NAME) net = DARKNET_LIB.load_network(cfg.encode('utf-8'), weights.encode('utf-8'), 0) dtype = 'float32' batch_size = 1 # Import the graph to NNVM # ------------------------ # Import darknet graph definition to nnvm. # # Results: # sym: nnvm graph for rnn model # params: params converted from darknet weights print("Converting darknet rnn model to nnvm symbols...") sym, params = nnvm.frontend.darknet.from_darknet(net, dtype)