Устройство на основе ПЛИС для распознавания рукописных цифр на изображениях

Автор: Зоев Иван Владимирович, Береснев Алексей Павлович, Марков Николай Григорьевич, Мальчуков Андрей Николаевич

Журнал: Компьютерная оптика @computer-optics

Рубрика: Обработка изображений, распознавание образов

Статья в выпуске: 6 т.41, 2017 года.

Бесплатный доступ

Рассмотрена задача создания мобильного и энергоэффективного устройства, позволяющего распознавать рукописные цифры на изображениях с помощью свёрточных нейронных сетей. Устройство реализовано на основе программируемой логической интегральной схемы, входящей в систему на кристалле Cyclone V SX. При этом разработаны функциональные схемы вычислительных блоков, реализующих процедуры свёртки и подвыборки, а также функциональная схема самой свёрточной нейронной сети предложенной архитектуры. Приведены результаты исследования эффективности созданного устройства на программируемой логической интегральной схеме в части точности распознавания рукописных цифр, производительности устройства и его энергопотребления. Показаны результаты сравнения эффективности аппаратной реализации свёрточной нейронной сети с её программной реализацией.

Еще

Распознавание рукописных цифр на изображениях, свёрточные нейронные сети, устройство на основе программируемой логической интегральной схемы

Короткий адрес: https://sciup.org/140228691

IDR: 140228691   |   DOI: 10.18287/2412-6179-2017-41-6-938-949

Текст научной статьи Устройство на основе ПЛИС для распознавания рукописных цифр на изображениях

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

Для распознавания объектов на изображениях весьма часто используются искусственные нейронные сети (ИНС) [1]. Наиболее эффективными из них для решения таких задач являются свёрточные нейронные сети (СНС) [2, 3].

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

В данной статье описывается разработанное на основе программируемой логической интегральной схемы (ПЛИС) устройство, позволяющее распознавать рукописные цифры с помощью СНС предложенной авторами архитектуры, основанной на архитектуре LeNet5 [4]. Приводятся результаты исследования эффективности этого устройства в части точности распознавания цифр, его производительности и энергопотребления.

фикации, позволяющие отнести образы на изображениях (объекты) к определенному классу по существующим признакам, характеризующим такие объекты. Распознавание рукописных цифр – это частный случай задачи распознавания образов, который в настоящее время достаточно хорошо исследован [4, 5]. Сегодня при решении задачи распознавания рукописных цифр в качестве методов классификации используются весьма сложные, но и более точные методы, например, опорных векторов [6], и различного рода ИНС [7, 8]. Ряд исследователей вообще считает, что использование ИНС является наиболее перспективным направлением при распознавании на изображениях рукописных символов, в том числе цифр [9, 10]. Результаты многих исследований показывают, что точность классификации (точность распознавания символов) зависит от характера обучения ИНС, от объемов используемых обучающих выборок и т.д. [11–14].

Ян ЛеКун (англ. Yann LeCun) с коллегами для решения задачи распознавания рукописных цифр предложили новый вид ИНС – свёрточные нейронные сети [4]. Архитектура СНС, описанная в этой работе, получила название LeNet5. В [4, 15, 16] показано, что СНС по сравнению с ИНС других видов дают значительно меньшую ошибку при распознавании рукописных цифр.

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

Для аппаратной реализации СНС, обладающих высокой вычислительной сложностью, необходима соответствующая элементная база, которая позволила бы создать устройство с высокой производительностью. Основными вычислительными устройствами, с помощью которых обычно реализуют ИНС, в том числе и СНС – центральные процессоры (CPU) компьютеров и графические процессоры (GPU). Однако такие процессоры имеют большое энергопотребление, что неприемлемо в нашем случае. Программируемые логические интегральные схемы (ПЛИС) имеют низкое энергопотребление, а также позволяют реализовать параллельные вычисления, что важно при удовлетворении требования к устройству по быстродействию. Исходя из этого, для аппаратной реализации СНС была выбрана система на кристалле Cyclone V SX, в которой, кроме ПЛИС, имеется двухъядерный процессор ARM Cortex – A9. Плата Terasic SoCkit [17], взятая за основу устройства, содержит выбранную систему на кристалле, ОЗУ ёмкостью 1 ГБ и слот для карты памяти MircoSD, которые напрямую подключены к процессору. Всё это позволяет упростить взаимодействие разрабатываемого устройства с подключаемыми периферийными устройствами и добиться от него низкого энергопотребления.

Отметим, что идея аппаратной реализации СНС на ПЛИС, по-видимому, впервые сформулирована в [18]. В работах [19, 20] показаны результаты ускорения вычислений при реализации СНС весьма сложной архитектуры AlexNet на ПЛИС с большими вычислительными ресурсами и с большим энергопотреблением. Такая ПЛИС позиционируется компанией Xilinx как основа для создания высокопроизводительных вычислительных систем. По количеству логических ячеек она превосходит выбранную нами ПЛИС в 11,7 раза, а по рабочей частоте — в 2 раза. Авторами этих работ не ставилась и не может быть решена с использованием такой ПЛИС задача по созданию мобильных устройств с низким энергопотреблением для распознавания рукописных цифр. Более того, исследуемые в [19, 20] методы распараллеливания вычислений для архитектуры СНС AlexNet не могут быть реализованы на ПЛИС, включая выбранную нами, с меньшими ресурсами. Предлагаемая и описанная далее архитектура СНС и её аппаратная реализация разрабатывались с учетом значительной ограниченности вычислительных ресурсов широко распространенных ПЛИС.

  • 2.    Архитектура свёрточной нейронной сети

