Применение избирательных нейронных сетей для распознавания черно-белых цифровых изображений
Заказать уникальную дипломную работу- 76 76 страниц
- 30 + 30 источников
- Добавлена 08.07.2023
- Содержание
- Часть работы
- Список литературы
Введение 3
1. Описание предметной области 5
1.1 Распознавание черно-белых изображений 7
1.2 Обзор различных методов 13
2. Проектирование программного обеспечения 30
2.1 Описание перцептрона 30
2.1.1 Архитектура нейронной сети глубокого обучения 32
2.2 Выбор среды разработки и платформы реализации 45
2.3 Разработка и описание алгоритма работы. 51
3. Программная реализация 59
3.1 Описание используемых функций 59
3.1.1 Распознавание черно-белых цифр с экрана 59
3.1.2 Распознавание рукописных черно-белых цифр 61
3.2 Тестирование и экспериментальная проверка программного обеспечения. 66
3.3 Расчет экономической эффективности 70
Заключение 73
Список литературы 74
Нами был выбран язык Python благодаря своей простоте и множеству библиотек для машинного обучения. Теперь приступим к выбору прлатформы для разработки приложения.
Google Colaboratory – это бесплатный облачный сервис, предоставляемый Google, поддерживающий бесплатный графический процессор и основаный на среде Google Jupyter Notebooks. Он предоставляет платформу для разработки приложений глубокого обучения с использованием часто используемых библиотек, таких как PyTorch, TensorFlow и Keras [30]. Это дает возможность вашей машине не нести нагрузку тяжелой тренировки ваших операций МО. Это одна из самых популярных платформ подобного рода. Но есть и другие, которые представляют собой эффективные альтернативы Colab.
Azure Notebooks – это средство разработки от Microsoft. Очень похоже на Colab с точки зрения функциональности. Обе платформы имеют функцию совместного использования облака, доступную бесплатно. Azure Notebooks выигрывает по скорости и в этом плане намного лучше Colab. Памяти у них 4 гигабайта. Azure Notebooks создают коллекцию связанных записных книжек, которые называются библиотеками. Эти библиотеки имеют размер каждого файла данных менее 100 мегабайт. Azure Notebooks поддерживают языки программирования Python, R и F#. Он имеет собственный интерфейс Jupyter. Azure Notebooks больше подходят для простых приложений.
Kaggle Kernels – отличная платформа для приложений глубокого обучения в облаке. Kaggle Kernels и Colab имеют ряд общих черт, поскольку оба являются продуктами Google. Как и Colab, он позволяет пользователю бесплатно использовать графический процессор в облаке. Они предоставляет Jupyter Notebooks в браузере. Большинство сочетаний клавиш Jupyter Notebook точно такие же, как в Kaggle Kernels. Он имеет множество наборов данных, которые можно импортировать. Kaggle Kernels часто немного отстает, но работает быстрее, чем Colab. Kaggle Kernels имеет большое сообщество для поддержки, обучения и проверки навыков работы с данными.
Amazon Sagemaker – работает в приложении Jupyter Notebook. Он отвечает за создание и управление блокнотами Jupyter, которые в дальнейшем можно использовать для обработки данных, а также для дальнейшего обучения и развертывания моделей машинного обучения. Для обучения и развертывания моделей он предоставляет API. Amazon SageMaker предоставляет консоль, которая позволяет пользователю использовать пользовательский интерфейс консоли, чтобы начать обучение модели или развернуть модель. Это позволяет легко интегрировать модели машинного обучения в приложения.
IBM DataPlatform. IBM представила Watson Data Platform и Data Science Experience (DSX) еще в 2016 году с поддержкой опций с открытым исходным кодом. Эти варианты включали записные книжки Apache Spark, R, Python, Scala и Jupyter. В конечном итоге она запустила свою платформу для мульти облачной свободы выбора для работы в области науке о данных. Это было сделано с помощью контейнеризации продукта посредством Kubernetes. В результате его можно развернуть в контейнерах Docker или CloudFoundry, где бы ни находились данные. IBM DataPlatform, в отличие от Google Colab, имеют контейнеризацию для мульти облачного развертывания или гибридного развертывания.
IBM поддерживает контейнеризацию, поскольку она дает клиентам возможность анализировать данные, а также создавать, развертывать и запускать модели в любом месте, включая конкурирующие публичные облака. DSX является частью платформы Watson Data Platform, и при необходимости, независимой от нее DSX Local. Также обеспечивает контролируемый совместный доступ к проектам, данным, инструментам обработки данных, услугам и пространству сообщества. Блокноты DataPlatform поддерживают языки R, Python и Scala, а также блокноты Jupyter и Apache Zeppelin. Пользователи DSX могут использовать библиотеки с открытым исходным кодом, включая Spark MLlib, TensorFlow, Caffe, Keras и MXNet.
Jupyter Notebook – это веб–приложение с открытым исходным кодом, целью которого является создание и обмен документами, содержащими живой код, уравнения, визуализации и текст. Jupyter Notebook поддерживается сотрудниками Project Jupyter. Это случайный проект, возникший из проекта IPython. Он поддерживает языки Python, R и Julia. Их основное использование в вычислительной физике и анализе данных. Jupyter Notebook обеспечивает различные визуализации, которые отображаются непосредственно в блокноте. Как и Colab, блокноты Jupyter больше ориентированы на то, чтобы сделать работу воспроизводимой и более легкой для понимания.
Таким образом, был выбран язык программирования Python и средой разработки был выбран Google Colab.
2.3 Разработка и описание алгоритма работы.
Будет два режима работы программы – режим распознавания черно-белых пиксельных цифр и режим распознавания рукописных черно-белых цифр.
В режиме распознавания черно-белых пиксельных цифр каждую цифру можно представить в виде вектора размером 4*6 = 24 элемента, из нулей и единиц.
Используется следующий алгоритм
Производится ввод матрицы А размерностью mxn,
где m –число распознаваемых букв, m=10, где цифры 0,1,2,…,9. Цифры распознаются на экране монитора 4х6. В дальнейшем следует предусмотреть другие мониторы, например, 3х5 , 10х10 и другие. Приводим картину образования матрицы А, показанную на рис. 1.
Рис. 26 Разложение 10-ти цифр от 0-9 в виде бинарной строки. Учтена значимость каждого разложения в виде нормировки по норме. Каждой цифре соответствует бинарная строка из 24 ячеек из 0 и 1. Совокупность всех строк показана на рис. справа, в виде матрицы 10х24. Бинарные входные сигналы, характеризующие объекты, показаны строками матрицы 10х24
Матрица А является по существу матрицей входных данных. Строки матрицы являются бинарными последовательностями из 0 и 1. Бинарные последовательности получаются путем последовательного построчного кодирования конкретной цифры на экране монитора. Построчное кодирование называют телевизионным разложением изображения. Совокупность всех разложений цифр от 0 до 9 можно представить в виде матрицы А, записанной ниже. Первая строка матрицы отображает цифру 0, вторая строка цифру 1 и т. д. Последняя 10-я строка отображает цифру 9. Матрица А равна
A=[0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0;
0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0;
1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1;
1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0;
1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1;
0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0;
0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0;
1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 0;
0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0;
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0];
B=[1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1];
B=[0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0];
Каждой цифре соответствует бинарная строка из 24 ячеек из 0 и 1. Совокупность всех строк показана на рис. справа, в виде матрицы 24х10. Бинарные входные сигналы, характеризующие объекты, показаны строками матрицы 10х24.
Ввести строку к-той распознаваемой цифры и получаем вектор B из 0 и 1 с размерностью 24
Производится умножение матрицы А на транспонированную строку распознаваемой цифры вектор B . В результате получаем вектор С
Производится проверка условий для элементов вектора С
,
где - заданное пороговое значение, .
Проверку производят, изменяя j при заданном значении k. Если условие превышения порога выполняется, то это дает нам номер распознаваемой цифры. Это дает значение k. Сама цифра равна (k-1).
Распознаваемая цифра выдается на экран.
Рисунок 27 – алгоритм работы распознавания цифры с экрана дисплея
В режиме же распознавания рукописных цифр алгоритм следующий:
Скачиваем датасет MNIST. Набор данных MNIST представляет собой набор рукописных цифр, который обычно используется в качестве эталонного набора данных в исследованиях машинного обучения и компьютерного зрения. Он содержит 70 000 изображений в оттенках серого размером 28x28 пикселей, каждое из которых представляет одну цифру от 0 до 9. Набор данных разделен на 60 000 обучающих изображений и 10 000 тестовых изображений. Набор данных MNIST широко используется для обучения и тестирования моделей для таких задач, как классификация изображений, распознавание объектов и распознавание рукописного ввода.
Избавляемся от градаций серого, переводим все рисунки в черно-белый формат.
Выполняем разделение на тестовое и тренировочное множество.
Создаем полносвязную нейронную сеть с помощью фреймворка Keras Tensorflow.
Keras — это библиотека нейронных сетей с открытым исходным кодом, написанная на Python. Он разработан, чтобы быть удобным для пользователя, модульным и расширяемым. Keras предоставляет высокоуровневый API для создания и обучения моделей глубокого обучения. Он построен на основе TensorFlow, библиотеки программного обеспечения с открытым исходным кодом для потоков данных и дифференцированного программирования для ряда задач.
Keras предоставляет оптимизированный интерфейс для построения различных типов моделей, включая сверточные нейронные сети (CNN), рекуррентные нейронные сети (RNN) и глубокие нейронные сети (DNN). Он предлагает широкий спектр встроенных слоев и функций активации, а также функции потерь и оптимизаторы для обучения модели. Keras также предоставляет инструменты для предварительной обработки и дополнения данных.
TensorFlow используется в качестве серверной части для Keras, а это означает, что Keras может работать поверх TensorFlow и использовать свой вычислительный граф для эффективного обучения модели. TensorFlow предоставляет низкоуровневый API для создания и обучения моделей машинного обучения, который можно использовать для более сложной настройки моделей.
В целом, Keras предоставляет удобный и гибкий интерфейс для создания и обучения моделей глубокого обучения, а TensorFlow предоставляет мощный бэкенд для эффективных вычислений и настройки.
Обязательно создаем слой Flatten, который переводит многомерные данные в одномерный массив.
Производим обучение.
Оцениваем результаты, при необходимости возвращаемся к пункту 4 и меняем параметры нейронной сети.
Рисунок 28 – алгоритм работы распознавания рукописной цифры
Программная реализация
Описание используемых функций
Распознавание черно-белых цифр с экрана
Было реализовано распознавание любых целых чисел.
Шаг 1 – создание функции генерации матрицы А.
def create_matrix_A():
A=[]
Astr=["0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0",
"0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0",
"1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1",
"1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0",
"1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1",
"0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0",
"0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0",
"1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 0",
"0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0",
"0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0"]
for el in Astr:
A.append(list(map(int,el.split())))
A=np.array(A)
return A
Эта функция создает матрицу A путем преобразования списка строк в список списков целых чисел. Полученная матрица затем преобразуется в массив numpy перед возвратом.
Шаг 2 – создание функции распознающей одну цифру.
def recognize_one_digit(number):
if number<0 or number>9:
print("надо именно одну цифру")
exit()
B=A[number]
POR1=12
C=np.dot(A,B.transpose())
print(C)
DC1=1
DC2=C.shape[0]
for i in range(0,DC2):
if C[i]>=POR1:
print(f"Ура, мы распознали цифру и это {i}")
return i
Эта функция распознает одну цифру, используя предопределенную матрицу «A». Сначала он проверяет, является ли введенное число однозначной цифрой, а затем вычисляет скалярное произведение введенного числа с матрицей «A». Если какой-либо из результирующих элементов скалярного произведения больше или равен 12, он выводит, что число было распознано, и возвращает индекс распознанного числа.
Шаг 3 – распознавание любого целого числа.
def recognize_all(input_number):
for i in str(input_number):
recognize_one_digit(int(i))
Эта функция принимает входное число и разделяет его на отдельные цифры, преобразовывая его в строку и перебирая каждый символ. Затем он вызывает функцию `recognize_one_digit` для распознавания каждой цифры.
Шаг 4 – ввод информации от пользователя и запуск всех функций.
A=create_matrix_A()
digit = input ("Введите цифру, которую хотите распознать ")
try:
dig = int(digit)
except:
print("Надо вводить именно целое число ")
exit()
recognize_all(dig)
Здесь генерируем матрицу А. Далее получаем строку от пользователя. Пытаемся преобразовать в целое число, если не получается то выходим из программы. Если же все нормально, то запускаем функцию recognize_all.
Распознавание рукописных черно-белых цифр
Шаг 1 – импорт необходимых библиотек.
import tensorflow as tf
import matplotlib.pyplot as plt
import cv2
import numpy as np
Шаг 2 – загрузка датасета MNIST.
mnist = tf.keras.datasets.mnist
Шаг 3 – разделение на тестовую и обучающую выборку. Просмотр первого тренировочного изображения.
(x_train,y_train),(x_test,y_test) = mnist.load_data()
plt.imshow(x_train[0])
Рисунок 29 – изображение цифры 5 с набора MNIST
Шаг 4 – уходим от градации серого к черно-белой картинке.
x_train = tf.keras.utils.normalize(x_train,axis=1)
x_test = tf.keras.utils.normalize(x_test,axis=1)
plt.imshow(x_train[0])
Рисунок 30 – черно-белое изображение цифры 5 с набора MNIST
Шаг 5 – создаем полносвязную нейронную сеть, первый слой Flatten сглаживаем многомерные данные в один вектор.
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=x_train[0].shape))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
Шаг 6 – настраиваем параметры обучения и производим обучение.
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train,y_train,epochs=5)
Этот код компилирует и обучает модель нейронной сети.
- «Оптимизатор» — это тип алгоритма, который обновляет веса и смещения модели во время обучения с целью минимизации функции потерь. Здесь мы используем оптимизатор «адам», который является популярным выбором для моделей глубокого обучения.
- Функция «потери» измеряет, насколько хорошо модель предсказывает правильный результат. Здесь мы используем функцию потерь 'sparse_categorical_crossentropy', которая часто используется для задач классификации нескольких классов.
- Параметр `метрики` используется для оценки производительности модели во время обучения. Здесь мы измеряем «точность» модели, то есть долю правильно классифицированных выборок.
Затем метод «подгонки» используется для обучения модели в течение определенного количества «эпох», которое представляет собой количество раз, которое модель будет повторять по всему набору обучающих данных. Во время обучения модель будет обновлять свои веса и смещения, чтобы минимизировать функцию потерь и повысить ее точность.
Шаг 7 – Оцениваем результаты обучения на тестовом множестве.
val_loss, val_accuracy = model.evaluate(x_test,y_test)
print(val_loss, val_accuracy)
Результат отличный, точность более 97 %.
Тестирование и экспериментальная проверка программного обеспечения.
Сначала потестируем первую программу. Введем однозначное число.
Программа отработало штатно, число распозналось.
Далее попробуем трехзначное число.
И далее попробуем шестизначное число.
Делаем вывод, что программа по распознаванию черно-белых цифр с экрана дисплея (пиксельная) работает исправно.
Далее нарисуем свой рисунок в виде цифры 1. Размер рисунка 28*28 пикселей.
Рисунок 31 – черно-белое нарисованное изображение цифры 1
Для распознавания произвольного рисунка пришлось придумать свою функцию.
def recognize_image(filename):
img_grey = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
thresh = 128
img_binary = cv2.threshold(img_grey, thresh, 255, cv2.THRESH_BINARY)[1]
#инвертируем цвета
for i in range(len(img_binary)):
for j in range(len(img_binary[i])):
img_binary[i][j] = 255 - img_binary[i][j]
img_binary = tf.keras.utils.normalize(img_binary,axis=1)
plt.imshow(img_binary)
x=np.array([img_binary])
result = model.predict(x)[0].argmax(axis=0)
return result
Эта функция распознает изображение, преобразуя его в оттенки серого, применяя двоичный порог, инвертируя его цвета, нормализуя его и используя модель глубокого обучения для прогнозирования результата. То есть на выходе массив Numpy из 10 вещественных значений от 0 до 1, индекс максимального значения и есть распознанное число.
Рисунок 32 – результат работы модели по распознаванию цифры 1
Модель отработала успешно! Попробуем цифру 7. Она внешне схожа с цифрой 1.
Рисунок 33 – результат работы модели по распознаванию цифры 7
Модель тут уже немного запуталась.
Подадим на вход рукописную цифру 9.
Рисунок 33 – результат работы модели по распознаванию цифры 9
Вывод – модель работает исправно, но рукописные цифры распознать гораздо тяжелее, так как у каждого человека свои субъективные манеры написания.
Расчет экономической эффективности
Экономическая эффективность — это анализ затрат и выгод от использования определенной технологии или системы. Когда речь идет об использовании нейронных сетей для распознавания черно-белых изображений, экономическую эффективность можно рассчитать, учитывая затраты и выгоды, связанные с этой технологией.
Затраты на использование нейронных сетей для распознавания черно-белых изображений могут включать первоначальные инвестиции, необходимые для разработки технологии и приобретения необходимого оборудования и программного обеспечения. Сюда могут входить расходы на найм специалистов в области нейронных сетей и машинного обучения, а также расходы на обучение и обслуживание системы. Кроме того, могут быть текущие расходы, связанные с обновлениями и обновлениями системы.
С другой стороны, преимущества использования нейронных сетей для распознавания черно-белых изображений могут включать повышение точности и эффективности задач распознавания изображений. Это может привести к повышению производительности, уменьшению количества ошибок и улучшению процесса принятия решений. Кроме того, использование нейронных сетей позволяет автоматизировать повторяющиеся задачи, высвобождая человеческие ресурсы для других задач.
Для расчета экономической эффективности использования нейронных сетей для распознавания черно-белых изображений можно использовать подход анализа затрат и результатов. Это включает в себя сравнение затрат и выгод от использования этой технологии за определенный период времени.
Например, предположим, что компания инвестирует 100 000 долларов США в разработку и внедрение нейронной сети для распознавания черно-белых изображений. По оценкам компании, в течение следующего года эта технология сэкономит им 50 000 долларов на затратах на рабочую силу и уменьшит количество ошибок на 20%.
Используя эту информацию, мы можем рассчитать чистую выгоду от использования технологии нейронной сети следующим образом:
Чистые выгоды = общие выгоды - общие затраты
Общие выгоды = (50 000 долларов экономии затрат на оплату труда) + (0 долларов экономии на сокращении ошибок)
Общие затраты = (первоначальные инвестиции в размере 100 000 долларов США) + (текущие расходы в размере 0 долларов США)
Чистая выгода = (50 000 долларов США) - (100 000 долларов США) = -50 000 долларов США.
Основываясь на этом анализе, мы видим, что компания понесет чистый убыток в размере 50 000 долларов США за первый год внедрения этой технологии. Однако важно отметить, что в этом анализе учитываются только краткосрочные затраты и преимущества использования нейронных сетей для распознавания черно-белых изображений. В долгосрочной перспективе преимущества повышенной точности и эффективности могут перевесить первоначальные затраты на разработку и внедрение технологии. Кроме того, могут быть и другие преимущества, которые не учтены в этом анализе, такие как повышение удовлетворенности клиентов или повышение конкурентоспособности на рынке.
Заключение
В ходе выполнения работы изучена проблематика распознавания изображения, основы обучение нейронных сетей, библиотеки tensorflow и numpy, получены навыки разработки сложного программного кода на языке Python.
В заключение, диплом о применении нейронных сетей для распознавания черно-белых изображений дает всестороннее представление о силе и потенциале нейронных сетей в распознавании изображений. Исследование демонстрирует, как можно эффективно использовать нейронные сети для распознавания черно-белых изображений с впечатляющей точностью. Исследование подчеркивает важность обучения нейронных сетей на больших наборах данных, тщательного выбора подходящей архитектуры и оптимизации гиперпараметров для достижения наилучших результатов. Результаты этого исследования имеют важное значение для различных областей, включая компьютерное зрение, распознавание образов и машинное обучение. Исследование демонстрирует, как системы распознавания изображений на основе искусственного интеллекта могут использоваться для широкого спектра приложений, от обнаружения объектов на кадрах наблюдения до распознавания рукописных цифр. В целом, диплом дает ценную информацию о растущей области исследований нейронных сетей и демонстрирует их потенциал для решения сложных реальных проблем.
Список литературы
1. Al-Azawi M. A. N. Neural Network Based Automatic Traffic Signs Recognition //International Journal of Digital Information and Wireless Communications (IJDIWC). - 2011. - Т. 1. - №. 4. - С. 753-766.
2. Baldi P. Autoencoders, Unsupervised Learning, and Deep Architectures //ICML Unsupervised and Transfer Learning. - 2012. - Т. 27. - С. 37-50.
3. Bahlmann C. et al. A system for traffic sign detection, tracking, and recognition using color, shape, and motion information //Intelligent Vehicles Symposium, 2005. Proceedings. IEEE. - IEEE, 2005. - С. 255-260.
4. Bastien F. et al. Theano: new features and speed improvements //arXiv preprint arXiv:1211.5590. - 2012.
5. Bengio Y., Goodfellow I., Courville A . Deep Learning. - MIT Press, book in preparation
6. Bergstra J. et al. Theano: A CPU and GPU math compiler in Python //Proc. 9th Python in Science Conf. - 2010. - С. 1-7.
7. Broggi A. et al. Real time road signs recognition //Intelligent Vehicles Symposium, 2007 IEEE. - IEEE, 2007. - С. 981-986.
8. Canny J. A computational approach to edge detection //Pattern Analysis and Machine Intelligence, IEEE Transactions on. - 1986. - №. 6. - С. 679-698.
9. Ciresan D., Meier U., Schmidhuber J. Multi-column deep neural networks for image classification //Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on. - IEEE, 2012. - С. 3642-3649.
10. Ciresan D. et al. A committee of neural networks for traffic sign classification //Neural Networks (IJCNN), The 2011 International Joint Conference on. - IEEE, 2011. - С. 1918-1921.
11. Cireєan D. C. et al. Deep big multilayer perceptrons for digit recognition //Neural Networks: Tricks of the Trade. - Springer Berlin Heidelberg, 2012. - С. 581-598.
12. Daugman J. G. Complete discrete 2-D Gabor transforms by neural networks for image analysis and compression //Acoustics, Speech and Signal Processing, IEEE Transactions on. - 1988. - Т. 36. - №. 7. - С. 1169-1179.
13. Gao X. W. et al. Recognition of traffic signs based on their colour and shape features extracted using human vision models //Journal of Visual Communication and Image Representation. - 2006. - Т. 17. - №. 4. - С. 675-685.
14. Goodfellow I. J. et al. Pylearn2: a machine learning research library //arXiv preprint arXiv:1308.4214. - 2013.
15. Han J., Kamber M., Pei J. Data mining: Concepts and techniques. - Morgan kaufmann, 2006.
16. Harris C., Stephens M. A combined corner and edge detector //Alvey vision conference. - 1988. - Т. 15. - С. 50.
17. Houben S. et al. Detection of traffic signs in real-world images: The German Traffic Sign Detection Benchmark //Neural Networks (IJCNN), The 2013 International Joint Conference on. - IEEE, 2013. - С. 1-8.
18. Huang F. J., LeCun Y. Large-scale learning with svm and convolutional netw for generic object recognition //2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. - 2006.
19. Huttenlocher D. P., Ullman S. Object recognition using alignment //Proc. ICCV. - 1987. - Т. 87. - С. 102-111.
20. Jia, Yangqing. "Caffe: An open source convolutional architecture for fast feature embedding." h ttp://caffe. berkeleyvision. org (2013).
21. Krizhevsky A., Sutskever I., Hinton G. E. Imagenet classification with deep convolutional neural networks //Advances in neural information processing systems. - 2012. - С. 1097-1105.
22. Lafuente-Arroyo S. et al. Traffic sign classification invariant to rotations using support vector machines //Proceedings of Advabced Concepts for Intelligent Vision Systems, Brussels, Belgium. - 2004.
23. LeCun Y., Bengio Y. Convolutional networks for images, speech, and time series //The handbook of brain theory and neural networks. - 1995. - Т. 3361. - С. 310.
24. LeCun Y. et al. Learning algorithms for classification: A comparison on handwritten digit recognition //Neural networks: the statistical mechanics perspective. - 1995. - Т. 261. - С. 276.
25. Masci J. et al. Stacked convolutional auto-encoders for hierarchical feature extraction //Artificial Neural Networks and Machine Learning-ICANN 2011. - Springer Berlin Heidelberg, 2011. - С. 52-59.
26. Matan O. et al. Handwritten character recognition using neural network architectures //Proceedings of the 4th USPS Advanced technology Conference. - 1990. - С. 1003-1011.
27. McCulloch W. S., Pitts W. A logical calculus of the ideas immanent in nervous activity //The bulletin of mathematical biophysics. - 1943. - Т. 5. - №. 4. - С. 115-133.
28. Minsky M., Seymour P. Perceptrons. - 1969.
29. Mitchell T. Generative and discriminative classifiers: naive Bayes and logistic regression, 2005 //Manuscript available at http://www. cs. cm. edu/~ tom/NewChapters. html.
30. Moutarde F. et al. Robust on-vehicle real-time visual detection of American and European speed limit signs, with a modular Traffic Signs Recognition system //Intelligent Vehicles Symposium, 2007 IEEE. - IEEE, 2007. - С. 1122-1126.
1
1. Al-Azawi M. A. N. Neural Network Based Automatic Traffic Signs Recognition //International Journal of Digital Information and Wireless Communications (IJDIWC). - 2011. - Т. 1. - №. 4. - С. 753-766.
2. Baldi P. Autoencoders, Unsupervised Learning, and Deep Architectures //ICML Unsupervised and Transfer Learning. - 2012. - Т. 27. - С. 37-50.
3. Bahlmann C. et al. A system for traffic sign detection, tracking, and recognition using color, shape, and motion information //Intelligent Vehicles Symposium, 2005. Proceedings. IEEE. - IEEE, 2005. - С. 255-260.
4. Bastien F. et al. Theano: new features and speed improvements //arXiv preprint arXiv:1211.5590. - 2012.
5. Bengio Y., Goodfellow I., Courville A . Deep Learning. - MIT Press, book in preparation
6. Bergstra J. et al. Theano: A CPU and GPU math compiler in Python //Proc. 9th Python in Science Conf. - 2010. - С. 1-7.
7. Broggi A. et al. Real time road signs recognition //Intelligent Vehicles Symposium, 2007 IEEE. - IEEE, 2007. - С. 981-986.
8. Canny J. A computational approach to edge detection //Pattern Analysis and Machine Intelligence, IEEE Transactions on. - 1986. - №. 6. - С. 679-698.
9. Ciresan D., Meier U., Schmidhuber J. Multi-column deep neural networks for image classification //Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on. - IEEE, 2012. - С. 3642-3649.
10. Ciresan D. et al. A committee of neural networks for traffic sign classification //Neural Networks (IJCNN), The 2011 International Joint Conference on. - IEEE, 2011. - С. 1918-1921.
11. Cireєan D. C. et al. Deep big multilayer perceptrons for digit recognition //Neural Networks: Tricks of the Trade. - Springer Berlin Heidelberg, 2012. - С. 581-598.
12. Daugman J. G. Complete discrete 2-D Gabor transforms by neural networks for image analysis and compression //Acoustics, Speech and Signal Processing, IEEE Transactions on. - 1988. - Т. 36. - №. 7. - С. 1169-1179.
13. Gao X. W. et al. Recognition of traffic signs based on their colour and shape features extracted using human vision models //Journal of Visual Communication and Image Representation. - 2006. - Т. 17. - №. 4. - С. 675-685.
14. Goodfellow I. J. et al. Pylearn2: a machine learning research library //arXiv preprint arXiv:1308.4214. - 2013.
15. Han J., Kamber M., Pei J. Data mining: Concepts and techniques. - Morgan kaufmann, 2006.
16. Harris C., Stephens M. A combined corner and edge detector //Alvey vision conference. - 1988. - Т. 15. - С. 50.
17. Houben S. et al. Detection of traffic signs in real-world images: The German Traffic Sign Detection Benchmark //Neural Networks (IJCNN), The 2013 International Joint Conference on. - IEEE, 2013. - С. 1-8.
18. Huang F. J., LeCun Y. Large-scale learning with svm and convolutional netw for generic object recognition //2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. - 2006.
19. Huttenlocher D. P., Ullman S. Object recognition using alignment //Proc. ICCV. - 1987. - Т. 87. - С. 102-111.
20. Jia, Yangqing. "Caffe: An open source convolutional architecture for fast feature embedding." h ttp://caffe. berkeleyvision. org (2013).
21. Krizhevsky A., Sutskever I., Hinton G. E. Imagenet classification with deep convolutional neural networks //Advances in neural information processing systems. - 2012. - С. 1097-1105.
22. Lafuente-Arroyo S. et al. Traffic sign classification invariant to rotations using support vector machines //Proceedings of Advabced Concepts for Intelligent Vision Systems, Brussels, Belgium. - 2004.
23. LeCun Y., Bengio Y. Convolutional networks for images, speech, and time series //The handbook of brain theory and neural networks. - 1995. - Т. 3361. - С. 310.
24. LeCun Y. et al. Learning algorithms for classification: A comparison on handwritten digit recognition //Neural networks: the statistical mechanics perspective. - 1995. - Т. 261. - С. 276.
25. Masci J. et al. Stacked convolutional auto-encoders for hierarchical feature extraction //Artificial Neural Networks and Machine Learning-ICANN 2011. - Springer Berlin Heidelberg, 2011. - С. 52-59.
26. Matan O. et al. Handwritten character recognition using neural network architectures //Proceedings of the 4th USPS Advanced technology Conference. - 1990. - С. 1003-1011.
27. McCulloch W. S., Pitts W. A logical calculus of the ideas immanent in nervous activity //The bulletin of mathematical biophysics. - 1943. - Т. 5. - №. 4. - С. 115-133.
28. Minsky M., Seymour P. Perceptrons. - 1969.
29. Mitchell T. Generative and discriminative classifiers: naive Bayes and logistic regression, 2005 //Manuscript available at http://www. cs. cm. edu/~ tom/NewChapters. html.
30. Moutarde F. et al. Robust on-vehicle real-time visual detection of American and European speed limit signs, with a modular Traffic Signs Recognition system //Intelligent Vehicles Symposium, 2007 IEEE. - IEEE, 2007. - С. 1122-1126.