Описание проекта:
Мы представляем сервис для автоматического обнаружения и классификации дефектов на ноутбуках. Система использует искусственный интеллект для анализа изображений, автоматически выделяя дефекты и формируя подробные отчеты с детальной информацией о качестве.
Стек: YOLOv11, PyTorch, FastAPI, React.
Александр Скороходов (Frontend)
Васильев Кирилл (Backend)
Данила Ильин (ML-Специалист)
Илья Богданов (Product Manager)
Перейти на сайт: Website
В данном проекте реализована микросервисная архитектура. Работа над ними производилась на разных ветках этого проекта.
Проект включает микросервис для обработки изображений с использованием YOLO для распознавания объектов, их классификации и дополнительной верификации с использованием Random Forest.
Директория для хранения данных, используемых для обучения и тестирования моделей. Добавлени в .gitignore
Содержит версии моделей, начиная с первой и до текущей третьей версии. Модели обновляются по мере прогресса обучения.
Папка, где сохраняются все запуски обучения YOLO, включая результаты и логи.
Папка для временного хранения изображений, которые проходят обработку перед классификацией.
-
service.py: Микросервис, который принимает на вход изображение и возвращает массив с координатами вырезанных областей, а также с их классификацией и вероятностью. -
yolo.ipynb: Jupyter notebook с кодом для обучения YOLO на предоставленных данных. -
checkYolo.ipynb: Модуль для дополнительной проверки ответа YOLO с использованием модели Random Forest. Включает код для обучения и тестирования модели. -
yolo11n.pt: Файл с моделью YOLO 11-й версии, которая используется для предсказаний в текущем микросервисе.
-
.gitignore: Список файлов и директорий, которые не должны быть добавлены в систему контроля версий Git. -
requirements.txt: Файл с зависимостями проекта. Для установки всех необходимых библиотек выполните:pip install -r requirements.tx
Для запуска сервера:
uvicorn service:app --host 0.0.0.0 --port 8000
- Python
- FastAPI
- uvicorn main:app --reload
Архитектура приложения на FastAPI с применением принципов чистой архитектуры предполагает разделение на несколько слоев: Data Source, Data, Domain и Presentation. Рассмотрим каждый из этих слоев подробнее в контексте описанной задачи — загрузка фотографии с фронтенда, получение метаданных через микросервис и сохранение всех данных в базу данных.
Этот слой отвечает за взаимодействие с пользователем (в нашем случае — с фронтендом) и обеспечивает внешнее API для приложения. Здесь находится FastAPI-эндпоинт, который принимает запросы на загрузку фотографии и отправляет ответы клиенту.
Это слой, где содержится основная бизнес-логика приложения. Domain Layer не знает, каким образом данные сохраняются или откуда они поступают — он работает с абстракциями и интерфейсами, предоставленными другими слоями.
Data Layer отвечает за реализацию интерфейсов, предоставляемых Domain Layer, для работы с данными. Этот слой знает, как сохранять и извлекать данные из различных источников — будь то база данных, файловая система или внешние API.
Этот слой отвечает за физическое хранение данных и взаимодействие с внешними системами. Здесь находятся:
- Механизмы для работы с базой данных, которая хранит информацию о загруженных фотографиях и связанных с ними метаданных.
- Механизмы для работы с внешним микросервисом, который предоставляет информацию о загруженном изображении (например, анализирует фотографию на предмет распознавания объектов или генерирует метаданные).
- Механизмы для работы с файловой системой или облачными хранилищами
- Пользователь (фронтенд) отправляет POST-запрос на загрузку фотографии.
- Presentation Layer (FastAPI-эндпоинт) принимает запрос и файл, передает его в Domain Layer.
- В Domain Layer проверяются базовые требования к файлу (например, размер и формат), затем выполняется запрос к микросервису через Data Layer для получения метаданных.
- После получения метаданных Domain Layer передает информацию в Data Layer, который отвечает за сохранение данных в базу данных и, возможно, загрузку файла в файловую систему.
- Presentation Layer отправляет ответ клиенту о результате операции.
Приложение разработано при помощи Create React App.
Сайт размещен здесь: http://213.173.108.217:10991
Загрузка необходимых модулей для работы приложения.
Запуск приложения в 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
