Освоение LeNet архитектурные идеи и практическая реализация

Освоение архитектурных идей и практическая реализация LeNet

Введение

LeNet-5, революционная сверточная нейронная сеть (CNN), разработанная Яном ЛеКуном и его командой в 1990-х годах, перевернула представление о компьютерном зрении и глубоком обучении. Эта революционная архитектура была специально создана для распознавания рукописных и машинопечатных символов. В отличие от традиционных методов, LeNet-5 представил новый подход, который устранял потребность в ручной инженерии функций, прямо обрабатывая изображения пикселей через сверточные слои, подвыборку и полносвязные слои. Его успех распространился далеко за пределы распознавания символов, служа основой для современных моделей глубокого обучения и оказывая влияние на последующие архитектуры в компьютерном зрении, распознавании объектов и классификации изображений.

Раннее применение Янн ЛеКуном алгоритмов обратного распространения ошибки к практическим задачам положило основу для появления LeNet-5, разработанной для чтения рукописных символов и превосходно выполняющей задачу идентификации почтовых индексов, предоставленных американской почтовой службой. Ее последующие версии и применения, такие как способность каждый день обрабатывать миллионы чеков, вызвали взрыв интереса среди исследователей, оформивших облик нейронных сетей и вдохновивших развитие глубокого обучения.

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

Цели обучения

  • Исследовать историческое значение и влияние LeNet-5 на развитие глубокого обучения и компьютерного зрения.
  • Сравнить LeNet-5 с современными архитектурами нейронных сетей, изучая его основное влияние на текущие модели глубокого обучения.
  • Понять архитектуру LeNet-5, включая его сверточные, подвыборочные и полносвязанные слои.
  • Анализировать практические применения и исследования, демонстрирующие эффективность LeNet-5 в задачах распознавания изображений.

Эта статья была опубликована в рамках Data Science Blogathon.

Понимание LeNet

LeNet, также известная как LeNet-5, является революционной архитектурой сверточной нейронной сети (CNN), разработанной Янном ЛеКуном и его командой в 1990-х годах. Она была специально разработана для задач распознавания рукописных и машинопечатных символов. Особое значение LeNet-5 заключается в ее успешной демонстрации иерархического обучения признакам и ее эффективности в распознавании символов. Ее влияние распространяется далеко за ее первоначальное назначение, влияя на развитие современных моделей глубокого обучения и служа основой для последующих достижений в области компьютерного зрения, распознавания изображений и различных приложений машинного обучения.

Архитектура LeNet

LeNet-5- это сверточная нейронная сеть (CNN) с определенной архитектурой, применяемой в задачах распознавания символов. Она состоит из нескольких слоев, исключая входной слой, содержащих обучаемые параметры. Он обрабатывает изображения размером 32×32 пикселя, значительно больше символов в его базе данных, фокусируясь на центрировании потенциально отличительных особенностей. Входные значения пикселей нормализуются для лучшей эффективности обучения.

Архитектура LeNet объединяет сверточные, подвыборочные и полносвязные слои с определенными схемами соединения. Она использует нормализацию входных пикселей и ряд слоев для извлечения особенностей из данных для эффективного обучения. Кроме того, она реализует уникальные стратегии для предотвращения насыщения активационных функций и использует определенные функции потерь для эффективного обучения.

Уникальные стратегии предотвращения насыщения

  • Входной слой: LeNet обрабатывает изображения размером 32×32 пикселя, которые являются более значительными, чем символы в базе данных, с целью захвата потенциально уникальных особенностей в центре изображения.
  • Свёрточные и субдискретизационные слои: Свёрточные слои в основном извлекают признаки из входных данных с использованием обучаемых фильтров или ядер. Каждый слой содержит несколько фильтров, которые скользят над входными данными (изображением) и производят поэлементное умножение для получения карт признаков. Начальный слой содержит 6 фильтров размером 5×5, активирующихся с помощью гиперболического тангенса (tanh), что приводит к картам признаков размером 28x28x6. Последующие слои используют 16 фильтров того же размера, что приводит к созданию карт признаков размером 10x10x16.
  • Субдискретизационные слои, также известные как слои пулинга, направлены на снижение размерности карт признаков, полученных из свёрточных слоев. Пулинг включает объединение или уменьшение размера карт признаков, обычно путем выбора максимального значения (MaxPooling) или среднего значения (AveragePooling) в определенных областях. При использовании фильтров размером 2×2 и изменяющейся длины шага, эти слои последовательно формируют карты признаков размеров 14x14x6 и 5x5x16.
  • Полносвязные слои: Архитектура включает полносвязные слои, обозначенные Fx, которые обрабатывают окончательную классификацию на основе извлеченных признаков. Полносвязный слой с 84 нейронами и финальный выходной слой с 10 нейронами, использующий гиперболический тангенс (tanh) в первом и функцию Softmax во втором случае. Функция Softmax назначает вероятности каждому классу, при этом наибольшая вероятность определяет предсказание.
  • Выходной слой: LeNet использует единицы радиальной базисной функции для классификации, с отдельными представлениями символов для их распознавания и исправления.

