ApolloAuto / apollo

An open autonomous driving platform
Apache License 2.0
24.71k stars 9.62k forks source link

PETR V1 cannot run in camera_detection_bev #15433

Open arnoldfychen opened 2 weeks ago

arnoldfychen commented 2 weeks ago

Hello,

I downloaded the model files of PETR v1, which are petr_inference.pdmodel and petr_inference.pdiparams from https://paddle3d.bj.bcebos.com/models/petr/petr_exported_model.tar and configured it in camera_detection_bev, when I ran camera_detection_bev I got the following error :

[camera_bev] terminate called after throwing an instance of 'phi::enforce::EnforceNotMet' [camera_bev] what(): In user code: [camera_bev]
[camera_bev] File "tools/export.py", line 69, in [camera_bev] main(args) [camera_bev] File "tools/export.py", line 64, in main [camera_bev] model.export(args.save_dir, input_shape=args.input_shape) [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 370, in export [camera_bev] paddle.jit.save(self, os.path.join(save_dir, "petr_inference")) [camera_bev] File "", line 2, in save [camera_bev]
[camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 26, in impl [camera_bev] return wrapped_func(args, kwargs) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/jit.py", line 649, in wrapper [camera_bev] func(layer, path, input_spec, configs) [camera_bev] File "", line 2, in save [camera_bev]
[camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 26, in impl [camera_bev] return wrapped_func(
args, kwargs) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 52, in impl [camera_bev] return func(args, kwargs) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/jit.py", line 928, in save [camera_bev] inner_input_spec, with_hook=with_hook) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 577, in concrete_program_specify_input_spec [camera_bev] is_train=self._is_train_mode()) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 482, in get_concrete_program [camera_bev] concrete_program, partial_program_layer = self._program_cache[cache_key] [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 952, in getitem [camera_bev] self._caches[item_id] = self._build_once(item) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 941, in _build_once [camera_bev] cache_key.kwargs) [camera_bev] File "", line 2, in from_func_spec [camera_bev]
[camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 26, in impl [camera_bev] return wrapped_func(
args,
kwargs) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 52, in impl [camera_bev] return func(*args, kwargs) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 885, in from_func_spec [camera_bev] outputs = static_func(inputs) [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 336, in export_forward [camera_bev] img_feats = self.extract_feat(img=img, img_metas=None) [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 186, in extract_feat [camera_bev] img_feats = self.extract_img_feat(img, img_metas) [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 151, in extract_img_feat [camera_bev] if img is not None: [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 324, in convert_ifelse [camera_bev] return_name_ids) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 380, in _run_py_ifelse [camera_bev] py_outs = true_fn() if pred else false_fn() [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 157, in extract_img_feat [camera_bev] if img.dim() == 5: [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 324, in convert_ifelse [camera_bev] return_name_ids) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 380, in _run_py_ifelse [camera_bev] py_outs = true_fn() if pred else false_fn() [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 158, in extract_img_feat [camera_bev] if img.shape[0] == 1 and img.shape[1] != 1: [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 324, in convert_ifelse [camera_bev] return_name_ids) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 380, in _run_py_ifelse [camera_bev] py_outs = true_fn() if pred else false_fn() [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 159, in extract_img_feat [camera_bev] if hasattr(self, 'export_model') and self.export_model: [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 324, in convert_ifelse [camera_bev] return_name_ids) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 380, in _run_py_ifelse [camera_bev] py_outs = true_fn() if pred else false_fn() [camera_bev] File "/workspace/codes/Paddle3D02/paddle3d/models/detection/petr/petr3d.py", line 160, in extract_img_feat [camera_bev] img = img.squeeze() [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/tensor/manipulation.py", line 2041, in squeeze [camera_bev] "XShape": x_shape [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/layer_helper.py", line 45, in append_op [camera_bev] return self.main_program.current_block().append_op(args, kwargs) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/framework.py", line 3828, in append_op [camera_bev] attrs=kwargs.get("attrs", None)) [camera_bev] File "/workspace/miniconda3/lib/python3.7/site-packages/paddle/fluid/framework.py", line 2736, in init [camera_bev] for frame in traceback.extract_stack(): [camera_bev]
[camera_bev] InvalidArgumentError: The squeeze2 Op's Input Variable X contains uninitialized Tensor. [camera_bev] [Hint: Expected t->IsInitialized() == true, but received t->IsInitialized():0 != true:1.] (at /apollo/paddle/Paddle/paddle/fluid/framework/operator.cc:2411) [camera_bev] [operator < squeeze2 > error] [cyber_launch_105465] ERROR Process [camera_bev] has died [pid 105472, exit code -6, cmd mainboard -d /apollo/modules/perception/camera_detection_bev/dag/camera_detection_bev.dag -d /apollo/modules/perception/camera_tracking/dag/camera_tracking.dag -d /apollo/modules/perception/msg_adapter/dag/msg_adapter.dag -p camera_bev -s CYBER_DEFAULT].

Cannot understand why the error says "The squeeze2 Op's Input Variable X contains uninitialized Tensor", as the 6-image data are correctly filled into frameptr->data_provider, this error still happened even after I made changes in to forcibly call frameptr->data_provider[i]->FillImageData() with image data read from static pictures got from nuScenes dataset !!!

frameptr->data_provider[i]->FillImageData( 900, 1600, reinterpret_cast<const uint8_t*>(images[i]), "bgr8");

images contains the data of 6 images got from nuScenes dataset.

Could you please help me out ? Thanks.