В предложенной нами архитектуре СНС (рис. 1), подобной архитектуре LeNet5, используются свёрточные слои (convolutional layers), слои подвыборки (pooling layers), а в качестве функции активации применяется оператор «выпрямитель» (англ. Rectified

Linear Unit – ReLU), название по аналогии с однопо- лупериодным выпрямителем в электротехнике.

Свёрточный слои:

карты, шаг 1

Свёрточный слои: ядро 7x7, 3 входных карты, шаг 1

Слой подвыборки: окно 2 х?, шаг 2

Свёрточный слои: ядро 5x5, б входных карт, шаг 1

Слой подвыборки: окно 2x2, шаг 2

Полносвязный слой: выходов 10

Рис. 1. Архитектура СНС

Использование ReLU имеет по сравнению с другими функциями активации ряд преимуществ: не требует ресурсоёмких операций, таких как возведение в степень и т.п., и повышает скорость обучения сети [21]. ReLU заменяет все отрицательные элементы на нулевые. Данная функция активации вычисляется как max(0, x ).

Суть процедуры свёртки заключается в том, что каждый элемент двумерного изображения I умножается на матрицу K – ядро свёртки (англ. convolution kernel) размерности h×w поэлементно и результат суммируется и записывается в аналогичную позицию выходного изображения:

wh

( I * K ) xy = ЕЕ K j * I x + i , y + j , i = 1 j = 1

где x , y – координаты элемента в исходном изображении, i , j – координаты элемента в ядре свёртки, а w, h – ширина и высота ядра свёртки соответственно. Элементы изображения I являются входными значениями для нейрона в СНС, а ядро свёртки K хранит в себе значения весовых коэффициентов нейрона.

Ядро свёртки K по сути является фильтром, в котором закодирован некоторый ключевой признак объекта, извлекаемый из изображения. Таким образом, результат операции свёртки – это изображение, элементы которого хранят степень похожести фрагмента изображения на фильтр. Такое выходное изображение называется картой признаков.

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

Архитектура свёрточного слоя задается параметрами: глубина – количество входных/выходных карт признаков; высота h и ширина w каждого из ядер свёртки; шаг, с которым ядро свёртки двигается по входному слою. Hа рис. 1 изображены 3 свёрточных слоя. Первый из них обладает следующими параметрами: высота и ширина каждого ядра равны 7 элементам, шаг равен 1 элементу, глубина равна 3 (три входные карты). Наличие трех входных карт признаков у первого слоя позволяет применять сеть предложенной архитектуры не только для распознавания рукописных цифр, но и других объектов на изображениях. В большинстве СНС конечные слои являются полносвязными. Можно задать параметры для свёрточного слоя таким образом, чтобы получить из него полносвязный слой. Так, полносвязный слой на рис. 1 можно представить как свёрточный слой с такими параметрами: высота и ширина ядра свёртки будут равны 1, входные карты признаков будут размером 1×1, а их глубина равна 100, количество выходных карт признаков будет равным 10.

Подвыборка (также может называться «пуллинг» от англ. pooling ) уменьшает размерность каждой карты признаков, но сохраняет наиболее значимую информацию. Из рис. 1 видно, что после первого свёрточного слоя, результатом которого является 6 карт признаков размером 26×26 элементов, идёт слой подвыборки с окном 2×2 элемента и шагом 2. Входная карта признаков при подвыборке разбивается на области размером 2×2 элемента. Для каждой такой области выполняется процедура подвыборки, которая может проводиться по разным алгоритмам, например, выбор максимальных значений элементов, среднее значение для элементов области, сумма значений элементов и т.д. После процедуры подвыборки получается 6 карт признаков размером 13×13 элементов.

В случае подвыборки с использованием максимальных значений элементов (англ. max pooling) в выходное изображение записывается элемент с максимальным значением из каждого окна 2×2 элемента. В соответствии с результатами исследований из [22], данный алгоритм подвыборки работает лучше других, так как сокращает вычисления и обеспечивает независимость результата процедуры от изменения входных данных. Поэтому он и был выбран нами, что важно для увеличения производительности разрабатываемого устройства.

Для извлечения ключевых признаков весовые коэффициенты процедуры свёртки настраиваются с использованием обучающей выборки. Существует множество обучающих выборок, собранных для решения различного рода задач. С учётом поставленной задачи распознавания рукописных цифр, хорошо подходит база изображений рукописных цифр MNIST [4, 23]. Сегодня она содержит 60000 обучающих и 10000 тестовых пар (изображение – метка). Изображения нормализованы по размеру и отцентрированы. Размер каждой цифры не более 20×20 пикселей, но вписаны они в квадрат размером 28×28 пикселей.

