| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
- #
- # 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.
- import os
- import numpy as np
- from ...common.result import BaseResult
- 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
|