EXACT (EXpert Algorithm Collaboration Tool) is a web-based platform for labeling whole slide images, 3D volumes, DICOM series, video, and standard raster images — built for multidisciplinary research teams that need version control, AI-assisted workflows, and a full REST API.
Attach structured spreadsheet data directly to any image set — a full in-browser spreadsheet editor with version history.
- CSV and XLSX import / export with a dark-themed spreadsheet editor
- Full version history with diff-based storage and one-click restore
- Per-column filtering, column reordering, hidden rows and columns
- Drag-and-drop CSV onto the imageset page to import as a table or attach as an auxiliary file
- Paste any EXACT URL into a cell — it renders as a rich reference chip ("Image set: Tumor Slides")
- Right-click context menu to insert or remove references, with a tree picker for lazy-loaded imagesets and images
- Exported XLSX files include clickable hyperlinks for all EXACT references
Superusers can temporarily act as any other user for support and debugging. A persistent banner makes the impersonation state clear; the original session is fully restored on exit.
Upload an entire DICOM series or MRXS dataset as a folder — EXACT assembles the series automatically.
A new statistics dashboard shows annotation progress per team: coverage, verification rates, and annotator breakdowns.
Full-text search within image sets (press Ctrl+F) and across teams from the main navigation.
- Refreshed imageset page with a new LightRoom v2 viewer and improved image list
- Reworked annotation type management under Products & Types
- Upload images directly from the image list view
- Image creator information shown in the viewer
- Beautified login and logout screens
- New logo
Upload .nii and .nii.gz volumetric files. The viewer renders axial slices with z-scaling from the NIfTI voxel geometry header; coronal and sagittal reconstructions use standard NIfTI coordinate remapping. Includes a z-slider for manual cross-section registration.
Passwordless login via FIDO2/WebAuthn — Windows Hello, Apple Passkeys, and hardware security keys. Users register keys in their profile and sign in with a single gesture. See Passkeys setup guide.
| Area | What EXACT provides |
|---|---|
| Image types | WSI via OpenSlide, DICOM, NIfTI (.nii/.nii.gz), CZI, CellVizio, MRXS, Olympus VSI, PNG, JPG, MP4, AVI |
| Annotation | Bounding box · circle · polygon · segmentation tiles · paint brush · scissors & glue · knife split |
| Collaboration | Teams, shared image sets, concurrent editing, annotation verification workflow |
| Version control | Full annotation history with diff-based storage and per-version links |
| Tabular data | Spreadsheet editor per image set, CSV/XLSX import/export, cell-level references |
| AI integration | Plugin system for algorithm-assisted labeling; density maps; segmentation overlays |
| Screening mode | Tile-by-tile WSI review with keyboard-driven navigation |
| REST API | Browsable DRF API + dynamic OpenAPI/Swagger schema; EXACT-Sync Python client |
| Authentication | Password, passkeys (FIDO2/WebAuthn), optional LDAP |
| Offline sync | Bidirectional sync with SlideRunner desktop tool |
| Export | Configurable export formats, annotation maps, density maps |
| Caching | Redis-backed tile and session caching — see Caching docs |
git clone https://github.com/DeepMicroscopy/Exact.git
cp exact/exact/settings.py.example exact/exact/settings.py
docker-compose -f docker-compose.yml up -d --buildNavigate to http://localhost:8000/ · Default credentials: exact / exact
cp env.dev env.prod && cp env.dev.db env.prod.db
# Edit env.prod, env.prod.db, and settings.py for your environment
docker-compose -f docker-compose.prod.yml up -d --build
docker-compose -f docker-compose.prod.yml exec web python3 manage.py migrate --noinput
docker-compose -f docker-compose.prod.yml exec web python3 manage.py createsuperuser
docker-compose -f docker-compose.prod.yml exec web python3 manage.py collectstatic --no-input --clearNavigate to http://localhost:1337/
python3 manage.py migrate
python3 manage.py compilemessages
python3 manage.py collectstaticSee UPGRADE.md for version-specific migration notes.
Expand native install instructions
Prerequisites (Ubuntu/Debian)
apt-get update && apt-get install \
python3-pip dos2unix python3-openslide python3-opencv libvips libvips-dev
sudo apt install postgresqlUbuntu 20.04: Known issue with OpenSlide — rebuild pixman to fix it.
Database
sudo -iu postgres psqlCREATE USER exact PASSWORD 'exact';
CREATE DATABASE exact WITH OWNER exact ENCODING UTF8;Application
pip3 install -r requirements.txt
cp exact/exact/settings.py.example exact/exact/settings.py
# Edit: SECRET_KEY · DEBUG · ALLOWED_HOSTS · database · UPLOAD_FS_GROUP
python3 manage.py migrate
python3 manage.py createsuperuser
python3 manage.py runserverEmail verification — add to settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.googlemail.com'
EMAIL_PORT = '587'
EMAIL_HOST_USER = 'you@gmail.com'
EMAIL_HOST_PASSWORD = 'your-password'
EMAIL_USE_TLS = True| Key | Action |
|---|---|
| Del x | Delete selected annotation |
| Escape | Cancel editing |
| Enter | Confirm / save |
| Ctrl+Z | Undo |
| c | Toggle annotation mode |
| y | Toggle annotation visibility |
| b | Push annotation type to background |
| Ctrl+A | Draw on top of existing annotation |
| 0–4 | Change local annotation label |
| Shift+0–4 | Change global annotation label |
| q / e | Previous / next image |
| Shift+q / e | Previous / next frame |
| r | Rotate image |
| f | Flip image |
| s | Scissors — delete from selection |
| g | Glue — add to selection |
| d | Knife — split object |
| Shift+scroll | Resize paint brush |
| Arrow keys | Pan viewing window |
| Ctrl+F | Search images |
| Key | Action |
|---|---|
| a / d | Screen left / right tile |
| w / s | Screen up / down tile |
| j / l | Navigate left / right tile |
| i / k | Navigate up / down tile |
- Browsable API: https://exact.cs.fau.de/api/v1/
- Python client:
pip install EXACT-Sync— GitHub · Notebooks - OpenAPI schema:
GET /api/v1/openapi— import EXACT-API.yml into Swagger Editor
Authentication
curl -X POST -H 'Content-Type: application/json' \
-d '{"username":"exact","password":"top_secret"}' \
http://127.0.0.1:8000/api/auth/token/login/Query examples
# Filter by name, expand related objects
GET /api/v1/images/image_sets/?name__contains=Tumor&expand=product_set,main_annotation_type
# Select specific fields
GET /api/v1/images/image_sets/?fields=id,name
# Exclude fields
GET /api/v1/images/image_sets/?omit=images,product_set
All available endpoints
users/users /api/v1/users/users/
users/teams /api/v1/users/teams/
users/team_membership /api/v1/users/team_membership/
images/images /api/v1/images/images/
images/image_sets /api/v1/images/image_sets/
images/set_tags /api/v1/images/set_tags/
images/screening_modes /api/v1/images/screening_modes/
annotations/annotations /api/v1/annotations/annotations/
annotations/annotation_types /api/v1/annotations/annotation_types/
annotations/verifications /api/v1/annotations/verifications/
annotations/log_image_actions /api/v1/annotations/log_image_actions/
administration/products /api/v1/administration/products/
If you use EXACT in your research, please cite:
Marzahl et al. EXACT: A collaboration toolset for algorithm-aided annotation of almost everything. Scientific Reports 11, 4343 (2021). https://doi.org/10.1038/s41598-021-83827-4
@Article{marzahl2021exact,
title = {EXACT: a collaboration toolset for algorithm-aided annotation of images with annotation version control},
author = {Marzahl, Christian and Aubreville, Marc and Bertram, Christof A. and Maier, Jennifer
and Bergler, Christian and Kr{\"o}ger, Christine and Voigt, J{\"o}rn
and Breininger, Katharina and Klopfleisch, Robert and Maier, Andreas},
journal = {Scientific Reports},
year = {2021},
volume = {11},
pages = {4343},
doi = {10.1038/s41598-021-83827-4}
}Built on imagetagger by Fiedler et al. (RoboCup 2018).
Notebooks for API usage, inference, segmentation, density maps, cluster workflows, and more live in doc/ and can be viewed at NBViewer.
Video tutorials (older, cover core features)
Dependencies
| Library | License |
|---|---|
| Django | BSD |
| djangorestframework | BSD |
| OpenSlide Python | LGPL 2.1 |
| OpenSeadragon | BSD-3 |
| numpy | BSD |
| opencv-python | MIT |
| Pillow | PIL License |
| openpyxl | MIT |
| Bootstrap | BSD |
| jQuery | MIT |
| nibabel | MIT |
| psycopg2 | LGPL |
| gunicorn | MIT |
MIT License · © DeepMicroscopy · exact.cs.fau.de











