3D detection and tracking viewer (visualization) for kitti & waymo dataset

Overview

3D Detection & Tracking Viewer

This project was developed for view 3D object detection and tracking results. It supports rendering 3D bounding boxes as car models and rendering boxes on images.

Features

  • Rendering boxes as cars
  • Captioning box ids(infos) in 3D scene
  • Projecting 3D box or points on 2D image

Design pattern

This code includes two parts, one for data loading, other one for visualization of 3D detection and tracking results. The overall framework of design is as shown below:

Prepare data

  • Kitti detection dataset
# For Kitti Detection Dataset         
└── kitti_detection
       ├── testing 
       |      ├──calib
       |      ├──image_2
       |      ├──label_2
       |      └──velodyne      
       └── training
              ├──calib
              ├──image_2
              ├──label_2
              └──velodyne 
  • Kitti tracking dataset
# For Kitti Tracking Dataset         
└── kitti_tracking
       ├── testing 
       |      ├──calib
       |      |    ├──0000.txt
       |      |    ├──....txt
       |      |    └──0028.txt
       |      ├──image_02
       |      |    ├──0000
       |      |    ├──....
       |      |    └──0028
       |      ├──label_02
       |      |    ├──0000.txt
       |      |    ├──....txt
       |      |    └──0028.txt
       |      └──velodyne
       |           ├──0000
       |           ├──....
       |           └──0028      
       └── training # the structure is same as testing set
              ├──calib
              ├──image_02
              ├──label_02
              └──velodyne 
  • Waymo dataset

Please refer to the OpenPCDet for Waymo dataset organization.

Requirements

python3
numpy
vedo
vtk
opencv
matplotlib

Usage

1. Set boxes type & viewer background color

Currently this code supports Kitti (h,w,l,x,y,z,yaw) and Waymo OpenPCDet (x,y,z,l,w,h,yaw) box type. You can set the box type and background color when initializing a viewer as

from viewer.viewer import Viewer

vi = Viewer(box_type="Kitti",bg = (255,255,255))

2. Set objects color map

You can set the objects color map for view tracking results, same as matplotlab.pypot color map. The common used color maps are "rainbow", "viridis","brg","gnuplot","hsv" and etc.

vi.set_ob_color_map('rainbow')

3. Add colorized point clouds to 3D scene

The viewer receive a set of points, it must be a array with shape (N,3). If you want to view the scatter filed, you should to set the 'scatter_filed' with a shape (N,), and set the 'color_map_name' to specify the colors. If the 'scatter_filed' is None, the points will show in color of 'color' arg.

vi.add_points(points[:,0:3],
               radius = 2,
               color = (150,150,150),
               scatter_filed=points[:,2],
               alpha=1,
               del_after_show='True',
               add_to_3D_scene = True,
               add_to_2D_scene = True,
               color_map_name = "viridis")

4. Add boxes or cars to 3D scene

The viewer receive a set of boxes, it must be a array with shape (N,7). You can set the boxes to meshes or lines only, you also can set the line width, conner points. Besides, you can provide a set of IDs(int) to colorize the boxes, and put a set of additional infos to caption the boxes. Note that, the color will set to the color of "color" arg if the ids is None.

vi.add_3D_boxes(boxes=boxes[:,0:7],
                 ids=ids,
                 box_info=infos,
                 color="blue",
                 add_to_3D_scene=True,
                 mesh_alpha = 0.3,
                 show_corner_spheres = True,
                 corner_spheres_alpha = 1,
                 corner_spheres_radius=0.1,
                 show_heading = True,
                 heading_scale = 1,
                 show_lines = True,
                 line_width = 2,
                 line_alpha = 1,
                 show_ids = True,
                 show_box_info=True,
                 del_after_show=True,
                 add_to_2D_scene=True,
                 caption_size=(0.05,0.05)
                 )

You can also render the boxes as cars, the input format is same as boxes.

