Skip to content

Repository files navigation

English | Русский

📸 Pixel — умный сборщик и сортировщик ваших фото

Pixel — простая программа для тех, у кого фотографии разбросаны по всему компьютеру: разные диски, флешки, папки.

Программа делает основную работу сама: находит фотографии, убирает дубликаты и мусор, а затем группирует изображения по сюжетам.

Вам остаётся только быстро просмотреть результат и выбрать лучшие фотографии.


✨ Возможности

  • 🧲 Собирает всё и отовсюду — может самостоятельно просканировать все доступные диски и найти фотографии. Не нужно открывать папки одну за другой.
  • 🤖 Наводит порядок автоматически — находит одинаковые и визуально похожие изображения, чтобы не разбирать вручную многочисленные копии.
  • 🗂️ Сортирует по сюжетам — нейросеть объединяет похожие по содержанию фотографии в группы: природа, документы, животные, праздники, путешествия и т.д.
  • 👀 Быстрый визуальный контроль — удобная галерея для просмотра и отбора лучших кадров.
  • 🔍 Поиск — семантический поиск по описанию («кот на диване») и поиск похожих изображений по образцу.
  • 🌐 Интерфейс на русском и английском — язык выбирается автоматически по настройкам системы.
  • 📱 Поддержка популярных форматов — JPEG, PNG, WebP и HEIC/HEIF (фото с iPhone).

🚀 Как начать — всего 3 шага

Шаг 1. Скачайте

  1. Откройте страницу проекта: https://github.com/alekcangp/pixel
  2. Нажмите Code → Download ZIP.
  3. Распакуйте архив в удобное место.

Шаг 2. Запустите

  • Windows: дважды щёлкните pixel.bat
  • macOS: запустите pixel.command

При первом запуске Pixel автоматически установит всё необходимое и скачает AI-модель. Это нужно только один раз.

💡 На macOS при первом запуске может потребоваться разрешить запуск: правый клик по pixel.command → «Открыть».

Шаг 3. Дождитесь первого сканирования

Первое сканирование — самое долгое: от нескольких минут до нескольких часов. Время зависит от количества фотографий, объёма данных, скорости диска и процессора.

Прогресс отображается прямо в заголовке окна Pixel. Можно закрыть программу — уже обработанные данные сохранятся в базе, и после повторного запуска работа продолжится с того места.

Все следующие запуски будут быстрыми: Pixel помнит файлы и обрабатывает только новые или изменённые.

Главное окно Pixel


🖱️ Управление галереей

Мышью:

  • Левый клик по фото — выбрать/снять выделение; в полноэкранном просмотре - предыдущее / следующее фото.
  • Правый клик — открыть/закрыть фото на весь экран;
  • Колесо мыши — прокрутка галереи; в полноэкранном просмотре — плавное увеличение/уменьшение фото.

Клавишами (в полноэкранном просмотре):

Клавиша Действие
← / → предыдущее / следующее фото
+ / - приблизить / отдалить
0 сбросить масштаб
перетаскивание мышью перемещать увеличенное фото
Esc закрыть просмотр

❓ Частые вопросы

Что происходит с моими фотографиями?

Ничего плохого. Во время сканирования Pixel не перемещает и не удаляет файлы — он лишь создаёт собственный локальный индекс. Оригиналы остаются на своих местах.

Это безопасно?

Pixel работает полностью локально. Фотографии никуда не загружаются. Из интернета только один раз скачивается AI-модель, дальше она работает на вашем компьютере без сети.

Как удалить Pixel?

  • Windows: pixel.bat uninstall
  • macOS: ./pixel.command uninstall

Это удалит программу, базу данных и скачанную модель. Ваши фотографии не затрагиваются.


🛠️ Раздел для разработчиков

Стек