Для решения задачи создания устройства необходимо не только обучить программно реализованную СНС, но и использовать полученные весовые коэффициенты свёрточных слоёв в дальнейшем при аппаратной реализации этой сети. В настоящее время существуют несколько библиотек программ для создания и обучения ИНС [24]. Ранее нами была выбрана библиотека Caffe, использующая для хранения весовых коэффициентов 32-разрядные числа с плавающей запятой [25], и предложена методика переноса весовых коэффициентов для их использования в аппаратной реализации СНС [26]. Эта библиотека позволила программно реализовать СНС предложенной архитектуры и провести её обучение на обучающей выборке из базы MNIST .

Обучение CНС проводилось с использованием процедур из библиотеки Caffe, реализующих метод обратного распространения ошибки и один из методов оптимизации – метод стохастического градиентного спуска (англ. Stochastic Gradient Decent – SGD ) [13, 14]. Параметры оптимизации взяты из обучающих примеров библиотеки. За одну итерацию выбиралось одно изображение из обучающей выборки. Всего осуществлялось 600000 итераций. Так как изображения из базы MNIST являются одноканальными, а на вход предлагаемой СНС необходимо подать трехканальное изображение, то на её вход одномоментно подавались три копии изображения. В качестве функции потерь (англ. loss function ) использовалась сумма квадратов разности между ожидаемым и полученным значением на выходе СНС. Веса сети инициализировались по методу Завьера [27].

  • 3.    Аппаратная реализация свёрточной нейронной сети

  • 3.1.    Блоки базовых операций над числами

В аппаратной СНС вычислительные блоки будут двух типов, реализующих соответственно процедуры свёртки и подвыборки. Поскольку в архитектуре СНС используются процедуры свёртки с разными значениями параметров, то при аппаратной реализации первого слоя необходимо 6 вычислительных блоков свёртки, для второго слоя – 6 вычислительных блоков подвыборки, для реализации третьего слоя – 32 блока свёртки, четвертого – 32 блока подвыборки. Для пя- того слоя необходимо 100 вычислительных блоков свёртки, а для шестого (полносвязного) – 10 блоков свёртки. Такие параллельно выполняемые вычислительные блоки используются в каждом слое с учётом того, что в СНС выходные карты признаков формируются независимо друг от друга.

Исходя из анализа архитектуры СНС, можно считать, что основными (базовыми) операциями при вычислениях являются сложение, умножение (используются в процедуре свертки) и операция выбора максимального числа (используется в процедуре подвыборки). При этом вычисления ведутся над числами с плавающей запятой. Однако во многих ПЛИС, в том числе в используемой нами, отсутствуют встроенные блоки для выполнения операций с плавающей запятой. В этой связи необходимо было реализовать базовые операции над числами с плавающей запятой.

На рис. 2 показана функциональная схема разработанного базового блока (субблока – входит в состав вычислительного блока свёртки), реализующего операцию умножения над числами с плавающей запятой.

mult

________ Число 2 ________

Знак | Порядок | Мантисса

_________ Число 1 _________

Знак ^Порядок! Мантисса

[2N-1\

Знак сложения порядков

Знак | Порядок | Мантисса Произведение

Рис. 2. Функциональная схема блока, реализующего операцию умножения

A2N-LNA ^\2N-2:N-1}

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

Аппаратная реализация операции сложения над числами с плавающей запятой является более сложной задачей, чем реализация операции умножения. Основная проблема в том, что согласно стандарту IEEE 754, необходимо сначала привести два числа к одному порядку, а затем произвести сложение [28]. Однако это требует больших вычислительных ресур- сов, поэтому операция сложения была реализована согласно работе [29], что позволило сократить использование ресурсов ПЛИС.

В соответствии с этим подходом была разработана функциональная схема блока, реализующего данную

Рис. 3. Функциональная схема блока, реализующего операцию сложения

В субблоке упорядочивания исходных чисел на выход max подается n 1, а на выход min n 2, если признак максимального числа s = 1; если же признак s =0, то max= n 2, min = n 1. Признак максимального числа s вычисляется на основе разницы порядков операндов. Субблок Dec 1 преобразует знак, порядок и мантиссу минимального слагаемого и формирует на выходе нормализованную мантиссу с учётом разницы между порядками слагаемых. Субблок Dec 2 формирует значение смещения для порядка максимального операнда, а на выходе m – мантисса суммы. На вход Dec 2 поступает результат сложения мантисс. Знак суммы вычисляется в результате сложения нормализованной мантиссы (выход Dec 1) и мантиссы максимального операнда со знаком. Мантисса суммы формируется на основе поиска первой старшей единицы в субблоке Dec 2. Порядок суммы вычисляется путём сложения порядка максимального операнда со значением смещения (выход sh субблока Dec 2).

Рассмотрим аппаратную реализацию операции выбора максимального числа . Она основана на вычислении разниц между порядками и мантиссами двух чисел с плавающей запятой. Функциональная схема базового блока comp для такой операции представлена на рис. 4.

Результат сравнения знаков входных чисел формируется логической операцией исключающего ИЛИ. Результаты сравнения порядков и мантисс чисел кодируются 0 или 1 в зависимости от знака разности. Dec декодирует поступающие на входы результаты сравнения знаков, порядков и мантисс входных чисел. Выбор максимального числа зависит от значения выхода элемента Dec: если оно равно 0, то максимальное число 1, если – 1, то число 2. На выход блока подается максимальное число.

