Giter Club home page Giter Club logo

3d-annotation-tool's Introduction

Stray Studio - 3D Data Annotation Tool

This project is a graphical user interface for annotating point clouds and Stray scenes.

Several different label types are supported, including:

  • Bounding boxes
  • Keypoints
  • Rectangles

Bounding Box Labels

Bounding box label type

An example of a bounding box is shown above. They have the following properties:

  • class_id the class id of the label.
  • position the x, y, z position relative to the point cloud.
  • orientation the rotation that transforms vectors in the box coordinate frame to the point cloud coordinate frame.
  • dimensions three values denoting the width along the x, y and z axes in the bounding boxes local coordinate frame.

Keypoint Labels

Keypoint label type

Keypoints are individual points in the global coordinate frame. They have the following properties:

  • class_id the class id of the label.
  • position the x, y, z position in the global frame.

Rectangle Labels

Oriented rectangle label type

Rectangles, show above, are rectangular planes that have a size (height and width), an orientation and position.

The properties are:

  • class_id the class id of the label.
  • position the x, y, z position of the center in the global frame.
  • orientation the rotation taking vectors in local frame to the world frame.
  • size width and height of the rectangle.

Installation

Install Dependencies - Mac

  1. Install Homebrew: https://brew.sh/
  2. Run brew update && brew install cmake libomp eigen boost git-lfs pkg-config

Install Dependencies - Linux

  1. RUN sudo apt install libeigen3-dev libglfw3-dev libomp-dev libxinerama-dev libxcursor-dev libxi-dev git-lfs cmake libboost-all-dev

Build and install the annotation tool

  1. Get the source code git clone https://github.com/StrayRobots/3d-annotation-tool.git (requires git)
  2. Navigate to the 3d-annotation-tool directory (e.g. cd 3d-annotation-tool)
  3. Initialize git submodules with git submodule update --init --recursive
  4. Create a build directory with mkdir build
  5. Pull git-lfs objects (helper meshes etc) with git lfs install && git lfs pull
  6. To build the project run cd build && cmake .. && make -j8 (-j8 specifies the number of parallel jobs, for a fewer jobs use a lower number (than 8))
  7. The executable is called studio, it can be executed with ./studio <path-to-pointcloud>. You can find an example cloud.ply point cloud from here. <path-to-pointcloud> should then specify the absolute path to the downloaded file.

Usage

Run ./studio <path-to-pointcloud> to open a point cloud in the viewer. Currently only .ply point clouds are supported. Annotations are saved into a file of with the same filename but a .json file extension. When annotating point clouds, you can move to the next point cloud in the same directory as <path-to-pointcloud> using tab.

An example cloud.ply point cloud can be downloaded from here.

The keyboard shortcuts are:

  • ctrl+s to save the annotations.
  • k switches to the keypoint tool.
  • b switches to the bounding box tool.
  • r switches to the rectangle tool.
  • v switches to the move tool.

The Stray Toolkit

This project is part of the Stray command line interface, a toolkit to make building 3D computer vision applications easy. Stray Studio can be used through the stray studio command.

The Stray toolkit allows you to build point clouds out of handheld or robot mounted RGB-D scans. It also contains utility functions to manage datasets and export labels into commonly used formats, such as Yolo for object detection.

Running tests

In your build directory, run:

cmake .. -DBUILD_TESTS=1
make build_tests
ctest

Code formatting

Code can be formatted using clang-format.

Install clang-format on Mac (brew):

brew install clang-format

Install clang-format on Ubuntu:

sudo apt install clang-format

There's a script that runs formatting on all .h and .cc files based on the .clang-format file. Usage: ./run_formatting

3d-annotation-tool's People

Contributors

hietalajulius avatar kekeblom avatar miikkakataja avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

3d-annotation-tool's Issues

CI Pipeline builds multiple times

Would be great if the deploy action would be run after the test action and conditionally on the test action.

This has two advantages:

  • Doesn't deploy a broken build
  • No need to build the app twice from scratch on each platform.

Open cloud.ply.

Thank you very much for your work. I find it to be a very useful tool for annotating key points in PLY files.

I have completed all the installation steps without any issues on Ubuntu 22.04. However, when attempting to run studio and open the 'cloud.ply' file, the application opens briefly and then immediately closes with the following message: "Segmentation fault"

That happened with another ply files.

Do you know what the possible cause could be?

Thank you so much!

How to change keypoint sphere radius

933ae23651451dbd9b7b89dbfdf8d61
Hi, when I try to label a point cloud, the spheres representing keypoints are huge(like in the picture). This makes it difficult to label nearby keypoints.
Is there a way to make them smaller?
Thanks,
Best,
Joseph

About Install Stray Command Line Tool and Stray Studio

Thanks so much for the great softwares of stray command toolkit, however I installed this tool using the following shell command
"curl --proto '=https' --tlsv1.2 -sSf https://stray-builds.ams3.digitaloceanspaces.com/cli/install.sh | bash"
After installed, nothing works, I can't use stray command, I don't know the reason and how to make it works. So I'm looking for your kind help. My system is Linux.
Is it because that I don't have a STRAY_LICENSE_KEY=? and how can I get this ? or some other reason else.
I want use stray command toolkit to make a 3D reconstution pipeline based RGB-D sequences acquired by IPhone 12 pro device.

not responding

Run ./studio ./data/cloud.ply

notrespond

I press 'Wait' button, and wait a short while. it works normally.
I don't know why this window pops up.

This is part of the output in the terminal when the program blocks.
submodules/bgfx/bgfx/src/bgfx_p.h (4636): BGFX Creating uniform (handle 4) u_color /submodules/bgfx/bgfx/src/bgfx_p.h (4636): BGFX Creating uniform (handle 5) u_scale /submodules/bgfx/bgfx/src/bgfx_p.h (4636): BGFX Creating uniform (handle 6) u_active_point /submodules/bgfx/bgfx/src/bgfx_p.h (4636): BGFX Creating uniform (handle 7) u_rotation

Boxes often rotate to a specific angle when translating

Often, when translating a newly placed bounding box, the box will suffer a rotation, even if the disks are not hit nor was a rotation intended. See video. Not hard to reproduce on my setup if you just place some boxes and then translate them.

broken_rotate.mov

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.