🌐 Эта страница также доступна на 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)
| File | Size | Uploaded | |
|---|---|---|---|
| olimp-1.0.6.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|