Пошаговая схема работы

[Вход: 28x28x1]    |[Свёртка: 6 фильтров, 5x5, tanh]    |[Усреднённый пулинг: 2x2, шаг 2]    |[Свёртка: 16 фильтров, 5x5, tanh]    |[Усреднённый пулинг: 2x2, шаг 2]    |[Развертка]    |[Полносвязный слой: 120, tanh]    |[Полносвязный слой: 84, tanh]    |[Полносвязный слой: 10, softmax (выход)]

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

  • Количество фильтров: 6
  • Размер ядра: 5×5
  • Функция активации: Tanh
  • Размер входа: 28x28x1

Усреднённый пулинг 1:

  • Размер пула: 2×2
  • Шаги: 2

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

  • Количество фильтров: 16
  • Размер ядра: 5×5
  • Функция активации: Tanh

Усреднённый пулинг 2:

  • Размер пула: 2×2
  • Шаги: 2

Полносвязные слои:

  • Полносвязный слой с 120 нейронами и функцией активации Tanh.
  • Полносвязный слой с 84 нейронами и функцией активации Tanh.
  • Выходной слой с 10 нейронами и функцией активации Softmax, используемый для многоклассовой классификации (набор данных MNIST).

Основные характеристики LeNet

  1. CNN Архитектура: LeNet-5 была первой свёрточной нейронной сетью, обладающей структурированной архитектурой со свёрточными и пулинговыми слоями.
  2. Распознавание образцов рукописных цифр: Изначально разработана для распознавания рукописных цифр, продемонстрировала высокую точность в идентификации и классификации рукописных символов.
  3. Свёрточные и пулинговые слои: Введение свёрточных слоев для извлечения признаков и пулинговых слоев для уменьшения размерности позволило сети последовательно изучать иерархические представления.
  4. Нелинейная активация: Использование функции активации гиперболического тангенса (tanh), обеспечивающей сети нелинейные возможности, необходимые для выявления сложных взаимосвязей в данных.
  5. Влияние на глубокое обучение: Успех LeNet-5 заложил основу для современных моделей глубокого обучения и значительно повлиял на развитие нейронных сетей для распознавания и классификации изображений.

Практическое применение LeNet:

Импорт библиотеки

Начните с кода для реализации LeNet-5 в TensorFlow с использованием API Keras. Это хорошее начало для работы с набором данных MNIST.

import tensorflow as tffrom tensorflow import kerasfrom keras.datasets import mnistfrom keras.layers import Dense, Flatten, Conv2D, AveragePooling2Dfrom keras.models import Sequentialfrom tensorflow.keras.utils import plot_model

Загрузка набора данных

Загрузите набор данных MNIST для обучения и тестирования изображений. Эта функция загружает набор данных, который состоит из изображений рукописных цифр и соответствующих им меток. Данные разделены на тренировочные и тестовые наборы.

(X_train, y_train), (X_test,y_test) = mnist.load_data()

Вывод:

Изменение формы

Функция изменения формы в данном контексте изменяет форму изображений, чтобы они были пригодны для обработки в CNN. Форма (28, 28, 1) означает, что изображения имеют размеры 28×28 пикселей и один канал (оттенки серого). Это преобразование необходимо, потому что большинство CNN ожидают, что изображения будут иметь определенную форму, часто представленную как (ширина, высота, каналы).

#выполнение изменения формыX_train = X_train.reshape(X_train.shape[0],28,28,1)X_test = X_test.reshape(X_test.shape[0],28,28,1)# Проверка формы данных X_train.shape

Нормализация

Фрагмент кода, который вы предоставили, нормализует значения пикселей изображений в наборах данных для обучения и тестирования. Деление каждого значения пикселя на 255 гарантирует, что значения пикселей будут в диапазоне от 0 до 1.

# Нормализация ---> преобразование от 0 до 1X_train = X_train/255X_test = X_test/255

Eнкодинг в One Hot

Классы набора данных MNIST преобразуются в категориальные данные с 10 классами. Каждая метка преобразуется в вектор, в котором каждый элемент представляет класс, с 1 в индексе, соответствующем классу, и 0 в других местах.

# One hot encodingy_train = keras.utils.to_categorical(y_train,10)y_test = keras.utils.to_categorical(y_test,10)

Построение модели

Этот фрагмент кода демонстрирует построение модели LeNet-5 с использованием Keras Sequential API в TensorFlow. Он определяет слои и их конфигурации, а также компилирует модель с оптимизатором, функцией потерь и метриками для оценки.

model = Sequential()# первый слойmodel.add(Conv2D(6, kernel_size=(5,5), padding="valid", activation="tanh", input_shape =(28,28,1)))model.add(AveragePooling2D(pool_size=(2,2),strides=2, padding='valid'))#второй слойmodel.add(Conv2D(16,kernel_size=(5,5), padding="valid", activation="tanh"))model.add(AveragePooling2D(pool_size=(2,2),strides=2, padding='valid'))# слой сглаживанияmodel.add(Flatten())# ANNmodel.add(Dense(120, activation='tanh'))model.add(Dense(84, activation='tanh'))model.add(Dense(10, activation='softmax'))model.summary()