блока выбора максимального числа

3.2. Вычислительные блоки свёртки и подвыборки

Блоки (субблоки), реализующие базовые операции, использовались при создании вычислительных блоков свёртки и подвыборки. Так, для реализации блока свёртки используются блоки базовых операций умножения и сложения. Описание входных и выходных сигналов на функциональной схеме этого блока следующее (рис. 5): 1 – вход для значений весовых коэффициентов; 2 – входные значения нейронов; 3 – управляющий сигнал для вычисления свёртки; 4 – сигнал сброса автоматов; 5 – управляющий сигнал для окончания свёртки; 6 – вход для значения смещения нейрона; 7 – выходное значение нейрона.

Conv

Рис. 5. Функциональная схема блока свёртки

Вычислительный блок свёртки содержит в себе субблок нейрона ( Neuron ) и управляющие автоматы St_machine_conv . Субблок Neuron состоит из автомата St_machine_sum и блоков операции умножения и сложения. Способ включения этих блоков операций позволяет организовать двухэтапный конвейер.

После поступления управляющего сигнала 3 начинают свою работу автоматы St_machine_conv и St_machine_sum. Два управляющих автомата St_machine_conv обеспечивают синхронизацию с внешними блоками, сброс и подачу входных значений и весов, считанных из блоков памяти SRAM, на нейрон. Автомат St_machine_sum обеспечивает функцию накопления после операции сложения. Автомат спроектирован с учётом возможности использования в нейросети значений смещения (bias на рис. 5). По умолчанию смещение на всех слоях равно 0.

Работа конвейера в субблоке Neuron происходит следующим образом. В момент времени t выполняет- ся умножение двух элементов и сложение результата умножения t–1 с предыдущими значениями суммы (накопления). Результат умножения хранится в промежуточном регистре reg. Данное решение позволяет одновременно выполнять две операции с плавающей запятой, что приводит к увеличению производительности устройства.

Разработанная функциональная схема вычислительного блока подвыборки представлена на рис. 6.

Pool

St machine poolign

comp

m_num_res start stop in_num

outjuim 1 out_num2

out_m

• numl res

- num2

Рис. 6. Функциональная схема блока подвыборки

Описание входных и выходных сигналов на схеме следующее: 1 – управляющий сигнал для начала подвыборки; 2 – управляющий сигнал для окончания подвыборки; 3 – сигнал сброса автомата; 4 – входные значения для блока; 5 – выходное значение для блока. После поступления управляющего сигнала 1 начинает свою работу автомат St_machine_pooling, который обеспечивает синхронизацию с внешними блоками, сброс и подачу входных значений, считанных из блока памяти SRAM, на элемент comp. Затем происходит подача значений со входа 4 на выход автомата out_num1 и значений входа in_num_res на out_num2. Значения на входе in_num_res формируются блоком comp. По завершении процедуры подвыборки получаем максимальное число ядра 2×2, которое подаётся на выход 5. Такая реализация позволяет производить поиск максимального числа за количество тактов, равное числу элементов в ядре.

  • 3.3.    Контроллеры памяти

  • 4.    Особенности разработанного устройства

При аппаратной реализации СНС необходимо хранить входные, промежуточные и выходные данные нейросети, а также в разных слоях следует обеспечить различные варианты доступа к памяти блокам свёртки и подвыборки. Для этого необходимы контроллеры памяти трёх видов. Первый из них – контроллер памяти для чтения входных и промежуточных значений карт признаков. Он используется в двух режимах: работа с общей памятью CM и разделенной памятью CI. Другой контроллер памяти CO предназначен для записи выходных значений слоев нейросети. Последний из них – контроллер памяти CW – обеспечивает чтение весовых коэффициентов связей между нейронами в слоях свёртки

Рис. 7. Функциональная схема СНС

Структурная схема созданного устройства на ПЛИС с учётом окружения на плате Terasic SoCkit показана на рис. 8, а фотография устройства – на рис. 9.

Отладочная плата Terasic SoCkit

Подклю

чение по

RS-232

Подключение по SSH

Рис. 8. Структурная схема устройства для распознавания рукописных цифр

Взаимодействие между аппаратной реализацией СНС и двухъядерным процессором ARM Cortex – A9 происходит через область общей памяти, к которой имеют доступ как аппаратная СНС, так и ядра процессора.

Область общей памяти разделена на несколько полей, которые имеют различное функциональное назначение. Область CNN_BUF является входной памятью для работы СНС. Область RES_BUF является памятью для записи результатов с выходов нейронной сети. CONTROL – регистр управления нейронной сетью.

Взаимодействие с устройством происходит через терминалы по протоколам RS-232 или SSH.

Рис. 9.Устройство для распознавания рукописных цифр на основе платы Terasic SoCkit

При реализации СНС на ПЛИС изначально планировалось использование 32-разрядного представления чисел с плавающей запятой, как наиболее распространённого формата чисел в случае СНС. Однако при синтезе устройства выяснилось, что для работы с числами в этом формате необходимо в 1,38 раза больше ресурсов (логических ячеек, регистров и т.п.), чем имеется у используемой ПЛИС. Поэтому было решено применять другие форматы представления чисел. В настоящее время при реализации СНС начинают использовать формат чисел с плавающей запятой половинной точности [30, 31]. Блоки базовых операций, описанные выше, позволяют проводить операции над числами с плавающей запятой других форматов, в том числе и этого формата.

