def test_coco(model): global oh, ow catId2cls, cls2catId, catId2name = joblib.load( r'D:/(catId2cls,cls2catId,catId2name).pkl') test_dir = r'D:\dataset\val2017/' names = os.listdir(test_dir) names = [name.split('.')[0] for name in names] names = sorted(names) i = 0 mm = 1000000 Res = [] Res_mask = [] start_time = datetime.now() for name in names[:mm]: i += 1 print(datetime.now(), i) im_file = test_dir + name + '.jpg' img = cv2.imread(im_file) oh, ow = img.shape[:2] with torch.no_grad(): res = model.predict(img) res = res[:200] wh = res[:, 2:4] - res[:, :2] + 1 imgId = int(name) m = res.shape[0] imgIds = np.zeros((m, 1)) + imgId cls = res[:, 5] cid = map(lambda x: cls2catId[x], cls) cid = list(cid) cid = np.array(cid) cid = cid.reshape(-1, 1) res = np.concatenate((imgIds, res[:, :2], wh, res[:, 4:5], cid), axis=1) # Res=np.concatenate([Res,res]) res = np.round(res, 4) Res.append(res) Res = np.concatenate(Res, axis=0) Ann = loadNumpyAnnotations(Res) print('==================================', mm, datetime.now() - start_time) with codecs.open('yolov3_bbox.json', 'w', 'ascii') as f: json.dump(Ann, f) eval_coco_box.eval('yolov3_bbox.json', mm) pass
def test(model, config, model_file): global oh, ow catId2cls, cls2catId, catId2name = joblib.load( r'../data_preprocess/(catId2cls,cls2catId,catId2name).pkl') model = model(config) model.eval() model.load_state_dict(torch.load(model_file, map_location='cpu')) cuda(model) test_dir = r'D:/dataset/val2017/' names = os.listdir(test_dir) names = [name.split('.')[0] for name in names] names = sorted(names) i = 0 mm = 10000000 Res = [] Res_mask = [] start_time = datetime.now() for name in names[:mm]: i += 1 print(datetime.now(), i) im_file = test_dir + name + '.jpg' img = cv2.imread(im_file) oh, ow = img.shape[:2] with torch.no_grad(): img = torch.tensor(img) res, res_mask = model(img) res = res.cpu().numpy() # res = res.detach().numpy() res_mask = res_mask.cpu() res_mask = res_mask.detach().numpy() wh = res[:, 2:4] - res[:, :2] imgId = int(name) m = res.shape[0] imgIds = np.zeros((m, 1)) + imgId cls = res[:, 5] cid = map(lambda x: cls2catId[x], cls) cid = list(cid) cid = np.array(cid) cid = cid.reshape(-1, 1) res = np.concatenate((imgIds, res[:, :2] + 1, wh, res[:, 4:5], cid), axis=1) # Res=np.concatenate([Res,res]) res = np.round(res, 4) Res.append(res) Res_mask += map(loadNumpyAnnotations_mask, res[:100], res_mask[:100]) Res = np.concatenate(Res, axis=0) Ann = loadNumpyAnnotations(Res) print('==================================', mm, datetime.now() - start_time) # with codecs.open('Mask_Rcnn_bbox_ohem_256_gpu2.json', 'w', 'ascii') as f: # json.dump(Ann, f) # with codecs.open('Mask_Rcnn_segm_ohem_256_gpu2.json', 'w', 'ascii') as f: # json.dump(Res_mask, f) # eval_coco_box.eval('Mask_Rcnn_bbox_ohem_256_gpu2.json', mm) # eval_coco_segm.eval('Mask_Rcnn_segm_ohem_256_gpu2.json', mm) with codecs.open('py_Mask_Rcnn_bbox.json', 'w', 'ascii') as f: json.dump(Ann, f) with codecs.open('py_Mask_Rcnn_segm.json', 'w', 'ascii') as f: json.dump(Res_mask, f) print(mm) eval_coco_box.eval('py_Mask_Rcnn_bbox.json', mm) eval_coco_segm.eval('py_Mask_Rcnn_segm.json', mm) print('==========', datetime.now() - start_time)