Проект направлен на создание алгоритма, который повысит визуальное восприятие изображений недвижимости, загружаемых пользователями. Основная цель - улучшить такие параметры фото, как контрастность, насыщенность, яркость, шум, тени и др. Для этого планируется протестировать существующие open-source решения, дообучить их или разработать собственный алгоритм, основанный на нейронных сетях или классическом компьютерном зрении. Качество решения будет провалидировано с учетом субъективности визуальных улучшений. Финальный продукт будет реализован в виде микросервиса с временем ответа не более 1 секунды на фото и, возможно, с опцией ручной корректировки параметров.
Название: Ассоциация Анонимных Аналитиков
- Ермаков Павел @pyrogn
- Иванов Артем @aert14
(обновлять)
src/aaa_image_enhancement/
- устанавливаемый Python проект с главным приложениемexperiments/
- различный кодnotebooks/
- ноутбуки с output, если потребуется для демонстрацииmodels/
- модели, поднимаемые черезdocker
benchmarks/
- оценка производительности отдельных частейdemo/
- простой сервис для демонстрации работы детекции и исправления- Dual-Choice - проект с оценкой субъективного качества фото
- Относимся к main ветке осторожно, добавляем коммиты через PR. Работаем в своей ветке.
- Используем пакетный менеджер Rye (
rye sync --all-features
). - Не заливаем данные:
- В jupyter notebook перед отправкой удаляем весь output (Папка
notebooks/
добавлена в исключение, там может быть output). - Картинки и гифки не оставляем в репо, а заливаем на хранилище GitHub через вставку через веб-интерфейс.
- В jupyter notebook перед отправкой удаляем весь output (Папка
- Прогоняем код через Ruff (
rye run lint
, source находится в pyproject). Индивидуально: (rye lint --fix
,rye fmt
, либоruff check --fix
,ruff format
). - Проверяем тесты
rye test
илиpytest
. - Все или почти все эти операции можно включить через
pre-commit install
. Можно запустить все проверки черезrye run pre
илиpre-commit run --all-files
. - Если инструмент работает некорректно, можно добавлять точечно
noqa: <code>
,type: ignore
или добавить исключения в конфиге вpyproject.toml
. Или подредактировать.pre-commit-config.yaml
. - Можно переносить и переименовывать файлы, функции, переменные. Но только через рефакторинг (как F2 или Refactor... в VSCode), чтобы ничего не сломалось.
Типизацияmypy ./src
- More to come...
- https://pytorch.org/serve/
- FastAPI
- Docker, Docker Compose
Тренировка
flowchart TB
subgraph docker1["Docker Container 1"]
torchServe1[TorchServe]
model1[PyTorch Model 1]
torchServe1 --> model1
end
subgraph docker2["Docker Container 2"]
torchServe2[TorchServe]
model2[PyTorch Model 2]
torchServe2 --> model2
end
subgraph docker3["Docker Container 3"]
torchServe3[TorchServe]
model3[PyTorch Model 3]
torchServe3 --> model3
end
subgraph dockermain["Docker Container for Service"]
mainModule[Main Module]
end
mainModule -->|Sends image| docker1
mainModule -->|Sends image| docker2
mainModule -->|Sends image| docker3
docker1 -->|Returns new image| mainModule
docker2 -->|Returns new image| mainModule
docker3 -->|Returns new image| mainModule
style mainModule fill:#f9f,stroke:#333,stroke-width:2px
style docker1 fill:#bbf,stroke:#333,stroke-width:2px
style docker2 fill:#bbf,stroke:#333,stroke-width:2px
style docker3 fill:#bbf,stroke:#333,stroke-width:2px
- model1 (github link, citation)
Это эксперимент в mermaid.
graph LR
Image -->|input| DefectsDetector
Image -->|input| Enhancer
DefectsDetector -->|returns image defects| Enhancer
Enhancer -->|produces enhanced image| EnhancedImage
graph LR
subgraph Service
DefectsDetector[Defects Detector]
Enhancer[Enhancer]
end
User[User] -->|uploads image| Image[Image]
Image -->|input| DefectsDetector
DefectsDetector -->|returns image defects| Enhancer
Enhancer -->|produces enhanced image| EnhancedImage[Enhanced Image]
User -->|specifies defect and uploads image| DirectEnhancement[Image & Specific Defect]
DirectEnhancement -->|input| Enhancer
sequenceDiagram
participant User
participant DefectsDetector
participant Enhancer
box Client
participant User
end
box Server
participant DefectsDetector
participant Enhancer
end
User ->>+ DefectsDetector: Upload Image
DefectsDetector -->>- User: Return Image Defects
alt User Chooses to Take New Picture
User ->> User: Take New Picture
else User Chooses to Enhance Image
User ->>+ Enhancer: Send Image and Returned Defects
Enhancer -->>- User: Return Enhanced Image
alt User Keeps Enhanced Image
User ->> User: Keep Enhanced Image
else User Discards Enhanced Image
User ->> User: Discard Enhanced Image
end
end