{"id":21459896,"url":"https://github.com/hlgirard/simplabel","last_synced_at":"2025-07-15T02:31:56.071Z","repository":{"id":57467266,"uuid":"167427136","full_name":"hlgirard/Simplabel","owner":"hlgirard","description":"Simple tool to manually label images in disctinct categories.","archived":false,"fork":false,"pushed_at":"2021-01-17T16:54:16.000Z","size":16240,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-05T00:50:06.966Z","etag":null,"topics":["gui","labeling-tool","python","training-dataset"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hlgirard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-24T19:48:47.000Z","updated_at":"2024-07-12T15:01:51.000Z","dependencies_parsed_at":"2022-09-10T03:42:45.647Z","dependency_job_id":null,"html_url":"https://github.com/hlgirard/Simplabel","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/hlgirard/Simplabel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlgirard%2FSimplabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlgirard%2FSimplabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlgirard%2FSimplabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlgirard%2FSimplabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hlgirard","download_url":"https://codeload.github.com/hlgirard/Simplabel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlgirard%2FSimplabel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265390885,"owners_count":23757605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","labeling-tool","python","training-dataset"],"created_at":"2024-11-23T06:36:58.402Z","updated_at":"2025-07-15T02:31:51.919Z","avatar_url":"https://github.com/hlgirard.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simplabel\n[![PyPI version](https://badge.fury.io/py/simplabel.svg)](https://pypi.org/project/simplabel/)\n[![Travis CI status](https://travis-ci.com/hlgirard/Simplabel.svg?branch=master)](https://travis-ci.com/hlgirard/Simplabel/branches)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/hlgirard/Simplabel/blob/master/LICENSE)\n\nGraphical tool to manually label images in distinct categories to build training datasets.\nSimply pass a list of categories, a directory containing images and start labelling.\nSupports multiple users, reconciliation and keyboard bindings to label even faster!\n\n![screenshot](docs/screenshot_190404.png)\n\n## Installation\n\n### Install with pip\n\nSimplabel is on PyPI so it can be installed with pip\n\n```\npip install simplabel\n```\n\n### Install from source\n\nClone the repository to your computer\n\n```\ngit clone https://github.com/hlgirard/Simplabel.git\n```\n\nand install with pip \n\n```\ncd Simplabel\npip install .\n```\n\n## Usage\n\n### Quick start\n\nSimplabel can be started from the command line without any argument:\n```\nsimplabel\n```\nYou 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.\n\nThe target directory and/or labels can also be passed directly from the command line:\n```\nsimplabel --labels dog cat bird --directory path/to/image/directory\n```\n\nAfter the first use, labels are stored in `labels.json` and the `--labels` argument is ignored.\n\n### Command line arguments\n\n- `-d, --directory \u003cPATH/TO/DIRECTORY\u003e` sets the directory to search for images and save labels to. Defaults to the current working directory.\n- `-l, --labels \u003clabel1 label2 label3 ...\u003e` sets the categories for the labelling task. Only passed on the first use in a given directory.\n- `-u, --user \u003cUSERNAME\u003e` sets the username. Defaults to the OS login name if none is passed.\n- `-r, --redundant` does not display other labelers selections for independent labelling. Reconciliation and Make Master are unavailable in this mode.\n- `-v, --verbose` increases the verbosity level.\n- `--remove-label \u003cLABEL\u003e` tries to safely remove a label from the list saved in `labels.json` (must also pass `-d`)\n- `--reset-lock` overrides the lock preventing the same username from being used multiple times simultaneously.\n- `--delete-all` removes all files created by simplabel in the directory (must also pass `-d`)\n\n### Multiuser\n\nThe 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.json` - containing all labeled images (after reconciliation).\n\n### Import saved labels\n\nThe app saves a `labeled_\u003cusername\u003e.json` file that contains a jsonified dictionary {image_name: label}. To import the dictionary, use the following sample code:\n\n```python\nimport json\n\nwith open(\"labeled_user1.json\",\"rb\") as f:\n    label_dict = json.load(f)\n```\n\n## Advanced usage\n\n### Utilities\n\nOnce you are done labelling, use the flow_to_directory tool to copy images to distinct directories by label\n\n```\nflow_to_directory --input-directory data/labeled --output-directory data/sorted\n```\n\n### Python object\n\nThe Tkinter app can also be started from a python environment\n\n```python\nfrom simplabel import ImageClassifier\nimport tkinter as tk\n\nroot = tk.Tk() \ndirectory = \"data/raw\"\ncategories = ['dog', 'cat', 'bird']\nMyApp = ImageClassifier(root, directory, categories)\ntk.mainloop()\n```\n\n## License\n\nThis project is licensed under the GPLv3 License - see the [LICENSE.md](LICENSE.md) file for details.\n\n## Acknowledgements\n\nTesting of tkinter GUI is based on ivan_pozdeev's answer at Stackoverflow:\n\nhttps://stackoverflow.com/questions/4083796/how-do-i-run-unittest-on-a-tkinter-app\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhlgirard%2Fsimplabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhlgirard%2Fsimplabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhlgirard%2Fsimplabel/lists"}