Аппаратная реализация свёрточной нейронной сети с использованием вычислений в системе остаточных классов

Аппаратная реализация свёрточной нейронной сети с использованием вычислений в системе остаточных классов

Н.И. Червяков1, П.А. Ляхов1, Н.Н. Нагорнов1, М.В. Валуева1, Г.В. Валуев1 1 Северо-Кавказский федеральный университет, 355009, Россия, г. Ставрополь, ул. Пушкина, д. 1

Аннотация

Современные архитектуры свёрточных нейронных сетей являются весьма ресурсозатратами, что ограничивает возможности их широкого практического применения. В статье предложена архитектура свёрточной нейронной сети, разделённой на аппаратную и программную части для увеличения производительности вычислений. Для реализации свёрточного слоя нейронной сети в аппаратной части использована модулярная арифметика с целью сокращения ресурсозатрат. Предложен численный метод квантования коэффициентов фильтров свёрточного слоя сети для минимизации влияния шума квантования на результат вычислений в системе остаточных классов и определения разрядности коэффициентов. Данный метод основан на масштабировании коэффициентов на фиксированное количество бит и округлении к большему и к меньшему. Используемые операции позволяют уменьшить ресурсы при аппаратной реализации за счёт простоты их выполнения. Все вычисления в свёрточном слое сети выполняются над числами в формате с фиксированной точкой. Программное моделирование с использованием Matlab 2017b показало, что свёрточная нейронная сеть с минимальным количеством слоёв может быть быстро и успешно обучена. Аппаратное моделирование с использованием field-programmable gate array Kintex7 xc7k70tfbg484-2 показало, что использование системы остаточных классов в свёрточном слое нейронной сети позволяет снизить аппаратные затраты на 32,6 % по сравнению с традиционным подходом, основанным на двоичной системе счисления. Результаты исследования могут быть применены при создании эффективных систем видеонаблюдения, для распознавания рукописного текста, лиц, объектов и местности.

Ключевые слова: свёрточные нейронные сети, обработка изображений, распознавание образов, система остаточных классов.

Цитирование: Червяков, Н.И. Аппаратная реализация свёрточной нейронной сети с использованием вычислений в системе остаточных классов / Н.И. Червяков, П.А. Ляхов, Н.Н. Нагорнов, М.В. Валуева, Г.В. Валуев // Компьютерная оптика. - 2019. - Т. 43, № 5. -С. 857-868. - DOI: 10.18287/2412-6179-2019-43-5-857-868.

Введение

Современное развитие науки и техники подразумевает повсеместное внедрение методов интеллектуального анализа данных. Постоянно расширяется круг задач, требующих использования методов искусственного интеллекта в области обработки изображений: идентификация личности [1], распознавание сцен [2], обработка информации с внешних датчиков в беспилотных наземных и летательных транспортных средствах [3], медицинская диагностика [4] и т.д. Перспективным инструментом для решения задачи распознавания изображений является применение интеллектуальных методов на основе искусственных нейронных сетей [5].

Идея применения искусственных нейронных сетей для обработки визуальной информации предложена в [6] для решения задачи автоматизации распознавания рукописных цифр. Предложенная в указанной статье архитектура получила название сверточной нейронной сети (СНС), и главной её особенностью является объединение свёрточных слоёв, реализующих извлечение визуальных признаков, и многослойного пер-септрона, реализующего операцию распознавания по данным результатов свёрток. Эволюция данной научной идеи и развитие вычислительной техники привели к тому, что в настоящее время теория СНС и мето-

дов её практического применения развивается по пути экстенсивного увеличения количества слоёв СНС, что приводит к высокой вычислительной сложности реализации таких систем. Например, архитектура сети [7], показавшая лучший результат распознавания изображений базы ImageNet в 2010 году, содержит около 650000 нейронов, 60 миллионов настраиваемых параметров и требует 27 гигабайт дискового пространства для обучения. В работе [8] представлена разработка компании Google, которая показала лучший результат распознавания изображений базы ImageNet в 2014 году. Для распознавания изображения данная СНС выполняет более полутора миллиардов вычислительных операций, что мотивировало компанию Google разработать специальный тензорный процессор для оптимизации работы данной СНС [9]. Обобщая сказанное, можно сделать вывод о том, что современные архитектуры СНС являются весьма ресурсозатратными, что ограничивает возможности их широкого практического применения. В настоящее время нет единого подхода к снижению ресурсных затрат при реализации СНС на практике.

Существуют известные библиотеки, которые позволяют автоматизировать процесс проектирования и обучения нейронных сетей. TensorFlow [10] является библиотекой для численных расчётов, но главной це-

лью её создания была помощь в проектировании и обучении моделей машинного обучения [11]. Набор инструментов с открытым исходным кодом под названием LeFlow [12] позволяет разработчику программного обеспечения автоматически преобразовывать численные вычисления Tensorflow в код, написанный на языке описания аппаратуры Verilog с помощью высокоуровневого инструмента синтеза с открытым исходным кодом LegUp. Этот процесс позволяет разработчикам Python создавать прототипы алгоритмов машинного обучения на FPGA, но сгенерированная аппаратная модель будет уступать по производительности модели, оптимизированной вручную [13]. Библиотека Caffe [14] написана на языке C++, но имеет интерфейсы для работы с Matlab и Python. В отличие от Tensorflow, она предназначена только для разработки глубоких нейронных сетей и объединила все современные методы для проектирования СНС. Библиотека FPGA Caffe [15] является версией Caffe с поддержкой FPGA для следующих операций, используемых в СНС: прямая и обратная свёртка, ReLu, max pooling, скалярное произведение векторов. Недостатком представленной библиотеки является поддержка лишь небольшого количества операций [16]. Intel OpenVINO [17] - это набор инструментов для развертывания приложений и решений, которые имитируют человеческое зрение. Этот инструментарий основан на СНС и расширяет рабочие нагрузки компьютерного зрения на аппаратное обеспечение фирмы Intel, оптимизируя производительность. Набор инструментов последней версии программы Intel OpenVINO включает в себя набор инструментов для глубокого обучения Intel Deep Learning Deployment Toolkit. Данный инструментарий поддерживает лишь ограниченное количество FPGA. MATLAB [18] - это высокоуровневый язык и интерактивная среда для программирования, численных расчётов и визуализации результатов. Эта среда обладает мощным инструментом по работе с нейронными сетями. В ней содержится компонент Neural Network Toolbox, который позволяет автоматизировать процесс проектирования и обучения нейронных сетей. В новых версиях продукта также осуществляется поддержка СНС. Кроме того, в Matlab существует возможность конвертирования кода, написанного на встроенном языке программирования, в код на языке описания аппаратуры VHDL, с помощью инструмента HDL Coder. Данная возможность позволяет автоматизировать процесс проектирования FPGA.

