A tag prediction system for anime-style images.
Try it at https://autotagger.donmai.us.
Or go to https://danbooru.donmai.us/ai_tags to browse predicted tags on all posts on Danbooru. Here are some examples of different tags:
https://danbooru.donmai.us/ai_tags?search[tag_name]=comic&search[order]=score_desc
https://danbooru.donmai.us/ai_tags?search[tag_name]=hatsune_miku&search[order]=score_desc
https://danbooru.donmai.us/ai_tags?search[tag_name]=cat&search[order]=score_desc
# Get tags for a single image cat image.jpg | docker run --rm -i ghcr.io/danbooru/autotagger autotag - # Run the web server. Open http://localhost:5000. docker run --rm -p 5000:5000 ghcr.io/danbooru/autotagger # Get tags from the web server. curl http://localhost:5000/evaluate -X POST -F file=@hatsune_miku.jpg -F format=json
Start the app server:
# With Dockerdocker run --rm -p 5000:5000 ghcr.io/danbooru/autotagger# Without Dockerpython -m poetry run gunicorn
Then open http://localhost:5000 to use the webapp. Here you can upload images and view the list of predicted tags.
Start the app server as above, then do:
curl http://localhost:5000/evaluate -X POST -F file=@hatsune_miku.jpg -F format=json
The output will look like this:
[ {"filename": "hatsune_miku.jpg","tags": { "1girl": 0.9995526671409607, "hatsune_miku": 0.9995216131210327, "vocaloid": 0.9981155395507812, "solo": 0.9938727617263794, "thighhighs": 0.970325767993927, "long_hair": 0.9630335569381714, "twintails": 0.9352861046791077, "very_long_hair": 0.8532902002334595, "necktie": 0.8532789945602417, "aqua_hair": 0.8266996145248413, "detached_sleeves": 0.796751081943512, "skirt": 0.7879447340965271, "rating:s": 0.7843148112297058, "aqua_eyes": 0.6136178374290466, "zettai_ryouiki": 0.5611224174499512, "thigh_boots": 0.37453025579452515, "black_legwear": 0.37255123257637024, "full_body": 0.3261113464832306, "simple_background": 0.28789788484573364, "boots": 0.286143958568573, "headset": 0.27902844548225403, "white_background": 0.23441512882709503, "shirt": 0.21720334887504578, "looking_at_viewer": 0.2044636756181717, "pleated_skirt": 0.17705336213111877, "smile": 0.17575393617153168, "bare_shoulders": 0.17370294034481049, "headphones": 0.16347116231918335, "standing": 0.15511766076087952, "rating:g": 0.13711321353912354, "aqua_necktie": 0.11798079311847687, "black_skirt": 0.11197035759687424, "blush": 0.10813453793525696} } ]
Generate tags for a single image:
# With Docker:cat image.jpg | docker run --rm ghcr.io/danbooru/autotagger autotag -# Without Docker:./autotag image.jpg
Generate tags for multiple images:
# With Docker:# `-v $PWD:/host` means mount the current directory as /host inside the Docker container.docker run --rm -v $PWD:/host ghcr.io/danbooru/autotagger autotag /host/image1.jpg /host/image2.jpg# Without Docker:./autotag image1.jpg image2.jpg
Generate tags for all images inside the images/
directory:
# With Docker:# Change `images` to whatever your image directory is called.docker run --rm -v $PWD/images:/images ghcr.io/danbooru/autotagger autotag /images# Without Docker:./autotag images/
Generate tags for all files inside a directory matching a pattern:
find images/ -name '*.jpg' | ./autotag -i -
Generate a list of tags in CSV format, suitable for importing into your own Danbooru instance:
./autotag -c -f -N images/ | gzip > tags.csv.gz
# Install system dependencies apt-get update apt-get install git build-essential gfortran libatlas-base-dev libffi-dev libssl-dev libbz2-dev liblzma-dev # Get code git clone https://github.com/danbooru/autotagger.git cd autotagger # Install Python (skip this if Python 3.9.13 is already installed) git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0 echo ". $HOME/.asdf/asdf.sh" >> ~/.bashrc exec bash asdf plugin add python asdf install python 3.9.13 asdf shell python 3.9.13 # Install Python dependencies pip install poetry==1.1.13 python -m poetry env use 3.9 python -m poetry install --no-dev # Download latest model wget https://github.com/danbooru/autotagger/releases/download/2022.06.20-233624-utc/model.pth -O models/model.pth # Test that it works ./autotag test/hatsune_miku.jpg
The current model is stock Resnet-152, pretrained on Imagenet then finetuned on Danbooru for about 10 epochs.
The model is trained on about 5500 tags. This includes character tags with >750 posts, copyright tags with >2000 posts, and general tags with >2500 posts, but not artist or meta tags. Ratings are also included.
The model is available at https://github.com/danbooru/autotagger/releases.
https://github.com/KichangKim/DeepDanbooru
https://github.com/SmilingWolf/SW-CV-ModelZoo
https://github.com/zyddnys/RegDeepDanbooru
https://github.com/rezoo/illustration2vec
https://www.gwern.net/Danbooru2021
https://console.cloud.google.com/storage/browser/danbooru_public/data?project=danbooru1 (Danbooru data dumps)