Распознавание чтения приборной панели
Распознавание чтения приборной панели

Набор инструментальных данных для этой задачи имеет следующие трудности:

1. На шкале инструмента есть такие проблемы, как окклюзия и размытие, что влияет на распознавание оптического распознавания символов.

2. Изображение прибора имеет проблемы с вращением и наклоном, что влияет на измерение показаний.

Разработка алгоритма

Алгоритм разделен на 4 процесса. Сначала модель yolov5s используется для идентификации инструмента по исходному изображению, затем модель yolov8x-pose используется для обнаружения ключевых точек линий шкалы и указателей в инструменте, а затем — Модель DBNetpp используется для обнаружения числового поля, а модель SATRN используется для распознавания текста и, наконец, последующей обработки для получения результатов чтения.

(1) Обнаружение инструментов на основе YOLOv5.

Причина выбора

Yolov5s имеет небольшую сеть и высокую скорость. Хотя точность ПН невысока, ее вполне достаточно для обнаружения крупных целей, например приборов. Мы используем учебный комплект yolov5s, официально предоставленный Jishi для обучения. Легко начать, точность распознавания инструментов достигает 99,7%, а эффект соответствует реальным потребностям.

(2) Обнаружение ключевых точек указателя и масштаба на основе позы YOLOv8x.

Причина выбора

YOLOv8 — это модель SOTA с открытым исходным кодом, созданная командой Ultralytics YOLOv5 в этом году, которая представляет новые улучшения для дальнейшего повышения производительности и гибкости. YOLOv8 спроектирован так, чтобы быть быстрым, точным и простым в использовании, что делает его отличным выбором для обнаружения объектов, сегментации экземпляров, классификации изображений и задач оценки позы.

йоло-поза — это модель оценки осанки человека, которая делит осанку человека на 17 ключевых точек.

Чтобы максимально повысить точность обнаружения ключевых точек, мы используем самую большую модель YOLOv8x-позы.

Создание набора данных по ключевым точкам указателя

Мы используем две точки указателя в качестве ключевых точек, а прямоугольную рамку, состоящую из этих двух точек, в качестве рамки обнаружения цели. Если прямоугольная рамка, состоящая из двух точек, слишком узкая, расширьте ее соответствующим образом.

Создание набора данных ключевых точек масштаба

Поскольку каждый инструмент имеет разное количество полей значений, мы рассматриваем каждое поле значений как одну и ту же категорию для обнаружения целей, и каждое поле значений содержит соответствующую точку шкалы в качестве ключевой точки.

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

(3) Обнаружение текста на основе DBNetpp

Причина выбора

Из-за разных размеров инструментов мы выбираем модель DBNetpp, которая представляет модуль многоуровневого агрегирования функций (Adaptive Scale Fusion, ASF), основанный на модели DBNet. Модуль ASF состоит из подмодулей сценического и пространственного внимания. , что усиливает различные функции. Объединение функций масштабирования повышает надежность обработки изображений разных размеров.

(4) Распознавание текста на основе модели SATRN.

Причина выбора

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

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

(5) Идентификация чтения

Вывод вышеуказанной модели подвергается постобработке с использованием opencv для получения результатов чтения. Конкретный процесс выглядит следующим образом:

  1. Различают внутренний и внешний диаметры.

Внутренний диаметр и внешний диаметр различаются в зависимости от расстояния между точкой шкалы и полем значения и началом указателя, и последующая обработка выполняется соответственно.

  1. Определить порядок отметок

Разница углов от начальной точки до конечной точки — это наибольшая разница углов между двумя соседними точками. Нам нужно найти только эту наибольшую разницу углов, чтобы определить начальную точку.

Сначала преобразуйте координаты точки шкалы в полярные координаты с центром в начале указателя и отсортируйте их от меньшего к большему в соответствии с углом [16,0,4,8,12]

Затем вычислите разницу углов между двумя соседними точками шкалы, выберите следующую точку шкалы с наибольшей разницей в качестве начальной точки и измените порядок [0,4,8,12,16]

  1. Правильные результаты распознавания OCR

На картинке выше из-за засорения указателя 1500 распознается как 500, что исправляется через арифметическую последовательность.

  1. перспективная трансформация

шаг:

1. Определить координаты последней точки: Известно, что угол полярной координаты последней точки после преобразования перспективы равен 45°. Если предположить, что расстояние между всеми точками шкалы и центром круга равно R, то координаты будут равны. последнюю точку можно выразить как (45°, R ). Координаты в декартовой системе координат можно получить на основе полярных координат.

