tfrere's picture
tfrere HF Staff
feat: unified loading experience + cleanup dead code
7a7443a

Python Pipeline (alternative haute qualité)

Pipeline Python alternative pour les étapes 4 (embeddings) et 5 (UMAP) du pipeline FontMap.

Avantages vs pipeline JS

Pipeline JS Pipeline Python
Modèle CLIP ViT-B/32 vanilla CLIP ou FontCLIP (fine-tuné typographie)
UMAP umap-js (init aléatoire) umap-learn (init spectrale, référence)
PCA EVD custom scikit-learn (optimisé, LAPACK)
k-NN Brute-force JS scikit-learn NearestNeighbors

Installation

cd src/typography/new-pipe/python-pipeline
pip install -r requirements.txt

Utilisation

# Avec CLIP standard
python generate_embeddings_and_umap.py \
  --pngs-dir ../output/pngs \
  --output-dir ../output/data \
  --font-index ../input/font-index.json \
  --device mps  # ou cpu, cuda

# Avec FontCLIP (si les poids sont disponibles)
python generate_embeddings_and_umap.py \
  --pngs-dir ../output/pngs \
  --output-dir ../output/data \
  --font-index ../input/font-index.json \
  --fontclip \
  --device mps

FontCLIP

Pour utiliser FontCLIP :

  1. Cloner https://github.com/yukistavailable/FontCLIP
  2. Entraîner ou récupérer les poids fine-tunés
  3. Placer le fichier .pt dans weights/fontclip_vit_b32.pt

Options

Flag Défaut Description
--pca 50 Nombre de composantes PCA
--umap-neighbors 15 UMAP n_neighbors
--umap-min-dist 0.3 UMAP min_dist
--knn-k 8 Nombre de voisins k-NN
--fontclip false Utiliser FontCLIP
--device cpu cpu, cuda, mps

Sortie

Le script produit un fichier typography_data_python_*.json compatible avec le format existant. Pour déployer : copier vers public/data/typography_data.json.