제퍼넷 로고

LeNet 마스터하기: 아키텍처 통찰력 및 실제 구현

시간

개요

5년대 Yann LeCun과 그의 팀이 개발한 선구적인 CNN(컨볼루션 신경망)인 LeNet-1990는 컴퓨터 비전과 딥 러닝 분야의 판도를 바꾸었습니다. 이 획기적인 아키텍처는 손으로 쓴 문자와 기계로 인쇄한 문자 인식에 혁명을 일으키기 위해 명백히 제작되었습니다. 기존 방법과 달리 LeNet-5는 수동 기능 엔지니어링의 필요성을 없애고 컨벌루션 레이어, 서브샘플링 및 완전 연결 레이어를 통해 픽셀 이미지를 직접 처리하는 새로운 접근 방식을 도입했습니다. 그 성공은 문자 인식을 넘어 현대 딥 러닝 모델의 초석 역할을 하고 컴퓨터 비전, 객체 인식 및 이미지 분류의 후속 아키텍처에 영향을 미쳤습니다.

Yann LeCun이 실제 문제에 역전파 알고리즘을 초기에 적용한 것은 손으로 쓴 문자를 읽고 미국 우체국에서 제공하는 우편번호 식별에 탁월한 성능을 발휘하도록 설계된 LeNet-5의 토대를 마련했습니다. 매일 수백만 개의 수표를 읽을 수 있는 기능과 같은 후속 버전과 애플리케이션은 연구자들 사이에서 큰 관심을 불러일으켰고, 신경망의 지형을 형성하고 딥 러닝의 진화에 영감을 주었습니다.

르넷 -5

LeNet-5와 하루에 수백만 건의 수표를 읽을 수 있는 시스템과 같은 후속 애플리케이션의 성공은 신경망 연구자들 사이에서 광범위한 관심을 불러일으켰습니다. 오늘날 최고의 성능을 발휘하는 신경망 아키텍처는 LeNet-5 이상으로 발전했지만, 그 획기적인 설계와 성과는 수많은 후속 모델의 기반을 마련하여 딥 러닝을 크게 형성하고 영감을 주었습니다. LeNet-5는 혁신의 증거이자 기계 학습 및 이미지 인식의 진화에 대한 지속적인 상징으로 남아 있습니다.

학습 목표

  • 딥 러닝과 컴퓨터 비전의 진화에 대한 LeNet-5의 역사적 중요성과 영향을 살펴보세요.
  • LeNet-5를 최신 신경망 아키텍처와 비교하여 딥 러닝의 현재 모델에 대한 근본적인 영향을 조사합니다.
  • 컨벌루션, 서브샘플링 및 완전 연결 레이어를 포함하여 LeNet-5의 아키텍처를 이해합니다.
  • 이미지 인식 작업에서 LeNet-5의 효율성을 보여주는 실제 응용 프로그램과 사례 연구를 분석합니다.

이 기사는 데이터 과학 블로그.

차례

르넷 이해

LeNet-5라고도 알려진 LeNet은 Yann LeCun과 그의 팀이 1990년대에 개발한 선구적인 CNN(컨볼루션 신경망) 아키텍처입니다. 이는 필기 및 기계 인쇄 문자 인식 작업을 위해 명시적으로 설계되었습니다. LeNet-5의 중요성은 계층적 특징 학습과 문자 인식의 효율성을 성공적으로 시연했다는 데 있습니다. 그 영향력은 원래 목적을 넘어 확장되어 최신 딥 러닝 모델 개발에 영향을 미치고 컴퓨터 비전, 이미지 인식 및 다양한 기계 학습 애플리케이션의 후속 발전을 위한 기반 아키텍처 역할을 합니다.

르넷 이해

LeNet의 아키텍처

LeNet-5는 문자 인식 작업에 사용되는 특정 아키텍처를 갖춘 CNN(Convolutional Neural Network)입니다. 입력 레이어를 제외하고 훈련 가능한 매개변수를 포함하는 여러 레이어로 구성됩니다. 특히, 데이터베이스의 문자보다 더 중요한 32×32 픽셀 이미지를 처리하여 잠재적으로 구별되는 특징의 중심에 중점을 둡니다. 학습 효율을 높이기 위해 입력 픽셀 값을 정규화합니다.

LeNet의 아키텍처

LeNet의 아키텍처는 컨벌루션, 서브샘플링 및 완전 연결 레이어를 특정 연결 패턴과 결합합니다. 효율적인 학습을 위해 입력 픽셀과 일련의 레이어에 대해 정규화를 사용하여 데이터에서 고유한 특징을 추출합니다. 또한 활성화 함수의 포화를 방지하기 위한 고유한 전략을 구현하고 효율적인 훈련을 위해 특정 손실 함수를 사용합니다.

"
"

