слишком много индексов для тензора размерности 3 — Pytorch в coreml

#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. Я переставил вопрос