Стажировка по проекту
Создание ИИ-системы идентификации приборов учета электроэнергии
Компания: ООО «ЭнерТест»
Суть проекта
Задача
Для чего
Вводные данные
Создание автоматизированной системы, считывающей информацию с фотографий счётчиков электроэнергии (ПУ), делаемых и загружаемых обходчиками, с последующей сверкой полученных о счётчиках данных с официальным Госреестром
Определения возможности дальнейшей эксплуатации проверяемых ПУ, если эти ПУ имеют действующую регистрацию в Госреестре. При отсутствии действующей регистрации в Госреестре принятие решения о замене ПУ в соотвествии с действующими нормативно-правовыми актами (НПА)

  • Датасет, состоящий из 1016 изображений счетчиков электроэнергии (ПУ), снятых на мобильные устройства
  • База данных, сдержащая 9636425 записей о счетчиках (ПУ)
  • Используемые технологии: YOLO v8, Label Studio, CVAT, EasyOCR, Nginx, MSSQL, Docker
Выходные данные
  • Обученные и протестированные архитектуры решения задачи с помощью вышеуказанных технологий
  • Разработанные и развернутые на сервере Заказчика Docker контейнеры с отлаженными архитектурами, позволяющими решать поставленные Заказчиком в техзадании задачами по определению действующей регистрации ПУ по фотографиям, снятым на мобильные устройства с возможностью последующего дообучения при расширении датасета ПУ и корректировке базы данных ПУ
Участники
1 команды проекта
Проект «ЭнерТест» продемонстрировал успешное взаимодействие команды, высокую вовлеченность стажёров и их готовность решать сложные задачи. Особо выделяются заслуги Валерия Зайцева, Николая Петрова, Александра Токарева и Дмитрия Панфилова, чьи усилия были решающими для успешной реализации проекта. В процессе реализации проекта были выявлены многочисленные неточности в имеющихся базах данных из-за отсутствия соответствия записей в базе данных записям в Госреестре, которые необходимо устранять силами Заказчика, что позволит повысить точность работы предложенных решений. Прогресс проекта создаёт прочную основу для дальнейшего развития и совершенствования автоматизированной системы, позволяя эффективно применять её в реальных условиях

  • Алексей Терещенко
    Тимлид проекта
  • Алексей Татаринов
    Помощник тимлида
  • Александр Токарев
    Заместитель начальника ПТО в строительстве
    1. Разметил часть датасета с помощью инструментов Label Studio и CVAT
    2. Обучил модель Yolo8-obb (Oriented Bounding Box)
    3. Разметил датасет для обучения CRNN(5000 боксов)
    4. Обучил модель CRNN распознавать символы на СИ
    5. Создал Telegram-Bot
  • Сулоев Алексей
    Программист-инженер нейронных сетей
    1. Разметил часть датасета с помощью инструментов Label Studio и CVAT .
    2. Написал скрипт для обнаружения года, модели и других классов на электросчётчиках
  • Николай Петров
    DevOps/MLOps Engineer
    1. Произвел первичный анализ данных
    2. Разметил часть датасета с помощью инструментов Label Studio и CVAT
    3. Произвел обучение трех моделей YOLOv8
    4. Разработал Telegram-бот, отправляющий фотографии на модель Yolo8, с последующим распознавание классов изображений моделью EasyOCR
    5.  Развернул веб-сервер Nginx, на который отправляются распознанные данные
    6. Полученные с веб - сервера данные формируют промежуточную базу данных MSSQL.для вторичной проверки соответствия типов ПУ существующему Госреестру, с возможностью вносить необходимые корректировки в базу данных типов ПУ
    7. Создал на основе полученной интеграции Dockerfiles
    8. Установил и развернул полученную интеграцию на сервере Заказчика
    Архитектура интеграции: Telegram-бот -YOLOv8-obb - EasyOCR - Nginx - MSSQL. Docker
    • Установка и развертывание созданной архитектуры на сервере клиента
  • Дмитрий Панфилов
    Инженер, Специалист больших данных
    1. Разметил часть датасета с помощью инструментов Label Studio и CVAT.
    2. Сравнил различные моделиYOLOv8.
    3. Подбирал гиперпараметры и обучал модели на полном датасете
    4. Сравнивал разные системы распознавания ( Py Tesseract, easyOCR, OCR-2.0, GPT-4 Vision) и выбирал оптимальное решение, с корректировкой регулярными выражениями
    5. Разработал Telegram-бот
    6. Произвел интеграцию всех компонентов в единое решение в среде Linux следующей архитектуры: Telegram-бот- AIOGram 3.x - FastAPI - Torch- Docker
  • Игорь Лещинский
    Индивидуальный предприниматель в области розничной торговли
    1. Разметил часть датасета с помощью инструмента CVAT
    2. Принимал активное участие в создании презентации проекта
    3. Занимался организационной работой и созданием лендинга проекта
  • Пьянкова Екатерина
    Инженер-системотехник
    Разметка и подготовка данных:
    • Отсортировала фотографии, пригодные для разметки.
    • Изучила и установила ПО для разметки (LabelStudio, CVAT).
    • Провела разметку изображений и проверку разметки.
    • Сформировала датасет для обучения YOLOv8, разбила на выборки
  • Валерий Зайцев
    ООО Группа НИКОС, Заместитель директора, Руководитель проекта Рунивер
    1. Анализ исходных данных - изображения счетчиков учета представленных заказчиком - - качество изображений, читаемость основных полей данных
    2. Анализ исходных данных - база данных - наименования и типы данных, определения ошибок в наименованиях и их корректировка
    3. Написание алгоритмов улучшения качества изображения и автоматической корректировки угла наклона изображения
    4.Разметка датасета для обучения модели YOLOv8-obb
    5. Объединение датасетов, их проверка и корректировка, формирование полного датасета, обучающих и проверочных выборок
    6. Эксперименты с параметрами модели для улучшения результатов предсказания. Анализ влияния параметров модели на результаты предсказания
    7. Обучение моделей YOLOv8-obb (yolov8n-obb.pt, yolov8s-obb.pt, yolov8m-obb.pt), выбор оптимальной модели для проекта по результатам анализа качества, размера и скорости работы
    8. Анализ качества систем распознавания на основе реальных данных получаемых в проекте (EasyOCR, Tesseract, дополнительно проанализировано качество распознавания с помощью больших языковых моделях OpenAI GPT-4V и Anthropic Claude 3,5 Opus)
    9. Подготовка датасета для дообучения модели распознавания EasyOCR
    10. Создание алгоритма и скрипта для корректировки данных по результатам распознавания. Написание масок для проверки наличия в данных русских, английских символов и цифр
    11. Написание тестовых вариантов модулей-скриптов для определения номера Госреестра счетчиков учета электроэнергии (ПУ) с созданием следующей архитектуры: Telegram-бот -YOLOv8-obb - EasyOCR
     12. Модуль для обработки распознанных данных со счетчиков электроэнергии и получения информации из базы данных номера Госреестра
