- Парфенов Денис Васильевич, promasterden@yandex.ru
- Беззаборов А.А., КМБО-01-22, antonbezzaborov929@gmail.com - Тимлид
- Юров П.И., КМБО-01-22, pavel.yurov0425@gmail.com - Программист
- Куропатов К.Л., КМБО-01-22, konstantinkuropatov@gmail.com - Теоретик
- Малыш Я.В., КМБО-03-22, mrgeroixyu@gmail.com - Программист
Данный проект посвящен исследованию методов слепой деконволюции (blind deconvolution) с интегрированной системой автоматической оптимизации гиперпараметров. Основное внимание уделяется разработке и сравнению алгоритмов, способных восстанавливать исходное изображение без априорной информации о функции искажения. Проект обеспечивает комплексное исследование алгоритмов с систематической оценкой качества восстановления и подбором оптимальных гиперпараметров.
Разработка, сравнительный анализ предельных возможностей методов слепой деконволюции и выявление наиболее эффективных подходов для восстановления изображений, искаженных различными типами размытия и шумов.
- Разработка системы автоматического подбора гиперпараметров для методов слепой деконволюции
- Разработка пайплайна генерации реалистичных искажений изображений
- Реализация и сравнение классических и современных методов восстановления
- Построение многомерных Парето-фронтов для анализа компромиссов между качеством и производительностью
- Систематическая оценка устойчивости алгоритмов к шумам и смазам
- Поддержка монохромных и цветных изображений (JPEG, BMP, PNG)
- Пакетная обработка групп изображений
- Автоматизация экспериментального конвейера
- Типы размытия:
- Расфокус (2D гауссово ядро)
- Motion blur (1D линейное ядро)
- Комбинированные смазы (B-spline траектории)
- Типы шумов:
- Гауссов шум
- Пуассонов шум
- Импульсный шум (salt & pepper)
- Классические алгоритмы (blind deconvolution) и регуляризационные подходы
- Оценка ядра размытия (kernel estimation): слепые методы оценки PSF
- Non-blind deconvolution: восстановление с известным ядром
- Метрики качества: PSNR, SSIM
- Производительность: время выполнения
- Байесовская оптимизация c Gаussіаn Рrосеssеs
- Эвoлюциoнныe aлгopитмы (Gеnеtіс Аlgоrіthms)
- Случайный поиск с адаптивным распределением
Для каждого алгоритма определено пространство поиска гиперпараметров:
- Регуляризационные параметры
- Количество итераций и пороги сходимости
- Размеры ядер размытия
- Параметры шумоподавления
- 3D визуализация: качество, сложность смаза, уровень шума
- Сравнительный анализ производительности алгоритмов
- Анализ чувствительности параметров к различным типам искажений
- Установить последнюю версию пакета:
pip install git+https://github.com/PavelYurov/blind_deconvolution.gitБудут установлен пакет blinddeconv и остальные зависимости (numpy, scipy, opencv-python, scikit-image, и др.)
import blinddeconv- Установка с дополнительными зависимостями:
Включает инструменты для тестирования, линтинга и интерактивной работы (pytest, flake8, ipython, setuptools)
pip install "git+https://github.com/PavelYurov/blind_deconvolution.git[dev]"Необходимо для генерации документации через Sphinx (sphinx, sphinx-rtd-theme)
pip install "git+https://github.com/PavelYurov/blind_deconvolution.git[docs]"Тестирования и документация вместе:
pip install "git+https://github.com/PavelYurov/blind_deconvolution.git[dev,docs]"pip uninstall blinddeconvСкрипт обеспечивает автоматизированную настройку рабочего окружения. Основные функции:
- создает и настраивает виртуальное окружение (по умолчанию
.venv); - проверяет совместимость версии Python и наличие системных библиотек;
- разрешает зависимости указанного профиля из
pyproject.toml(секция[tool.preflight.profiles]); - устанавливает недостающие пакеты и регистрирует их в файле состояния
.dependency_state.json.
Показать доступные профили:
python install.py list-profilesПроверить статус зависимостей (без установки):
python install.py check baseУстановить зависимости профиля (интерактивно):
python install.py install baseАвтоматический режим (без запросов подтверждения):
python install.py install base -yУказание пути к виртуальному окружению: Скрипт автоматически использует указанное окружение (создает его при отсутствии).
python install.py --venv my_env install baseСкрипт выполняет безопасное удаление пакетов, опираясь на историю установок (.dependency_state.json). Алгоритм учитывает пересечения зависимостей между профилями:
- удаляет пакеты, относящиеся только к выбранному профилю;
- сохраняет пакеты, которые используются другими активными профилями;
- поддерживает полную очистку окружения.
Удалить зависимости конкретного профиля:
python uninstall.py baseПример: если пакет numpy используется и в профиле base, и в профиле dev, то при удалении base пакет numpy останется в системе.
Полная очистка (сброс проекта): Удаляет каталог виртуального окружения и файл истории установок.
python uninstall.py --clean-allПодробнее об алгоритмах: Путеводитель по алгоритмам
blind_deconvolution/
├── src/ # Исходники Python-пакета
│ └── blinddeconv/ # Python-пакет `blinddeconv`
│ ├── algorithms/ # Алгоритмы и обёртки
│ │ ├── base.py # DeconvolutionAlgorithm
│ │ ├── blind_deconvolution/
│ │ │ ├── implementations/ # Собственные реализации
│ │ │ │ ├── bayesian/
│ │ │ │ ├── classic/
│ │ │ │ ├── sparse/
│ │ │ │ └── variational/
│ │ │ └── external/ # Внешние реализации (много подпроектов)
│ │ │ └── ...
│ │ ├── kernel_estimation/
│ │ │ └── ...
│ │ ├── nonblind_deconvolution/
│ │ │ └── ...
│ │ ├── octave/ # Octave/Matlab-обвязка
│ │ │ └── ...
│ │ ├── unsorted/ # Экспериментальные/черновые алгоритмы (много подпроектов)
│ │ │ └── ...
│ │ ├── README.md # Путеводитель по алгоритмам
│ │ └── __init__.py
│ ├── filters/ # Генерация искажений (blur/noise/denoise)
│ │ ├── blur.py
│ │ ├── noise.py
│ │ ├── denoise.py
│ │ ├── distributions.py
│ │ ├── colored_noise.py
│ │ ├── smooth.py
│ │ └── __init__.py
│ ├── processing/ # Основной функционал пайплайна
│ │ ├── core.py
│ │ ├── reader.py
│ │ ├── restorepipeline.py
│ │ ├── metrics.py
│ │ ├── tables.py
│ │ ├── utils.py
│ │ └── ...
│ ├── scripts/ # Вспомогательные скрипты
│ │ ├── dataset_generator.py
│ │ ├── kernel_generator.py
│ │ └── __init__.py
│ └── __init__.py
│
├── docs/ # Документация (Sphinx)
│ ├── source/
│ │ ├── conf.py
│ │ └── index.rst
│ └── tools/
│ └── build_docs.py
├── images/ # Примеры изображений/артефакты
│ ├── dataset_bind.json
│ ├── distorted/
│ │ └── ...
│ └── ...
├── references/ # PDF-материалы/статьи
│ └── *.pdf
├── tests/ # Тестовые данные/выходы прогонов
│ └── ...
├── utils/ # Вспомогательные утилиты
│ └── preflight/
│ ├── __main__.py
│ ├── config.py
│ ├── report.py
│ └── checks/
│ ├── python.py
│ └── packages.py
│
├── requirements.txt
├── pyproject.toml
├── setup.cfg
└── README.md
В проекте настроен линтер flake8 для проверки стиля и качества Python-кода. Конфигурация находится в файле setup.cfg.
Локальная работа:
- Установите зависимости:
pip install flake8 pre-commit - Для ручного запуска проверки выполните в корне проекта:
flake8 - Для автоматической проверки перед каждым коммитом выполните:
pre-commit install
Интеграция с IDE:
Настройте свою среду разработки на использование виртуального окружения проекта и чтение setup.cfg, чтобы видеть предупреждения линтера прямо в редакторе.
На сервере (CI):
При каждом push в репозиторий CI-система запускает те же проверки flake8, чтобы поддерживать основную ветку (main/master) в чистоте.
HTML-документация проекта генерируется с помощью Sphinx и публикуется по ссылке
docs/source/— исходники Sphinx (.rst,conf.py)docs/tools/build_docs.py— скрипт сборки (генерация API + сборка HTML)docs/_build/html/— результат локальной сборки (появляется после первого билда)
Документация в основном строится из docstrings Python-модулей (автодокументация).
В активном окружении Python должны быть доступны утилиты:
sphinx-buildsphinx-apidoc
Опционально: тема sphinx_rtd_theme (если не установлена, используется fallback alabaster).
python docs/tools/build_docs.pyСкрипт делает два шага:
- генерирует
.rstдля API (черезsphinx-apidoc) вdocs/source/; - собирает HTML в
docs/_build/html/.
Открывайте результат: docs/_build/html/index.html.
Из корня репозитория:
sphinx-apidoc -o docs/source .
sphinx-build -b html docs/source docs/_build/htmldocs/tools/build_docs.pyудаляет всеdocs/source/*.rst, кромеindex.rst, и генерирует заново — не храните важные ручные правки в авто-генерируемых.rst.- Если
sphinx-build/sphinx-apidocне найдены, установите Sphinx в активное окружение Python (например, в venv проекта).