Home

Awesome

<p align="center"> <img src="src/main/resources/icons/app_icon.svg" height= "80" width="80" alt="Bounding Box Editor Icon"> <br/> <img src="demo-media/logo-text.svg" height="30" alt="Bounding Box Editor"> </p> <p align="center"> <a href="https://github.com/mfl28/BoundingBoxEditor/actions"> <img src="https://github.com/mfl28/BoundingBoxEditor/workflows/Build/badge.svg" alt="Build Status"> </a> <a href="https://codecov.io/gh/mfl28/BoundingBoxEditor"> <img src="https://codecov.io/gh/mfl28/BoundingBoxEditor/branch/master/graph/badge.svg" alt="Codecov Coverage (master)"> </a> <a href="https://sonarcloud.io/dashboard?id=mfl28_BoundingBoxEditor"> <img src="https://sonarcloud.io/api/project_badges/measure?project=mfl28_BoundingBoxEditor&metric=alert_status" alt="Quality Gate Status"> </a> <a href="https://github.com/mfl28/BoundingBoxEditor/actions/workflows/codeql.yml"> <img src="https://github.com/mfl28/BoundingBoxEditor/actions/workflows/codeql.yml/badge.svg" alt="CodeQL"> </a> <img src="https://img.shields.io/github/downloads/mfl28/boundingboxeditor/total" alt="Github all releases"> <a href="https://github.com/mfl28/BoundingBoxEditor/releases/latest"> <img src="https://img.shields.io/github/v/release/mfl28/BoundingBoxEditor?label=release" alt="GitHub Release (latest by date)"> </a> <a href="LICENSE"> <img src="https://img.shields.io/badge/license-GPLv3-informational" alt="License"> </a> </p>

This is an image annotation desktop-application written in Java using the JavaFX application platform. It allows you to create bounding box annotations using rectangular and polygonal shapes. Annotations can be imported and saved from/to JSON files, Pascal VOC format XML-files or YOLO format TXT-files.

<p align="center"> <img src="demo-media/demo_v2_0_0.png" align="center"> </br> <em>Demo screenshot of release v2.0.0.</em> </p>

Main Features

Latest Release

GitHub release (latest by date) platform

Download the latest release installer or portable image (no installation required) of Bounding Box Editor for your operating system from the links below. These files were created using the jpackage packaging tool, the Badass JLink Gradle plugin and github-actions.

OSInstallerPortableStats
Linuxdeb, rpmimageGitHub release (latest by SemVer and asset)
macOSdmgimageGitHub release (latest by SemVer and asset)
WindowsexeimageGitHub release (latest by SemVer and asset)

Alternative installation methods

Windows

Chocolatey Version (including pre-releases)

choco install boundingboxeditor

How to use the application

Please refer to the User Manual in the Wiki for a detailed usage guide and presentation (including gifs) of the application's main functions.

Using annotations for object detection

After having created annotations for your images, you can use the saved bounding boxes as ground-truths in the training and evaluation of neural networks in order to perform object-detection tasks. How this can be done for any kind of labeled objects using Python and the Pytorch deep learning library is shown exemplarily in the Humpback Whale Fluke Detection - Jupyter notebook which you can find in my Machine Learning repo.

How to build the application

The project uses Gradle as build-system. You will need to have Gradle version 5+ and a Java JDK version 11+ installed on your system, e.g. from OpenJDK. After cloning the repository into a folder on your machine you may build the application from the root folder by opening a command line and using:

gradlew build # Add "-x test" to skip the UI-tests.

Note: The concrete way of invoking gradlew depends on your OS and used command line:

How to run the application

To run the app using Gradle, use:

gradlew run

How to run the tests

The project comes equipped with automatic UI-tests which use TestFX and the JUnit 5 testing frameworks. Due to some used functionality in the implemented tests it is (currently) not possible to run the tests in headless mode.

To run the tests, use :

gradlew test

How to build the latest Linux image and installers using Docker

First build the Docker image from the cloned repo's root directory using:

docker image build -t bbeditor .

Then create a writable container layer over the image (without starting a container):

docker container create --name bbeditor bbeditor

Finally, copy the directory containing the build artifacts to the host:

docker container cp bbeditor:/artifacts .

Alternative:
If you have a recent Docker version that supports BuildKit engine (version >= 19.03) you can do the whole build using a one-line command:

DOCKER_BUILDKIT=1 docker image build --target artifacts --output type=local,dest=. . 

Acknowledgements

License

This project is licensed under GPL v3. See LICENSE.