Web-Based Manual Image Tagger for Training Custom Stable Diffusion LORAs & DreamBooth Models
![Screenshot of Candy Machine](assets/candy-machine.png)
Candy Machine is a nascent image tagger for manually tagging small datasets (< 1k images) with .txt
caption files:
-
Customizable tag layout for consistent tagging
-
Placeholder tag templates: i.e.
{type} clothes
, where{type}
can be specified when adding a tag -
In-built image editing (crop, rotate and flip horizontal)
-
Tag suggestions using
wd-v1-4-convnext-tagger.v3
when creating a new project -
Automatic file conversion to .png from .webp, .avif, .gif, etc
-
Progress % pie chart - for those times when you wonder 'am I done yet?!'
-
Keyboard shortcuts - press '?' for a list
-
and more coming soon!
Candy Machine runs entirely on your local machine in "single player" mode. No information is transmitted to any 3rd party system.
![Edit Image Screenshot](assets/image-editor.png)
I was inspired by this Reddit post about how to best tag small image datasets, focusing mainly on consistency.
I've also never loved the "fiddly" parts of building a dataset - converting images, renaming them, cropping etc. I want to make building datasets quick, easy and, who knows, maybe even fun!
H/T to BinaryAlley also for their prototype.
- Git
- Python 3
This software is entirely free for personal, non-commercial use. If you're using it in a business context or for commercial use (i.e. to make money from it), please contact me to arrange a paid license. This will help support my development costs.
git clone [email protected]:mikeknapp/candy-machine.git
cd candy-machine
run
A browser window should automatically open: http://127.0.0.1:5000/
(Note, I haven't tested this yet, there may be bugs!)
git clone [email protected]:mikeknapp/candy-machine.git
cd candy-machine
chmod +x run.sh
./run.sh
A browser window should automatically open: http://127.0.0.1:5000/
Requires CUDA 12.2 and cuDNN8.x.
-
Activate the Python venv. (Look inside run.bat for clues on how to do that.)
-
Install
onnxruntime-gpu
pip install onnxruntime-gpu --extra-index-url \
https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
-
Can't edit a project's tag layout or the default tag layout inside the app. (Workaround: edit
default_categories.json
in the server directory, or a project'scategories.json
. For the latter, be sure not to remove tags that are being actively used, otherwise they will be orphaned at the end of the tag list if you save that image in the future.) -
Can't add more images to a project! (Workaround: create a new project. I know, not ideal.)
-
Can't edit the trigger word / synonyms. (Workaround: edit the project's
config.json
and all existing .txt caption files.)
- Delete tags
- Sort tags by usage
- Add more images!
- Edit trigger word / synonyms
- Image zoom
- Color picker -> color name
- Find and replace tags (across the project)
- Export wizard to prepare the data and generate recommended settings for Kohya SS
- Customize tag layout from import analysis
- Saved presets for tag layouts (i.e. photography, anime, style LORAs etc)
- Watermark removal (inpainting?)
- Detection and removal of Nightshade-poisoned images etc from the dataset (to respect the wishes of copyright holders and protect your dataset).
- Maybe in the future: Automated image search to find more images?
Tech stack:
- Basic Python HTTP server - using virtual env
- Parcel for building the JS and CSS bundles
- TypeScript
- Flowbite React for the UI components
- Tailwind CSS for styling
Before spending any time writing code, please open an issue with your proposal so we can discuss. Thanks!
python -m venv venv
call .\venv\Scripts\activate
pip install -r requirements.txt
Prerequisites: Node and Yarn.
cd ui
yarn start
cd server
python main.py
Please send me a message, or open an issue. Thanks!