Facet: локальный анализ и сортировка фотографий с распознаванием лиц
Facet — это локальный инструмент для анализа и сортировки фотографий, который использует распознавание лиц и семантический поиск. Он помогает оценить и организовать изображения без необходимости в облачных сервисах или подписках.
Проект позволяет анализировать качества фотографий по девяти параметрам, включая эстетическую привлекательность и резкость лиц. Ты просто указываешь папку с фотографиями, и Facet быстро оценит их, группируя аналогичные снимки и выявляя лучшие. Веб-интерфейс позволяет удобно просматривать и фильтровать библиотеку. Особенно полезно будет тем, кто работает с большим объемом фото и хочет сэкономить время на отборе.
Facet написан на Python, использует FastAPI и Angular для фронтенда. Запустить его можно на Windows, macOS и Linux (в том числе и в Docker). Проект достаточно универсален, но не забудь — сейчас он требует GPU для полной функциональности.
Обзор проекта
Facet — это локальный движок для анализа и отсева фотографий. Он оценивает каждое изображение по девяти параметрам, включая эстетическое качество и резкость лиц, а затем позволяет просматривать, отбирать и организовывать фотографии через веб-галерею. Все работает на твоем компьютере, без облачных сервисов, учетных записей и API ключей.
Как это работает
- Сканирование — Укажи Facet папку с фотографиями. Каждое изображение анализируется на качество, композицию и наличие лиц. Поддерживаются форматы JPG, HEIF/HEIC и 10 форматов RAW (CR2, CR3, NEF, ARW, RAF, RW2, DNG, ORF, SRW, PEF).
- Просмотр — Открой веб-галерею для исследования своей библиотеки с фильтрами, поиском и несколькими режимами просмотра.
- Отсев — Facet определяет серийные съемки, отмечает закрытые глаза, группирует похожие фотографии и показывает лучшие варианты. Этапы экспозиции и панорамные HDR-сеты распознаются и остаются целыми.
Поддерживается автоматическое определение GPU, он является необязательным. Facet может работать как только на ЦП, так и с использованием до 24 ГБ видеопамяти.
Особенности
Оценка
Каждая фотография оценивается по девяти параметрам: эстетическое качество, композиция, качество лиц, резкость глаз, техническая резкость, цвет, экспозиция, заметность объекта и динамический диапазон. Фотографии классифицируются по содержанию (портрет, пейзаж, макро и т.д. — более 30 категорий) и оцениваются с учетом специфических весов для каждой категории.
Отсев
- Обнаружение серий — группирует последовательные съемки и автоматически выбирает лучшее на основе резкости и качества.
- Защита последовательности — распознает и сохраняет многокадровые наборы.
- Группы схожести — находит визуально похожие фотографии.
- Авто-отсев — одной кнопкой удаляет группу кадров с предварительным просмотром.
- Генерирование отчетов — статистика по использованию оборудования и категориям.
Просмотр
- Режимы галереи — мозаика и сетка.
- Фильтры — по диапазону дат, тегам, камерам и другим параметрам.
- Семантический поиск — поиск фотографий по естественным языковым запросам.
Организация
- Распознавание лиц — автоматическое выявление и группировка по лицам.
- Альбомы — ручные и "умные" альбомы, которые заполняются автоматически.
- Теги — автоматически генерируемые теги контента.
Что нужно для работы
Большинство возможностей Facet работают на любом компьютере (ЦП). Для более продвинутых моделей (TOPIQ и др.) требуется GPU от NVIDIA с 16 ГБ или 24 ГБ видеопамяти. Если локальный GPU отсутствует, можно использовать удаленный сервер для некоторых функций (требуется соответствующий конфиг).
Быстрый старт
Docker (рекомендуется)
git clone https://github.com/ncoevoet/facet.git && cd facet
cp .env.example .env # открой .env и укажи PHOTOS_DIR для папки с фотографиями
docker compose up -d # затем открой http://localhost:5000
Без Docker (Linux, macOS)
git clone https://github.com/ncoevoet/facet.git && cd facet
bash install.sh # определит твое оборудование и установит всё необходимое
source venv/bin/activate
python facet.py /path/to/your/photos # оценка фотографий
python viewer.py # галерея → http://localhost:5000
Лицензия
Проект лицензирован под MIT.
Радар проекта: 73 из 100 — крепкий проект
- Импульс 23 ≈ 2 звезды в день
- Темп разработки 100 1253 коммита за 12 недель
- Зрелость 82 проекту 9 месяцев, 56 релизов
- Сообщество 47 14 участников, 38 форков
- Свежесть 97 последний коммит — 5 дней назад
- Быстрый старт 90 есть: команда установки, Docker, сайт/демо
- Готовность к продакшену 100 релиз v1.28.0, автосборка, тесты
- Безопасность и доверие 40 своя лицензия (не из открытых)
- Документация 97 README 17.7 тыс. знаков, 17 разделов, папка docs
- Экосистема 54 3 подписчика на обновления, 20 тем
Как считаем
Только открытые данные GitHub на 07.11.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: ncoevoet/facet →
RepoRadar