def _test_model(self, config_path, device="cpu"): # requires extra dependencies from detectron2.export import ( Caffe2Model, add_export_config, export_caffe2_model, ) cfg = get_cfg() cfg.merge_from_file(model_zoo.get_config_file(config_path)) cfg = add_export_config(cfg) cfg.MODEL.DEVICE = device model = build_model(cfg) DetectionCheckpointer(model).load( model_zoo.get_checkpoint_url(config_path)) inputs = [{"image": self._get_test_image()}] c2_model = export_caffe2_model(cfg, model, copy.deepcopy(inputs)) with tempfile.TemporaryDirectory(prefix="detectron2_unittest") as d: c2_model.save_protobuf(d) c2_model.save_graph(os.path.join(d, "test.svg"), inputs=copy.deepcopy(inputs)) c2_model = Caffe2Model.load_protobuf(d) c2_model(inputs)[0]["instances"]
def _test_model(self, config_path, device="cpu"): # requires extra dependencies from detectron2.export import Caffe2Model, add_export_config, Caffe2Tracer cfg = model_zoo.get_config(config_path) add_export_config(cfg) cfg.MODEL.DEVICE = device model = model_zoo.get(config_path, trained=True, device=device) inputs = [{"image": get_sample_coco_image()}] c2_model = Caffe2Tracer(cfg, model, copy.deepcopy(inputs)).export_caffe2() with tempfile.TemporaryDirectory(prefix="detectron2_unittest") as d: c2_model.save_protobuf(d) c2_model.save_graph(os.path.join(d, "test.svg"), inputs=copy.deepcopy(inputs)) c2_model = Caffe2Model.load_protobuf(d) c2_model(inputs)[0]["instances"]
def _test_model(self, config_path, device="cpu"): cfg = model_zoo.get_config(config_path) cfg.MODEL.DEVICE = device model = model_zoo.get(config_path, trained=True, device=device) inputs = [{"image": get_sample_coco_image()}] tracer = Caffe2Tracer(cfg, model, copy.deepcopy(inputs)) with tempfile.TemporaryDirectory(prefix="detectron2_unittest") as d: if not os.environ.get("CI"): # This requires onnx, which is not yet available on public CI c2_model = tracer.export_caffe2() c2_model.save_protobuf(d) c2_model.save_graph(os.path.join(d, "test.svg"), inputs=copy.deepcopy(inputs)) c2_model = Caffe2Model.load_protobuf(d) c2_model(inputs)[0]["instances"] ts_model = tracer.export_torchscript() ts_model.save(os.path.join(d, "model.ts"))
data_loader = build_detection_test_loader(cfg, cfg.DATASETS.TEST[0]) first_batch = next(iter(data_loader)) #%% inputs = [{"image": first_batch[0]['image']}] #%% tracer = Caffe2Tracer(cfg, torch_model, first_batch) # convert and save caffe2 model caffe2_model = tracer.export_caffe2() caffe2_model.save_protobuf(output) # draw the caffe2 graph caffe2_model.save_graph(os.path.join(output, "model.svg"), inputs=first_batch) #%% from detectron2.export import Caffe2Model model = Caffe2Model.load_protobuf(output) # %% import torch torch.cuda.empty_cache() im = first_batch[0]['image'] inputs = [{"image": im}] outputs = model(inputs) # %%