Skip to main content

Simplabel

PyPI version Travis CI status License: GPL v3

Graphical tool to manually label images in distinct categories to build training datasets. Simply pass a list of categories, a directory containing images and start labelling. Supports multiple users, reconciliation and keyboard bindings to label even faster!

screenshot

Installation

Install with pip

Simplabel is on PyPI so it can be installed with pip

pip install simplabel

Install from source

Clone the repository to your computer

git clone https://github.com/hlgirard/Simplabel.git

and install with pip

cd Simplabel
pip install .

Usage

Quick start

Simplabel can be started from the command line without any argument:

simplabel

You will be prompted to select a directory containing images to label. Add labels with the '+' button and start labeling. Number keys correspond to labels and can be used instead.

The target directory and/or labels can also be passed directly from the command line:

simplabel --labels dog cat bird --directory path/to/image/directory

After the first use, labels are stored in labels.pkl and the --labels argument is ignored.

Command line arguments

  • -d, --directory <PATH/TO/DIRECTORY> sets the directory to search for images and save labels to. Defaults to the current working directory.
  • -l, --labels <label1 label2 label3 ...> sets the categories for the labelling task. Only passed on the first use in a given directory.
  • -u, --user <USERNAME> sets the username. Defaults to the OS login name if none is passed.
  • -r, --redundant does not display other labelers selections for independent labelling. Reconciliation and Make Master are unavailable in this mode.
  • -v, --verbose increases the verbosity level.
  • --remove-label <LABEL> tries to safely remove a label from the list saved in labels.pkl (must also pass -d)
  • --reset-lock overrides the lock preventing the same username from being used multiple times simultaneously.
  • --delete-all removes all files created by simplabel in the directory (must also pass -d)

Multiuser

The app relies on the filesystem to save each user's selection and display other user's selections. It works best if the working directory is on a shared drive or in a synced folder (Dropbox, Onedrive...). The Reconcile workflow allows any user to see and resolve conflicts. The Make Master option can be used to create and save a master dictionary - labeled_master.pkl - containing all labeled images (after reconciliation).

Import saved labels

The app saves a labeled_<username>.pkl file that contains a pickeled dictionary {image_name: label}. To import the dictionary, use the following sample code:

import pickle

with open("labeled_user1.pkl","rb") as f:
    label_dict = pickle.load(f)

Advanced usage

Utilities

Once you are done labelling, use the flow_to_directory tool to copy images to distinct directories by label

flow_to_directory --input-directory data/labeled --output-directory data/sorted

Python object

The Tkinter app can also be started from a python environment

from simplabel import ImageClassifier
import tkinter as tk

root = tk.Tk() 
directory = "data/raw"
categories = ['dog', 'cat', 'bird']
MyApp = ImageClassifier(root, directory, categories)
tk.mainloop()

License

This project is licensed under the GPLv3 License - see the LICENSE.md file for details.

Acknowledgements

Testing of tkinter GUI is based on ivan_pozdeev's answer at Stackoverflow:

https://stackoverflow.com/questions/4083796/how-do-i-run-unittest-on-a-tkinter-app

Metadata

Release files for simplabel 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simplabel 0.1.5
File Size Uploaded
simplabel-0.1.5.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simplabel 0.1.5
File Interpreter ABI Platform
simplabel-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 48.3 kB

Release files / simplabel-0.1.5.tar.gz

Download URL simplabel-0.1.5.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b0bf6d634ca7bc6dd774bba910e739bbcc3cc43b3d28226a6c83e53f11648e3c
BLAKE2b-256 checksum
How to use checksums
244ebfabd81bb5fe391f4506dd71e5b7cefd988e7b74d8aee675d3b013a3e3ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1

Release files / simplabel-0.1.5-py3-none-any.whl

Download URL simplabel-0.1.5-py3-none-any.whl
Size 29.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd580e29267420c5da55c47ea8d55aedd442030eb8b5ca6ab9f29387f222970f
BLAKE2b-256 checksum
How to use checksums
d95cdd5ad125b33257d56d71415e22e3f67eafef646397b875e1880ea71d825c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page