Участники
2 команды проекта
  • Николай Кус
    Тимлид
  • Владислав Чоповдя
    Инженер путей сообщения
    Сбор и подготовка данных:
    • Собрал данные в единое хранилище.
    • Провел парсинг данных.
    • Разметил фотографии в Roboflow и CVAT.
    Разработка Telegram-бота:
    • В течение всего проекта разрабатывал и поддерживал Telegram-бота.
    Построение архитектуры нейронных сетей:
    • Разработал архитектуру сетей для распознавания показаний счетчиков:
    Заводской номер
    Год выпуска
    Тип прибора учета (ПУ)
  • Татьяна Любина
    Секретарь в районном суде
    Разметка и очистка данных:
    • Разметила группу фотографий по классам в Roboflow.
    • Провела чистку датасета для повышения качества.
    Обучение модели YOLO:
    • Провела эксперимент по обучению модели YOLO в локальной среде.
    Разработка инструментов:
    • Написала скрипт для перекодировки координат из Roboflow.
    • Решила проблему путаницы классов.
    Подготовка данных для OCR:
    • Подготовила архив с показаниями счетчиков ('YM') с папками images и labels для использования в OCR.
  • Екатерина Сапогова
    Методолог
    Подготовка датасета:
    • Привела датасет заказчика в готовность для дальнейшей разметки изображений.
    Разметка изображений:
    • Выполнила разметку изображений с помощью CVAT.
    Изучение и обучение YOLO:
    • Ознакомилась с моделью YOLO.
    • Провела обучение на нескольких версиях YOLO с предоставленным датасетом.
    Разработка скриптов:
    • Создала скрипт для перекодировки текстовых файлов аннотаций в формат YOLO для загрузки датасета в CVAT.
    Подготовка данных для OCR:
    • Подготовила датасет по классу TP для работы с OCR.
    Работа с моделями OCR:
    • Изучила технологии OCR.
    • Проработала и протестировала модели EasyOCR, Tesseract, TrOCR для распознавания текста своего класса.
  • Александр Конюхов
    Пенсионер
    Разметка данных:
    • Разметил блок фотографий в CVAT.
    Обучение модели YOLO:
    • Провел тренировку модели YOLO на размеченном датасете.
    Распознавание элементов:
    • Занимался распознаванием элементов электросчетчика с помощью обученной модели.
  • Николай Стрельчук
    Учитель математики и информатики
    Анализ и подготовка данных:
    • Ознакомился с данными заказчика.
    • Разметил возможные классы данных.
    • Сверил данные реестра с фотографиями, исправил некорректные данные.
    Разметка и формирование датасета:
    • Разметил фотографии по классам.
    • Сформировал датасет для обучения YOLO.
    Обучение моделей YOLO:
    • Провел эксперименты по обучению на разных моделях YOLO.
    • Получил метрики и результаты детекции фотографий.
    Работа с OCR:
    • Проработал модели OCR для распознавания текста.
    • Оценил точность и результаты.
    • Подбирал гиперпараметры для достижения требуемой точности
  • Иван Гребенкин
    Инструктор по плаванию
    Ознакомление с проектом:
    • Изучил техническое задание (ТЗ).
    • Сверил пул фотографий с базой данных, отметил видимость классов.
    Разметка данных:
    • Практиковался в разметке фото в Roboflow.
    • Разметил 180 фотографий через платформу app.cvat.ai.
    • Выгрузил данные в формате COCO.
    Обработка и конвертация данных:
    • Прописал в базе данных значения показаний до сотых.
    • Установил VSCode для конвертации форматов разметки.
    • Разобрался с конвертацией из COCO в YOLOv8.
    • Написал методичку-инструкцию для коллег по конвертации форматов.
    Обучение модели YOLO:
    • Запускал пробное обучение YOLO на общем датасете.
    • Столкнулся с переобучением модели при работе с нейросетью коллеги.
  • Гуща Наталья
    к.э.н., Мировая экономика
    Анализ и подготовка данных:
    • Ознакомилась с ТЗ и данными заказчика.
    • Сверила фотографии счетчиков с данными реестра, исправила ошибки.
    • Отсортировала фото для разметки, удалив некорректные.
    Изучение инструментов и технологий:
    • Изучила ПО для разметки данных (LabelImg, Roboflow).
    • Изучила материалы по Object Detection, трекингу объектов, работе с командной строкой, Git, Python.
    Разметка и обучение моделей:
    • Разметила фотографии, выложила ссылку на данные.
    • Обучила YOLOv8 и YOLOv5 по скриптам, получив метрики.
    • Провела тюнинг гиперпараметров, выявила и устранила переобучение.
    Глубокое изучение нейросетей:
    • Изучила функции активации, оптимизаторы, архитектуру нейросетей.
    • Изучила методы разделения данных на выборки, стратификацию, методы регуляризации.
    Практическое применение:
    • Применяла знания для улучшения модели.
    • Провела работу с архитектурой линейных сетей, проверяя влияние гиперпараметров на обучение.
  • Ксения Пахомова
    Тренер по танцевальному спорту
    Разметка и подготовка данных:
    • Отмечала данные по счетчикам цветами для визуализации.
    • Сделала разметку своей части датасета в CVAT по классам.
    • Конвертировала датасет из формата COCO в YOLO.
    • Разбила датасет на выборки.
    Обучение моделей:
    • Тренировала модель YOLO в VSCode и Google Colab.
    • Обучила YOLOv8.
    • Тренировала EasyOCR для распознавания текста.
    • Провела распознавание класса FN с помощью EasyOCR.
    Командная работа и обработка данных:
    • Совместно с Александром Конюховым подготавливала датасет.
    • Вручную сформировала и обработала 1029 текстовых файлов показаний счетчиков ('MR').
    • Проработала несколько моделей OCR для достижения лучшей точности.
  • Виктория Даубарг
    Техническая эксплуатация авиационных электросистем
    Анализ и разметка данных:
    • Проанализировала данные заказчика.
    • Разметила фотографии из базы данных.
    Формирование датасета:
    • Сформировала датасет для обучения YOLO.
    • Подготовила выборки данных для обучения.
    Эксперименты с моделями:
    • Провела эксперименты с моделями YOLO и OCR.
    • Оценила результаты и точность моделей.
  • Ирина Иванова
    Главный эксперт Банк Уралсиб
    Сверка и корректировка данных:
    • Сверила данные реестра с фотографиями заказчика.
    • Исправила некорректные данные, дополнила информацию.
    • Подготовила и отсортировала реестр данных.
    Разметка и подготовка данных:
    • Отсортировала фотографии, пригодные для разметки.
    • Изучила и установила ПО для разметки (LabelStudio, Roboflow, CVAT).
    • Провела разметку изображений и проверку разметки.
    • Сформировала датасет для обучения YOLOv8, разбила на выборки.
    Обучение моделей YOLO:
    • Провела эксперименты по обучению на разных моделях YOLO.
    • Получила метрики и результаты детекции на фотографиях.
    Работа с OCR:
    • Изучила материалы по OCR (EasyOCR, Tesseract-OCR).
    • В VSCode провела обучение с помощью EasyOCR.
    • Установила необходимые библиотеки и зависимости (Miniconda).
    • Получила результаты распознавания текстов по датасету.
    Изучение нейросетей:
    • Изучила материалы по переобучению нейросетей, функциям активации, оптимизаторам.
    • Провела работу с архитектурой нейросети.
  • Ольга Макарикова
    Биоинформатик
    Разметка фотографий:
    • Занималась разметкой фотографий для тренировки модели YOLO.
    Анализ данных заказчика:
    • Провела анализ данных, предоставленных заказчиком.
    • Внесла комментарии и уточнения в таблицу заказчика.