Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
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()
Пример #5
0
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")
Пример #6
0
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()
Пример #7
0
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()
Пример #8
0
            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)