Skip to content
An open source online platform for collaborative image labeling
HTML Python JavaScript CSS
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
imagetagger upload: fix call to missing peek method Oct 13, 2019
util for debugging datasets Jul 19, 2017
.gitignore Improves style Nov 15, 2018
LICENSE Initial commit Nov 17, 2016 Add information about storage requirements of zip archives Nov 21, 2018 Fix UPGRADE instructions Jun 27, 2018 Add the possibility to download zip archives (closes #67) Nov 21, 2018


This is a collaborative online tool for labeling image data.

If you are participating in RoboCup, you should not install your own instance but rather use the one provided by the Hamburg Bit-Bots ( This enables you to use already labeled images from other teams and to share your own.

For a short overview of the functions please have a look at the following poster:


  • team creation
  • image sets
  • bounding box, polygon, line and point labeling
  • imageset download
  • export format creation
  • label export
  • image preloading for labeling and verification
  • label verification
  • upload of existing labels
  • tools exchange

Planned Features

  • collections of filtered images from multiple imagesets
  • image metadata (e.g. robot pose, camera parameters)


This paper describes the Bit-Bots Imagetagger more in depth. Please cite if you use this tool in your research:

FIEDLER, Niklas, et al. ImageTagger: An Open Source Online Platform for Collaborative Image Labeling. In: RoboCup 2018: Robot World Cup XXII. Springer, 2018.

   author={Fiedler, Niklas and Bestmann, Marc and Hendrich, Norman},
   title={ImageTagger: An Open Source Online Platform for Collaborative Image Labeling},
   booktitle={RoboCup 2018: Robot World Cup XXII},


pip install -U -r requirements.txt
./ migrate

for additional steps on some releases see instructions in


Checkout the latest release:

git checkout v0.x

In our production Senty is used for error reporting (pip install raven). django-auth-ldap is used for login via ldap uwsgi is used to serve the app to nginx

Install Python Dependencies:

pip3 install -r requirements.txt

Copy to in the imagetagger folder:

cp imagetagger/ imagetagger/

and customize the

The following settings should probably be changed:

  • The secret key
  • The DEBUG setting
  • The database settings
  • The UPLOAD_FS_GROUP to the id of the group that should access and create the uploaded images

For the database, postgresql is used. Install it by running sudo apt install postgresql

Initialize the database cluster with sudo -iu postgres initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'

To start the postgresql server, run sudo systemctl start postgresql.service. If the server should always be started on boot, run sudo systemctl enable postgresql.service.

Then, create the user and the database by running

sudo -iu postgres psql

and then, in the postgres environment

CREATE USER imagetagger PASSWORD 'imagetagger';

where of course the password and the user should be adapted to the ones specified in the database settings in the

To initialize the database, run ./ migrate

To create an administrator user, run ./ createsuperuser.

./ runserver starts the server with the configuration given in the file.

To create annotation types, log into the application and click on Administration at the very bottom of the home page.

For production systems it is necessary to run the following commands after each upgrade

./ migrate
./ compilemessages
./ collectstatic

Our production uwisgi config can be found at

Example Nginx Config:

server {
        listen 443;

        ssl_certificate /etc/letsencrypt/certs/;
        ssl_certificate_key /etc/letsencrypt/certs/;
        include /etc/nginx/ssl.conf;
        include /etc/nginx/acme.conf;
        ssl on;

        client_max_body_size 4G;

        access_log /var/log/nginx/;
        error_log /var/log/nginx/;

        location /static {
                expires 1h;
                alias /var/www/imagetagger;

        location /ngx_static_dn/ {
                alias /srv/data/imagetagger/storage/pictures/;

        location / {
                include uwsgi_params;
                uwsgi_read_timeout 120;

If you want to provide zip files of image sets, set ENABLE_ZIP_DOWNLOAD = True in your A daemon that creates and updates the zip files is necessary, you can start it with ./ runzipdaemon. Please take into account that the presence of zip files will double your storage requirement.

Zip archive download via a script is also possible. The URL is /images/imageset/<id>/download/. A successful request returns HTTP 200 OK and the zip file. When the file generation is still in progress, HTTP 202 ACCEPTED is returned. For an empty image set, HTTP 204 NO CONTENT is returned instead of an empty zip archive.

Used dependencies

The ImageTagger relies on the following plugins, libraries and frameworks:

We are grateful to the maintainers and contributors of the respective projects.

You can’t perform that action at this time.