Skip to main content

Framework for Image Precompensation

Project description

🌐 Эта страница также доступна на English 🇬🇧

Pyolimp

Данный проект представляет собой фреймворк на основе методов машинного обучения для предкомпенсации изображений с целью коррекции нарушений зрения — в частности, дефектов цветового зрения (ДЦЗ) и рефракционных искажений (РИЗ). Фреймворк включает в себя как нейросетевые, так и не нейросетевые модули, что позволяет эффективно решать задачу предкомпенсации различными методами.

Обзор проекта

Данный проект направлен на предкомпенсацию визуальных нарушений с использованием методов машинного обучения. Он представляет собой универсальный фреймворк, поддерживающий как нейросетевые (NN), так и не нейросетевые (non-NN) подходы для восстановления качества изображения у пользователей с различными нарушениями зрения. Направления прикладного использования следующие:

  • Предкомпенсация дефектов цветового зрения (ДЦЗ): Компенсация цветовой слепоты (например, протанопия, дейтеранопия).
  • Предкомпенсация рефракционных искажений зрения (РИЗ): Коррекция искажений, вызванных нарушениями рефракции, с улучшением чёткости и резкости изображения.
  • Предкомпенсация других типов искажений: Фреймворк может быть использован для обучения и применения обученных нейросетевых архитектур предкомпенсации искажений, отличных от ДЦЗ и РИЗ.

Требования к проекту

  • Python 3.10+
  • Pytorch 2.4+
  • Дополнительные зависимости, перечисленные в pyproject.toml

Технические характеристики ПК:

  • аппаратная платформа, на которой может быть запущена 64-разрядная ОС Ubuntu версии 22.04 LTS или выше или Windows версии 10 и выше;
  • не менее 16 ГБ оперативной памяти;
  • восьмиядерный процессор x86 2.5 ГГц и выше или аналогичный ему;
  • видеокарта с поддержкой cuda 12.+, и не менее 12 ГБ видеопамяти;
  • не менее 100 ГБ свободного места на жёстком диске;
  • клавиатура и мышь (или тачпад).

Установка

pip install olimp

или

pip install git+https://github.com/pyolimp/pyolimp.git

Обновление фреймворка до последней версии

pip install -U olimp

или

pip install -U git+https://github.com/pyolimp/pyolimp.git

Использование

1. Не нейросетевые модули для предкомпенсации ДЦЗ и РИЗ

Чтобы запустить алгоритм оптимизации для предкомпенсации РИЗ с использованием метода Брегмана-Джамбо, выполните:

python3 -m olimp.precompensation.optimization.bregman_jumbo

Чтобы запустить алгоритм оптимизации для предкомпенсации РИЗ с использованием метода Монталто, выполните:

python3 -m olimp.precompensation.optimization.montalto

Чтобы запустить алгоритм оптимизации для предкомпенсации ДЦЗ с использованием метода Тенненхольца-Зачевского, выполните:

python3 -m olimp.precompensation.optimization.tennenholtz_zachevsky

Вы также можете вызывать примеры из каталога olimp.precompensation.basic и olimp.precompensation.analytics, как в приведенных примерах.

В docs/source/notebooks/precompensation.ipynb представлены дополнительные примеры запуска различных не нейросетевых методов предкомпенсации РИЗ и ДЦЗ с краткими описаниями представленных методов и примерами результатов их работы. Для запуска необходимо последовательно запустить сначала первые ячейки с импортом общих библиотек, затем ячейку с интересующим методом.

2. Нейросетевые модули для предкомпенсации ДЦЗ и РИЗ

Чтобы запустить нейросетевую модель для предкомпенсации РИЗ с использованием метода USRNET, выполните:

python3 -m olimp.precompensation.nn.models.usrnet

Чтобы запустить нейросетевую модель для предкомпенсации ДЦЗ на основе архитектуры с использованием SWIN-трансформеров, выполните

python3 -m olimp.precompensation.nn.models.cvd_swin.Generator_transformer_pathch4_844_48_3_nouplayer_server5

В docs/source/notebooks/precompensation_nn.ipynb представлены дополнительные примеры запуска различных нейросетевых методов предкомпенсации РИЗ и ДЦЗ с краткими описаниями представленных методов и примерами результатов их работы. Для запуска необходимо последовательно запустить сначала первые ячейки с импортом общих библиотек, затем ячейку с интересующим методом.

3. Обучение моделей

Для обучения нейросетевых моделей предкомпенсации используйте следующую команду:

python3 -m olimp.precompensation.nn.train.train --config ./olimp/precompensation/nn/pipeline/usrnet.json

Вы также можете обучить другие модели, см. olimp/precompensation/nn/pipeline. Также у нас есть json-схема, которую можно сгенерировать, используя следующую команду:

python3 -m olimp.precompensation.nn.train.train --update-schema

В docs/source/notebooks/pyolimp_train.ipynb представлено пошаговое описание процесса обучения нейронной сети на примере нейросети USRNET.

Примеры

📖 См. также Примеры использования

Демонстрационный пример ДЦЗ

Демонстрационный пример РИЗ

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

olimp-1.0.5.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

olimp-1.0.5-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file olimp-1.0.5.tar.gz.

File metadata

  • Download URL: olimp-1.0.5.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for olimp-1.0.5.tar.gz
Algorithm Hash digest
SHA256 4c19502a1c90bbaf3321e838344f6f7a56d25a3e368997954f31689f80a97f6b
MD5 e8328b55d3dfeca57c7e5e5caf175713
BLAKE2b-256 3e50c93178e357331d9a4b0410e9ec1d869d98079146dcabc11d27ec85f391df

See more details on using hashes here.

File details

Details for the file olimp-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: olimp-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for olimp-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 89613f77e04ff8f4fb754af92b96d357a9a1def5e367ac70e86487626b786871
MD5 046bc54be9985d0762ef7f13477b7d5a
BLAKE2b-256 4b325a56afb658cf90e5fdc2cf917c7e4d698333bc0f3e84fdb7376a9f22171a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page