Некоторые из устаревших цифровых или аналоговых измерителей, используемых в полевых условиях, слишком сложно или дорого заменить. Например, старые счетчики воды / газа. Постоянное обнаружение давления важно для предотвращения обострения событий. Мы искали неинтервенционистские решения и решили поэкспериментировать с методами CV + ML. Для начала взяли в руки показания цифровых счетчиков. Это сообщение в блоге является частью серии экспериментов, о которых мы расскажем в следующих публикациях.
В наш набор инструментов входят: Raspberry Pi, PiCam и Movidius NCS.
Рассмотренные подходы
- Tesseract OCR
- Внимание OCR
- MNIST
Есть несколько вариантов решения этой проблемы. Их можно разделить на две большие категории: Оптическое распознавание символов и Глубокое обучение. Многие библиотеки в последнее время начали использовать модель на основе глубокого обучения как часть общего подхода к распознаванию текста. Мы оцениваем два подхода OCR и один подход глубокого обучения.
Результаты оценки
Прямо сейчас мы предоставили библиотеке изображение экрана реального измерителя, чтобы получить мимолетное представление о том, как он работает. Конечно, он почти ничего не мог прочитать, учитывая состояние фона и 7-сегментные светодиодные буквы.
Затем мы попытались создать изображение машинно-напечатанного текста, снятого камерой телефона. Это произвело такой мусор, что мы знали, что должны предварительно обработать изображение. Итак, мы сделали это. Результат был намного лучше, но кое-что все же упустил. Благодаря лучшей предварительной обработке нам удалось добиться 100% точности.
Накопив опыт, мы дали ему 7-сегментные светодиодные изображения отдельных цифр, и это было практически безнадежно. Мы могли бы изменить алгоритмы чтения светодиодов, но это отдельный проект.
Ниже приведены результаты некоторых изображений:
Attention OCR
Это давало нам ошибки, с которыми мы были слишком ленивы. Неправильно видеть ошибку в качестве первого вывода!
MNIST
Единственным оставшимся подходом была модель, основанная на глубоком обучении, обученная на базе MNIST Database. Поскольку у нас был предыдущий опыт работы с ним, мы начали просто - предоставили ему изображения рукописных цифр. Что, конечно, было признано прекрасно.
Воодушевленные, мы дали ему изображение с несколькими цифрами 7-сегментного светодиода. Неудача заключалась в том, что модель никогда не видела 7-сегментных цифр! Конечно, база данных состоит из цифр, написанных человеком.
Наша первая гипотеза заключалась в том, что его обманывают разрезы между сегментами; и это заставляет его думать, что это разные цифры вместе.
Поэтому мы подготовили несколько изображений с простыми вертикальными и горизонтальными линиями без этих неприятных разрезов. Ну, по крайней мере, он распознал что-то осязаемое, совсем неточно.
Специально обученный MNIST (небольшой набор данных)
Затем мы переобучили модель с набором данных из 1152 изображений (цифры от 0 до 9). Набор данных был очень маленьким и состоял из ужасно предвзятых данных.
Даже после этого небольшого шага обучения мы могли видеть, как модель улучшается!
Результаты оценки
Рассматривая результаты оценки, мы пришли к выводу, что мы можем обучить MNIST гораздо более эффективному распознаванию цифр для поставленной перед нами задачи.