Одним из перспективных инструментов для улучшения технических характеристик СНС является система остаточных классов (СОК) [19-23]. В работе [22] предложен метод, использующий фильтры Собе-ля в свёрточном слое СНС, и его аппаратная FPGA реализация. Авторы показывают увеличение скорости работы устройства и снижение затрат на оборудование в сравнении с реализацией в двоичной системе счисления (ДСС). Недостатком метода, представленного в [22], является фиксация коэффициентов свёр-

точного слоя, что значительно замедляет время обучения СНС. Чтобы преодолеть недостатки из [22], мы представим в данной статье архитектуру СНС, которая разделена на аппаратную и программную части. В аппаратной части, которая реализует свёрточный слой СНС, предлагается использовать СОК. Мы продемонстрируем эффективность использования предлагаемого подхода с помощью аппаратного моделирования на FPGA Xilinx.

1. Свёрточные нейронные сети

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

Предположим, что на вход СНС поступает изображение I, состоящее из R строк, C столбцов и D цветовых компонент. Например, для изображений в формате RGB D = 3 и цветовыми компонентами являются уровни красного, зелёного и синего цветов пикселей изображения. В этом случае вход СНС можно описать как трёхмерную функцию I(x,y, z), где 0 < x < R, 0 <y < C и 0 < z < D - пространственные координаты, а амплитуда I в любой точке с координатами (x,y, z) - интенсивность пикселей в данной точке. Процедура получения карт признаков показана на рис. 1.

С-1

Рис. 1. Процедура получения карты признаков в свёрточном слое СНС

Процедура получения карт признаков в свёрточном слое может быть представлена в виде

I, (х, у) = Ь +

+ Е Е Е^, 1 *1 (х +1, у + 1, к),

1=-^-1)/2 1=-^-1)/2 к=0

где I, - карта признаков; Жцк - коэффициенты 3D-фильтра размера для обработки Б двумерных массивов; Ь - смещение [22].

СНС обычно использует большое количество фильтров в свёрточном слое. Это приводит к резкому увеличению объёма обрабатываемых данных в сети. Для их уменьшения используется слой выборки,

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

М!

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

Для улучшения технических характеристик СНС мы предлагаем использовать СОК, краткое описание которой приведено в следующем параграфе.

2. Введение в СОК

В СОК числа представляются в базисе попарно взаимно простых чисел, называемых модулями {ш1, ..., Шп), НОД(т, т) = 1, i ^). Произведение всех модулей СОК М= т1т2... тп называется динамическим диапазоном системы. Любое целое число может быть единственным образом представлено в СОК с диапазоном М в виде вектора (Х1, Х2, ..., Хп), где Х = |X|ш = Xmodmi в соответствии с Китайской теоремой об остатках (КТО) [24].

Операции сложения, вычитания и умножения в СОК определяются формулами

А ± В = \ ± Ь1|т1,...,К ±Ь1„ ),

А • В = \ • Ь |т1,...,|«к • ).

Равенства (2) и (3) показывают параллельную природу СОК, свободную от поразрядных переносов. Основные преимущества представления чисел в СОК [25]:

1. Большие числа кодируются множествами малых остатков, что существенно уменьшает арифметическую сложность вычислений.

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

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

Основные недостатки представления чисел в СОК [25]:

1. Неэффективное выполнение немодульных операций, таких как деление, извлечение корней, сравнение чисел.

2. Ограниченность действия сферой целых чисел.

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

2.1. Выбор модулей СОК

Важной задачей при разработке прикладной системы, использующей вычисления в СОК, является выбор набора модулей {т1, ..., тп}. В большинстве современных работ, посвящённых прикладному применению СОК, используется модуль, равный степени двойки, то есть 2а, аеЫ, где N - множество натуральных чисел. Это объясняется тем, что вычисления по модулю 2а являются наиболее простыми с точки зрения аппаратной реализации, так как они могут быть реализованы в виде обычных арифметических устройств двоичной системы счисления с шириной а бит. Использование модуля 2а, а также требование попарной взаимной простоты всех модулей СОК приводит к тому, что все остальные модули системы должны быть нечётными, то есть иметь вид 2а ± к, аeN, к = 1, 3, 5, ... . Так как в данной статье мы применяем СОК для реализации наиболее ресурсозатратно-го свёрточного слоя СНС, реализующего вычисления по формуле (1), то наиболее затратными с аппаратной точки зрения элементами арифметического устройства будут модульные сумматоры. Поскольку реализация вычислений по формуле (1) требует суммирования большого количества слагаемых, необходимо использовать многовходовые сумматоры. В настоящее время наиболее эффективные техники суммирования большого количества слагаемых по модулю, аналогичные используемым в традиционной двоичной системе счисления, разработаны лишь для модулей вида 2а ± 1, аeN [26]. Практическая реализация вычислительного канала по модулю 2а + 1, аeN, требует введения дополнительной логики по методу diminished-1 для отслеживания нулевой кодовой комбинации, что является нежелательным явлением при разработке системы с минимальными аппаратными и временными затратами [27]. Таким образом, для проектирования СНС на основе вычислений в СОК целесообразно использовать лишь модули вида 2а - 1, аeN, в качестве нечётных модулей системы.

2.2. Преобразование из ДСС в СОК

Рассмотрим набор модулей специального вида {2 р1,2р2-1, ..., 2Рп-1}. Для перевода числа в СОК необходимо вычислить остатки от деления по каждому модулю [24]. Операция вычисления остатка от деления по модулю 2Р осуществляется простой обрезкой р младших бит исходного числа. Для модуля 2р - 1 вычисление остатка от деления происходит сложнее. Пусть X = ХЕ_XЕ_2...X0 - я-битное исходное число. Разобьём его на 5=Гя/р! частей размерности р бит. Для этого дополним X справа 0 до размерности я'=5-р, теперь X' = Xg._lXg'_2...X0. Тогда У0 = Xp_1...X1X0,

= X2p_l...Xp+lXp , ..., = Xg'_l...X(J_l)р+^^цр - ча-

сти X'. Представим число X' как

X' = У0 + У • 2р + У2 • 22р +... + У, • 2,р .

В случае преобразования с использованием теоретико-числовых свойств мы получаем

X I-1 = Уо + у1 + у2 + ... + У |2Р

То есть вычисление остатка от деления по модулю 2р - 1 сводится к сложению р-битных чисел по модулю 2р - 1. Для сложения по модулю 2р - 1 используются сумматоры Когге-Стоуна с циклическим переносом по модулю 2р - 1 (метод, предложенный в [26]).

2.3. Преобразование из СОК в ДСС

Наиболее обобщённый метод для получения эквивалентного взвешенного числа - использование КТО [28]. Вычисление взвешенного числа X из представления в СОК, т.е. (х1, х2, ..., хп), основанном на наборе модулей {т1, т2, ..., тп}, производится следующим образом:

X =

SI M