Первый вариант созданного устройства позволяет работать с числами с плавающей запятой формата половинной точности (16 разрядов).

Второй вариант устройства использует формат 15-разрядного представления чисел с плавающей запятой. Данный формат не описан стандартом IEEE [28] и является собственным форматом. Он получен в результате сокращения на 1 бит мантиссы 16-разрядного представления числа с плавающей запятой.

Остальные три варианта устройства с 14-, 13-, 12-разрядным представлением чисел получены таким же образом.

Для оценки работоспособности всех вариантов устройства были проведены их логическая и физическая верификации. На этапе логической верификации проводилось сравнение значений выходов нейронов в устройстве, полученных моделированием работы устройства в программном пакете ModelSim [32], со значениями соответствующих выходов нейронов при программной реализации СНС. На этапе физической верификации значения выходов нейронов, полученные с помощью устройства и считанные при помощи программы SignalTapII [32], сравнивались с результатами логического моделирования. Верификация показала, что все пять вариантов устройства работоспособны.

  • 5.    Исследование эффективности программных и аппаратных реализаций СНС

    Эффективность всех вариантов устройства исследовалась в части их производительности, точности распознавания рукописных цифр и энергопотребления. С целью сравнения исследовались эти же три параметра ещё для двух установок, на которых исполнялась программная реализация СНС той же архитектуры. В качестве первой установки использовался персональный компьютер (ПК) с процессором AMD Phenom II 925 с тактовой частотой 2,8 ГГц и ОЗУ DDR3-1333 МГц. На ПК была реализована СНС, использующая 32-разрядные числа с плавающей запятой (вариант установки назван ПК_32), и реализована СНС, использующая 16-разрядные числа (вариант ПК_16).

В состав другой установки входили двухъядерный процессор ARM – Cortex A9 с тактовой частотой 800 МГц и ОЗУ DDR3-800 МГц системы на кристал- ле Cyclone V SX. Программная реализация СНС на этой установке также выполнялась в двух вариантах: работа с 32-разрядными числами (вариант установки A_32) и с 16-разрядными числами (вариант A_16).

Для реализации в первой и второй установках операций над 16-разрядними числами с плавающей запятой использовалась библиотека Half-precision floating point library из [33]. Программные реализации СНС компилировались с флагом оптимизации компилятора GCC – O2, а их выполнение проходило в одном потоке под управлением ядра ОС Linux в консольном режиме.

Третья установка аналогична первой, но в её состав дополнительно входит видеокарта Nvidia GTX 1060, на которой производятся основные вычисления. При программной реализации СНС предложенной архитектуры на данной установке использовалась модифицированная компанией Nvidia библиотека Caffe – NVCaffe, в которую добавлены программы поддержки операций над числами формата половинной точности [34]. Благодаря этому можно провести реализацию СНС на видеокарте при выполнении операции с 32-разрядными числами (вариант установки ГП_32) и с 16-разрядными числами (вариант ГП_16).

Варианты разработанного устройства в зависимости от формата представления чисел с плавающей запятой далее обозначены как АП_16, АП_15, АП_14, АП_13, АП_12. Тактовая частота аппаратных реализаций СНС – 50 МГц.

Исследования эффективности разработанных вариантов устройства и вариантов СНС на трех установках проводились с использованием 10000 тестовых изображений рукописных цифр из базы MNIST.

Результаты исследования точности распознавания рукописных цифр представлены в табл. 1, где Qпр – средняя точность распознавания цифр программным способом, а Qап – средняя точность, полученная аппаратным способом.

Табл. 1. Результаты исследования точности распознавания рукописных цифр

Точность, %

Формат числа, бит

Qпр

Qап

32

98,71

-

16

98,64

98,34

15

98,33

14

98,27

13

97,85

12

93,48

Средние значения Qпр и Qап получены с учётом всех 10000 результатов распознавания цифр. Значения Qпр для ПК_32 и A_32 и ГП_32 (первая строка в табл. 1), а также для ПК_16 и А_16 (вторая строка) совпадают. Кроме того, совпадают значения точности для ГП_32 и ГП_16.

Будем считать значение Qпр для вариантов установок ПК_32, А_32 и ГП_32 за эталонное. Падение точности распознавания при использовании вариантов установок ПК_16 и А_16 относительно эталона невелико (на 0,07 %), однако оно значительно больше при аппаратной реализации СНС для варианта устройства АП_16 (0,37 %). Падение точности для всех вариантов устройства объясняется использованием упрощённой процедуры аппаратного сложения двух чисел с плавающей запятой. Следует отметить, что усечение мантиссы на 1–2 бита у вариантов АП_15 и АП_14 по сравнению с вариантом устройства АП_16 не сильно ухудшает точность распознавания. Варианты устройства АП_13 и АП_12 из-за невысокой точности распознавания рукописных цифр, по-видимому, не будут востребованы в практических приложениях. Заметим, что результаты исследований точности распознавания согласуются с результатами из [35], где также сделан вывод о падении точности при уменьшении разрядности представления весовых коэффициентов СНС.