포화를 방지하는 독특한 전략

  • 입력 레이어: LeNet은 데이터베이스의 문자보다 더 중요한 32×32픽셀 이미지를 처리하여 이미지 중앙에 있는 잠재적인 특징을 포착하는 것을 목표로 합니다.
  • 컨벌루션 및 서브샘플링 레이어: 컨볼 루션 레이어 주로 학습 가능한 필터나 커널을 사용하여 입력 데이터에서 특징을 추출합니다. 각 레이어는 입력 데이터(이미지)를 슬라이드하고 요소별 곱셈을 수행하여 특징 맵을 생성하는 여러 필터로 구성됩니다. 초기 레이어에는 6×5 크기의 필터 5개가 포함되어 있으며 tanh 함수로 활성화되어 28x28x6 크기의 특징 맵이 생성됩니다. 후속 레이어에서는 동일한 크기의 16개 필터를 활용하여 10x10x16 크기의 특징 맵을 생성합니다.
  • 서브샘플링 레이어풀링 레이어라고도 알려진 는 컨벌루션 레이어에서 얻은 특징 맵의 차원을 줄이는 데 중점을 둡니다. 풀링에는 일반적으로 정의된 영역에서 최대값(MaxPooling) 또는 평균값(AveragePooling)을 취하여 기능 맵을 병합하거나 다운샘플링하는 작업이 포함됩니다. 2×2의 필터 크기와 보폭 변형을 사용하면 이러한 레이어의 기능 맵 크기는 연속적으로 14x14x6 및 5x5x16이 됩니다.
  • 완전히 연결된 레이어: 아키텍처에는 추출된 특징을 기반으로 최종 분류를 처리하는 Fx라는 레이블이 붙은 완전히 연결된 레이어가 포함되어 있습니다. 84개의 뉴런이 있는 완전 연결 레이어와 10개의 뉴런이 있는 최종 출력 레이어. 전자에는 tanh 활성화 함수를 사용하고 후자에는 Softmax를 사용합니다. Softmax 함수는 각 클래스에 확률을 할당하며 가장 높은 확률이 예측을 결정합니다.
  • 출력 레이어: LeNet은 분류를 위해 Radial Basis Function 단위를 사용하며 인식 및 수정을 위해 문자를 뚜렷하게 표현합니다.
"

단계별 작업흐름

[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
  • 활성화 기능: 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의 실제 구현:

라이브러리 가져오기

Keras API를 사용하여 TensorFlow에서 LeNet-5를 구현하는 코드부터 시작하세요. 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()

출력:

"

바꿀

이 맥락에서 reshape 기능은 이미지의 모양을 조정하여 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)

모델 구축

이 코드 조각은 TensorFlow에서 Keras Sequential API를 사용하여 LeNet-5 모델을 구성하는 방법을 보여줍니다. 레이어와 해당 구성을 정의하고 평가를 위한 최적화 프로그램, 손실 함수 및 측정항목을 사용하여 모델을 컴파일합니다.

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()

산출:

르넷

모델 컴파일

XNUMXD덴탈의 "엮다” 방법은 최적화 방법, 손실 함수 및 모니터링할 측정항목을 정의하여 훈련용 모델을 준비합니다.

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은 딥러닝의 중추적인 이정표입니다. Yann LeCun과 팀의 시작으로 특히 손글씨 문자 인식 및 이미지 분석 분야에서 획기적인 발전을 이루었습니다. LeNet은 아키텍처 단순성과 잠재적인 과적합으로 인해 현대의 ​​복잡한 작업과 다양한 데이터 세트에 적응하는 데 어려움을 겪고 있습니다. 그 유산은 여전히 ​​중요하며 더욱 발전된 아키텍처에 영감을 주고 딥 러닝 모델 개발에 중요한 역할을 합니다.

LeNet의 탄생은 딥러닝 역사에서 중요한 순간을 의미합니다. 이미지 인식 작업과 원리에서의 성공은 현대 컨볼루션 신경망의 진화를 위한 발판을 마련했습니다. 그 지속적인 유산은 계속해서 컴퓨터 비전과 인공 지능의 환경을 형성하고 있습니다.

주요 요점

  • 컨벌루션 및 서브샘플링 레이어 개념을 도입하여 현대 딥러닝 아키텍처의 기반을 마련했습니다.
  • LeNet은 그 당시 상당한 발전을 이루었지만 다양하고 복잡한 데이터 세트를 처리하는 데 한계가 분명해졌습니다.
  • 컨벌루션 및 서브샘플링 레이어를 도입하여 딥 러닝에 혁명을 일으켰습니다.

자주하는 질문

Q1: 르넷이란 무엇인가요?

A: LeNet은 Yann LeCun과 그의 팀이 1990년대에 설계한 CNN(Convolutional Neural Network)입니다. 필기 문자 인식 및 이미지 분석을 위해 개발되었습니다.

Q2: 오늘날 세계에서 LeNet의 응용은 무엇입니까?

A: LeNet의 애플리케이션은 광학 문자 인식, 숫자 및 문자 인식, 의료 및 보안 시스템의 이미지 분류 작업입니다.

Q3: 신경망의 역사에서 LeNet이 중요한 이유는 무엇입니까?

A: LeNet은 CNN의 초기 성공적인 응용 프로그램 중 하나로서 중추적인 역할을 했습니다. 이는 이미지 인식 작업을 위한 신경망 개발의 초석 역할을 했습니다.

Q4: LeNet은 AI 모델 개발에 어떤 영향을 미쳤나요?

A: LeNet의 성공은 신경망에 대한 관심의 물결, 컴퓨터 비전 및 딥 러닝의 발전으로 이어졌습니다. 디자인 원칙과 아키텍처는 많은 최신 AI 모델 개발에 영향을 미쳤습니다.

Q5: LeNet의 아키텍처에서 어떤 교훈을 얻을 수 있나요?

A: LeNet의 아키텍처는 컨볼루셔널 레이어를 통한 계층적 특징 추출 개념을 도입했습니다. 최신 딥 러닝 모델의 표준이 된 효과적인 패턴 인식을 지원합니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

spot_img

최신 인텔리전스

spot_img