Skip to main content

🌐 Эта страница также доступна на 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.

Примеры

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

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

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

Metadata

Release files for olimp 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for olimp 1.0.6
File Size Uploaded
olimp-1.0.6.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for olimp 1.0.6
File Interpreter ABI Platform
olimp-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / olimp-1.0.6.tar.gz

Download URL olimp-1.0.6.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
a8b6b06692e61d6e43ba129b38265cbdd565d8ce31b4caf4d6001c9709c9bd37
BLAKE2b-256 checksum
How to use checksums
9df73b241343d3175fc4e3bfdb1c9727f3bf656250cef100b71c10ce6e2e8ed9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.10.19

Release files / olimp-1.0.6-py3-none-any.whl

Download URL olimp-1.0.6-py3-none-any.whl
Size 1.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
89507037a64dcecc2aa4e499a900a3b8815cb1b97dcb02c7c6159da4fe51652b
BLAKE2b-256 checksum
How to use checksums
bccb0c6db39a4d7e79179b6bf6c94c7fc8f0a8ae21847755c8ea944b7fca4e3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.10.19

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page