Skip to content

Веб-приложение на основе AI, позволяющее идентифицировать и классифицировать типы дефектов на рентгенограммах сварочных швов

Notifications You must be signed in to change notification settings

EgorSinitsyn/AI_weld_analisys

Repository files navigation

AI_Weld_Analysis 🚀


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


Полезные ссылки:


В основе — дообученная модель Ultralytics YOLOv8, которая распознаёт следующие типов дефектов:

0: "пора"
1: "включение"
2: "подрез"
3: "прожог"
4: "трещина"
5: "наплыв"
6: "эталон1"
7: "эталон2"
8: "эталон3"
9: "пора-скрытая"
10: "утяжина"
11: "несплавление"
12: "непровар корня"

2. Компоненты приложения

Сервис Образ Порт Кратко
frontend-service ai_weld_analisys-frontend-service 8000 Приём панорамы, порезка на тайлы, запрос к ML-ядру, сохранение результатов в PostgreSQL, генерация Word-отчёта и отдача статических файлов (HTML + JS + CSS).
ml-service ai_weld_analisys-ml-service 8001 YOLO-модель (ultralytics) + post-processing; отдаёт JSON с найденными дефектами для каждого тайла.
postgres postgres:15-alpine 5432 Хранит изображения и детекции.
otel-collector otel/opentelemetry-collector-contrib 4317 Трассировка OTel – прием и передача в jaeger .
jaeger jaegertracing/all-in-one 16686 Веб-UI для просмотра трассировки.

3. Быстрый запуск через Docker Compose

Требования: Docker Desktop ≥ v20, Docker Compose ≥ v2, ~4 GB RAM.

  1. Клонируем репозиторий
git clone https://github.com/EgorSinitsyn/AI_weld_analisys
cd AI_weld_analisys/
  1. Сборка и запуск приложения
docker-compose up --build
  1. Открываем в браузере клиент http://localhost:8000
  2. Для просмотра трассировки открываем http://localhost:16686
  3. Остановка приложения
docker-compose down

4. Взаимодействие с приложением

  1. Запуск сервисов, переход на http://localhost:8000 (см. п. 3)
  2. Загрузка изображения-панорамы
    • Пользователь нажимает на кнопку "Выберите изображение" и прикрепляет файл с расширением .png или .jpg, на котором необходимо распознать дефекты.
  3. Нарезка & отправка в ML-ядро
    • Frontend вычисляет размер и режет панораму на тайлы (16 / 27 / 28 частей — зависит от размера) и параллельно отправляет их на ml-service:8001/detect.
  4. Инференс YOLO
    • ML-ядро (дообученная модель Ultralytics YOLO) делает предсказания и возвращает JSON: список bbox-ов/масок с классом, уверенностью, координатами и вычисленной «длиной по линейке».
    {
      "status": "success",
      "detections": [
        {
          "class": "lack_of_fusion",
          "confidence": 0.87,
          "coordinates": "x1=123, y1=456, x2=234, y2=345",
          "index": 3,
          "length": 42
        }
      ]
    }
  5. Агрегация результатов
    • Frontend собирает ответы по всем тайлам и в интерфейсе отображает информацию об обнаруженных дефектах.
  6. Визуализация & скачивание
    • Одновременно вызывается PanoramaProcessor, который
      рисует боксы / маски на исходной панораме и сохраняет файл
      в static/results/processed_<имя>.jpg.
    • Кнопка «Открыть результат» ведёт прямо к этому JPG
    • Генерируется Word-отчёт static/reports/defects_report.docx
      со сводной таблицей и статистикой — доступен для скачивания в один клик по нажатию "Скачать отчет"
    • PS кнопки "Открыть результат" и "Скачать отчет" будут активны только после завершения обработки всех тайлов в самом низу веб-страницы. Полный цикл обработки 1 панорамы от момента загрузки до появления кнопок занимает в среднем 15-20 сек.
  7. Сохранение в PostgreSQL
    • Исходная картинка + JSON-детекции кладутся в таблицы
      images и detected (см. app/models.py).
    • Это позволит строить историю инспекций, вести аналитику и т. д.
  8. Трассировка
    • Все запросы к сервисам логируются в Jaeger, что позволяет отслеживать производительность и выявлять узкие места.
    • Для просмотра трассировки открываем http://localhost:16686

About

Веб-приложение на основе AI, позволяющее идентифицировать и классифицировать типы дефектов на рентгенограммах сварочных швов

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published