УДК 004.932
А. С. Шохнин, А. В. Долганов
СИСТЕМА РАСПОЗНАВАНИЯ НОМЕРОВ ЖЕЛЕЗНОДОРОЖНЫХ ЦИСТЕРН НА НЕФТЕНАЛИВНЫХ ТЕРМИНАЛАХ
Ключевые слова: нефтеналивной терминал, железнодорожные цистерны, система распознавание номеров, нейронный сети.
Работа посвящена разработке принципов и созданию системы распознавания номеров железнодорожных вагонов. Выполнен анализ существующих и предложено ряд новых методик, предназначенных для повышения точности распознавания образов системами видеонаблюдения.
Keywords: oil terminal, rail tank cars, the system identification numbers, the neural network.
The work is dedicated to the development of principles and establish a system of identification numbers of railway wagons. The analysis of the existing and proposed a number of new methods designed to improve the accuracy of recognition surveillance system.
Введение
Сегодня, когда Россия наращивает объемы железнодорожных перевозок добычи нефти и газа, нефтедобывающие и нефтеперерабатывающие компании волнует вопрос увеличения эффективности эксплуатации нефтеналивных терминалов. Причем проблема лежит в области учета вагонов и их грузов. Традиционно эта задача решается ручной сверкой номеров вагонов, подсчетом вагонов в составе, сопоставлением данных текущего веса груза и веса груза в натур-листе и выявлении ошибок и нарушений. Все операции по учету вагонов проводятся вне помещений и в любую погоду. Роль человеческого фактора при этом весьма значительна, потому что нередко случается "потеря вагонов", путаница с номерами, задержки с отгрузкой. Решение данной задачи лежит в области автоматизации учета и контроля движения железнодорожного подвижного состава [1].
В России существует много систем учета и распознавания номеров вагонов и цистерн. Самые известные из них: система распознавания номеров вагонов "ARSCIS" от ООО "Малленом", программный комплекс DAVIS с модулем распознавания номеров ЖД вагонов от ОВ-СОФТ, модуль MegaTrain распознавания ж/д номеров от ООО "Мегапиксел", система оптического считывания номеров вагонов и цистерн RailwayDisp от компании Intlab, программно-аппаратный комплекс "SecurOS Transit" от компании "Интеллектуальные Системы Безопасности" (ISS) и др. [2].
Функционал у всех этих систем приблизительно одинаков - они автоматизируют процесс считывания номеров и сохраняют полученную информацию. Некоторые системы предоставляют за отдельную плату набор прикладных библиотек, с помощью которых можно в собственных проектах использовать запатентованные алгоритмы этих разработчиков. Скорее всего, данные продукты на этапе распознавания символов в качестве классификатора используют искусственные нейронные сети для получения более качественного результата на выходе.
Проводить сравнительный анализ этих систем только по предоставленной рекламе, которую фирмы-разработчики располагают на своих сайтах,
не всегда корректно. В основном имеются завышенные характеристики представленных систем, неконкретные определения функциональных особенностей и неполное их описание.
В настоящей статье предлагается методика распознавания номеров железнодорожных цистерн на нефтеналивных терминалах.
Постановка задачи
Нефтеналивной терминал состоит из наливной платформы, с обеих сторон которой имеются подъездные пути, что позволяет одновременно обслуживать два состава. Эти пути соединяются в один подъездной путь, по которому осуществляется движение всех составов под налив. В месте их соединения расположена площадка видеонаблюдения (рис. 1), на которой с обеих сторон железнодорожного пути расположены две цифровые видеокамеры.
Рис. 1 - Структурная схема технического обеспечения системы распознавания номеров железнодорожных цистерн. 1 - видеокамеры, 2 - датчики счета осей вагонов, 3 - сервер баз данных и вычислитель, 4 - рабочее место оператора, 5 - источник света
Использование двух видеокамер необходимо для повышения надежности распознавания номеров цистерн. Система должна автоматически определять момент появления поезда. Начиная с этого момента и до окончания прохождения состава через площадку видеонаблюдения, необходимо сохранять видеоданные с обеих камер в виде отдельных файлов. Это
требуется для контроля оператором результатов работы системы распознавания номеров [3].
Одновременно с этим система должна определить направление движения поезда, выполнить разбиение проходящего состава на цистерны и подсчитать их число. Для каждой цистерны необходимо быстро локализовать область, в которой расположен номер цистерны, и распознать все составляющие его восемь цифр (рис. 2).
Рис. 2 - Информация о цистерне: восьмизначный номер, тип (66) и код принадлежности стране (20)
Первая цифра характеризует род подвижного состава: 0 - пассажирские вагоны; 1 - локомотивы, путевые машины, краны и прочие; 2 - крытые грузовые вагоны; 3 - транспортеры, шестиосные вагоны, четырехосные хопперы-дозаторы и думпкары; 4 - платформы; 5 - вагоны, находящиеся в собственности предприятий; 6 - полувагоны; 7 - цистерны; 8 - изотермические вагоны; 9 - прочие четырехосные вагоны. Вторая цифра номера характеризует осность и основные характеристики вагона. Третья, четвертая, пятая и шестая цифры номера у всех вагонов, кроме транспортеров, характеристик не содержит. Седьмая цифра, кроме транспортеров, кодирует наличие или отсутствие переходной площадки. Восьмая цифра - это контрольная цифра номера, с её помощью проверяют правильность передачи и записи номера в документах. Для расчета контрольной цифры, берут первые 7 цифр номера, каждую нечётную цифру номера умножают на 2, а четную на 1, складывают полученные цифры (а не числа), полученное число округляют до ближайшего десятка, дополняющее до ближайшего десятка число и есть контрольная цифра номера.
После прохождения поезда на основании данных, полученных с обеих видеокамер, должен быть сформирован отчет о составе, содержащий следующую информацию: время начала и окончания прохождения поезда через площадку видеонаблюдения, направление движения, число цистерн, ссылки на файлы видеоданных с обеих камер, номер и привязка к видеоданным (номера кадров с ее изображением) для каждой цистерны.
Система распознавания номеров должна работать в условиях естественного освещения в дневное время и при искусственном - в ночное. Естественное освещение сопровождается значительными изменениями условий освещенности в течение суток, что приводит к появлению на изображениях значительного контраста по яркости и даже засветке
отдельных участков при определенном положении солнца.
Объекты наблюдения - цистерны имеют различную длину и высоту, расположение номера на цистерне не фиксировано. Промежутки между цистернами неодинаковы. Характер загрязнения цистерн - самый разнообразный от небольшого естественного, до практически сплошного залива нефтяными подтеками. Встречаются цистерны с мелкими контрастными пятнами различного размера. Используемые для написания номеров цистерн шрифты не стандартизированы, что в значительной степени затрудняет распознавание [4].
Задачу локализации и распознавания номеров железнодорожных вагонов можно разбить на следующие подзадачи:
- локализация областей номерных знаков;
- фильтрация (удаление помех) с области номерного знака;
- сегментация номерного знака на отдельные символы;
- распознавание символов номерного знака. Локализация области номерного знака
В работах [5-7] описывается, что для локализации применяется метод поиска по шаблону, но при этом он требует значительных временных затрат (от 5 до 60 секунд на один кадр). Поэтому для локализации областей номеров железнодорожных вагонов предлагается следующий метод, который решает эту проблему (скорость обработки кадра уменьшилась до 40 мс). Основная идея заключается в том, что большая часть информации идет не через цветовые каналы, а через яркость. Именно по перепадам яркости определяются границы объектов, в нашем случае это цифры.
Предлагается следующая последовательность действий для локализации области номерного знака.
1. Задаем размер области поиска. В нашем случае - это квадрат. Его размер должен быть таким, чтобы он мог целиком перекрыть ширину символа. Далее всё изображение разбиваем на мелкие ячейки, так как производить поиск по всему изображению не имеет смысла. Для повышения скорости работы и качества обнаружения поиск выполняем только в пределах контуров объектов, игнорируя резкие перепады на его краях.
2. Находим, где наблюдаются перепады яркости. Берем все яркости точек в ячейке, среди них находим минимальную яркость и максимальную. Если отношение максимальной яркости к минимальной находится в заранее определенных пределах, то этот квадрат принимается в качестве контрольного.
3. Определяем, есть ли помехи. Если они есть, то увеличиваем размеры квадратов, чтобы они захватывали как можно большую область.
4. Выделяем те области, где возможно расположение символов, то есть в процессе поиска запоминаем области, где находятся более 75% выделенных точек.
5. Объединяем все близлежащие области. Учитываем расстояние между символами, с учетом возможных ребер жесткости на вагоне.
Фильтрация области номерного знака
Фильтруем все области, не представляющие собой номерные знаки, для этого применяем метод бинаризации, который был использован в следующих работах [4, 8].
Сегментация номерного знака
Сегментация номерного знака зависит от размеров и наклона символов. Оптимальным методом сегментации является сегментация горизонтальной гистограммой, которая выстраивается путем суммирования пикселей по столбцам изображения. Провалы вокруг пика в горизонтальной гистограмме представляют собой начальную и конечную координату символа номерного знака. Сегментацию для четко разделимых последовательностей символов можно также произвести методом заливки. Этим методом очищается изображение от оставшегося "мусора" после фильтрации средних и крупных помех.
Предобработка символов
После сегментации получены группы пикселей, которые предположительно являются символами. Для предобработки было решено подавать на вход анализатора не группы пикселей, а их спектр. Преимущества спектра перед "чистыми" изображениями в том, что амплитуды объектов всегда одинаковы и где бы ни находился объект на изображении, меняется только фаза.
Перед преобразованием Фурье производим нормализацию данных [9]. Сначала выполняем инверсию цвета, в нашей системе черный цвет - это ноль, а белый - максимум, например единица. Полученные инверсные изображения символов дополняем нулями (черным цветом) до определенных размеров (16х16 пикселей) таким образом, чтобы символ находился в центре.
Распознавание символов
Распознавание символов проводим с помощью искусственных нейронных сетей персептрон-ного типа с сигмоидными активационными функциями [10].
Двухслойный персептрон содержит 256 входных нейронов, что соответствует спектру символа размером 16х16, и 10 выходных нейрона для кодирования цифр 0 до 9. Число нейронов в скрытом слое определяется по формулам Арнольда -Колмогорова - Хехт-Нильсена [11], а затем оптимизировалось ручным способом.
Спектр символа на вход нейронной сети подавался в нормализованном виде. Общая ошибка обучения нейронной сети вычислялась по формуле
E = N ± [M | (desired у- output j)
где N - общее число обучающих примеров, M - общее число выходов у сети, desired, - желаемый выход в i -м примере на -м выходе нейронной сети,
output, - полученный выход в i -м примера на J -м
выходе нейронной сети [12].
Для обучения сети было опробовано два варианта: классический - когда сеть обучается на реальных образах и нетрадиционный - когда сеть обучается на программно сгенерированных образах. Первое обучающее множество, состоящее из 1015 спектров символов (классический подход), было получено путем анализа видеоархива за несколько дней - сканировался видеоархив и обнаруженные номера разбивались на символы. Второе обучающее множество (полученное в результате изменения наклона, размеров и с добавлением шумов на исходные цифры от 0 до 9), состоящее из 2400 спектров символов, было сгенерировано программным образом (нетрадиционный подход).
Нейронные сети обучались до тех пор, пока среднеквадратичная погрешность не стала меньше 0,015%. После обучения нейронные сети тестировались на 300 примерах, полученных в реальных условиях.
Обсуждение результатов
Нейронная сеть, обученная с помощью традиционного подхода, показала погрешность тестирования 12% (неверно распознано 37 символа из 300), ошибки происходили, когда на изображении оставались не отфильтрованные шумы и когда изменялся угол наклона символов.
Погрешность нейронной сети, обученной на сгенерированном обучающем множестве (нетрадиционный подход), зависит от пределов изменения наклона, размеров символов, степени добавляемого шума и др. Поиск наилучшего сочетания этих параметров представляет собой сложную оптимизационную задачу со многими экстремумами. Решение этой задачи путем эвристического перебора параметров позволил добиться погрешности тестирования 7% (неверно распознано 21 символов из 300).
При реальной работе системы, ошибка при распознавании оказалась выше на 25% - 50%. Это связано с тем, что каждый раз для распознавания попадаются новые объекты, с большим количеством различных помех.
С целью снижения погрешности работы системы был реализован следующий прием. Поскольку изображение с источника непрерывно меняется, а именно номер вагона сначала появляется в кадре только частично, затем он оказывается в центре кадра и так далее, пока полностью не исчезнет. Поэтому, чтобы более полно обрабатывать противоречивые и неполные данные, было принято решение, что номер вагона должен обрабатываться системой на каждом кадре и за конечный результат принимается кадр, где номер наиболее чётко различим. В результате применения этого приема погрешность системы видеонаблюдения была снижена до 18-22%.
Дальнейшее снижение погрешности системы (до 12-15%) было достигнуто за счет использования двух камер, установленных по разные стороны от вагона. В этом случае спорные моменты решались путем "голосования нейросетей": за оконча-
тельное принималось мнение той неиросети, у которой выходной сигнал, идентифицирующий распознанный символ, оказывался сильнее.
Тем не менее, качество распознавания номеров в сильной степени оказалось зависимым от степени их загрязненности. Если номера не загрязнены, то процент правильно распознанных номеров достигал 100%. В других случаях процент правильно распознанных номеров мог падать, однако не ниже 55%.
Заключение
В работе представлена система распознавания номеров железнодорожных цистерн. Внедрение данной системы позволяет значительно сократить обслуживание железнодорожных составов, исключив рутинные процессы сверки номеров и подсчета вагонов в составе.
Данная методика может быть применена и в других областях промышленности, использующий железнодорожный транспорт.
Литература
1. Е.Н. Веснин, В.А. Царев, А.Е. Михайлов, Control Engineering Россия, 49. 1. 60-66 (2014).
2. Н.Л. Казанский, С.Б. Попов, Компьютерная оптика, 36.
3. 419-428 (2012).
3. А.П. Буланов, С.М. Шумаков, С.Г. Волотовский, Н.Л. Казанский, С.Б. Попов, Р.В. Хмелев, Автоматизация в промышленности, 6. 57-59 (2005).
4. О.В. Выголов, Ю.В. Визильтер, С. Л. Каратеев, Вестник компьютерных и информационных технологий, 10. 1319 (2013).
5. С.А. Кулаков, Г.В. Разумовский, Известия СПБГЭТУ «ЛЭТИ», 9. 8-12 (2013).
6. Н.Л. Казанский, Р.В. Хмелев, Компьютерная оптика, 20. 128-133 (2000).
7. А.П. Кирпичников, С.А. Ляшева, М.П. Шлеймович, Вестник Казан. технол. ун-та, 17. 13. 331-334 (2014).
8. О.А. Кушниренко, А.В. Садченко, А.В. Троянский, Восточно-Европейский журнал передовых технологий, 3. 9. 42-45 (2013).
9. R.N. Bracewell, The Fourier transform and its applications. McGraw-Hill Sci-ence/Engineering/ Math, 3 edition, 1999,. 640 p.
10. Л.Ю. Емалетдинова, А.С. Катасев, А.П. Кирпичников, Вестник Казан. технол. ун-та, 17. 1. 295-299 (2014).
11. Л.Н. Ясницкий, Т.В. Данилевич. Современные проблемы науки. Бином, Москва, 2008.
12. Ф.М. Черепанов, Л.Н. Ясницкий, Вестник Пермского университета, 4, 151-155 (2008).
©А. С. Шохнин - студент НХТИ КНИТУ, [email protected]; А. В. Долганов - к.т.н., доцент кафедры АТПП НХТИ КНИТУ, [email protected]
© A. S. Shohnin - student №СНП KNRTU, [email protected]; A. V. Dolganov - Ph.D., assistant professor of №СНТ1 KNRTU, [email protected].