Результаты исследования производительности вариантов устройства и трёх установок представлены в табл. 2, где Тоб – среднее время, за которое происходит распознавание одного тестового изображения из базы MNIST, начиная с его загрузки в память устройства и заканчивая получением результата распознавания, а Тпп – среднее время работы СНС по распознаванию одной тестовой цифры. Относительная ошибка измерений – не более 3 %.

Видим, что производительность всех вариантов устройства ниже, чем у вариантов установки ГП_32 и ГП_16 и близка к производительности ПК_32, но значительно превосходит производительность вариантов установок A_32, ПК_16 и особенно А_16. Иными словами, невзирая на малую тактовую частоту 50 МГц при аппаратной реализации СНС, производительность вариантов устройства высока за счёт параллельной работы вычислительных блоков. Разница между Тоб и Тпп для всех вариантов устройства может быть уменьшена путём организации прямого доступа ПЛИС к общей памяти устройства.

Табл. 2. Результаты исследования производительности устройства и установок

Время, мс

Варианты устройства и установок

Тоб

Тпп

ПК_32

3,042

2,980

ПК_16

21,331

21,264

А_32

11,489

11,200

А_16

99,144

97,296

ГП_32

0,822

0,774

ГП_16

1,704

1,652

АП_16

3,262

2,417

АП_15

3,266

2,417

АП_14

3,270

2,418

АП_13

3,265

2,417

АП_12

3,271

2,418

В табл. 3 представлены результаты измерения энергопотребления P вариантов устройства и трёх установок. Относительная ошибка измерений не более 3 %.

Самым низким энергопотреблением обладают варианты установок A_32 и A_16. Немногим больше энергии, чем А_32 и А_16, потребляет каждый из вариантов устройства, однако это потребление в десятки раз меньше, чем у ПК_32, ПК_16, ГП_32 и ГП_16.

Табл. 3. Энергопотребление вариантов устройства и установок

Энергопотребление, Вт

Варианты устройства и установок

P

ПК_32

126,0

ПК_16

126,0

А_32

4,8

А_16

4,8

ГП_32

149,1

ГП_16

138,1

АП_16

5,1

АП_15

5,1

АП_14

5,1

АП_13

5,1

АП_12

5,1

В табл. 4 сведены результаты исследований эффективности разработанных вариантов устройства и требуемые для реализации этих вариантов вычислительные ресурсы ПЛИС: количество используемых логических ячеек LUT и регистров REG.

Табл. 4. Результаты исследований вариантов устройства и требуемые ресурсы ПЛИС

Варианты устройства

Ресурсы ПЛИС

Qап, %

Тоб, мс

P, Вт

LUT, шт

REG, шт

АП_16

64 114

20 598

98,34

3,262

5,1

АП_15

56 928

19 733

98,33

3,266

5,1

АП_14

53 699

18 868

98,27

3,270

5,1

АП_13

49 720

18 003

97,85

3,265

5,1

АП_12

43 829

17 138

93,48

3,271

5,1

Из табл. 4 следует, что при уменьшении длины мантиссы чисел на 1 разряд наблюдается сокращение количества ресурсов (LUT и REG), используемых каждым из вариантов устройства, на 6– 11 %. При этом падение точности распознавания остается в пределах 1 %, кроме варианта устройства АП_12. Это указывает на возможность достижения компромисса между требованием к устройству по точности распознавания рукописных цифр и количеством необходимых для этого вычислительных ресурсов ПЛИС. Производительность и энергопотребление вариантов устройства практически не зависят от количества используемых вычислительных ресурсов ПЛИС, что важно при проектировании и эксплуатации таких мобильных устройств.

Заключение

Предложена архитектура СНС, подобная известной архитектуре LeNet5, для распознавания рукописных цифр. Учитывая значительную вычислительную сложность такой сети и весьма жёсткие требования к производительности и энергопотреблению мобильного устройства для распознавания рукописных цифр, решено было разработать его на основе ПЛИС-системы на кристалле Cyclone V SX.

Была программно реализована предложенная СНС, которая обучалась на изображениях рукопис- ных цифр из известной базы MNIST. Полученные при обучении весовые коэффициенты сети затем использовались при её аппаратной реализации на ПЛИС.

На базе платы Terasic SoCkit, включающей ПЛИС с аппаратно реализованной СНС, создано пять вариантов устройства, отличающихся форматами представления чисел с плавающей запятой.

Проведены исследования точности распознавания рукописных цифр каждым из вариантов устройства и программно реализованной СНС на трёх различных вычислительных установках. Выяснилось, что программно реализованная СНС позволяет более точно распознавать цифры, чем любой из вариантов устройства. Однако варианты устройства с 16-, 15- и 14-разрядным представлением чисел с плавающей запятой дают практически приемлемые результаты распознавания рукописных цифр.

Исследования производительности и энергопотребления вариантов устройства и трёх установок, на которых программно исполнялась СНС, показали, что за счёт параллельной работы вычислительных блоков производительность всех вариантов устройства близка к производительности используемого ПК с процессором AMD Phenom 925, но ниже, чем у установки с этим же ПК и видеокартой компании Nvidia. При этом энергопотребление каждого из вариантов устройства в десятки раз меньше, чем у этого же ПК и тем более чем у установки, в состав которой входят ПК и видеокарта.

