Skip to content

sudo-odner/sila-hack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

Putoshka x СИЛА (Определение дефектов на ноутбуках)

Описание проекта:

Мы представляем сервис для автоматического обнаружения и классификации дефектов на ноутбуках. Система использует искусственный интеллект для анализа изображений, автоматически выделяя дефекты и формируя подробные отчеты с детальной информацией о качестве.

Стек: YOLOv11, PyTorch, FastAPI, React.

Команда

Александр Скороходов (Frontend)

Васильев Кирилл (Backend)

Данила Ильин (ML-Специалист)

Илья Богданов (Product Manager)

Запуск

Перейти на сайт: Website


Архитектура

В данном проекте реализована микросервисная архитектура. Работа над ними производилась на разных ветках этого проекта.

Проект включает микросервис для обработки изображений с использованием YOLO для распознавания объектов, их классификации и дополнительной верификации с использованием Random Forest.

Структура проекта

1. data/

Директория для хранения данных, используемых для обучения и тестирования моделей. Добавлени в .gitignore

2. model/

Содержит версии моделей, начиная с первой и до текущей третьей версии. Модели обновляются по мере прогресса обучения.

3. runs/

Папка, где сохраняются все запуски обучения YOLO, включая результаты и логи.

4. transportImage/

Папка для временного хранения изображений, которые проходят обработку перед классификацией.

5. Основные файлы

  • service.py: Микросервис, который принимает на вход изображение и возвращает массив с координатами вырезанных областей, а также с их классификацией и вероятностью.

  • yolo.ipynb: Jupyter notebook с кодом для обучения YOLO на предоставленных данных.

  • checkYolo.ipynb: Модуль для дополнительной проверки ответа YOLO с использованием модели Random Forest. Включает код для обучения и тестирования модели.

  • yolo11n.pt: Файл с моделью YOLO 11-й версии, которая используется для предсказаний в текущем микросервисе.

6. Дополнительные файлы

  • .gitignore: Список файлов и директорий, которые не должны быть добавлены в систему контроля версий Git.

  • requirements.txt: Файл с зависимостями проекта. Для установки всех необходимых библиотек выполните:

    pip install -r requirements.tx

    Для запуска сервера:

    uvicorn service:app --host 0.0.0.0 --port 8000

Tech stack

  • Python
  • FastAPI

How to start

  • uvicorn main:app --reload

Architecture

Архитектура приложения на FastAPI с применением принципов чистой архитектуры предполагает разделение на несколько слоев: Data Source, Data, Domain и Presentation. Рассмотрим каждый из этих слоев подробнее в контексте описанной задачи — загрузка фотографии с фронтенда, получение метаданных через микросервис и сохранение всех данных в базу данных.

Presentation

Этот слой отвечает за взаимодействие с пользователем (в нашем случае — с фронтендом) и обеспечивает внешнее API для приложения. Здесь находится FastAPI-эндпоинт, который принимает запросы на загрузку фотографии и отправляет ответы клиенту.

Domain

Это слой, где содержится основная бизнес-логика приложения. Domain Layer не знает, каким образом данные сохраняются или откуда они поступают — он работает с абстракциями и интерфейсами, предоставленными другими слоями.

Data

Data Layer отвечает за реализацию интерфейсов, предоставляемых Domain Layer, для работы с данными. Этот слой знает, как сохранять и извлекать данные из различных источников — будь то база данных, файловая система или внешние API.

Data Source

Этот слой отвечает за физическое хранение данных и взаимодействие с внешними системами. Здесь находятся:

  • Механизмы для работы с базой данных, которая хранит информацию о загруженных фотографиях и связанных с ними метаданных.
  • Механизмы для работы с внешним микросервисом, который предоставляет информацию о загруженном изображении (например, анализирует фотографию на предмет распознавания объектов или генерирует метаданные).
  • Механизмы для работы с файловой системой или облачными хранилищами

Взаимодействие между слоями:

  • Пользователь (фронтенд) отправляет POST-запрос на загрузку фотографии.
  • Presentation Layer (FastAPI-эндпоинт) принимает запрос и файл, передает его в Domain Layer.
  • В Domain Layer проверяются базовые требования к файлу (например, размер и формат), затем выполняется запрос к микросервису через Data Layer для получения метаданных.
  • После получения метаданных Domain Layer передает информацию в Data Layer, который отвечает за сохранение данных в базу данных и, возможно, загрузку файла в файловую систему.
  • Presentation Layer отправляет ответ клиенту о результате операции.

CleanArchitecture

image

Описание сайта

Приложение разработано при помощи Create React App.

Деплой

Сайт размещен здесь: http://213.173.108.217:10991

Как развернуть приложение:

npm install

Загрузка необходимых модулей для работы приложения.

npm start

Запуск приложения в development моде.
Откройте http://localhost:3000 чтобы увидеть в браузере.

Страница обновляется при изменениях.
Могут появится логи недочетов в консоли.

Архитектура приложения

 .
└── public
   ├── index.html
   ├── logo.png
   ├── manifest.json
└── src
    // компоненты и вьюшки
   └── components
      ├── CleanView.js
      ├── CreateView.js
       // Вьюшка для изменения данных снимка
      ├── EditLectureView.js
       // Иконка файла для загрузки
      ├── FileIcon.js
       // Загрузка снимка
      ├── FileUI.js
       // Вьюшка деффектов снимка с возможностью пожаловаться на ошибку
       и отправить на доработку нейронке
      ├── GlosView.js
       // Шапка сайта
      ├── Header.js
       // Элемент списка снимков на боковой панели
      ├── LectureElement.js
       // Боковая панель с снимками и поиском/фильтрами
      ├── Lectures.js
       // Загрузка снимков с серийным номером
      ├── LectureUpload.js
       // Вьюшка загруженного снимка с возможностью просмотром деффектов,
       изменения серийного номера и удаления снимка
      ├── LectureView.js
    // Папка с используемыми шрифтами
   └── font
       ├── etc ..
    // SVG иконки
   └── icons
       ├── etc ..
    // SCSS файлы для стилизации
   └── styles
       ├── etc ..
    // приложение
   ├── App.js
    // стартовый файл
   ├── index.js
    // константа проекта - ссылка на Api
   ├── site.js

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •