def main(opt): # init model os.environ['CUDA_VISIBLE_DEVICES'] = opt.gpus_str Detector = detector_factory[opt.task] detector = Detector(opt) debug = 0 # return the detect result without show threshold = 0.05 TASK = 'ctdet' # or 'multi_pose' for human pose estimation input_h, intput_w = 512, 512 MODEL_PATH = '/home/jamesyen/my_project/face_detection/CenterNet/exp/ctdet/calface_mobile_l1/model_last_bk.pth' opt = opts().init('--task {} --load_model {} --debug {} --vis_thresh {} --input_h {} --input_w {}'.format( TASK, MODEL_PATH, debug, threshold, input_h, intput_w).split(' ')) print("222opt.models ", opt.load_model) detector = detector_factory[opt.task](opt) out_onnx_path = "../output/onnx_model/calface_mobilev2.onnx" image = cv2.imread('../data/cal_face/image/AAEM3872.jpg') torch_input, meta = detector.pre_process(image, scale=1) torch_input = torch_input.cuda() # pytorch output torch_output = detector.model(torch_input) torch.onnx.export(detector.model, torch_input, out_onnx_path, verbose=False) sess = nxrun.InferenceSession(out_onnx_path) print('save done') input_name = sess.get_inputs()[0].name output_onnx = sess.run(None, {input_name: torch_input.cpu().data.numpy()}) temp = 1
def prefetch_test(opt): os.environ['CUDA_VISIBLE_DEVICES'] = opt.gpus_str Dataset = dataset_factory[opt.dataset] opt = opts().update_dataset_info_and_set_heads(opt, Dataset) print(opt) Logger(opt) Detector = detector_factory[opt.task] split = 'val' if not opt.trainval else 'test' dataset = Dataset(opt, split) detector = Detector(opt) data_loader = torch.utils.data.DataLoader(PrefetchDataset( opt, dataset, detector.pre_process), batch_size=1, shuffle=False, num_workers=1, pin_memory=True) results_1, results_2 = {}, {} num_iters = len(dataset) print("!!!!!!!!!!!!!num_iters ", num_iters) bar = Bar('{}'.format(opt.exp_id), max=num_iters) time_stats = ['tot', 'load', 'pre', 'net', 'dec', 'post', 'merge'] avg_time_stats = {t: AverageMeter() for t in time_stats} tos = time.time() for ind, (img_id, pre_processed_images) in enumerate(data_loader): ret = detector.run(pre_processed_images) results_1[img_id.numpy().astype(np.int64)[0]] = ret['results_1'] results_2[img_id.numpy().astype(np.int64)[0]] = ret['results_2'] Bar.suffix = '[{0}/{1}]|Tot: {total:} |ETA: {eta:} '.format( ind, num_iters, total=bar.elapsed_td, eta=bar.eta_td) for t in avg_time_stats: avg_time_stats[t].update(ret[t]) Bar.suffix = Bar.suffix + '|{} {tm.val:.3f}s ({tm.avg:.3f}s) '.format( t, tm=avg_time_stats[t]) bar.next() bar.finish() print("it took", time.time() - tos, "seconds.") print("############### ", avg_time_stats['tot'].sum) dataset.run_eval(results_1, opt.save_dir) dataset.run_eval(results_2, opt.save_dir)
def test(opt): os.environ['CUDA_VISIBLE_DEVICES'] = opt.gpus_str Dataset = dataset_factory[opt.dataset] opt = opts().update_dataset_info_and_set_heads(opt, Dataset) print(opt) Logger(opt) Detector = detector_factory[opt.task] split = 'val' if not opt.trainval else 'test' dataset = Dataset(opt, split) detector = Detector(opt) results = {} num_iters = len(dataset) bar = Bar('{}'.format(opt.exp_id), max=num_iters) time_stats = ['tot', 'load', 'pre', 'net', 'dec', 'post', 'merge'] avg_time_stats = {t: AverageMeter() for t in time_stats} for ind in range(num_iters): img_id = dataset.images[ind] img_info = dataset.coco.loadImgs(ids=[img_id])[0] img_path = os.path.join(dataset.img_dir, img_info['file_name']) if opt.task == 'ddd': ret = detector.run(img_path, img_info['calib']) else: ret = detector.run(img_path) results[img_id] = ret['results_2'] Bar.suffix = '[{0}/{1}]|Tot: {total:} |ETA: {eta:} '.format( ind, num_iters, total=bar.elapsed_td, eta=bar.eta_td) for t in avg_time_stats: avg_time_stats[t].update(ret[t]) Bar.suffix = Bar.suffix + '|{} {:.3f} '.format( t, avg_time_stats[t].avg) bar.next() bar.finish() dataset.run_eval(results, opt.save_dir)
img_id = dataset.images[ind] img_info = dataset.coco.loadImgs(ids=[img_id])[0] img_path = os.path.join(dataset.img_dir, img_info['file_name']) if opt.task == 'ddd': ret = detector.run(img_path, img_info['calib']) else: ret = detector.run(img_path) results[img_id] = ret['results_2'] Bar.suffix = '[{0}/{1}]|Tot: {total:} |ETA: {eta:} '.format( ind, num_iters, total=bar.elapsed_td, eta=bar.eta_td) for t in avg_time_stats: avg_time_stats[t].update(ret[t]) Bar.suffix = Bar.suffix + '|{} {:.3f} '.format( t, avg_time_stats[t].avg) bar.next() bar.finish() dataset.run_eval(results, opt.save_dir) if __name__ == '__main__': opt = opts().parse() print("111111111111111111111111111111opt.not_prefetch_test ", opt.not_prefetch_test) if opt.not_prefetch_test: test(opt) else: prefetch_test(opt) print("1222222222.not_prefetch_test ", opt.not_prefetch_test)
detector = Detector(opt) debug = 0 # return the detect result without show threshold = 0.05 TASK = 'ctdet' # or 'multi_pose' for human pose estimation input_h, intput_w = 512, 512 MODEL_PATH = '/home/jamesyen/my_project/face_detection/CenterNet/exp/ctdet/calface_mobile_l1/model_last_bk.pth' opt = opts().init('--task {} --load_model {} --debug {} --vis_thresh {} --input_h {} --input_w {}'.format( TASK, MODEL_PATH, debug, threshold, input_h, intput_w).split(' ')) print("222opt.models ", opt.load_model) detector = detector_factory[opt.task](opt) out_onnx_path = "../output/onnx_model/calface_mobilev2.onnx" image = cv2.imread('../data/cal_face/image/AAEM3872.jpg') torch_input, meta = detector.pre_process(image, scale=1) torch_input = torch_input.cuda() # pytorch output torch_output = detector.model(torch_input) torch.onnx.export(detector.model, torch_input, out_onnx_path, verbose=False) sess = nxrun.InferenceSession(out_onnx_path) print('save done') input_name = sess.get_inputs()[0].name output_onnx = sess.run(None, {input_name: torch_input.cpu().data.numpy()}) temp = 1 if __name__ == '__main__': opt = opts().init() main(opt)