Полученные результаты разработки и исследований указывают на перспективность аппаратной реализации на ПЛИС с ограниченными вычислительными ресурсами СНС предложенной архитектуры и, соответственно, на возможность создания мобильных и энергоэффективных устройств для распознавания рукописных цифр с использованием этой сети.

Исследования были поддержаны грантом Программы повышения конкурентоспособности Томского политехнического университета, проект № ВИУ-ИК-110/2017.

Список литературы Устройство на основе ПЛИС для распознавания рукописных цифр на изображениях

  • Chatfield, K. Return of the devil in the details: Delving deep into convolutional nets/K. Chatfield, K. Simonyan, A. Vedaldi, A. Zisserman//Proceedings of the British Machine Vision Conference. -2014. - DOI: 10.5244/c.28.6
  • Russakovsky, O. ImageNet large scale visual recognition challenge/O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, A.C. Berg, L. Fei-Fei//International Journal of Computer Vision. -2015. -Vol. 115, Issue 3. -P. 211-252. - DOI: 10.1007/s11263-015-0816-y
  • Goyal, S. Object recognition using deep neural networks: A survey /S. Goyal, P. Benjamin. -2014. -URL: https://arxiv.org/pdf/1412.3684.pdf (request date 26.07.2017).
  • LeCun, Y. Gradient-based learning appelied to document recognition/Y. LeCun, L. Bottou, Y. Bengio, P. Haffner//Proceedings of the IEEE. -1998. -Vol. 86, Issue 11. -P. 2278-2324. - DOI: 10.1109/5.726791
  • Reshma, A.J. An overview of character recognition focused on offline handwriting/A.J. Reshma, J.J. James, M. Kavya, M. Saravanan//ARPN Journal of Engeneering and Applied Sciences. -2016. -Vol. 11, No. 15. -P. 9372-9378.
  • Tuba, E. Handwritten digit recognition by support vector machine optimized by bat algorithm/E. Tuba, M. Tuba, D. Simian//Proceedings of the 24th International Conference in Central Europe on Computer Graphics, Visualization and Computer Vision (WSCG 2016). -2016. -P. 369-376.
  • Спицин, В.Г. Применение вейвлет-преобразования Хаара, метода главных компонент и нейронных сетей для оптического распознавания символов на изображениях в присутствии импульсного шума/В.Г. Спицин, Ю.А. Болотова, Н.Х. Фан, Т.Т.Ч. Буй//Компьютерная оптика. -2016. -Т. 40, № 2. -С. 249-257. - DOI: 10.18287/2412-6179-2016-40-2-249-257
  • Elleuch, M. A new design based-SVM of the CNN classifier architecture with dropout for offline Arabic handwritten recognition/M. Elleuch, R. Maalej, M. Kherallah//Procedia Computer Science. -2016. -Vol. 80. -P. 1712-1723. - DOI: 10.1016/j.procs.2016.05.512
  • Alom, M.Z. Handwritten bangla digit recognition using deep learning/M.Z. Alom, P. Sidike, T.M. Taha, V.K. Asari . -2017. -URL: https://arxiv.org/pdf/1705.02680.pdf (request date 10.10.2017).
  • Maitra, D.S. CNN based common approach to handwritten character recognition of multiple scripts/D.S. Maitra, U. Bhattacharya, S.K. Parui//Proceedings of the 13th International Conference on Document Analysis and Recognition (ICDAR). -2015. -С. 1021-1025. - DOI: 10.1109/ICDAR.2015.7333916
  • Glauner, P.O. Comparison of training methods for deep neural networks /P.O. Glauner. -2015. -URL: https://arxiv.org/pdf/1504.06825.pdf (request date 26.07.2017).
  • Guerra, L. Comparison between supervised and unsupervised classifications of neuronal cell types: a case study/L. Guerra, L.M McGarry, V. Robles, C. Bielza, P. Larrañaga, R. Yuste//Developmental Neurobiology. -2011. -Vol. 71, Issue 1. -P. 71-82. - DOI: 10.1002/dneu.20809
  • Bottou, L. Stochastic gradient descent tricks/L. Bottou. -In book: Neural networks: Tricks of the trade/ed. by G. Montavon, G.B. Orr, K.R. Müller. -Berlin, Heidelberg: Springer, 2012. -P. 421-436. - DOI: 10.1007/978-3-642-35289-8_25
  • LeCun, Y.A. Efficient BackProb/Y.A. LeCun, L. Bottou, G.B. Orr, K.R. Müller. -In book: Neural networks: Tricks of the trade/ed. by G. Montavon, G.B. Orr, K.R. Müller. -Berlin, Heidelberg: Springer, 2012. -P. 9-48. - DOI: 10.1007/3-540-49430-8_2
  • Солдатова, О.П. Применение свёрточной нейронной сети для распознавания рукописных цифр/О.П. Солдатова, А.А. Гаршин//Компьютерная оптика. -2010. -Т. 34, № 2. -С. 252-259.
  • El-Sawy, A. CNN for handwritten arabic digits recognition based on LeNet-5/A. El-Sawy, E.L.B. Hazem, M. Loey//Proceedings of the International Conference on Advanced Intelligent Systems and Informatics 2016. -2016. -P. 566-575. - DOI: 10.1007/978-3-319-48308-5_54
  • SoCKit -The development kit for new SoC device . -URL: http://www.terasic.com.tw/cgi-bin/page/archive.pl?CategoryNo=167&No=816 (request date 26.07.2017).
  • Farabet, C. An FPGA-based stream processor for embedded real-time vision with convolutional networks/C. Farabet, C. Poulet, Y. LeCun//IEEE 12th International Conference on Computer Vision Workshops (ICCV Workshops). -2009. -P. 878-885. - DOI: 10.1109/ICCVW.2009.5457611
  • Zhang, C. Optimizing FPGA-based accelerator design for deep convolutional neural networks/C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao, J. Cong//Proceedings of the 2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. -2015. -P. 161-170. - DOI: 10.1145/2684746.2689060
  • Motamedi, M. Design space exploration of FPGA-based deep convolutional neural networks/M. Motamedi, P. Gysel, V. Akella, S. Ghiasi//21st Asia and South Pacific Design Automation Conference (ASP-DAC). -2016. -P. 575-580. - DOI: 10.1109/ASPDAC.2016.7428073
  • Krizhevsky, A. ImageNet classification with deep convolutional neural networks/A. Krizhevsky, I. Sutskever, G.E. Hinton//Proceedings of the 25th International Conference on Neural Information Processing Systems. -2012. -Vol. 1. -P. 1097-1105.
  • Scherer, D. Evaluation of pooling operations in convolutional architectures for object recognition/D. Scherer, A. Müller, S. Behnke. -In book: Artificial Neural Networks -ICANN 2010/ed. by K. Diamantaras, W. Duch, L.S. Iliadis. -Berlin, Heidelberg: Springer, 2010. -Part III. -P. 92-101. - DOI: 10.1007/978-3-642-15825-4_10
  • The MNIST database of handwritten digits . -URL: http://yann.lecun.com/exdb/mnist (request date 26.07.2017).
  • Bahrampour, S. Comparative study of deep learning software frameworks/S. Bahrampour, N. Ramakrishnan, L. Schott, M. Shah . -2016. -URL: https://arxiv.org/pdf/1511.06435.pdf (request date 26.07.2017).
  • Jia, Y. Caffe: Convolutional architecture for fast feature embedding/Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, T. Darrell//Proceedings of the 22nd ACM international conference on Multimedia (MM '14). -2014. -P. 675-678. - DOI: 10.1145/2647868.2654889
  • Береснев, А.П. Методика переноса весов нейронной сети из программной в аппаратную реализацию/А.П. Береснев, И.В. Зоев, А.Н. Мальчуков. -В кн.: Сборник трудов XIV Международной научно-практической конференции студентов, аспирантов и молодых ученых. -Томск: Изд-во ТПУ, 2016. -Т. 1. -С. 22-23
  • Glorot, X. Understanding the difficulty of training deep feedforward neural networks/X. Glorot, Y. Bengio//Proceedings of the 13th International Conference on Artificial Intelligence and Statistics (AISTATS). -2010. -P. 249-256.
  • 754-2008: IEEE standard for floating-point arithmetic. -Revision of ANSI/IEEE Std 754-1985. -New York: IEEE Publisher, 2008. - DOI: 10.1109/IEEESTD.2008.4610935
  • Zoev, I.V. Implementation of 14 bits floating point numbers of calculating units for neural network hardware development/I.V. Zoev, A.P. Beresnev, E.A. Mytsko, A.N. Malchukov//IOP Conference Series: Materials Science and Engineering. -2017. -Vol. 177, Issue 1. -012044. - DOI: 10.1088/1757-899X/177/1/012044
  • Tavallaei, S. Microsoft project Olympus hyperscale GPU accelerator (HGX-1) /S. Tavallaei. -2017. -URL: https://azure.microsoft.com/mediahandler/files/resourcefiles/00c18868-eba9-43d5-b8c6-e59f9fa219ee/HGX-1%20Blog_5_26_2017.pdf (request date 10.10.2017).
  • Sánchez, O.M. Adapting deep neural networks to a low-power environment /O.M. Sánchez. -2017. -URL: https://upcommons.upc.edu/bitstream/handle/2117/106673/126470.pdf (request date 10.10.2017)
  • Quartus II handbook volume 3: Verification . -2015. -URL: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/qts/qts_qii5v3.pdf (request date 26.07.2017).
  • Half 1.12. IEEE 754-based half-precision floating point library . -URL: http://half.sourceforge.net/index.html (request date 10.10.2017).
  • NVIDIA: Caffe . -URL: https://github.com/NVIDIA/caffe (request date 10.10.2017).
  • Rastegari, M. XNOR-Net: ImageNet classification using binary convolutional neural networks/M. Rastegari, V. Ordonez, J. Redmon, A. Farhadi//Proceedings of the European Conference on Computer Vision. -2016. -P. 525-542. - DOI: 10.1007/978-3-319-46493-0_32
Еще
Статья научная