#python #ios #pytorch #faster-rcnn
#питон #iOS #пыторч #быстрее-rcnn
Вопрос:
Я хочу преобразовать более быструю модель RCNN, которую я обучил, в модель coreml, но я получаю ошибку
Код здесь:
cfg = get_cfg() cfg.OUTPUT_DIR = '/content/drive/MyDrive/IOS/' cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_X_101_32x8d_FPN_3x.yaml")) # that weight is yours cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth") model = build_model(cfg) model.eval() print(model) input_image = Image.open("/content/drive/MyDrive/IOS/g0079.jpg") display(input_image) to_tensor = transforms.ToTensor() input_tensor = to_tensor(input_image) input_batch = input_tensor.unsqueeze(0) #First attempt at tracing trace = torch.jit.trace(model, input_batch)
Ошибка:
/usr/local/lib/python3.7/dist-пакеты/факел/тензор.py:467: Предупреждение о времени выполнения: Итерация по тензору может привести к неправильной трассировке. Передача тензора другой формы не изменит количество выполняемых итераций (и может привести к ошибкам или молчаливо дать неправильные результаты). ‘неверные результаты).’, категория=Предупреждение о времени выполнения)
Обратная трассировка ошибки индекса (последний последний вызов)
в ()
1 #First attempt at tracing ----gt; 2 trace = torch.jit.trace(model, input_batch)
/usr/local/lib/python3.7/dist-packages/torch/jit/init.py в трассировке(функция, example_inputs, оптимизация, check_trace, check_inputs, check_tolerance, _force_outplace, _module_class, _compilation_unit)
873 return trace_module(func, {'forward': example_inputs}, None, 874 check_trace, wrap_check_inputs(check_inputs), --gt; 875 check_tolerance, _force_outplace, _module_class) 876 877 if (hasattr(func, '__self__') and isinstance(func.__self__, torch.nn.Module) and
/usr/local/lib/python3.7/dist-packages/torch/jit/init.py в trace_module(mod, входы, оптимизация, check_trace, check_inputs, check_tolerance, _force_outplace, _module_class, _compilation_unit)
1025 func = mod if method_name == "forward" else getattr(mod, method_name) 1026 example_inputs = make_tuple(example_inputs) -gt; 1027 module._c._create_method_from_trace(method_name, func, example_inputs, var_lookup_fn, _force_outplace) 1028 check_trace_method = module._c._get_method(method_name) 1029
/usr/локальный/lib/python3.7/dist-пакеты/факел/nn/модули/модуль.py в вызове(самостоятельно, *вход, **кварги)
546 input = result 547 if torch._C._get_tracing_state(): --gt; 548 result = self._slow_forward(*input, **kwargs) 549 else: 550 result = self.forward(*input, **kwargs)
/usr/локальный/lib/python3.7/dist-пакеты/факел/nn/модули/модуль.py в _slow_forward(самостоятельно, *ввод, **кварги)
532 recording_scopes = False 533 try: --gt; 534 result = self.forward(*input, **kwargs) 535 finally: 536 if recording_scopes:
/usr/local/lib/python3.7/dist-packages/detectron2/modeling/meta_arch/rcnn.py в прямом(self, batched_inputs)
106 """ 107 if not self.training: --gt; 108 return self.inference(batched_inputs) 109 110 images = self.preprocess_image(batched_inputs)
/usr/local/lib/python3.7/dist-packages/detectron2/modeling/meta_arch/rcnn.py в выводе(self, batched_inputs, detected_instances, do_postprocess)
158 assert not self.training 159 --gt; 160 images = self.preprocess_image(batched_inputs) 161 features = self.backbone(images.tensor) 162
/usr/local/lib/python3.7/dist-packages/detectron2/modeling/meta_arch/rcnn.py в preprocess_image(self, batched_inputs) 182 Нормализуйте, дополняйте и пакуйте входные изображения. 183 «»» —gt; 184 изображения = [x[«изображение»].для(самоустройства) для x в batched_inputs] 185 изображений = [(x — self.pixel_mean) / self.pixel_std для x в изображениях] 186 изображений = список изображений.from_tensors(изображения, self.backbone.size_divisibility)
/usr/local/lib/python3.7/dist-packages/detectron2/modeling/meta_arch/rcnn.py в (.0)
182 Normalize, pad and batch the input images. 183 """ --gt; 184 images = [x["image"].to(self.device) for x in batched_inputs] 185 images = [(x - self.pixel_mean) / self.pixel_std for x in images] 186 images = ImageList.from_tensors(images, self.backbone.size_divisibility)
Ошибка индекса: слишком много индексов для тензора размерности 3
Комментарии:
1. Я переставил вопрос