/sia

Service for Interactive Annotation

Primary LanguagePythonMIT LicenseMIT

Webserver for Human-in-the-Loop Active learning.

The Kaizen Query Response UI

For further info on the use of this system, please see the following papers:

Tropel: Crowdsourcing Detectors with Minimal Training

Kaizen: The Crowd Pathologist

Contents of this Repo

LICENSE - Open source
README - This file
app - The main flask webserver
bin - scripts for setting up db, recreating, and running main server
test - unit tests
utils - utility functions for computer vision and feature extraction
tasks.py - jobs for the Celery task queue
extract.py - functions for extracting features
requirements.txt - python requirements
Dockerfile - instructions for Dockerizing this repo

Set up venv:

mkvirtualenv kaizen # this app tested with Python3.9 pip install -r requirements.txt

To restart venv:

workon kaizen

To add to python requirements:

pip freeze > requirements.txt

Setup the configuration parameters:

cp config-example.py config.py

Then edit the config.py file to suit your environment.

Add this repo to your PYTHONPATH:

export APPROOT=/Users/$USER/kaizen # this is an example of where the app might be. export PYTHONPATH= $APPROOT:$PYTHONPATH

Setup the postgres database:

createdb APPNAME-local # APPNAME should match that set in config.py

If you'd like to blow away the db:

dropdb APPNAME-local

Setup default objects in the database:

chmod +x ./bin/setup_database.py ./bin/setup_database.py

Load some data to play with:

chmod +x bin/forge.py ./bin/forge.py

Start Task Queue

Start the Celery server to manage new tasks from the Flask app:

celery -A tasks.celery worker --loglevel=debug

Start App Server

Run Server:

flask run

Unit Testing

Tests are in the tests directory

cd tests Run unit test classes using: python -m unittest unit_tests.py

The forge functions also serve as system tests.

License

This project is licensed under the MIT License (see the LICENSE file for details).