def handle_cmd(agent): pause = False stop = False while not stop: key, val = agent.pull() if key is not None: msg_type = MsgType.parse(key) if msg_type.is_command(): if MsgType.kCommandPause.equal(msg_type): agent.push(MsgType.kStatus, "Success") pause = True elif MsgType.kCommandResume.equal(msg_type): agent.push(MsgType.kStatus, "Success") pause = False elif MsgType.kCommandStop.equal(msg_type): agent.push(MsgType.kStatus, "Success") stop = True else: agent.push(MsgType.kStatus, "Warning, unkown message type") print("Unsupported command %s" % str(msg_type)) if pause and not stop: time.sleep(0.1) else: break return stop
def serve(agent, use_cpu, parameter_file, topk=5): if use_cpu: print('running with cpu') dev = device.get_default_device() layer.engine = 'singacpp' else: print("runing with gpu") dev = device.create_cuda_gpu() print('Start intialization............') net = create_net((3, 224, 224), parameter_file) net.to_device(dev) print('End intialization............') labels = np.loadtxt('synset_words.txt', str, delimiter='\t ') while True: key, val = agent.pull() if key is None: time.sleep(0.1) continue msg_type = MsgType.parse(key) if msg_type.is_request(): try: response = "" img = imread(val['image'], mode='RGB').astype(np.float32) height,width = img.shape[:2] img[:, :, 0] -= 123.68 img[:, :, 1] -= 116.779 img[:, :, 2] -= 103.939 img[:,:,[0,1,2]] = img[:,:,[2,1,0]] img = img.transpose((2, 0, 1)) img = img[:, (height-224)//2:(height+224)//2,\ (width-224)//2:(width+224)//2] images = np.expand_dims(img, axis=0) x = tensor.from_numpy(images.astype(np.float32)) x.to_device(dev) y = net.predict(x) prob = np.average(tensor.to_numpy(y), 0) # sort and reverse idx = np.argsort(-prob)[0:topk] for i in idx: response += "%s:%s<br/>" % (labels[i], prob[i]) except Exception: traceback.print_exc() response = "Sorry, system error during prediction." except SystemExit: traceback.print_exc() response = "Sorry, error triggered sys.exit() during prediction." agent.push(MsgType.kResponse, response) elif MsgType.kCommandStop.equal(msg_type): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported message %s' % str(msg_type)) agent.push(MsgType.kStatus, "Unknown command") break # while loop print("server stop")
def serve(agent, use_cpu, parameter_file, topk=5): if use_cpu: print('running with cpu') dev = device.get_default_device() layer.engine = 'singacpp' else: print("runing with gpu") dev = device.create_cuda_gpu() agent = agent print('Start intialization............') net = create_net((3, 224, 224), parameter_file) net.to_device(dev) print('End intialization............') labels = np.loadtxt('synset_words.txt', str, delimiter='\t ') while True: key, val = agent.pull() if key is None: time.sleep(0.1) continue msg_type = MsgType.parse(key) if msg_type.is_request(): try: response = "" img = imread(val['image'], mode='RGB').astype(np.float32) height,width = img.shape[:2] img[:, :, 0] -= 123.68 img[:, :, 1] -= 116.779 img[:, :, 2] -= 103.939 img[:,:,[0,1,2]] = img[:,:,[2,1,0]] img = img.transpose((2, 0, 1)) img = img[:, (height-224)//2:(height+224)//2,\ (width-224)//2:(width+224)//2] images = np.expand_dims(img, axis=0) x = tensor.from_numpy(images.astype(np.float32)) x.to_device(dev) y = net.predict(x) prob = np.average(tensor.to_numpy(y), 0) # sort and reverse idx = np.argsort(-prob)[0:topk] for i in idx: response += "%s:%s<br/>" % (labels[i], prob[i]) except: traceback.print_exc() response = "Sorry, system error during prediction." agent.push(MsgType.kResponse, response) elif MsgType.kCommandStop.equal(msg_type): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported message %s' % str(msg_type)) agent.push(MsgType.kStatus, "Unknown command") break # while loop print("server stop")
def serve(net, label_map, dev, agent, topk=5): '''Serve to predict image labels. It prints the topk food names for each image. Args: label_map: a list of food names, corresponding to the index in meta_file ''' images = tensor.Tensor((num_augmentation, 3, crop_size, crop_size), dev) while True: msg, val = agent.pull() if msg is None: time.sleep(0.1) continue msg = MsgType.parse(msg) if msg.is_request(): try: # process images img = imread(val['image'], mode='RGB').astype(np.float32) / 255 height, width = img.shape[:2] img -= mean img /= std img = img.transpose((2, 0, 1)) img = img[:,\ (height-224)//2:(height+224)//2,(width-224)//2:(width+224)//2] images.copy_from_numpy(img) print("input: ", images.l1()) # do prediction y = net.predict(images) prob = np.average(tensor.to_numpy(y), 0) idx = np.argsort(-prob) # prepare results response = "" for i in range(topk): response += "%s:%f <br/>" % (label_map[idx[i]], prob[idx[i]]) except Exception: traceback.print_exc() response = "Sorry, system error during prediction." except SystemExit: traceback.print_exc() response = "Sorry, error triggered sys.exit() during prediction." agent.push(MsgType.kResponse, response) elif msg.is_command(): if MsgType.kCommandStop.equal(msg): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported command %s' % str(msg)) agent.push(MsgType.kStatus, "Unknown command") else: print('get unsupported message %s' % str(msg)) agent.push(MsgType.kStatus, "unsupported msg; going to shutdown") break print("server stop")
def serve(net, label_map, dev, agent, topk=5): '''Serve to predict image labels. It prints the topk food names for each image. Args: label_map: a list of food names, corresponding to the index in meta_file ''' images = tensor.Tensor((num_augmentation, 3, crop_size, crop_size), dev) while True: msg, val = agent.pull() if msg is None: time.sleep(0.1) continue msg = MsgType.parse(msg) if msg.is_request(): try: # process images im = [np.array(x.convert('RGB'), dtype=np.float32).transpose(2, 0, 1) for x in image_transform(val['image'])] im = np.array(im) / 255 im -= mean[np.newaxis, :, np.newaxis, np.newaxis] im /= std[np.newaxis, :, np.newaxis, np.newaxis] images.copy_from_numpy(im) print("input: ", images.l1()) # do prediction prob = predict(net, images, num_augmentation)[0] idx = np.argsort(-prob) # prepare results response = "" for i in range(topk): response += "%s:%f <br/>" % (label_map[idx[i]], prob[idx[i]]) except Exception: traceback.print_exc() response = "Sorry, system error during prediction." except SystemExit: traceback.print_exc() response = "Sorry, error triggered sys.exit() during prediction." agent.push(MsgType.kResponse, response) elif msg.is_command(): if MsgType.kCommandStop.equal(msg): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported command %s' % str(msg)) agent.push(MsgType.kStatus, "Unknown command") else: print('get unsupported message %s' % str(msg)) agent.push(MsgType.kStatus, "unsupported msg; going to shutdown") break print("server stop")
def serve(net, label_map, dev, agent, topk=5): '''Serve to predict image labels. It prints the topk food names for each image. Args: label_map: a list of food names, corresponding to the index in meta_file ''' images = tensor.Tensor((num_augmentation, 3, crop_size, crop_size), dev) while True: msg, val = agent.pull() if msg is None: time.sleep(0.1) continue msg = MsgType.parse(msg) if msg.is_request(): try: # process images img = imread(val['image'], mode='RGB').astype(np.float32) / 255 height,width = img.shape[:2] img -= mean img /= std img = img.transpose((2, 0, 1)) img = img[:,\ (height-224)//2:(height+224)//2,(width-224)//2:(width+224)//2] images.copy_from_numpy(img) print("input: ", images.l1()) # do prediction y = net.predict(images) prob = np.average(tensor.to_numpy(y), 0) idx = np.argsort(-prob) # prepare results response = "" for i in range(topk): response += "%s:%f <br/>" % (label_map[idx[i]], prob[idx[i]]) except: traceback.print_exc() response = "sorry, system error during prediction." agent.push(MsgType.kResponse, response) elif msg.is_command(): if MsgType.kCommandStop.equal(msg): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported command %s' % str(msg)) agent.push(MsgType.kStatus, "Unknown command") else: print('get unsupported message %s' % str(msg)) agent.push(MsgType.kStatus, "unsupported msg; going to shutdown") break print("server stop")
def serve(net, label_map, dev, agent, topk=5): '''Serve to predict image labels. It prints the topk food names for each image. Args: label_map: a list of food names, corresponding to the index in meta_file ''' images = tensor.Tensor((num_augmentation, 3, crop_size, crop_size), dev) while True: msg, val = agent.pull() if msg is None: time.sleep(0.1) continue msg = MsgType.parse(msg) if msg.is_request(): try: # process images im = [np.array(x.convert('RGB'), dtype=np.float32).transpose(2, 0, 1) for x in image_transform(val['image'])] im = np.array(im) / 255 im -= mean[np.newaxis, :, np.newaxis, np.newaxis] im /= std[np.newaxis, :, np.newaxis, np.newaxis] images.copy_from_numpy(im) print("input: ", images.l1()) # do prediction prob = predict(net, images, num_augmentation)[0] idx = np.argsort(-prob) # prepare results response = "" for i in range(topk): response += "%s:%f <br/>" % (label_map[idx[i]], prob[idx[i]]) except: traceback.print_exc() response = "sorry, system error during prediction." agent.push(MsgType.kResponse, response) elif msg.is_command(): if MsgType.kCommandStop.equal(msg): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported command %s' % str(msg)) agent.push(MsgType.kStatus, "Unknown command") else: print('get unsupported message %s' % str(msg)) agent.push(MsgType.kStatus, "unsupported msg; going to shutdown") break print("server stop")
def serve(agent, use_cpu, parameter_file, topk=5): if use_cpu: print('running with cpu') dev = device.get_default_device() layer.engine = 'singacpp' else: print("runing with gpu") dev = device.create_cuda_gpu() agent = agent print('Start intialization............') net, _ = model.create_net(is_training=False) net.load(parameter_file, use_pickle=True) net.to_device(dev) print('End intialization............') labels = np.loadtxt('synset_words.txt', str, delimiter='\t').tolist() labels.insert(0, 'empty background') while True: key, val = agent.pull() if key is None: time.sleep(0.1) continue msg_type = MsgType.parse(key) if msg_type.is_request(): try: response = "" ratio = 0.875 img = image_tool.load_img(val['image']) height, width = img.size[0], img.size[1] print(img.size) crop_h, crop_w = int(height * ratio), int(width * ratio) img = np.array( image_tool.crop(img, (crop_h, crop_w), 'center').resize( (299, 299))).astype(np.float32) / float(255) img -= 0.5 img *= 2 # img[:,:,[0,1,2]] = img[:,:,[2,1,0]] img = img.transpose((2, 0, 1)) images = np.expand_dims(img, axis=0) x = tensor.from_numpy(images.astype(np.float32)) x.to_device(dev) y = net.predict(x) prob = np.average(tensor.to_numpy(y), 0) # sort and reverse idx = np.argsort(-prob)[0:topk] for i in idx: response += "%s:%s<br/>" % (labels[i], prob[i]) except: traceback.print_exc() response = "Sorry, system error during prediction." agent.push(MsgType.kResponse, response) elif MsgType.kCommandStop.equal(msg_type): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported message %s' % str(msg_type)) agent.push(MsgType.kStatus, "Unknown command") break # while loop print("server stop")
def serve(agent, net, use_cpu, parameter_file, topk=5): if use_cpu: print('running with cpu') dev = device.get_default_device() layer.engine = 'singacpp' else: print("runing with gpu") dev = device.create_cuda_gpu() agent = agent print('Start intialization............') # fix the bug when creating net if net == 'v3': model = inception_v3 else: model = inception_v4 net, _ = model.create_net(is_training=False) net.load(parameter_file, use_pickle=True) net.to_device(dev) print('End intialization............') labels = np.loadtxt('synset_words.txt', str, delimiter='\t').tolist() labels.insert(0, 'empty background') while True: key, val = agent.pull() if key is None: time.sleep(0.1) continue msg_type = MsgType.parse(key) if msg_type.is_request(): try: response = "" ratio = 0.875 img = image_tool.load_img(val['image']) height, width = img.size[0], img.size[1] print(img.size) crop_h, crop_w = int(height * ratio), int(width * ratio) img = np.array(image_tool.crop(img,\ (crop_h, crop_w), 'center').\ resize((299, 299))).astype(np.float32) / float(255) img -= 0.5 img *= 2 # img[:,:,[0,1,2]] = img[:,:,[2,1,0]] img = img.transpose((2, 0, 1)) images = np.expand_dims(img, axis=0) x = tensor.from_numpy(images.astype(np.float32)) x.to_device(dev) y = net.predict(x) prob = np.average(tensor.to_numpy(y), 0) # sort and reverse idx = np.argsort(-prob)[0:topk] for i in idx: response += "%s:%s<br/>" % (labels[i], prob[i]) except: traceback.print_exc() response = "Sorry, system error during prediction." agent.push(MsgType.kResponse, response) elif MsgType.kCommandStop.equal(msg_type): print('get stop command') agent.push(MsgType.kStatus, "success") break else: print('get unsupported message %s' % str(msg_type)) agent.push(MsgType.kStatus, "Unknown command") break # while loop print("server stop")