Giter Club home page Giter Club logo

aaa-image-enhancement's Introduction

AAA ML Курсовой проект

Тема: 10. Автоулучшение фото

Проект направлен на создание алгоритма, который повысит визуальное восприятие изображений недвижимости, загружаемых пользователями. Основная цель - улучшить такие параметры фото, как контрастность, насыщенность, яркость, шум, тени и др. Для этого планируется протестировать существующие open-source решения, дообучить их или разработать собственный алгоритм, основанный на нейронных сетях или классическом компьютерном зрении. Качество решения будет провалидировано с учетом субъективности визуальных улучшений. Финальный продукт будет реализован в виде микросервиса с временем ответа не более 1 секунды на фото и, возможно, с опцией ручной корректировки параметров.

Команда

Название: Ассоциация Анонимных Аналитиков

  • Ермаков Павел @pyrogn
  • Иванов Артем @aert14

Структура

(обновлять)

  • src/aaa_image_enhancement/ - устанавливаемый Python проект с главным приложением
  • experiments/ - различный код
  • notebooks/ - ноутбуки с output, если потребуется для демонстрации
  • models/ - модели, поднимаемые через docker
  • benchmarks/ - оценка производительности отдельных частей
  • demo/ - простой сервис для демонстрации работы детекции и исправления
  • Dual-Choice - проект с оценкой субъективного качества фото

Работа с репозиторием

Rye Ruff

  • Относимся к main ветке осторожно, добавляем коммиты через PR. Работаем в своей ветке.
  • Используем пакетный менеджер Rye (rye sync --all-features).
  • Не заливаем данные:
    • В jupyter notebook перед отправкой удаляем весь output (Папка notebooks/ добавлена в исключение, там может быть output).
    • Картинки и гифки не оставляем в репо, а заливаем на хранилище GitHub через вставку через веб-интерфейс.
  • Прогоняем код через 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...

Инфраструктура

Тренировка
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.

Autonomous

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

Interactive with User

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

aaa-image-enhancement's People

Contributors

pyrogn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.