Вывод:

Компиляция модели

Метод “compile” готовит модель к обучению, определяя метод оптимизации, функцию потерь и метрики для отслеживания.

model.compile(loss= keras.metrics.categorical_crossentropy, optimizer =keras.optimizers.Adam(),\metrics= ['accuracy'])

Обучение модели: функция «fit» обучает модель с использованием предоставленных тренировочных данных и проверяет ее с использованием тестовых данных.

model.fit(X_train,y_train, batch_size=128,epochs=10 , verbose=1, validation_data=(X_test,y_test))

вывод:

Оценка модели

Функция “evaluate()” модели используется для оценки производительности модели на тестовом наборе данных. Результат предоставляет значение потерь и точность тестирования.

score = model.evaluate(X_test,y_test)print('Потеря теста', score[0])print('Точность теста', score[1])

Визуализация:

# Создание столбчатой диаграммы для визуализации сравненияimport matplotlib.pyplot as pltpredicted_labels = np.argmax(predictions, axis=1)# Сравнение предсказанных меток с реальными меткамиcorrect_predictions = np.equal(predicted_labels, np.argmax(y_test, axis=1))plt.figure(figsize=(12, 6))plt.bar(range(len(y_test)), correct_predictions, \color=['зеленый' if c else 'красный' for c in correct_predictions])plt.title('Сравнение предсказанных и реальных меток')plt.xlabel('Индекс выборки')plt.ylabel('Правильное предсказание (Зеленый: Верное, Красный: Неверное)')plt.show()

Вывод:

Воздействие и значение LeNet

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

  • Революция в распознавании рукописных символов: Успех LeNet-5 в распознавании рукописных цифр и символов привел к изменениям в различных практических приложениях, особенно в распознавании почтовых индексов и чеков. Его способность точно распознавать символы способствовала широкому принятию нейронных сетей в таких приложениях.
  • Влияние на будущие архитектуры: Принципы архитектурного дизайна LeNet заложили основу для множества последующих моделей CNN. Его инновационное использование свертки, подвыборки и полносвязных слоев вдохновило разработку более сложных и совершенных архитектур нейронных сетей для различных задач, связанных с изображениями.
  • Популяризация глубокого обучения: Успех LeNet-5 продемонстрировал потенциал глубоких нейронных сетей в распознавании изображений и вдохновил дальнейшие исследования и разработки в этой области. Его влияние на научное сообщество привело к сдвигу парадигмы в сторону использования глубоких нейронных сетей для различных задач, связанных с зрением, и заложило основу для последующих прогрессивных достижений в этой области.

Применение LeNet

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

  • Обработка документов: Возможности LeNet нашли применение в сканировании и анализе документов, разборе и обработке различных типов информации, извлечении данных из документов и автоматизации задач ввода данных в различных отраслях.
  • Распознавание рукописного текста: Успех LeNet в распознавании рукописных символов и цифр остается фундаментальным в системах оптического распознавания символов (OCR), используемых в обработке рукописного текста на банковских чеках, почтовых службах и формах. Он может быть применен для цифрового представления исторических документов и распознавания рукописной информации в различных форматах.
  • Биометрическая аутентификация: Возможности распознавания рукописи LeNet были применены для анализа подписей и отпечатков пальцев, позволяя применять биометрические методы аутентификации и повышая уровень безопасности систем.
  • Анализ видео в реальном времени: Основные концепции LeNet служат основой для анализа видео в реальном времени, такого как отслеживание объектов, системы наблюдения, распознавание лиц и автономные транспортные средства.
  • Классификация изображений: Принципы LeNet оказывают влияние на современные системы классификации изображений. Применение включает классификацию и категоризацию объектов на изображениях для множества областей, таких как идентификация объектов на фотографиях, контроль качества в производстве, анализ медицинских изображений и системы безопасности для идентификации объектов.

Ограничения и проблемы LeNet

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

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

Заключение

LeNet, как ранняя сверточная нейронная сеть, является важным этапом в развитии глубокого обучения. Ее создание Янном Лекуном и командой стало прорывом, особенно в распознавании рукописных символов и анализе изображений. LeNet сталкивается с проблемами адаптации к современным сложным задачам и различным наборам данных из-за своей архитектурной простоты и потенциального переобучения. Ее наследие остается важным, вдохновляя более продвинутые архитектуры и играя важную роль в развитии моделей глубокого обучения.

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

Ключевые моменты

  • LeNet представила понятия сверточных и подвыборочных слоев, заложив основы для современных архитектур глубокого обучения.
  • Хотя LeNet сделала значительный прогресс в свое время, ее ограничения в работе с разнообразными и сложными наборами данных стали очевидными.
  • Введение сверточных и подвыборочных слоев, революционизирующих глубокое обучение.

Часто задаваемые вопросы

Показанные в статье материалы не принадлежат Analytics Vidhya и используются на усмотрение автора.