где Mi=Mlmi и \Mt '| m - мультипликативный обратный элемент Mi по модулю mi для i = 1, 2, ..., n. Для реализации КТО требуется вычислить остаток от деления на большое число M, реализация этой операции в аппаратном обеспечении приводит к увеличению площади и задержки.

Модифицированная КТО, использующая дробные величины и именуемая приближённой КТО, впервые представлена в работе [29] для определения знака и деления в СОК. Эффективная аппаратная реализация данного подхода основывается на технике сжатия слагаемых и сумматоре Когге-Стоуна по модулю 2а, представлена в работе [30]. Описанный метод использован для реализации преобразования из СОК в ДСС.

3. Свёртка в СОК

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

Коэффициенты Wijk и сдвиг b из формулы (1) являются константами в обученной СНС. Это означает, что устройство свертки должно реализовывать умножение на константы с последующим сложением результата. Аппаратная реализация вычислений в свёр-

точном слое СНС по формуле (1) приводит к необходимости квантования коэффициентов Wijk фильтра, что влечёт за собой возникновение шума квантования. Смещение Ь из формулы (1) не оказывает влияния при округлении коэффициентов фильтра, следовательно, оно не связано и с погрешностью, возникающей в результате выполнения свёртки. Пусть фильтр свёрточного слоя имеет размер где 3 -

количество цветовых компонент. Умножим его коэффициенты на 2Л, где N - параметр масштабирования, и округлим к большему. Результат свёртки в СОК разделим на 2Л и округлим к меньшему. Данный подход обладает следующими преимуществами.

1. Погрешности округлений будут иметь разные знаки и частично компенсировать друг друга. Таким образом, уменьшается влияние шума квантования на результат свёртки.

2. Применение операций округления именно в таком порядке требует меньших ресурсов при аппаратной реализации, чем операции округления к ближайшему целому. Данный факт объясняется тем, что коэффициенты фильтров известны априори и их квантование с округлением вверх может быть выполнено предварительно. Выполнение свёртки осуществляется с использованием арифметико-логических устройств и округление её результата вниз осуществляется простым отбрасыванием дробной части и не требует дополнительных аппаратных и временных затрат.

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

С увеличением значения параметра масштабирования N уменьшается влияние шума квантования на результат свёртки, но возрастают аппаратные и временные затраты на её выполнение. Возникает вопрос о выборе значения параметра Л, эффективного с точки зрения аппаратной реализации на современных устройствах и необходимого для сохранения результатов свёртки приемлемого качества. Качество считается приемлемым, если значение пикового отношения сигнала к шуму (Р8МЯ) достигает 40 дБ. Данное значение описывает разницу между двумя изображениями, незаметную для человеческого глаза [31]. Для ответа на поставленный вопрос оценим влияние шума квантования на результат свёртки [32]. Определим абсолютные погрешности (АП) АЕ+ и АЕ- округления положительных и отрицательных коэффициентов Wij,k из формулы (1) соответственно

AE+= S (Г2NWUk]- 2NWijk),

W, Jk >0

AE- = S (NWjk]- 2NW,j).

Отсюда найдём предельную абсолютную погрешность (ПАП) округления коэффициентов Жц,к фильтра ЬАЕ\

i=i

LAE1 = max{ AE+,AE-} .

Если через B обозначить максимальное значение яркости изображения, то ПАП результатов свёртки LAE2 равна

LAE2 = LAEj • B .

ПАП нормированных результатов свёртки LAE3 может быть получена из ПАП результатов свёртки LAE2 после учёта параметра N

ТЛЕ

LAE = 2_n ^в• LAEj.

3 2n 1

Если обозначить через X е [0, 1) дробную часть точного результата свёртки, то ПАП округления нормированных результатов свёртки LAE4 может быть найдена по следующей формуле

LAE4 = LAE3 + X - L LAE3 + X J .

После выполнения операции свёртки точное значение результата редко будет целым числом. Таким образом, значение LAE4 зависит не только от LAE3, но и от X. При LAE3 = 0, LAE4 в формуле (10) представляет собой неустранимую погрешность. Она коррелирует с LAE3 и всегда оказывает влияние на точность вычислений исследуемого метода. С увеличением значения параметра N влияние данной погрешности на результат вычислений уменьшается, и на практике по достижении N определённого значения влияние этой погрешности становится пренебрежимо мало.

Итоговая погрешность вычисления свёртки представляет собой ПАП округлённых в меньшую сторону нормированных результатов свёртки LAE5.

LAE5 = |LAE3 - LAE4 \.

Формула (11) свидетельствует о том, что погрешность округления к меньшему результатов свёртки LAE4 частично компенсирует погрешность результатов свёртки LAE3, основанную на округлении к большему коэффициентов Wyk фильтра LAE\. На определённом этапе увеличения значения N две эти погрешности станут соизмеримы по своей абсолютной величине. На практике на данном этапе результирующая погрешность LAE5 будет иметь наименьшее значение. При дальнейшем увеличении значения N погрешность LAE3 начнёт уменьшаться, в отличие от LAE4, что приведёт к увеличению LAE5.

Пример. Пусть мы имеем 4 значения яркости пикселей, идущих подряд: 100, 110, 120 и 150. В результате свёртки с одним из фильтров вейвлета Добеши db2 с коэффициентами % « -0,09151, % « 0,15849,

73 ~ 0,59151, % « 0,34151, мы получим

100 • % + 110 • % +120 • % +150 • % = 104,50962 ,

