Недостатками данной установки являются: кронштейн, который нельзя изменять по высоте, когда растение вырастает, то облучение с лампы перестает попадать на все листья растения; лампа неправильно расположена над растением, что сказывается на интенсивности облучения.
Список литературы
1. Гидропоника. [Электронный ресурс]. Режим доступа: https://m.wikipedia.org/wiki/%D0%93% D0%B8%D0%B4%D1%80%D0%BE%D0%BF%D0%BE%D0%BD%D0%B8%D0%BA%D0% B0/ (дата обращения: 03.12.2017).
2. Как приготовить питательный раствор для гидропоники? [Электронный ресурс]. Режим доступа: http://floragrow.ru/gidroponika/pitatelnyj-rastvor.html/ (дата обращения: 04.12.2017).
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И РАЗРАБОТКА БАЗЫ ДАННЫХ ДЛЯ РЕАЛИЗАЦИИ ДЕФЕКТОСКОПИИ ИНТЕГРАЛЬНЫХ СТРУКТУР Вирясова А.Ю.1, Ишин И.А.2
'Вирясова Анастасия Юрьевна — магистрант, кафедра проектирования и технологии производства электронной аппаратуры, факультет информатики и систем управления, Московский государственный технический университет им. Н.Э. Баумана; 2Ишин Иван Александрович — магистрант, кафедра инструментального и прикладного программного обеспечения, факультет информационных технологий, Московский технологический университет, г. Москва
Аннотация: в данной статье рассматривается предметная область и база данных для реализации дефектоскопии интегральных структур. Для этого в первой части выполняется выбор метода реализации классификации изображений, рассмотрены три основных метода: к-ближайших соседей, нейронные сети прямого распространения и сверточные нейронные сети. Показаны преимущества и недостатки каждого из методов. Во второй части статьи описываются выбор и функциональные возможности платформы для работы с выбранным алгоритмом. В третьей же части описаны основные принципы построения базы данных для работы с классификацией изображений.
Ключевые слова: сверточные нейронные сети, глубокое обучение, дефекты микросхем, алгоритм, многослойный, рекуррентные нейронные сети, са^~е.
Введение
Проблема анализа дефектов интегральных структур приобретает все большую актуальность с уменьшением проектных норм и формированием пространственных интегральных структур. Используя классические визуальные методы при внешнем осмотре определить дефект интегральной структуры (ИС) практически невозможно.
Необходимо не только определить наличие дефекта, но надо его правильно классифицировать, сформировать рекомендации по его устранению и дальнейшему недопущению. На данный момент классификацию обычно производит оператор, что требует дополнительных затрат, а если учесть ошибки, связанные с человеческим фактором, то необходимость автоматизации данной задачи очевидна.
Для автоматизации классификации дефектов интегральных микросхем используется компьютерное зрение. Главная задача в компьютерном зрении и обработке изображений это определение содержат ли данные некоторую особенность, характерный объект или активность. Эта задача может быть легко решена человеком, но еще не решена удовлетворительно в компьютерном зрении при случайных объектах и в случайных ситуациях.
Необработанное изображение в виде 3-Э массива изменяет значений в зависимости от таких параметров, как: изменения точки зрения, изменение масштаба, окклюзия, изменение освещения, внутриклассовое изменение.
Изменение точки зрения. Один экземпляр объекта может быть ориентирован по-разному по отношению к камере.
Изменение масштаба. Одно изображение часто можно наблюдать в различных
Окклюзия. Иногда лишь небольшая часть объекта (всего лишь несколько пикселей) может быть видна.
Изменение освещенности. Эффекты освещения сильно влияют на восприятие компьютером изображения.
Внутриклассовое изменение. Есть много различных типов одних и тех же объектов, каждый со своим собственным внешним видом.
Хорошая модель для классификации должна быть инвариантна к поперечному произведению всех этих вариаций, при одновременном сохранении чувствительности к изменениям информационной составляющей изображения. То есть независимо (в некоторых пределах) от искаженности изображения, его зашумленности и другого воздействия, алгоритм должен иметь возможность классифицировать изображение по его информативной части. [2]
1. Выбор метода реализации классификации изображений.
Для решения данной задачи стоит рассмотреть 3 основных алгоритма классификации: К-ближайших соседей, нейронная сеть прямого распространения и сверточная нейронная сеть.
Метод К-ближайших соседей - это один из самых простых алгоритмов классификации, также иногда используемый в задачах регрессии. Сутью этого алгоритма является сравнение пикселя изображения на пиксель и сложение всех различий. Недостатком метода К-ближайших соседей является необходимость сохранения огромной базы эталонов и сравнения входного изображения с каждым из базы данных, и также высокая восприимчивость этого метода к поворотам, положению объектов на поле классификатора и масштабированию.
В нейронной сети прямого распространения каждый нейрон связан с каждым, сигнал идет только в направлении от входного слоя к выходному, нет никаких рекурсий. При классификации входные данные в виде двумерной матрицы изображения выражаются в виде одномерного вектора. То есть для изображения рукописной цифры размером 28х28 будет 784 входа. Дальше происходит выбор архитектуры. До сих пор не существует методов, позволяющих однозначно определить структуру и состав нейросети исходя из описания задачи. Кроме того, существует множество различных методик редукции сети (например, OBD [1]), а также разные эвристики и эмпирические правила. Одно из таких правил гласит, что количество нейронов в скрытом слое должно быть хотя бы на порядок больше количества входов. Если принять во внимание что само по себе преобразование из изображения в индикатор класса довольно сложное и существенно нелинейное, одним слоем тут не обойтись. Исходя из всего вышесказанного понятно, что количество нейронов в скрытых слоях будет порядка 15000 (10 000 во 2-м слое и 5000 в третьем). При этом для конфигурации с двумя скрытыми слоями количество настраиваемых и обучаемых связей будет 10 млн. между входами и первым скрытым слоем + 50 млн. между первым и вторым + 50 тыс. между вторым и выходным, если считать, что имеется 10 выходов, каждый из которых обозначает цифру от 0 до 9. Итого грубо 60 000 000 связей. И при обучении для каждой из них нужно будет вычислять градиент ошибки.
Поэтому к недостаткам нейронных сетей прямого распространения можно отнести большое количество обучаемых параметров и низкая скорость обучения, отсутствие возможности распараллеливания вычислений и реализации алгоритмов обучения сети на графических процессорах (GPU) и восприимчивость к сдвигу позиции объекта во входных данных [2].
Сверточные нейронные сети имеют схожесть обычными нейронными сетями. Они также состоят из нейронов, которые имеют веса. Каждый нейрон получает несколько входных параметров и далее выполняет их скалярное произведение. Вся сеть по-прежнему выражает единственную дифференцируемую функцию оценки: из исходных пикселей изображения на одном конце к классу оценки на другом.
Архитектура сверточных нейронных сетей делает явное допущение, что на вход подаются изображения, что позволяет кодировать определенные свойства в архитектуру. Это делает передовую функцию более эффективной и значительно уменьшает количество параметров в сети.
Следует отметить, что обычные нейронные сети не очень хорошо работают с масштабированием изображений. Если изображения имеют размер 32x32x3, то один нейрон в первом скрытом слое обычной нейронной сети будет иметь уже 32x32x3 = 3072 весов. Такое количество весов является приемлемым, но при более больших изображениях ситуация складывается гораздо хуже. Если взять изображение значительно большего размера, например, 200x200x3, это приведет к тому, что нейроны будут иметь 200x200x3 = 120000 весов. Видно, что такое количество нейронов достаточно тяжело контролировать. Кроме этого следует отметить и
27
высокую тенденцию нейронных сетей с большим количеством параметров к переобучению сети (состояние при котором классификатор может с высокой точностью предсказывать только образцы из обучающей выборки). В сверточном слое нейроны, которые используют одни и те же веса, объединяются в карты признаков (feature maps), а каждый нейрон карты признаков связан с частью нейронов предыдущего слоя. При вычислении сети получается, что каждый нейрон выполняет свертку некоторой области предыдущего слоя (определяемой множеством нейронов, связанных с данным нейроном). В частности, в отличие от обычной нейронной сети, слои в сверточных нейронных сетях имеют нейроны, «расположенные» в 3-х измерениях: ширина, высота, глубина. Нейроны в слое будут подключаться только к небольшой области слоя, а не ко всем нейронам в полносвязанной форме [3].
С учетом вышеуказанных факторов, в качестве основного подхода к построению системы компьютерного зрения в приложении задачи классификации дефектов микросхем были выбраны свёрточные нейронные сети, т.к. они обеспечивают частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям.
2. Выбор и описание платформы для работы со сверточными нейросетями.
Для работы с глубокими нейросетями существует много разных библиотек и фреймворков. При выборе платформы использовались следующие критерии:
• Количество вспомогательной литературы;
• Легкость освоения;
• Легкость разворачивания;
• Активный спрос;
• По ним отлично подошел Caffe;
• Хорошая литература есть на официальном сайте.
Для начала работы с Caffe даже не требуется язык программирования. Конфигурируется Caffe с помощью конфигурационных файлов, а запускается из командной строки.
Для разворачивания есть chef-кукбук и docker-образы.
На github-е ведется активная разработка, где можно задать любой вопрос по использованию фреймворка.
К тому же Caffe очень быстрый, т.к. использует GPU (хотя можно обойтись и CPU).
Caffe - популярная платформа для разработки нейронных сетей глубокого обучения. Её создали в Berkley Vision and Learning Center (BVLC), она пришлась по душе сообществу независимых разработчиков, которые вносят посильный вклад в её развитие. Платформа живёт и развивается, доказательство тому - статистика на странице проекта в GitHub. Caffe называют «быстрой открытой платформой для глубокого обучения» [4].
Ключевые моменты конфигурации каждого слоя.
Конфигурация входного слоя. Первые 2 слоя (для обучающей и тестовой фазы) имеют type: IMAGE_DATA, т.е. сеть на вход принимает изображения. Изображения перечисляются в текстовом файле, где 1 колонка — путь к изображению, 2 колонка — класс. Путь к текстовому файлу указывается в атрибуте image_data_param.
Также входные слои могут включать атрибут transform_param. В нем указываются трансформации, которым надо подвергнуть входные данные.
В Caffe используется batch gradient descent. Входной слой содержит параметр batch_size. За одну итерацию на вход нейросети поступает batch_size элементов выборки.
Конфигурация слоев свертки и подвыборки. Третьим является слой свертки с type: CONVOLUTION. Далее идет указание функции активации c type: RELU. Четвертым слоем является слой подвыборки с type: POOL. Далее 2 раза идет повторение conv, pool слоев, но с другими параметрами.
Конфигурация полносвязных и выходных слоев. Полносвязный слой имеет type: INNER_PRODUCT. Выходной слой соединяется со слоем функцией потерь (type: SOFTMAX_LOSS) и слоем точности (type: ACCURACY). Слой точности срабатывает только в тестовой фазе и показывает процент верно классифицированных изображений в валидационной выборке.
Важным является указание атрибута weight_filler. Если он будет большим, то функция потерь (loss) может на начальных итерациях возвращать NaN. В таком случае надо уменьшить параметр std у атрибута weight_filler.
Конфигурация параметров обучения. Для получения хорошо обученной нейронной сети нужно задать параметры обучения. В Caffe параметры обучения устанавливаются через конфигурационный protobuf файл. Вот некоторые из параметров protobuf файла:
net — путь к конфигурации архитектуры НС;
test_interval — количество итераций, между которыми проводится тестирование НС (phase: test); snapshot — количество итераций, между которыми сохраняется состояние обучения НС; Плюсом Caffe является возможность приостанавливать и возобновлять обучение [4]. 3. Разработка и подготовка базы данных.
Для корректной работы сверточной нейронной сети необходимо чтобы обучающая выборка была достаточной для обучения сети (ошибка_классификации дефекта их двух вариантов (top-2) по предоставленному изображению не более 2%), но недостаточной для переобучения (overfitting).
Переобучение, или чрезмерно близкая подгонка - излишне точное соответствие нейронной сети конкретному набору обучающих примеров, при котором сеть теряет способность к обобщению.
Переобучение возникает в случае слишком долгого обучения, недостаточного числа обучающих примеров или переусложненной структуры нейронной сети.
Переобучение связано с тем, что выбор обучающего (тренировочного) множества является случайным. С первых шагов обучения происходит уменьшение ошибки. На последующих шагах с целью уменьшения ошибки (целевой функции) параметры подстраиваются под особенности обучающего множества. Однако при этом происходит «подстройка» не под общие закономерности ряда, а под особенности его части - обучающего подмножества. При этом точность прогноза уменьшается.
Один из вариантов борьбы с переобучением сети - деление обучающей выборки на два множества (обучающее и тестовое).
На обучающем множестве происходит обучение нейронной сети. На тестовом множестве осуществляется проверка построенной модели. Эти множества не должны пересекаться.
Помимо подготовки базы данных достаточного размера, необходимо так же каждое изображение обработать. То есть для корректной работы нейронной сети необходимо все изображения привести к единому размеру, например 227х227 [5].
После выполнения этих условий можно приступать к обучению сети. Заключение
Из приведенного выше анализа следует, что для решения задачи классификации дефектов интегральных микросхем необоходимо использовать сверточные нейронные сети т.к. они обеспечивают частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям.
Реализовывать данный метод классификации следует использовать платформу caffe, которая является быстрой открытой платформой для глубокого обучения.
После реализации на платформе caffe сверточных нейронных сетей, данную сеть необходимо обучить. Обучение должно происходить на изображениях, фиксированного размера, например 227х227. Количество входных параметров (изображений) должно быть достаточно для обучения (ошибка классификации дефекта их двух вариантов (top-2) по предоставленному изображению не более 2%), но не достаточной для переобучения. Для избежания переобучения стоит поделить обучающую выборку на два множества (обучающее и тестовое).
Список литературы
1. LeCun Yann, Denker J.S., Solla S., Howard R.E. and Jackel L.D.: Optimal Brain Damage, in Touretzky, David (Eds), Advances in Neural Information Processing Systems 2 (NIPS*89). Morgan Kaufman. Denver. CO, 1990.
2. Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика, 1992. 184 с. Прохоров В.Г. Использование сверточных сетей для распознавания рукописных символов, Институт программных систем НАН Украины, 2004.
3. Классификация изображений без использования нейронных сетей. [Электронный ресурс]. Режим доступа: http://cs231n.github.io/classification/ (дата обращения: 25.11.2017).
4. CS231n Convolutional Neural Networks for Visual Recognition: Image Classification. [Электронный ресурс]. Режим доступа:http://cs231n.github.io/classification/ (дата обращения: 23.11.2017).
5. Рысьмятова А.А. Использование сверточных нейронных сетей для задачи классификации текстов: Выпускная квалификационная работа. Москва, 2016.