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.4.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.4-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: olimp-1.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 c5a3efb10ee2011de8a2b383f0f1cae715158dc127d4b46a740f34888951394f
MD5 fa511c1b4107cab4ed25efd44377abfd
BLAKE2b-256 4acf80d3360e1a5e5ef8742ed360fda73091df3ae23ae5f426b13899812400d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: olimp-1.0.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cc42f0ea519938c99577b5853d467ad24895ca20a65a58ff9e9d13d325b7f9b2
MD5 a8c98ccdb9ceccf34472fdd44fa6e358
BLAKE2b-256 7fbef793478f597d1f99043a4749985280a82dc5aa70726ea9dc5e026d0f7301

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