Компонент Технология
Язык Python 3.10+ (macOS / Windows)
GUI Flet
Эмбеддинги PyTorch + Transformers (SigLIP google/siglip-base-patch16-224)
Векторный поиск FAISS
Кластеризация UMAP-learn + HDBSCAN
Хранилище SQLite (метаданные, эмбеддинги, миниатюры, кластеры)
Изображения Pillow, imagehash (перцептивный хэш)

Архитектура

main.py               CLI-точка входа (argparse, подкоманды)
app_flet.py           GUI на Flet + оркестрация пайплайна
config.py             Все настройки (пути, пороги, параметры UMAP/HDBSCAN)
i18n.py               Локализация ru/en ("auto" — по локали ОС)
core/
  scanner.py          Сканирование директорий, инкрементальное обновление
  database.py         SQLite-хранилище
  dedup.py            pHash + LSH-индекс + Union-Find
  embedder.py         SigLIP-эмбеддинги
  clustererhdb.py     UMAP + HDBSCAN (+ mega-cluster refinement, KNN noise rescue)
  search.py           Семантический поиск (FAISS) и поиск по pHash
  thumbnail_cache.py  WebP-миниатюры в SQLite

Пайплайн: scan → dedup → embed → cluster, затем просмотр/поиск в UI. Каждый шаг инкрементальный по умолчанию; флаг --full пересчитывает всё заново.

Ручная установка

python -m venv .venv

# Linux / macOS:
source .venv/bin/activate
# Windows (PowerShell):
.\.venv\Scripts\Activate.ps1
# Windows (cmd):
.venv\Scripts\activate.bat

pip install -r requirements.txt

Модель SigLIP скачивается лаунчером на этапе установки (или автоматически при первом использовании эмбеддера, если ставили вручную). Кэш — в ~/.cache/huggingface/hub/ (Windows: %USERPROFILE%\.cache\huggingface\hub).

Запуск

python main.py ui-flet                 # десктопный GUI
python main.py --help                  # список всех команд

Лаунчеры поддерживают команды: install (только установка), run (только запуск), uninstall.

Примеры CLI

python main.py scan --path ~/Photos                # индексация папки
python main.py run --path ~/Photos                 # scan + dedup за один проход
python main.py embed                               # SigLIP-эмбеддинги
python main.py cluster-hdb                         # кластеризация UMAP+HDBSCAN
python main.py search "закат на море"              # семантический поиск по тексту
python main.py phash-search path/to/img.jpg        # поиск похожих по pHash
python main.py clear                               # полная очистка storage/

Общие опции scan/run/dedup: --ext (расширения), --exclude (искл. директории, добавляются к стандартным), --min-size (мин. размер файла в КБ), --move <dir> (переместить дубликаты), --full (полный пересчёт вместо инкрементального).

Конфигурация (config.py)

Все параметры собраны в одном файле config.py с подробными комментариями у каждой настройки.

Основные параметры:

Параметр По умолчанию Что делает
DEFAULT_EXTENSIONS jpg, jpeg, png, webp, bmp, gif, tiff какие файлы считать изображениями
MIN_FILE_SIZE 30 КБ файлы меньше — пропускаются
PHASH_THRESHOLD 6 макс. расстояние Хэмминга для склейки дубликатов (меньше = строже)
SIGLIP_MODEL google/siglip-base-patch16-224 модель эмбеддингов
EMBED_BATCH_SIZE 16 сколько изображений за один проход модели
UMAP_*, HDBSCAN_*, SUB_* см. config.py параметры кластеризации по сюжетам
SEARCH_TOP_K, SEARCH_THRESHOLD 500 / 0.05 семантический поиск: кол-во результатов и порог релевантности
PREWARM_THUMB_WORKERS 4 фоновых потока на генерацию миниатюр
APP_LANGUAGE "auto" язык интерфейса: ru, en или авто-определение

About

Pixel is a smart AI app that automatically finds all photos on your computer, filters duplicate copies, and organizes the rest into topics. 100% private: works completely offline on your PC.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages