def render_points(points): fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) fig = utils.draw_lidar(points, fig=fig, color_by_intensity=True) mlab.show()
def render(points, img): fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) fig = utils.draw_lidar(points, fig=fig) cv2.imshow("image", img) mlab.show()
def show_predicted_results(sample_id_in_val=None,draw_text=True): if show_predicted_results is None: sample_id_in_val = cfg_vis.val_idx pred_path = cfg_vis.predict_path val_split_dir = cfg_vis.val_dataset val_sample_idx = [x.strip() for x in open(val_split_dir).readlines()] gt_lidar_dir = os.path.join(cfg_vis.kitti_gt_dir, "lidar_gt_list.pth") with open(gt_lidar_dir, "rb") as f: gt_lidar_list_with_class = pickle.load(f) gt_lidar_list = gt_lidar_list_with_class["gt_lidar_box_list"] gt_class_names_list = gt_lidar_list_with_class["gt_class_names"] sample_idx_str = val_sample_idx[sample_id_in_val] sample_idx = int(sample_idx_str) points_path = os.path.join(cfg_vis.KITTI_DIR, "velodyne", sample_idx_str + ".bin") point_xyzi = np.fromfile(points_path, dtype=np.float32).reshape(-1, 4) image_path = os.path.join(cfg_vis.KITTI_DIR, "image_2", sample_idx_str + ".png") image = cv2.imread(image_path) with open(pred_path, "rb") as f: pred_dicts = pickle.load(f) det_anno = pred_dicts[sample_id_in_val] det_boxes = det_anno['boxes_lidar'] det_class_name = list(det_anno["name"]) gt_boxes = gt_lidar_list[sample_id_in_val] gt_classes = gt_class_names_list[sample_id_in_val] gt_boxes_corners = boxes3d_to_corners3d_lidar(gt_boxes[:, :7]) det_boxes_corners = boxes3d_to_corners3d_lidar(det_boxes[:, :7]) fig = mlab.figure( figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000) ) fig = utils.draw_gt_boxes3d(gt_boxes_corners, color=(1, 0, 0), fig=fig) if draw_text: fig = utils.draw_gt_boxes3d(det_boxes_corners, color=(0, 1, 0), label=det_class_name, draw_text=True, fig=fig) else: fig = utils.draw_gt_boxes3d(det_boxes_corners, color=(0, 1, 0), fig=fig) fig = utils.draw_lidar(point_xyzi[:, 0:3], fig=fig) cv2.imshow("image", image) mlab.show()
def main1(): data_root_path = cfg_vis.DATA_DIR lidar_points = get_lidar("000211", data_root_path, "training") gt_lidar_box = get_labels("000211", data_root_path, "training") # features= model(lidar_points) plot_str = "fps_f" if plot_str == "fps_f": seg_features = points_in_boxes_cpu( torch.from_numpy(lidar_points[:, :3]), torch.from_numpy(gt_lidar_box[:, :7])).numpy() seg_features = seg_features.sum(axis=0) # segment labels 0 or 1 seg_features = np.where(seg_features > 0, 1, 0) seg_features = seg_features[np.newaxis, ..., np.newaxis] lidar_points = lidar_points[np.newaxis, ...] seg_features = torch.from_numpy(seg_features).type(torch.int32).cuda() lidar_points = torch.from_numpy(lidar_points).cuda() keypoints = fps_f(lidar_points, seg_features, 1024) elif plot_str == "fps_d": lidar_points = lidar_points[np.newaxis, ...] keypoints = fps_d(lidar_points, 1024) else: assert NotImplementedError points_in_boxes, points_out_boxes = utils.points_indices( keypoints, gt_lidar_box) points_size = np.array([3]).repeat(points_in_boxes.shape[0], 0) fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) fig = utils.draw_lidar(points_out_boxes, fig=fig) gt_boxes_corners = boxes3d_to_corners3d_lidar(gt_lidar_box[:, :7]) fig = utils.draw_gt_boxes3d(gt_boxes_corners, color=(1, 0, 0), fig=fig) mlab.points3d(points_in_boxes[:, 0], points_in_boxes[:, 1], points_in_boxes[:, 2], points_size, color=(1, 0, 0), mode="sphere", scale_factor=0.1, figure=fig) mlab.show()
def show_box_with_anno(ann_dir, bin_dir, image_dir): anno_list = glob.glob(os.path.join(ann_dir, "*.txt")) image_list = glob.glob(os.path.join(image_dir, "*.png")) image_list.sort() anno_list.sort() bin_list = glob.glob(os.path.join(bin_dir, "*.bin")) bin_list.sort() for anno_path, i in zip(anno_list, range(len(bin_list))): id = anno_path.split("/")[-1] id = id.split(".")[0] print("frame id:%s" % id) if id != "000543": continue image_path = os.path.join(image_dir, id + ".png") bin_path = os.path.join(bin_dir, id + ".bin") objects = get_objects_from_label(anno_path) gt_boxes = get_info(objects) print("gt_boxes:", gt_boxes) gt_boxes_corners, temp_corners = center2corner_leishen(gt_boxes[:, :7]) points = read_bin(bin_path) pts = np.unique(points, axis=0).reshape(-1, 4) img = cv2.imread(image_path) fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) fig = utils.draw_lidar(pts, fig=fig, datatype="leishen") fig = utils.draw_gt_boxes3d(gt_boxes_corners, color=(1, 0, 0), fig=fig, gt_boxes_center=gt_boxes) cv2.imshow("image", img) mlab.show() print("done")
def show_single_frame(): data_dir = "/media/liang/Elements/rosbag/leishen_e70_32/dataset_image_pcd" bin_dir = os.path.join(data_dir, "bin") id = 552 anno_path = os.path.join(data_dir, "annotation", str(id).zfill(6) + ".txt") bin_path = os.path.join(bin_dir, str(id).zfill(6) + ".bin") objects = get_objects_from_label(anno_path) gt_boxes = get_info(objects) print("gt_boxes:", gt_boxes) gt_boxes_corners, temp_corners = center2corner_leishen(gt_boxes[:, :7]) points = read_bin(bin_path) fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) fig = utils.draw_lidar(points, fig=fig, datatype="leishen") fig = utils.draw_gt_boxes3d(gt_boxes_corners, color=(1, 0, 0), fig=fig, gt_boxes_center=gt_boxes) mlab.show()
def show_frame(id=1, show_augmatation=False, show_predict=False, eval_save_pth=False): image_dir = os.path.join(DATA_DIR, "image", "sorted") image_path = os.path.join(image_dir, str(id).zfill(6) + ".png") image_data = cv2.imread(image_path) if show_augmatation: anno_path = os.path.join(DATA_DIR, "augmentation", str(id).zfill(6) + ".txt") bin_dir = os.path.join(DATA_DIR, "augmentation") bin_path = os.path.join(bin_dir, str(id).zfill(6) + ".bin") else: anno_path = os.path.join(DATA_DIR, "annotation", str(id).zfill(6) + ".txt") bin_dir = os.path.join(DATA_DIR, "bin") bin_path = os.path.join(bin_dir, str(id).zfill(6) + ".bin") if show_predict and not show_augmatation: # "/for_ubuntu502/PVRCNN-V1.1/output/single_stage_model/leishen_1.1/eval/epoch_80/final_result/data" pred_path = os.path.join(OUTPUT_DIR, "single_stage_model", "leishen_1.3", "eval", "epoch_80", "final_result", "data", str(id).zfill(6) + ".txt") predict_objects = get_objects_from_label(pred_path) det_boxes = get_info(predict_objects, drop_bus=True) if eval_save_pth: result_dir = os.path.join(CODE_DIR, "output", "single_stage_model", "leishen_1.3", "eval", "epoch_80") reuslt_file_path = os.path.join(result_dir, "result.pkl") with open(reuslt_file_path, "rb") as f: det_annos = pickle.load(f) for sample in det_annos: sample["frame_id"] == str(id).zfill(6) break det_boxes_ = sample['boxes_lidar'] objects = get_objects_from_label(anno_path) gt_boxes = get_info(objects) if show_predict: if len(gt_boxes) > 0: values = iou3d_nms_utils.boxes_iou3d_gpu( torch.from_numpy(gt_boxes[:, :7].astype(np.float32)).cuda(), torch.from_numpy(det_boxes[:, :7].astype( np.float32)).cuda()).cpu().numpy() # gt_boxes = gt_boxes[6:7,:] # det_boxes = det_boxes[8:9,:] if len(gt_boxes) > 0: gt_boxes_corners, temp_corners = center2corner_leishen(gt_boxes[:, :7]) if show_predict: if len(det_boxes) > 0: det_boxes_corners, det_temp_corners = center2corner_leishen( det_boxes[:, :7]) points = np.fromfile(bin_path, dtype=np.float32).reshape(-1, 4) # points = anno_utils.remove_points_in_boxes3d_v0(points,gt_boxes[0:1,:7]) fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) # mlab.points3d( # points[:, 0], # points[:, 1], # points[:, 2], # color=(1, 1, 1), # mode="point", # colormap="gnuplot", # scale_factor=0.3, # figure=fig, # ) fig = utils.draw_lidar(points, fig=fig, datatype="leishen", draw_axis=True, draw_square_region=False, draw_fov=False) if len(gt_boxes) > 0: fig = utils.draw_gt_boxes3d(gt_boxes_corners, color=(1, 0, 0), fig=fig, gt_boxes_center=gt_boxes) if show_predict: fig = utils.draw_gt_boxes3d(det_boxes_corners, color=(0, 1, 0), fig=fig, gt_boxes_center=gt_boxes) cv2.imshow("image", image_data) mlab.show()
if i != cfg_vis.val_idx: continue print(i) id = val_sample_idx[i] point_file = id + ".bin" lidar_path = os.path.join(cfg_vis.KITTI_DIR, "velodyne", point_file) image_name = id + ".png" image_path = os.path.join(cfg_vis.KITTI_DIR, "image_2", image_name) points = np.fromfile(lidar_path, dtype=np.float32).reshape(-1, 4) fig = mlab.figure(figure=None, bgcolor=(0, 0, 0), fgcolor=None, engine=None, size=(1600, 1000)) fig = utils.draw_lidar(points, fig=fig) image_file = cv2.imread(image_path) cv2.imshow("image", image_file) mlab.show() if cfg_vis.SHOW == "center_points": split = "training" point_file = cfg_vis.SAMPLE_INDEX + ".bin" lidar_path = os.path.join(cfg_vis.KITTI_DIR, point_file) points = np.fromfile(lidar_path, dtype=np.float32).reshape(-1, 4) gt_lidar_box = get_labels(cfg_vis.SAMPLE_INDEX, cfg_vis.DATA_DIR, split) gt_boxes_corners = boxes3d_to_corners3d_lidar(gt_lidar_box[:, :7]) points_in_boxes, points_out_boxes = utils.points_indices( points, gt_lidar_box)