Логотип Зефирнет

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

Дата:

Введение

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

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

Ленет -5

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

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

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

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

Содержание

Понимание LeNet

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

Понимание LeNet

Архитектура 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 использует для классификации единицы радиальной базисной функции с четким представлением символов для распознавания и исправления.
"

Пошаговый рабочий процесс

[Input: 28x28x1]
    |
[Conv2D: 6 filters, 5x5, tanh]
    |
[Average Pooling: 2x2, stride 2]
    |
[Conv2D: 16 filters, 5x5, tanh]
    |
[Average Pooling: 2x2, stride 2]
    |
[Flatten]
    |
[Dense: 120, tanh]
    |
[Dense: 84, tanh]
    |
[Dense: 10, softmax (output)]

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

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

Средний уровень пула 1:

  • Размер бассейна: 2 × 2
  • Шагов: 2

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

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

Средний уровень пула 2:

  • Размер бассейна: 2 × 2
  • Шагов: 2

Полностью связанные слои:

  • Плотный слой со 120 единицами и активацией Тан.
  • Толстый слой с 84 единицами и активацией Тан.
  • Выходной слой с 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 tf
from tensorflow import keras
from keras.datasets import mnist
from keras.layers import Dense, Flatten, Conv2D, AveragePooling2D
from keras.models import Sequential
from 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 ожидают, что изображения будут иметь определенную форму, часто представленную как (ширина, высота, каналы).

#perfoming reshape
X_train = X_train.reshape(X_train.shape[0],28,28,1)
X_test = X_test.reshape(X_test.shape[0],28,28,1)
# Check the shape of data 
X_train.shape

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

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

# Normalization ---> convert 0 to 1
X_train = X_train/255
X_test = X_test/255

Одна горячая кодировка

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

# One hot encoding
y_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()
# first layer
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'))

#second layer
model.add(Conv2D(16, kernel_size=(5,5), padding="valid", activation="tanh"))
model.add(AveragePooling2D(pool_size=(2,2),strides=2, padding='valid'))

# flatten layer
model.add(Flatten())

# ANN
model.add(Dense(120, activation='tanh'))
model.add(Dense(84, activation='tanh'))
model.add(Dense(10, activation='softmax'))

model.summary()

Результат:

Ленет

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

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

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

Модельное обучение: соответствовать Функция обучает модель, используя предоставленные данные обучения, и проверяет ее, используя тестовые данные.

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

вывод:

Выход | Ленет

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

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

score = model.evaluate(X_test,y_test)

print('Test loss', score[0])
print('Test Accuracy', score[1])
оценка модели | Ленет

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

# Create a bar chart to visualize the comparison
import matplotlib.pyplot as plt
predicted_labels = np.argmax(predictions, axis=1)

# Compare predicted labels with true labels
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=['green' if c else 'red' for c in correct_predictions])
plt.title('Comparison of Predicted vs. True Labels')
plt.xlabel('Sample Index')
plt.ylabel('Correct Prediction (Green: Correct, Red: Incorrect)')
plt.show()

Вывод:

Выход | Ленет

Влияние и значение LeNet

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

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

Приложение LeNet

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

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

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

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

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

Заключение

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

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

Основные выводы

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

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

Вопрос 1: Что такое LeNet?

Ответ: LeNet — это сверточная нейронная сеть (CNN), разработанная Яном Лекуном и его командой в 1990-х годах. Он был разработан для распознавания рукописных символов и анализа изображений.

Вопрос 2: Каковы возможности применения LeNet в современном мире?

Ответ: Приложения LeNet — это оптическое распознавание символов, распознавание цифр и букв, а также задачи классификации изображений в системах здравоохранения и безопасности.

Вопрос 3: Почему LeNet важен в истории нейронных сетей?

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

Вопрос 4. Как LeNet повлиял на разработку моделей искусственного интеллекта?

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

Вопрос 5: Какой урок мы можем извлечь из архитектуры LeNet?

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

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

Spot_img

Последняя разведка

Spot_img