РАСПОЗНАВАНИЕ ИЗОБРАЖЕНИЙ НА ОСНОВЕ ТЕХНОЛОГИИ TENSORFLOW - Студенческий научный форум

IX Международная студенческая научная конференция Студенческий научный форум - 2017

РАСПОЗНАВАНИЕ ИЗОБРАЖЕНИЙ НА ОСНОВЕ ТЕХНОЛОГИИ TENSORFLOW

Графов В.И. 1, Воронов В.И. 1
1Московский технический университет связи и информатики
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
В статье описана реализация программы для распознавания автомобилей на основе классификации с помощью нейронных сетей с целью исследования библиотек TensorFlow в рамках курсового проекта по дисциплине «Machine Learning. Обучающиеся технические системы», научный руководитель – к.т.н., доцент Воронов В.И.. Для реализации данного метода были использованы технологии TensorFlow и TFLearn.

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

Распознавание изображений нашло активное применение в робототехнике, медицине, видеонаблюдении, спутниковом мониторинге земной поверхности и многих других отраслях. Автоматическое распознавание изображений компьютером приносит множество новых возможностей в развитие науки и техники, например, появились системы по поиску лиц и других объектов на фотографиях и видеоданных, системы автоматического управления транспортом. Для решения задач распознавания изображений используются методы машинного обучения, наиболее распространенный из них - нейронные сети [1].

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

Основные понятия

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

Рис 1. Структура искусственной нейронной сети

Основной функцией активации принято считать логистическую или “сигмоидную” функцию [2]:

,

где Ɵ – матрица параметров («весов»), X – матрица входных признаков.

Технология TensorFlow

TensorFlow [3] – это библиотека для машинного обучения и глубокого исследования нейронных сетей от компании Google [4] в рамках научно-исследовательской организации Machine Intelligence [5] - это некоммерческая организация, основной целью которой является создание безопасного искусственного интеллекта, а также изучение потенциальных опасностей и возможностей, которые могут появиться при создании искусственного интеллекта.

Эта гибкая и масштабируемая система может быть использована и на смартфоне, и на мощных компьютерах. Так, например, данная библиотека используется во многих приложениях: Google Photos [6], Google Translate [7], автоответчик Inbox [8] и других приложениях.

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

Вычисления представляются в виде направленного графа, пути, по которым эти данные перемещаются, - это ребра графа. Данные представляются в виде тензоров - многомерных массивов данных с переменным размером. Тензоры переходят от узла к узлу по ребрам графа.

Для знакомства с процессом работы нейронных сетей TensorFlow представила учебную нейронную сеть, которая может быть использована в браузере [9].

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

Рис 2. Интерфейс учебной нейронной сети от TensorFlow

TFlearn

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

Распознавание образов – это одна из основных возможностей TensorFlow и TFlearn, которая активно используется в приложении GooglePhotos. Загруженные фото в приложении могут сортироваться по различным признакам: по лицам и объектам, месту съёмки. В поиске можно ввести название и приложение выдаст фотографии, где изображен запрашиваемый объект. На рисунке 3 представлен интерфейс программы GooglePhotos с поиском по фотографиям.

Рис. 3. Интерфейс GooglePhotos

Распознавание автомобиля на изображениях

При создании классификатора для распознавания автомобиля на изображениях воспользуемся библиотекой TensorFlow и TFLearn. Данные библиотеки на данный момент недостаточно оптимизированы под операционные системы Windows, поэтому следует использовать Unix-подобные системы.

Выбрана новейшая операционная система Ubuntu Desktop 16.04.1 [11]. Операционная система была установлена на виртуальную машину Oracle VirtualBox 5.1.12 [12], так как основной операционной системой является Windows8 [13] от компании Microsoft. Виртуальная машина позволяет установить внутри основной операционной системы вторичную путем выделения памяти для нее.

Набор для обучения использовался готовый, он находится в открытом доступе [14]. Это является наиболее оптимальным вариантом, так как для создания хорошего обучающего набора требуется очень большое количество изображений.

Набор данных содержит 1000 изображений, на которых есть автомобили, примеры которых представлены на рисунке 4, и 9000 изображений без автомобилей, представленные на рисунке 5.

Рис 4. Примеры изображений автомобилей

Рис 5. Примеры изображений без автомобилей

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

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

network = input_data(shape=[None, 32, 32, 3],

data_preprocessing=img_prep,

data_augmentation=img_aug)

Рис. 6. Архитектура нейронной сети

Фрагмент кода для свертки, которая необходима для суммирования компонент тензора, и пулинга, который необходим для уменьшения размера изображения вследствие замены функции активации рядом расположенных нейронов на их максимум, представлен на рисунке 7.

network = conv_2d(network, 32, 3, activation='relu')

network = max_pool_2d(network, 2)

network = conv_2d(network, 64, 3, activation='relu')

network = conv_2d(network, 64, 3, activation='relu')

network = max_pool_2d(network, 2)

Рис.7. Код для свертки и пулинга

Параметры для обучения сети представлены на рисунке 8.

network = regression(network, optimizer='adam',

loss='categorical_crossentropy',learning_rate=0.001)

Рис.8. Параметры для обучения сети

Код для запуска процесса обучения представлен на рисунке 9.

model.fit(X, Y, n_epoch=100, shuffle=True, validation_set=(X_test, Y_test),

show_metric=True, batch_size=96,

snapshot_epoch=True,

run_id='car-classifier')

Рис. 9. Запуск процесса обучения

Для проверки распознавания на вход подается изображение. В терминале ОС Ubuntu следует прописать путь изображения. На выход программа будет выдавать следующий текст в зависимости от наличия на фотографии автомобиля: “That's a car!” или “That's not a car!”. Код для подачи изображения на вход нейронной сети представлен на рисунке 10.

python2 infer.py test_images/car_bmw_black.jpg

Рис. 10. Код для подачи изображения на вход нейронной сети

После обучения была достигнута точность предсказания в распознавании автомобилей на изображениях в 89.3%.

Таким образом, при подаче на вход изображения, представленного на рисунке 11, на экран будет выводится следующее сообщение: “That's a car!”.

Рис. 11. Пример входного изображения

Выводы

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

Список источников и литературы

  1. Вежневец В. Введение в компьютерное зрение: Курс лекций / Вежневец В., Конушин А., Вежневец А.— М.: МГУ, 2006.

  2. Онлайн-курсы: https://www.coursera.org

  3. Технология TensorFlow: https://www.tensorflow.org/

  4. Компания Google https: //www.google.ru

  5. Научно-исследовательская организация Machine Intelligence: https://intelligence.org/

  6. Google Photos: https://photos.google.com/

  7. Google Translate: https://translate.google.ru/

  8. Автоответчик Inbox: https://www.inbox.lv

  9. Учебная нейронная сеть от TensorFlow: http://playground.tensorflow.org/

  10. Библиотека TFlearn: http://tflearn.org/

  11. ОС Ubuntu: http://ubuntu.ru/

  12. VM Oracle VirtualBox: https://www.virtualbox.org/

  13. Microsoft: https://www.microsoft.com

  14. Набор данных CIFAR-10 и CIFAR-100: https://www.cs.toronto.edu/~kriz/cifar.html

Просмотров работы: 2831