<p align="center" width="100%">
<img width="33%" src="https://github.com/walzimmer/bat-3d/blob/master/assets/img/3d-bat.png">
</p>
# 3D Bounding Box Annotation Tool (3D BAT)
![3D Bounding Box Annotation Tool](https://github.com/walzimmer/bat-3d/blob/master/assets/img/3d_boxes.png)
# Installation
1. Clone repository: `git clone https://github.com/walzimmer/bat-3d.git`
2. Install npm
+ Linux: `sudo apt-get install npm`
+ Windows: https://nodejs.org/dist/v10.15.0/node-v10.15.0-x86.msi
3. Install PHP Storm or WebStorm (IDE with integrated web server): https://www.jetbrains.com/phpstorm/download/download-thanks.html
4. [OPTIONAL] Install WhatPulse to measure the number of clicks and key strokes while labeling: https://whatpulse.org/
5. Open folder `bat-3d` in PHP Storm.
5. Move into directory: `cd bat-3d`.
6. Download sample scenes extracted from the NuScenes dataset from [here](https://github.com/walzimmer/bat-3d/releases/download/v0.1.0/NuScenes.zip) and extract the content into the `bat-3d/input/` folder.
7. Install required packages: `npm install`
8. Open `index.html` with chromium-browser (Linux) or Chrome (Windows) within the IDE. Right click on index.html -> Open in Browser -> Chrome/Chromium
# Overview
![Overview](https://github.com/walzimmer/bat-3d/blob/master/assets/img/overview.png)
# Paper
![Paper](https://github.com/walzimmer/bat-3d/blob/master/assets/img/paper.png)
Reference: https://arxiv.org/abs/1905.00525
# Animation
![Animation](https://github.com/walzimmer/bat-3d/blob/master/assets/img/animation.gif)
# Video
![Video](https://github.com/walzimmer/bat-3d/blob/master/assets/img/video.png)
Link: https://www.youtube.com/watch?v=gSGG4Lw8BSU
# Annotate your own data (point cloud and image or point cloud only)
To annotate your own data, follow this steps:
1. Create a new folder under the input folder (e.g. `bat-3d/input/waymo`)
2. For each annotation sequence create a separate folder e.g.
`input/waymo/20210103_waymo`
`input/waymo/20210104_waymo`
3. Under each sequence create the following folders:
`input/waymo/20210103_waymo/annotations` (this folder will contain the downloaded annotations)
`input/waymo/20210103_waymo/point_clouds` (place your point cloud scans (in `.pcd` ascii format) here)
`input/waymo/20210103_waymo/point_clouds_without_ground` (optional: Remove the ground using the `scripts/nuscenes_devkit/python-sdk/scripts/export_pointcloud_without_ground_nuscenes.py` script to use the checkbox "Filter ground". Change the threshold of -1.7 to the height of the LiDAR sensor.)
`input/waymo/20210103_waymo/images` (optional: For each camera image, create a folder: e.g. `CAM_BACK`, `CAM_BACK_LEFT`, `CAM_BACK_RIGHT`, `CAM_FRONT`, `CAM_FRONT_LEFT`, `CAM_FRONT_RIGHT`)
Make sure, that the LiDAR scan file names follow this naming format `000000.pcd, 000001.pcd, 000002.pcd` and so on. Same for image file names: `000000.png, 000001.png, 000002.png`) and the annotation file names: `000000.json, 000001.json, 000002.json`).
4. When annotating only point cloud data, make sure to set this variable to `true` in `js/base_label_tool.js`:
`pointCloudOnlyAnnotation: true`
5. Open the annotation tool in you web browser and change the dataset from NuScenes to your own dataset (e.g. waymo) in the drop down field.
# 3D Bounding Box Labelling Instructions
1. Watch raw video (10 sec) to get familiar with the sequence and to see where interpolation makes sense
2. Watch tutorial videos to get familiar with (translation/scaling/rotating objects, interpolation and how to use helper views)
3. Start WhatPulse. Login with koyunujiju@braun4email.com and password: labeluser
4. Draw bounding box in the Bird's-Eye-View (BEV)
5. Move/Scale it in BEV using 3D arrows (drag and drop) or sliders
6. Choose one of the 5 classes (Car, Pedestrian, Cyclist, Motorbike, Truck)
7. Interpolate if necessary
1. Select Object to interpolate by clicking on a Bounding Box
2. Activate 'Interpolation Mode' in the menu (checkbox) -> start position will be saved
3. Move to desired frame by skipping x frames
4. Translate object to new position
5. Click on the 'Interpolate' button in the menu
8. Repeat steps 4-7 for all objects in the sequence
9. Download labels to your computer (JSON file)
10. Stop the time after labeling is done.
11. Make screenshots of keyboard and mouse heat map, record number of clicks and keystrokes
# Keyboard Shortcuts
| Key | Description | |
| --- | ------------- |---|
| ![V](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/c.png) | Toggle view (3D view/Bird's-Eye-View)||
| | ![W](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/w.png) | Move forward in 3D view (TODO)|
| | ![A](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/a.png) | Move left in 3D view (TODO)|
| | ![S](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/s.png) | Move backward in 3D view (TODO)|
| | ![D](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/d.png) | Move right in 3D view (TODO)|
| | ![Q](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/q.png) | Move down in 3D view (TODO)|
| | ![E](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/e.png) | Move up in 3D view (TODO)|
| ![C](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/c.png) | Enlarge camera image||
| ![N](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/n.png) | Next frame ||
| ![P](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/p.png) | Previous frame ||
| ![I](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/i.png) | Interpolate ||
| ![CTRL](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/ctrl.png)![MOUSELEFT](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/mouseleft.png) | Snap to grid in 0.5m steps (floor alignment mode) ||
| ![T](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/t.png) | Enable/Disable Translation mode||
| | ![W](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/w.png) | Move selected object forward (TODO)|
| | ![A](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/a.png) | Move selected object to left (TODO)|
| | ![S](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/s.png) | Move selected object backward (TODO)|
| | ![D](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/d.png) | Move selected object to right (TODO)|
| | ![Q](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/q.png) | Move selected object down (TODO)|
| | ![E](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/e.png) | Move selected object up (TODO)|
| ![R](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/r.png) | Enable/Disable Rotation mode||
| | ![LEFT](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/left.png) | Rotate selected object counter-clock-wise (TODO)|
| | ![RIGHT](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/right.png) | Rotate selected object clock-wise (TODO)|
| ![Y](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/y.png) | Enable/Disable Scaling mode ||
| | ![UP](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/up.png) | Increase length along longitudinal axis (y-axis) (TODO)|
| | ![DOWN](https://github.com/walzimmer/bat-3d/blob/master/assets/textures/keyboard_small/down.png) | Decrease length along longitudinal axis (y-axis) (TODO)|
|
快撑死的鱼
- 粉丝: 1w+
- 资源: 9149
最新资源
- OpenCV开发资源.txt
- YOLO v3 的 PyTorch 实现,包括训练和测试,并可适用于用户定义的数据集.zip
- 安卓开发学习资源.txt
- yolo v3 物体检测系统的 Go 实现.zip
- YOLO v1 pytorch 实现.zip
- python爱心代码高级.txt
- Yolo for Android 和 iOS - 用 Kotlin 和 Swift 编写的实时移动深度学习对象检测.zip
- Yolnp 是一个基于 YOLO 检测车牌的项目.zip
- Unity Barracuda 上的 Tiny YOLOv2.zip
- Ultralytics YOLO iOS App 源代码可用于在你自己的 iOS 应用中运行 YOLOv8.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