# copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ...common.result import BaseResult, StrMixin, JsonMixin import numpy as np import os from .visualizer_3d import Visualizer3D class BEV3DDetResult(BaseResult): """Base class for computer vision results.""" def __init__(self, data: dict) -> None: """ Initialize the BaseCVResult. Args: data (dict): The initial data. Raises: AssertionError: If the required key (`BaseCVResult.INPUT_IMG_KEY`) are not found in the data. """ super().__init__(data) def visualize(self, save_path: str, show: bool) -> None: # input point cloud assert 'input_path' in self.keys(), 'input_path is not found in the data' points = np.fromfile(self['input_path'], dtype=np.float32) points = points.reshape(-1, 5) points = points[:, :4] # detection result result = dict() assert 'boxes_3d' in self.keys(), 'boxes_3d is not found in the data' result["bbox3d"] = self["boxes_3d"] assert 'scores_3d' in self.keys(), 'scores_3d is not found in the data' result["scores"] = self["scores_3d"] assert 'labels_3d' in self.keys(), 'labels_3d is not found in the data' result["labels"] = self["labels_3d"] if save_path is not None: # save result for local visualization if not os.path.exists(save_path): os.makedirs(save_path) np.save(os.path.join(save_path, 'results.npy'), result) np.save(os.path.join(save_path, 'points.npy'), points) if show: # visualize score_threshold = 0.25 vis = Visualizer3D() vis.draw_results(points, result, score_threshold) return