2. Определите координаты трех других точек: всего имеется 6 интервалов, которые делят пополам весь диапазон 270°, поэтому угол между каждым масштабом составляет 270/6=45°. На основании этого преобразуются координаты другого. три точки могут быть рассчитаны по очереди.

Таким образом, можно определить координаты четырех точек масштаба изображения после преобразования перспективы, и эти координаты можно использовать для выполнения преобразования перспективы.

  1. Добавить точки, скрытые указателем

шаг:

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

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

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

  1. Рассчитать показания

Оптимизация алгоритма

Есть проблема

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

Методы улучшения

В соответствии с распределением набора данных создайте список для каждого внутреннего и внешнего диаметра. В качестве примера возьмем внешний диаметр:

Подвести итог

преимущество:

1. Алгоритм обнаружения целей и алгоритм распознавания OCR основаны на модели SOTA в библиотеке алгоритмов с открытым исходным кодом, которая проста и эффективна и имеет широкую поддержку промышленного развертывания.

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

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

4. Благодаря преобразованию перспективы деформированное изображение прибора корректируется, чтобы сделать показания более точными.

Моменты, которые можно улучшить:

1. Преобразуйте файл модели в формат TensorRT, чтобы ускорить вывод.

2. Измените модель распознавания OCR, чтобы повысить эффективность.

boy illustration
Весенние аннотации: подробное объяснение @Service!
boy illustration
Пожалуйста, не используйте foreach для пакетной вставки в MyBatis. Для 5000 фрагментов данных потребовалось 14 минут. .
boy illustration
Как создать проект Node.js с помощью npm?
boy illustration
Mybatis-plus использует typeHandler для преобразования объединенных строк String в списки списков.
boy illustration
Не удалось установить программное обеспечение Mitsubishi. Возможно, возникла проблема с реестром.
boy illustration
Разрешение ошибок проекта SpringBoot 3 mybatis-plus: org.apache.ibatis.binding.BindingException: неверный оператор привязки
boy illustration
Более краткая проверка параметров. Для проверки параметров используйте SpringBoot Validation.
boy illustration
Поиграйтесь с интеграцией Spring Boot (платформа запланированных задач Quartz)
boy illustration
Несколько популярных режимов интерфейса API: RESTful, GraphQL, gRPC, WebSocket, Webhook.
boy illustration
Redis: практика публикации (pub) и подписки (sub)
boy illustration
Подробное объяснение пакета Golang Context
boy illustration
Краткое руководство: создайте свое первое приложение .NET Aspire
boy illustration
Краткое обсуждение метода пакетной вставки MyBatis: обработка 100 000 фрагментов данных занимает всего 2 секунды.
boy illustration
[Инструмент] Используйте nvm для управления переключением версий nodejs, это так здорово!
boy illustration
HTML можно преобразовать в word_html для отображения текстовых документов.
boy illustration
Статья Spring Security 6.x для быстрого понимания принципов настройки
boy illustration
Не забудьте изменить имя каждого модуля RUOYI один раз, чтобы избежать мошенничества ~~~
boy illustration
Научите вас шаг за шагом, как интегрировать систему обслуживания клиентов Hunyuan AI Q&A от 0 до 1.
boy illustration
Подробное объяснение Gzip: принципы и применение алгоритмов сжатия.
boy illustration
Скачать Tomcat - ссылка для скачивания на официальном сайте tomcat7, tomcat8, tomcat9
boy illustration
Развертывание IIS.NetCore
boy illustration
[Оптимизация памяти Android] Общие функции инструмента Android Profiler (мониторинг памяти | снимок памяти)
boy illustration
Встроенная в Springboot пользовательская конфигурация временного каталога, связанного с Tomcat.
boy illustration
Краткое руководство по началу работы с Element-UI
boy illustration
Руководство пользователя ГОРМ
boy illustration
Одна статья для понимания артефакта развязки внутренних компонентов Spring Event (событие Spring)
boy illustration
Java перехватывает строку после определенного символа_java, как перехватить строку
boy illustration
Давайте кратко поговорим о технологии копирования на записи.
boy illustration
Выполнение собственных условий SQL-запроса в MyBatis Plus
boy illustration
Напоминание о выпуске общедоступной учетной записи WeChat (интерфейс сообщения шаблона общедоступной учетной записи WeChat)