где X = 0,50962. Если коэффициенты данного фильтра умножить на 26 и округлить к большему, то получим /*= -5, /2*= -11, /3*= 38, /4*= 22. В результате свёртки с квантованными коэффициентами имеем

100 22+110-38+120-11+150 (-5)=6950. Разделив данное число на 26 и округлив к меньшему, получим |_6959/26] = [108,59375] = 108. В данном случае погрешность результата свёртки ЬАЕ3 = 108,59735- 104,50962 = 4,08413, погрешность округления результатов свёртки МЕ4 = 108,59735 - 108 = 0,59375, а итоговая погрешность ЬАЕ5 = 4,08413 - 0,59375 = 3,49038. Зная, что 1АЕ3 = 4,08413 и X = 0,50962, значения величин ЬАЕ4 и ЬАЕ5 можно определить по формулам (10) и (11) соответственно:

ЬАЕ4 = 4,08413 + 0,50962 _

_[4,08413 + 0,50962] = 0,59375;

ЬАЕ5 = |4,08413 _ 0,59375 = 3,49038.

Одним из параметров, влияющих на величину ЬАЕ5 , является X, конкретное значение которого при проведении теоретических расчётов не может быть определено. Его необходимо исключить, учитывая оказываемое им влияние на результат вычислений. Для этого выразим в формуле (11) ЬАЕ4 через 1АЕ3 и X согласно формуле (10).

1АЕ5 = \ьАЕ3 _ (\Е3 + X _ [ЬАЕ3 + X])| = = ||_ ЬАЕ3 +XJ_X|. Рассмотрим два случая:

1. \_ЬАЕ3 + X] - X > 0 ^ \_ЬАЕ3 + X] > 1. В этом случае чем больше значение _ЬАЕ3 + X], тем больше значение ЫЕ5. Таким образом, \_ЬАЕ3 + X] = \_ЬАЕ3] + 1 и X представляет собой дополнение дробной части числа 1АЕ3 до единицы, то есть X = \_ЬАЕ3] + 1 -ЬАЕ3. Подставив полученное выражение в формулу (12), получим

1АЕ5 =\ЬАЕ3 + \ЬАЕ3 1 +1 _ЬАЕ3 I-

ь , ^ ]

_ \ !АЕ3 ] +1 _ 1АЕ3) = ЬАЕ3.

2. \ЬАЕ3 + X] _X < 0 ^ \ЬАЕ3 + X] < X ^ \ЬАЕ3 + X ] = = 0 ^ ЬАЕ5 = |0 _X| = X .

В этом случае чем больше значение X, тем больше значение ЬАЕ5. При этом

\ЬАЕ3 +XJ = 0 ^ ЬАЕ3 +X = 1 _е,

откуда X = 1 - е - ЬАЕ3. В данных условиях используем АЕз вместо ЬАЕ3, причём положим её равной нулю

ЬАЕ5 =|\0 + 1 _е]_

где е - машинный ноль.

Так как величина ЬАЕ5 представляет собой максимально возможное значение погрешности, то формулу (13) выгодно использовать для ЬАЕ3 > 1. Таким образом, из формул (13) и (14) можно однозначно определить ЬАЕ5 в зависимости от значений ЬАЕ3 и независимо от конкретных значений X.

lae5 =

lae5 =

ILAE3, LAE3 > 1, |1 -e, LAE3 <1. Перепишем формулу (15), используя выражение (9).

12-NB• LAE1, 2-NB• LAEj > 1, 1 -e, 2-NB•LAEl <1.

Пиковое отношение сигнала к шуму (Р8МЯ) после выполнения указанных действий может быть найдено по формуле

РЗЖ = 101е В = 201г—В— .

ВЬАЕ52 ВЬАЕ,

Преобразуем формулу (17), используя выражение (16): 2Л

PSNR =

20lg 20 lg

LAEi B 1 -e,

2N < B • LAE1, 2N > B • LAE1.

Формула (18) описывает зависимость Р8МЯ результатов вычисления свёртки по формуле (1) от значения параметра масштабирования Л, размера фильтра свёрточного слоя и максимального значения яркости изображения В. Практическое применение формулы (18) может быть описано следующим образом: необходимо выбирать наименьшее значения величины Л, которое позволяет сохранить приемлемое качество обработанного изображения. Это позволит минимизировать аппаратные затраты на реализацию свёртки. Разрядность г коэффициентов фильтра после квантования определяется по формуле

г = шах{г-1 к },

где г,,к - количество разрядов, необходимое для хранения квантованного коэффициента Г2Л^у,к! , определяемое по формуле

Г, i k = 1 +

'log2 (f 2NW,, i л Ц +1)].

Если нейронная сеть имеет несколько свёрточных слоёв, то ПАП результатов свёртки вычисляется по формуле

( \

LAKj =

X 2NdWdмк + LAEU

Wdj

(Td -1,

i, i ,k

+LAE1J-1) - X 2N"Wd^,ikTd-Ki,i,

Wdj

где индекс ё обозначает номер свёрточного слоя нейронной сети, а Тё-ц^к представляет собой точный результат свёртки в (ё - 1)-м свёрточном слое. В этом случае Р8МЯ вычисляется исходя из выражений (15) и (17) по формуле

PSNR =

20lg

20lg

Bd

LAEV Bd

1 -e,

LAE3d > 1,

LAE3d < 1.

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

4. Программное моделирование

В качестве экспериментальной базы разработана СНС для распознавания 8 классов изображений из базы изображений Университета Иллинойса [33]. Классы изображений из этого набора данных показаны на рис. 3.

а)

- ш

Г ш

д) е) ж) з)

Рис. 3. Классы изображений базы данных [33]: яблоко

Все изображения базы преобразованы к разрешению 256^192 пикселей с использованием алгоритма бикубической интерполяции, встроенного в приложение Adobe Photoshop CS6. Для обучения СНС использовано 161 изображение из базы. Главной целью моделирования являлось сведение к минимуму аппаратных и временных затрат на обучение и реализацию СНС. Для этой цели использовано минимально возможное количество слоёв. Кроме того, в свёрточном слое СНС использована арифметика СОК вместо традиционной двоичной арифметики.

На рис. 4 показана разработанная архитектура СНС. На вход СНС поступает RGB-изображение размера 256^192, два первых слоя отвечают за выделение признаков изображения. Первый слой производит операцию свёртки с использованием 8 фильтров размера 3^3x3 с шагом 3. Результатом вычислений первого слоя являются 8 карт признаков размером 85x64. Второй слой выполняет операцию выбора максимальных элементов с помощью маски размером 2x2 и с шагом 2. 8 карт признаков размером 42x32 являются выходом второго слоя и соединены со входами двух последних слоёв, которые отвечают за классификацию изображения. Третий слой состоит из 10 нейронов, а четвертый слой состоит из 8 нейронов, каждый из которых соответствует определённому классу.

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

Обучение СНС производилось в Matlab R2017b с помощью инструмента Neural Pattern Recognition Toolbox. Вычисления производились на ПК с процессором Intel(R) Core(TM) i7-4790K CPU @ 4.00 ГГц с 16 ГБ

оперативной памяти и 64-битной операционной системой Windows 10. Для обучения использовано 161 изображение из 8 классов [33]. Нейронная сеть обучена за 30 итераций в течение 57 секунд.

Рис. 4. Предлагаемая В программе МаНаЪ Я2017Ъ также проведено моделирование для выявления зависимости точности распознавания СНС от параметра N. Результаты моделирования, представленные в табл. 1, подтвердили высокую точность распознавания при использовании теоретически рассчитанного значения N и показали снижение точности распознавания при N < 9.

В табл. 2 показана маска одного из фильтров свёр-точного слоя обученной СНС до и после квантования. Для аппаратной реализации значения коэффициентов фильтра приведены к 8-битному представлению. Разрядность г = 8 определена по формуле (19) при N = 11. Выбранное значение параметра N является наименьшим, при котором результат обработки изображения фильтром размера 3*3x3 гарантированно достигает качества в 40 дБ согласно формуле (18).

Табл. 2. Маска одного из фильтров

архитектура СНС

Табл. 1. Точность распознавания СНС в зависимости от значений параметра масштабирования N

Параметр масштабирования, N Точность распознавания СНС, %

32 (в Matlab по умолчанию) 96,97

12 96,97

11 96,97

10 96,97

9 93,94

8 93,94

7 93,94

Далее представлено аппаратное моделирование, в котором используются квантованная маска фильтра из табл. 2.

свёрточного слоя обученной СНС

Слой Маска фильтра до квантования Маска фильтра после квантования

R '-0,0394456 -0,0257306 -0,0239846^ -0,0312350 -0,0403409 -0,0520126 ^-0,0434387 -0,0364724 -0,0520036, ' -80 -52 -49^ -63 -82 -106 ч -88 -74 -106,

G '-0,0280364 -0,0397294 -0,0528939^ -0,0423464 -0,0429127 -0,0613428 ч-0,0128505 -0,0548165 -0,0599076, ' -57 -81 -108^ -86 -87 -125 ч -26 -112 -122,

B '-0,0304336 -0,0289807 -0,0600239^ -0,0578725 -0,0404073 -0,0482339 -0,0492809 -0,0410201 -0,0474128 \ ' ' ' / ( -62 -59 -122^ -118 -82 -98 -100 -84 -97 V У

Смещение -0,0003320 0

5. Аппаратное моделирование Аппаратное моделирование произведено на FPGA Kintex7 xc7k70tfbg484-2 в Xilinx Vivado 16.3. Для симуляции использованы параметры моделирования «High Performance Optimized». Цель моделирования -сравнение использования ДСС и СОК.

Результаты аппаратного моделирования представлены только для одного фильтра, но могут быть обобщены на остальные семь, так как имеют одинаковую структуру и отличаются лишь весовыми коэф-

фициентами. Для достижения максимального быстродействия FPGA-реализация фильтров СНС была выполнена в виде комбинационной схемы, без использования памяти. Для реализации операции свёртки использовались параллельно-префиксные сумматоры Когге-Стоуна (Kogge Stone Adder) и сумматоры с сохранением переноса (Carry Save Adder). Таким образом, могут быть реализованы все восемь фильтров свёрточного слоя рассмотренной СНС. При этом универсальность реализованного подхода позволяет обобщить вывод, полученный для одного фильтра, на

все остальные. Распределение и общее использование аппаратных блоков Slice и LUT Slices при таком подходе выполняется автоматически на основе алгоритмов, встроенных в САПР (в нашем случае Xilinx Vivado 16.3.).

Моделирование операции свёртки произведено для различных модулей вида 2p и 2p-1. Результаты представлены в табл. 3 и показывают, что задержка варьируется от 8,805 нс до 17,274 нс.

Табл. 3. Задержка операции свёртки СНС для различных модулей

Модуль Задержка, нс

22-1 8,805

23-1 10,474

24-1 12,794

25-1 13,669

26-1 15,187

27-1 17,110

28-1 15,988

29-1 15,085

210-1 17,274

27 13,187

28 15,756

29 13,755

210 15,998

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

M > 2• 255• max{0,2326} = 1186260,

где 255 - максимальное значение яркости изображения; 0 - сумма положительных коэффициентов фильтра; 2326 - модуль суммы его отрицательных коэффициентов. Данное условие, а также данные из табл. 3 позволяют нам выбрать для моделирования СОК, содержащей преобразование из ДСС в СОК, свёртку в СОК и обратное преобразование из СОК в ДСС три набора модулей {23 - 1,24 - 1,25 - 1,29}, {24 -1,29 - 1,29} и {25 - 1,27, 29 - 1}, имеющих наименьшую задержку и перекрывающих диапазон M.

Полученные результаты моделирования с использованием СОК и ДСС представлены в табл. 4. Моделирование показало, что использование СОК с набором модулей {23 - 1,24 - 1,25 - 1,29} позволяет сократить аппаратные затраты на 32,6 %, использование набора модулей {24 - 1,29 - 1,29} - на 18,3 %, а использование набора модулей {25 - 1,27, 29 - 1} - на 25,2% по сравнению с ДСС. Это позволяет сделать вывод, что использование СОК для аппаратной реализации свёрточного слоя СНС более эффективно по площади устройства по сравнению с реализацией в ДСС. Для демонстрации преимуществ предложенного метода проведено сравнение с реализацией функции свёртки одного фильтра СНС, полученной встроенным в Matlab конвертером HDL Coder в код, написанный на языке VHDL. Результаты моделирования показали, что спроектированное на основе известного алгорит-

ма устройство задействует 3303 LUT с задержкой 33,959 нс. Следовательно, предложенный нами подход с использованием СОК {23 - 1,24 - 1,25 - 1,29} сокращает скорость работы устройства на 27,21% и уменьшает его аппаратные ресурсы на 10,35 % по сравнению с автоматически сгенерированным кодом в среде Matlab.

Табл. 4. Результаты аппаратного моделирования свёрточного слоя СНС

Система счисления Задержка, нс Занятые LUTs

СОК {23 - 1,24 - 1,25 - 1,29} 24,717 2961

СОК {24 - 1,29 - 1,29} 26,245 3587

СОК {25 - 1,27,29 - 1} 24,167 3284

ДСС 18,769 4392

Программная часть СНС реализована в среде Matlab. Интерфейс передачи данных между FPGA-модулем и «рабочей станцией» - USB 2.0. Время передачи изображения на FPGA-модуль составляет 0,0025 с, а обратная передача полученного результата на «рабочую станцию» занимает 0,0013 с. Данные среднего времени распознавания одного изображения приведены в табл. 5. Таким образом, основываясь на представленных данных о скорости работы системы, можно сделать вывод, что использование предлагаемой аппаратно-программной реализации позволяет сократить среднее время распознавания изображения на 37,06 %.

Табл. 5. Среднее время распознавания изображения

Архитектура Компоненты системы Время, с

Программная реализация Слой свёртки 0,0380

Остальные слои СНС 0,0540

Общее время программной реализации 0,0920

Аппаратно- программная реализация Передача изображения на ЕРОА 0,0025

Слой свёртки 0,0001

Передача результата на «рабочую станцию» 0,0013

Остальные слои СНС 0,0540

Общее время аппаратно-программной реализации 0,0579

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

Заключение

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

организован как традиционный многослойный пер-септрон. Аппаратное моделирование операции свертки показало, что использование предложенного метода, основанного на СОК с набором модулей специального вида, позволяет сократить аппаратные затраты на 32,6% по сравнению с реализацией ДСС. Обобщение полученных результатов на случай больших масок фильтров требует дальнейших исследований на практике. Результаты исследования могут быть применены при создании эффективных систем видеонаблюдения, для распознавания рукописного текста, лиц, объектов и местности.

Благодарности Работа выполнена при финансовой поддержке базовой части государственного задания (№2.6035.2017/БЧ), Российского фонда фундаментальных исследований (проекты №18-07-00109 А, №19-07-00130 А и №18-37-20059 мол-а-вед), Совета по грантам Президента Российской Федерации (проект СП-2245.2018.5).

Литература

1. Chen, Y. Deep and low-level feature based attribute learning for person re-identification / Y. Chen, S. Duffner, A. Stoian, J.-Y. Dufour, A. Baskurta // Image and Vision Computing. - 2018. - Vol. 79. - P. 25-34.

2. Cheng, X. Scene recognition with objectness / X. Cheng, J. Lu, J. Feng, B. Yuan, J. Zhou // Pattern Recognition. -2018. - Vol. 74. - P. 474-487.

3. Sarikan, S.S. Automated vehicle classification with image processing and computational intelligence / S.S. Sarikan, A.M. Ozbayoglu, O. Zilcia // Procedia Computer Science. -2017. - Vol. 114. - P. 515-522.

4. Qayyum, A. Medical image retrieval using deep convolu-tional neural network / A. Qayyum, S.M. Anwar, M. Awais, M. Majid // Neurocomputing. - 2017. - Vol. 266. - P. 8-20.

5. Zhang, J. Small sample image recognition using improved convolutional neural network / J. Zhang, K. Shao, X. Luo // Journal of Visual Communication and Image Representation. - 2018. - Vol. 55. - P. 640-647.

6. LeCun, Y. Gradient-based learning applied to document recognition / Y. LeCun, L. Bottou, Y. Bengio, P. Haffiner // Proceedings of the IEEE. - 1998. - Vol. 86, Issue 11. -P. 2278-2324.

7. Krizhevsky, A. ImageNet classification with deep convolu-tional neural networks / A. Krizhevsky, I. Sutskever, G.E. Hinton // Advances in Neural Information Processing Systems. - 2012. - Vol. 25, Issue 2. - P. 1097-1105.

8. Szegedy, C. Going deeper with convolutions / C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, A. Rabinovich // 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). - 2015. - P. 1-9.

9. Jouppi, N. Motivation for and evaluation of the first tensor processing unit / N. Jouppi, C. Young, N. Patil, D. Patterson // IEEE Micro. - 2018. - Vol. 38, Issue 3. - P. 10-19.

10. TensorFlow. An end-to-end open source machine learning platform [Electronical Resource]. - URL: https://www.tensorflow.org/ (request date 19.04.2019).

11. Aghdam, H.H. Guide to convolutional neural networks: A practical application to traffic-sign detection and classifica-

tion / H.H. Aghdam, E.J. Heravi. - Springer International Publishing, 2017. - 282 p.

12. danielholanda/LeFlow: Enabling flexible FPGA high-level synthesis of tensorflow deep neural networks [Electronical Resource]. - URL: https://github.com/danielholanda/LeFlow (request date 19.04.2019).

13. Noronha, D.H. LeFlow: Enabling flexible FPGA high-level synthesis of tensorflow deep neural networks / D.H. Noronha, B. Salehpour, S.J.E. Wilton // 2018 Fifth International Workshop on FPGAs for Software Programmers (FSP Workshop). - 2018. - P. 1-8.

14. Cafee. Deep learning framework [Electronical Resource]. -URL: https://caffe.berkeleyvision.org/ (request date 19.04.2019).

15. dicecco1/fpga_caffe [Electronical Resource]. - URL: https://github.com/dicecco1/fpga_caffe (request date 19.04.2019).

16. DiCecco, R. Caffeinated FPGAs: FPGA framework for convolutional neural networks / R. DiCecco, G. Lacey, J. Vasiljevic, P. Chow, G. Taylor, S. Areibi // 2016 International Conference on Field-Programmable Technology (FPT). - 2016. - P. 265-268.

17. Install Intel distribution of OpenVINO™ toolkit for Linux with FPGA support [Electronical Resource]. URL: https://docs.openvinotoolkit.org/2019_R1/_docs_install_gui des_installing_openvino_linux_fpga.html (request date 19.04.2019).

18. MATLAB [Электронный ресурс]. URL: https://matlab.ru/products/matlab (дата обращения 19.04.2019).

19. Nakahara, H. A deep convolutional neural network based on nested residue number system / H. Nakahara, T. Sasao // 2015 25th International Conference on Field Programmable Logic and Applications (FPL). - 2015. - P. 1-6.

20. Nakahara, H. A high-speed low-power deep neural network on an FPGA based on the Nested RNS: Applied to an object detector / H. Nakahara, T. Sasao // 2018 IEEE International Symposium on Circuits and Systems (ISCAS). -2018. - P. 1-5.

21. Manabe, T. FPGA implementation of a real-time superresolution system with a CNN based on a residue number system / T. Manabe, Y. Shibata, K. Oguri // 2017 International Conference on Field Programmable Technology (ICFPT). - 2017. - P. 299-300.

22. Chervyakov, N.I. Increasing of convolutional neural network performance using residue number system / N.I. Chervyakov, P.A. Lyakhov, M.V. Valueva // International Multi-Conference on Engineering, Computer and Information Sciences (SIBIRCON). - 2017. - P. 135-140.

23. Чернов, В.М. Тернарные системы счисления в конечных полях / В.М. Чернов // Компьютерная оптика. -2018. - Т. 42, № 4. - С. 704-711. - DOI: 10.18287/24126179-2018-42-4-704-711.

24. Omondi, A. Residue number systems: Theory and implementation / A. Omondi, B. Premkumar. - London: Imperial College Press, 2007. - 296 p.

25. Cardarilli, G.C. Residue number system for low-power DSP applications / G.C. Cardarilli, A. Nannarelli, M. Re // 41st Asilomar Conference on Signals, Systems, and Computers. - 2007. - P. 1412-1416.

26. Vergos, H.T. On modulo 2An+1 adder design / H.T. Vergos, G. Dimitrakopoulos // IEEE Transactions on Computers. -2012. - Vol. 61, Issue 2. - P. 173-186.

27. Zivaljevic, D. Digital filter implementation based on the RNS with diminished-1 encoded channel / D. Zivaljevic, N. Stamenkovic, V. Stojanovic // 2012 35th International

Conference on Telecommunications and Signal Processing (TSP). - 2012. - P. 662-666.

28. Chervyakov, N.I Residue-to binary conversion for general moduli sets based on approximate Chinese remainder theorem / N.I. Chervyakov, A.S. Molahosseini, P.A. Lyakhov, M.G. Babenko, M.A. Deryabin // International Journal of Computer Mathematics. - 2017. - Vol. 94, Issue 9. -P. 1833-1849.

29. Hung, C.Y. An approximate sign detection method for residue numbers and its application to RNS division / C.Y. Hung, B. Parhami // Computers and Mathematics with Applications. - 1994. - Vol. 27, Issue 4. - P. 23-25.

30. Matos, R. Efficient implementation of modular multiplication by constants applied to RNS reverse converters / R. de Matos, R. Paludo, N. Chervyakov, P.A. Lyakhov, H. Pettenghi // 2017 IEEE International Symposium on Circuits and Systems (ISCAS). - 2017. - P. 1-4.

31. Rao, K.R. The transform and data compression handbook / K.R. Rao, P.C. Yip. - London, New York: CRC Press, 2001. - 399 p.

32. Chervyakov, N.I. Quantization noise of multilevel discrete wavelet transform filters in image processing / N.I. Chervyakov, P.A. Lyakhov, N.N. Nagornov // Optoelectronics, Instrumentation and Data Processing. - 2018. -Vol. 54, Issue 6. - P. 608-616.

33. Rothganger, F. Object recognition database / F. Rothganger, S. Lazebnik, C. Schmid, J. Ponce // [Electronic resource] -URL: http://www-cvr.ai.uiuc.edu/ponce_grp/data/objects (request date 19.04.2019).

34. Chervyakov, N.I. Effect of RNS dynamic range on grayscale images filtering / N.I. Chervyakov, P.A. Lyakhov, D.I. Kalita, K.S. Shulzhenko // 2016 XV International Symposium Problems of Redundancy in Information and Control Systems (REDUNDANCY). - 2016. - P. 33-37.

Сведения об авторах

Червяков Николай Иванович, 1935 года рождения, в 1965 году окончил Харьковское высшее командно-инженерное училище. В 1972 г. защитил кандидатскую диссертацию, защитил докторскую диссертацию в 1987 г. Получил звание доцента в 1974 г., звание профессора - в 1989 г. Заведующий кафедрой прикладной математики и математического моделирования ИМЕН ФГАОУ ВО «Северо-Кавказский федеральный университет». Область научных интересов: цифровая обработка сигналов и изображений, искусственный интеллект, модулярная арифметика, цифровые устройства, высокопроизводительные вычисления, криптография. E-mail: k-fmf-primath@stavsu.ru .

Ляхов Павел Алексеевич, 1988 года рождения, в 2009 году окончил Ставропольский государственный университет по специальности «Математика», доцент кафедры прикладной математики и математического моделирования ИМЕН ФГАОУ ВО «Северо-Кавказский федеральный университет», кандидат физико-математических наук. Область научных интересов: цифровая обработка сигналов и изображений, искусственный интеллект, модулярная арифметика, цифровые устройства, высокопроизводительные вычисления. E-mail: Hahov@mail.ru .

Нагорнов Николай Николаевич, 1992 года рождения. Аспирант ИМЕН ФГАОУ ВО «Северо-Кавказский федеральный университет». Область научных интересов: цифровая обработка изображений, искусственный интеллект, модулярная арифметика. E-mail: spartal392@mail.ru .

Валуева Мария Васильевна, 1993 года рождения. Аспирант ИМЕН ФГАОУ ВО «Северо-Кавказский федеральный университет». Область научных интересов: цифровая обработка изображений, искусственный интеллект, модулярная арифметика, цифровые устройства. E-mail: mriya.valueva@mail.ru .

Валуев Георгий Вячеславович, 1992 года рождения. Аспирант ИМЕН ФГАОУ ВО «Северо-Кавказский федеральный университет». Область научных интересов: цифровая обработка изображений, искусственный интеллект, высокопроизводительные вычисления. E-mail: elasgreece92@mail.ru .

ГРНТИ: 28.23.15

Поступила в редакцию 2 марта 2019 г. Окончательный вариант - 19 апреля 2019 г.

Hardware implementation of a convolutional neural network using calculations in the residue number system

N.I. Chervyakov 1, P.A. Lyakhov 1, N.N. Nagornov 1, M.V. Valueva 1, G.V. Valuev 1 1 North-Caucasus Federal University, 355009, Russia, Stavropol, Pushkin street 1

Abstract

Modern convolutional neural networks architectures are very resource intensive which limits the possibilities for their wide practical application. We propose a convolutional neural network architecture in which the neural network is divided into hardware and software parts to increase performance and reduce the cost of implementation resources. We also propose to use the residue number system in the hardware part to implement the convolutional layer of the neural network for resource costs reducing. A numerical method for quantizing the filters coefficients of a convolu-

tional network layer is proposed to minimize the influence of quantization noise on the calculation result in the residue number system and determine the bit-width of the filters coefficients. This method is based on scaling the coefficients by a fixed number of bits and rounding up and down. The operations used make it possible to reduce resources in hardware implementation due to the simplifying of their execution. All calculations in the convolutional layer are performed on numbers in a fixed-point format. Software simulations using Matlab 2017b showed that convolutional neural network with a minimum number of layers can be quickly and successfully trained. Hardware implementation using the field-programmable gate array Kintex7 xc7k70tfbg484-2 showed that the use of residue number system in the convolutional layer of the neural network reduces the hardware costs by 32.6% compared with the traditional approach based on the two's complement representation. The research results can be applied to create effective video surveillance systems, for recognizing handwriting, individuals, objects and terrain.

Keywords: convolutional neural networks, image processing, pattern recognition, residue number system.

Citation: Chervyakov NI, Lyakhov PA, Nagornov NN, Valueva MV, Valuev GV. Hardware implementation of a convolutional neural network using calculations in the residue number system. Computer Optics 2019; 43(5): 857-868. DOI: 10.18287/2412-6179-2019-43-5-857-868.

Acknowledsements: This work was supported by the Government of the Russian Federation (State order No. 2.6035.2017/BCh), the Russian Foundation for Basic Research (Projects No. 1807-00109 A, No. 19-07-00130 A and No. 18-37-20059 mol-a-ved), and by the Presidential Grant of the Russian Federation (Project No. SP-2245.2018.5).

References

[1] Chen Y, Duffner S, Stoian A, Dufour J-Y, Baskurta A. Deep and low-level feature based attribute learning for person reidentification. Image Vis Comput 2018; 79: 25-34.

[2] Cheng X, Lu J, Feng J, Yuan B, Zhou J. Scene recognition with objectness. Pattern Recogn 2018; 74: 474-487.

[3] Sarikan SS, Ozbayoglu AM, Zilcia O. Automated vehicle classification with image processing and computational intelligence. Procedia Computer Science 2017; 114: 515-522.

[4] Qayyum A, Anwar SM, Awais M, Majid M. Medical image retrieval using deep convolutional neural network. Neurocomputing 2017; 266: 8-20.

[5] Zhang J, Shao K, Luo X. Small sample image recognition using improved convolutional neural network. Journal of Visual Communication and Image Representation 2018; 55: 640-647.

[6] LeCun Y, Bottou L, Bengio Y, Haffiner P. Gradient-based learning applied to document recognition. Proc IEEE 1998; 86(11): 2278-2324.

[7] Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems 2012; 25(2): 1097-1105.

[8] Szegedy C, Liu W, Jia Y, Sermanet P, Reed S, Anguelov D, Erhan D, Vanhoucke V, Rabinovich A. Going deeper with convolutions. IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2015: 1-9.

[9] Jouppi N, Young C, Patil N, Patterson D. Motivation for and evaluation of the first tensor processing unit. IEEE Micro 2018; 38(3): 10-19.

[10] TensorFlow. An end-to-end open source machine learning platform. Source: (https://www.tensortlow.org/).

[11] Aghdam HH, Heravi EJ. Guide to convolutional neural networks: A practical application to traffic-sign detection and classification. Springer International Publishing; 2017.

[12] danielholanda/LeFlow: Enabling flexible FPGA high-level synthesis of tensorflow deep neural networks. Source: (https://github.com/danielholanda/LeFlow).

[13] Noronha DH, Salehpour B, Wilton SJE. LeFlow: Enabling flexible FPGA high-level synthesis of tensorflow

deep neural networks. Fifth International Workshop on FPGAs for Software Programmers (FSP Workshop) 2018; 1-8.

[14] Cafee. Deep learning framework. Source: (https://caffe.berkeleyvision.org/).

[15] dicecco1/fpga_caffe. Source: (https://github.com/dicecco1/fpga_caffe).

[16] DiCecco R, Lacey G, Vasiljevic J, Chow P, Taylor G, Areibi S. Caffeinated FPGAs: FPGA framework For Convolutional Neural Networks. International Conference on Field-Programmable Technology (FPT) 2016; 265-268.

[17] Install Intel Distribution of Open VINO™ toolkit for Linux with FPGA support - OpenVINO Toolkit. Source: (https://docs.openvinotoolkit.org/2019_R1/_docs_install_ guides_installing_openvino_linux_fpga.html).

[18] MATLAB [In Russian]. Source: (https://matlab.ru/products/matlab).

[19] Nakahara H, Sasao T. A deep convolutional neural network based on nested residue number system. 25th International Conference on Field Programmable Logic and Applications (FPL) 2015: 1-6.

[20] Nakahara H, Sasao T. A high-speed low-power deep neural network on an FPGA based on the Nested RNS: Applied to an object detector. IEEE International Symposium on Circuits and Systems (ISCAS) 2018: 1-5.

[21] Manabe T, Shibata Y, Oguri K. FPGA implementation of a real-time super-resolution system with a CNN based on a residue number system. International Conference on Field Programmable Technology (ICFPT) 2017: 299-300.

[22] Chervyakov NI, Lyakhov PA, Valueva MV. Increasing of convolutional neural network performance using residue number system. International Multi-Conference on Engineering, Computer and Information Sciences (SIBIRCON) 2017: 135-140.

[23] Chernov VM. Ternary number systems in finite fields [In Russian]. Computer Optics 2018; 42(4): 704-711. DOI: 10.18287/2412-6179-2018-42-4-704-711.

[24] Omondi A, Premkumar B. Residue number systems: Theory and implementation. London: Imperial College Press; 2007.

[25] Cardarilli GC, Nannarelli A, Re M. Residue number system for low-power DSP applications. 41st Asilomar Conference on Signals, Systems, and Computers 2007: 14121416.

[26] Vergos HT, Dimitrakopoulos G. On modulo 2An+1 adder design. IEEE Transactions on Computers 2012; 61(2): 173-186.

[27] Zivaljevic D, Stamenkovic N, Stojanovic V. Digital filter implementation based on the RNS with diminished-1 encoded channel. 35th International Conference on Telecommunications and Signal Processing (TSP) 2012: 662666.

[28] Chervyakov NI, Molahosseini AS, Lyakhov PA, Babenko MG, Deryabin MA. Residue-to binary conversion for general moduli sets based on approximate Chinese remainder theorem. International journal of computer mathematics 2017; 94(9): 1833-1849.

[29] Hung CY, Parhami B. An approximate sign detection method for residue numbers and its application to RNS division. Computers and Mathematics with Applications 1994; 27(4): 23-25.

[30] Matos R, Paludo R, Chervyakov N, Lyakhov PA, Petten-ghi H. Efficient implementation of modular multiplication by constants applied to RNS reverse converters. IEEE International Symposium on Circuits and Systems (ISCAS) 2017; 1-4.

[31] Rao KR, Yip PC. The transform and data compression handbook. London, New York: CRC Press; 2001.

[32] Chervyakov NI, Lyakhov PA, Nagornov NN. Quantization noise of multilevel discrete wavelet transform filters in image processing. Optoelectronics, Instrumentation and Data Processing 2018; 54(6): 608-616.

[33] Rothganger F, Lazebnik S, Schmid C, Ponce J. Object recognition database. Source: (http://www-cvr.ai.uiuc.edu/ponce_grp/data/objects).

[34] Chervyakov NI, Lyakhov PA, Kalita DI, Shulzhenko KS. Effect of RNS dynamic range on grayscale images filtering. XV International Symposium Problems of Redundancy in Information and Control Systems (REDUNDANCY) 2016; 33-37.

Author's information

Nikolay Ivanovich Chervyakov (b. 1935) graduated from Kharkov Higher Command and Engineering School in 1965. Since 1972 is the Candidates of Technical Sciences, 1987 - the Doctor of Technical Sciences. Received the title of associate professor in 1974, the title of professor - in 1989. Head of Applied Mathematics and Mathematical Modeling department of North-Caucasus Federal University, Doctor of Technical Sciences. Research interests are digital signal and image processing, artificial intelligence, residue number system, digital circuits, high-performance computing, cryptography. E-mail: k-fmf-primath@stavsu.ru .

Pavel Alekseyevich Lyakhov (b. 1988) graduated from Stavropol State University, specialty "Mathematics" in 2009. Assistant Professor of Applied Mathematics and Mathematical Modeling department of North-Caucasus Federal University. Research interests are digital signal and image processing, artificial intelligence, residue number system, digital circuits, high-performance computing. E-mail: ljahov@mail.ru .

Nikolay Nikolaevich Nagornov (b. 1992) PhD student of Applied Mathematics and Mathematical Modeling department of North-Caucasus Federal University. Research interests are digital image processing, artificial intelligence, computer arithmetic and digital circuits. E-mail: sparta1392@mail.ru .

Maria Vasilyevna Valueva (b. 1993) PhD student of Applied Mathematics and Mathematical Modeling department of North-Caucasus Federal University. Research interests are digital image processing, artificial intelligence, computer arithmetic and digital circuits. E-mail: mriya. valueva@mail.ru .

Georgiy Vyacheslavovich Valuev (b. 1992) PhD student of Applied Mathematics and Mathematical Modeling department of North-Caucasus Federal University. Research interests are digital image processing, artificial intelligence, computer arithmetic and digital circuits. E-mail: elasgreece92@mail.ru .

Received March 2, 2019. The final version - April 19, 2019.