def get_img(inp_res = 512): """ Load validation images """ if os.path.exists(valid_filepath) is False: from utils.build_valid import main main() dic = pickle.load(open(valid_filepath, 'rb')) paths, anns, idxes, info = [dic[i] for i in ['path', 'anns', 'idxes', 'info']] total = len(paths) tr = tqdm.tqdm( range(0, total), total = total ) for i in tr: img = cv2.imread(paths[i])[:,:,::-1] yield anns[i], img
def get_img(inp_res=512): """ Load validation images """ # load valid file -> validation.pkl or create one from valid_id txt file if os.path.exists(valid_filepath) is False: from utils.build_valid import main main() # load pkl file and extract each images' paths, anns, idxes and info dic = pickle.load(open(valid_filepath, 'rb')) paths, anns, idxes, info = [ dic[i] for i in ['path', 'anns', 'idxes', 'info'] ] total = len(paths) tr = tqdm.tqdm(range(0, total), total=total) # this is to generate a dictionary with each image and annotation for i in tr: img = cv2.imread(paths[i])[:, :, ::-1] yield anns[i], img
mode = config['opt'].mode def runner(imgs): return func(0, config, 'inference', imgs=torch.Tensor(np.float32(imgs)))['preds'] def do(img): ans, scores = multiperson(img, runner, mode) if len(ans) > 0: ans = ans[:,:,:3] pred = genDtByPred(ans) for i, score in zip( pred, scores ): i['score'] = float(score) return pred gts = [] preds = [] idx = 0 for anns, img in get_img(inp_res=-1): idx += 1 gts.append(anns) preds.append(do(img)) prefix = os.path.join('exp', config['opt'].exp) coco_eval(prefix, preds, gts) if __name__ == '__main__': main()