Yet Another Character Face Annotations on Danbooru2020
Pre-release
Pre-release
Description
I applied the pre-trained face detection model in AnimeCV to the SFW 512px downscaled subset of Danbooru2020 dataset.
Applied model is FaceDetector_EfficientDet(coef=2)
.
It contains 6,412,982 face annotations for 3,227,706 imges.
How to use
Information of extracted face bounding boxes are stored in Sqlite3 database file faces.sql
.
Example code
import os
import sqlite3
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
# Target image
filename = "/data/danbooru2020/512px/512px/0841/2543841.jpg"
name = f"danbooru/{os.path.basename(filename)}"
# Retrieve face position
conn = sqlite3.connect("faces.sql")
c = conn.cursor()
c.execute("SELECT * FROM faces WHERE name=?", (name,))
lst_faces = c.fetchall()
# Crop and show face image
img = Image.open(filename)
for i, (_id, name, xmin, ymin, xmax, ymax) in enumerate(lst_faces):
ax = plt.subplot(1, len(lst_faces), i+1)
crop_img = img.crop((xmin, ymin, xmax, ymax))
ax.imshow(np.asarray(crop_img))
plt.show()
Database schema
table name: faces
column | type | description |
---|---|---|
id | INTEGER | Unique id for each row. |
name | STRING | Name of the image. danbooru/<basename of original image file> . (e.g.) danbooru/4039070.jpg |
xmin | INTEGER | Left coordinate |
ymin | INTEGER | Top coordinate |
xmax | INTEGER | Right coordinate |
ymax | INTEGER | Bottom coordinate |