vi.add_3D_cars(boxes=boxes[:,0:7],
                 ids=ids,
                 box_info=infos,
                 color="blue",
                 mesh_alpha = 1,
                 show_ids = True,
                 show_box_info=True,
                 del_after_show=True,
                 car_model_path="viewer/car.obj",
                 caption_size = (0.1, 0.1)
                )

5. View boxes or points on image

To view the 3D box and points on image, firstly should set the camera intrinsic, extrinsic mat, and put a image. Besides, when adding the boxes and points, the 'add_to_2D_scene' should be set to True.

vi.add_image(image)
vi.set_extrinsic_mat(V2C)
vi.set_intrinsic_mat(P2)

6. Show 2D and 3D results

To show a single frame, you can directly run vi.show_2D(), vi.show_3D(). The visualization window will not close until you press the "Enter" key. Please zoom out the 3D scene by scrolling the middle mouse button backward, and then you can see the point cloud in this window. You can change the viewing angle by dragging the mouse within the visualization window.

To show multiple frames, you can use the for loop, and press the "Enter" key to view a sequence data.

for i in range(len(dataset)):
    V2C, P2, image, boxes = dataset[i]
    vi.add_3D_boxes(boxes)
    vi.add_image(image)
    vi.set_extrinsic_mat(V2C)
    vi.set_intrinsic_mat(P2)
    vi.show_2D()
    vi.show_3D()
Comments
  • about continuous display

    about continuous display

    Hi@hailanyi , thank you for your work.i got problem in viewing a sequence data and pressing "Enter" key did not work. How can i realize continuous display as the gif in Readme.md? looking forward to your reply!

    opened by Typolo 8
  • draw motion track

    draw motion track

    Hello, your paper also shows the motion trajectory drawn by you. I would like to ask if you can provide the relevant code for drawing the motion trajectory?

    opened by ynlx 2
  • code reference代码引用

    code reference代码引用

    Hello, I referenced and modified your code For visualizing the dair-v2x-i dataset. This is my new project address, please check if my citations are in compliance with the specification, please let me know if you have any questions. https://github.com/huahuasousou/dair_v2x_i_dataset_vis

    你好,我引用并修改了你的代码用于可视化dair-v2x-i dataset。这是我的新项目地址,请你检查我的引用是否符合规范,如果有任何问题欢迎告诉我。 https://github.com/huahuasousou/dair_v2x_i_dataset_vis

    opened by huahuasousou 1
  • There was a problem running the code

    There was a problem running the code "python kitti_3D_tracking_viewer.py "

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    QObject::moveToThread: Current thread (0x55ef01481c50) is not the object's thread (0x55ef0147e250). Cannot move to target thread (0x55ef01481c50)

    opened by stidk 0
  •  visualize people and cyclist?

    visualize people and cyclist?

    Thank you for sharing such excellent results! I was wondering if it is possible to visualize pedestrians and cyclist?? This is very important to me! Looking forward to your reply. Thank you very much!

    opened by clytze0216 0
Owner
null
Waymo motion prediction challenge 2021: 3rd place solution

Waymo motion prediction challenge 2021: 3rd place solution ?? Technical report ??️ Presentation ?? Announcement ??Motion Prediction Channel Website ??

null 158 Jan 8, 2023
Joint detection and tracking model named DEFT, or ``Detection Embeddings for Tracking.

DEFT: Detection Embeddings for Tracking DEFT: Detection Embeddings for Tracking, Mohamed Chaabane, Peter Zhang, J. Ross Beveridge, Stephen O'Hara

Mohamed Chaabane 253 Dec 18, 2022
pq is a jq-like Pickle file viewer

pq PQ is a jq-like viewer/processing tool for pickle files. howto # pq '' file.pkl {'other': 456, 'test': 123} # pq 'table' file.pkl |other|test| | 45

null 3 Mar 15, 2022
Tracking code for the winner of track 1 in the MMP-Tracking Challenge at ICCV 2021 Workshop.

