cvikl's picture
First commit.
fb91fdc
|
Raw
History Blame Contribute Delete
1.77 kB

Feature extractors

One script per family. All read data/artwork_metadata.csv + data/images/, write to data/features/, checkpoint regularly, and resume if re-run.

family script dims what it measures
hand-crafted extract_handcrafted.py 380 color (HSV joint + grey-world + per-channel histograms), light (brightness/contrast/darkness/edge density), symmetry, flatness (SLIC superpixel LAB uniformity), texture (FFT radial bands + 59-bin nri-uniform LBP), lines (Hough count/density, straight ratio, edge-angle histogram)
CLIP extract_clip.py 512 + 27 ViT-B/16 image embedding + zero-shot cosine scores against 27 hand-written religious-attribute prompts
DINOv2 extract_dino.py 768 self-supervised CLS token — visual style/appearance similarity
faces extract_faces.py 39 YuNet detections summarized: count, coverage, sizes, positions, tilt/frontality, arrangement, spatial histograms
pose extract_pose.py 39 YOLOv8-pose, largest figure only: torso-normalised 17-keypoint skeleton + figure area + detection-quality columns + person count

Notes:

  • Hand-crafted features use the corrected preprocessing pipeline: images are border-cropped, guardedly background-masked (see preprocessing/), and capped at 1024 px on the longest side so texture/edge features measure the artwork rather than the museum's scan resolution.
  • The pose vector stores quality indicators (main_kpt_conf, main_torso_px) because photo-trained detectors are unreliable on stylised bodies — filter on them before interpreting posture.