diff options
| author | Ken D'Ambrosio <ken@jots.org> | 2026-06-08 17:34:18 +0000 |
|---|---|---|
| committer | Ken D'Ambrosio <ken@jots.org> | 2026-06-08 17:34:18 +0000 |
| commit | 73d6f8c9ac0177ca3a6587e6534592a545d44d67 (patch) | |
| tree | 382c08bd09cbe526d1576d9d030294870b0788ed /public/js/git@git.jots.org:albumen.git | |
| parent | da28a20f091372375822f9dde4486ecade859e7e (diff) | |
Switch face detection to CNN model with parallel batch processing
- faces.py: use model="cnn" (more accurate, better at angles/small faces/poor
lighting) instead of HOG; model comment explains the trade-off clearly
- faces.py: accept multiple image paths; process with ThreadPoolExecutor
(dlib releases GIL during C++ inference → genuine thread parallelism);
output JSON dict {path: [faces]} for batch calls
- update.rb: batch_detect_faces() collects all unprocessed images per
directory and calls faces.py once per directory rather than once per image,
avoiding repeated model load overhead
- update.rb: FACES_WORKERS read from config.yml faces.workers (default 4;
set to 20 in this install's config.yml on a 64-core Xeon)
- update.rb: process_dir() now takes idx/total and prints [N/total] prefix
on every Scanning/Skipping line for progress monitoring
To monitor a long run:
nohup ruby /opt/albumen/scripts/update.rb > /tmp/faces_update.log 2>&1 &
tail -f /tmp/faces_update.log
Resume/restart is fully safe: sentinel files are only written after
atomic_write_json, so an aborted directory reruns cleanly from scratch.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'public/js/git@git.jots.org:albumen.git')
0 files changed, 0 insertions, 0 deletions