Tracking Code for the winner of track1 in MMP-Trakcing challenge This repository contains our tracking code for the Multi-camera Multiple People Track

DamoCV 29 Nov 13, 2022
Tracking Pipeline helps you to solve the tracking problem more easily

Tracking_Pipeline Tracking_Pipeline helps you to solve the tracking problem more easily I integrate detection algorithms like: Yolov5, Yolov4, YoloX,

VNOpenAI 32 Dec 21, 2022
Quadruped-command-tracking-controller - Quadruped command tracking controller (flat terrain)

Quadruped command tracking controller (flat terrain) Prepare Install RAISIM link

Yunho Kim 4 Oct 20, 2022
Python package for multiple object tracking research with focus on laboratory animals tracking.

motutils is a Python package for multiple object tracking research with focus on laboratory animals tracking. Features loads: MOTChallenge CSV, sleap

Matěj Šmíd 2 Sep 5, 2022
Dataset used in "PlantDoc: A Dataset for Visual Plant Disease Detection" accepted in CODS-COMAD 2020

PlantDoc: A Dataset for Visual Plant Disease Detection This repository contains the Cropped-PlantDoc dataset used for benchmarking classification mode

Pratik Kayal 109 Dec 29, 2022
Neurons Dataset API - The official dataloader and visualization tools for Neurons Datasets.

Neurons Dataset API - The official dataloader and visualization tools for Neurons Datasets. Introduction We propose our dataloader API for loading and

null 1 Nov 19, 2021
This project deals with the detection of skin lesions within the ISICs dataset using YOLOv3 Object Detection with Darknet.

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. Skin Lesion detection using YOLO This project deal

Lalith Veerabhadrappa Badiger 1 Nov 22, 2021
Facial detection, landmark tracking and expression transfer library for Windows, Linux and Mac

Welcome to the CSIRO Face Analysis SDK. Documentation for the SDK can be found in doc/documentation.html. All code in this SDK is provided according t

Luiz Carlos Vieira 7 Jul 16, 2020
Object tracking and object detection is applied to track golf puts in real time and display stats/games.

Putting_Game Object tracking and object detection is applied to track golf puts in real time and display stats/games. Works best with the Perfect Prac

Max 1 Dec 29, 2021
Official PyTorch implementation of Joint Object Detection and Multi-Object Tracking with Graph Neural Networks

This is the official PyTorch implementation of our paper: "Joint Object Detection and Multi-Object Tracking with Graph Neural Networks". Our project website and video demos are here.

Richard Wang 443 Dec 6, 2022
Object Detection and Multi-Object Tracking

Object Detection and Multi-Object Tracking

Bobby Chen 1.6k Jan 4, 2023
CenterPoint 3D Object Detection and Tracking using center points in the bird-eye view.

CenterPoint 3D Object Detection and Tracking using center points in the bird-eye view. Center-based 3D Object Detection and Tracking, Tianwei Yin, Xin

Tianwei Yin 134 Dec 23, 2022
People movement type classifier with YOLOv4 detection and SORT tracking.

Movement classification The goal of this project would be movement classification of people, in other words, walking (normal and fast) and running. Yo

null 4 Sep 21, 2021
pcnaDeep integrates cutting-edge detection techniques with tracking and cell cycle resolving models.

pcnaDeep: a deep-learning based single-cell cycle profiler with PCNA signal Welcome! pcnaDeep integrates cutting-edge detection techniques with tracki

ChanLab 8 Oct 18, 2022
Implementing yolov4 target detection and tracking based on nao robot

Implementing yolov4 target detection and tracking based on nao robot

null 6 Apr 19, 2022
Vehicle direction identification consists of three module detection , tracking and direction recognization.

Vehicle-direction-identification Vehicle direction identification consists of three module detection , tracking and direction recognization. Algorithm

null 5 Nov 15, 2022