[파이썬] Keras 합성곱 신경망(CNN) 구현

이번 포스트에서는 Keras를 사용하여 합성곱 신경망(CNN)을 구현하는 방법에 대해 알아보겠습니다. CNN은 이미지 처리와 컴퓨터 비전 분야에서 주로 사용되는 딥러닝 알고리즘입니다. Keras는 간편한 사용법과 다양한 기능을 제공하여 CNN 모델을 쉽게 구현할 수 있습니다.

1. 필요한 라이브러리 설치하기

먼저, CNN 모델을 구현하기 위해 필요한 라이브러리를 설치하겠습니다. Keras를 사용하기 위해서는 TensorFlow 또는 Theano가 설치되어 있어야 합니다.

pip install tensorflow
pip install keras

2. 데이터 준비하기

CNN 모델을 학습시키기 위해서는 이미지 데이터가 필요합니다. 예제로 CIFAR-10 데이터셋을 사용하겠습니다. CIFAR-10은 10개의 클래스로 구성된 총 6만 개의 컬러 이미지 데이터셋입니다.

from tensorflow.keras.datasets import cifar10

# CIFAR-10 데이터셋 로드하기
(X_train, y_train), (X_test, y_test) = cifar10.load_data()

# 데이터 전처리하기
X_train = X_train / 255.0
X_test = X_test / 255.0

3. CNN 모델 구현하기

이제 CNN 모델을 구현해보겠습니다. Keras의 Sequential 모델을 사용하여 모델을 구성할 수 있습니다. 간단한 CNN 모델을 구현해보겠습니다.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

# CNN 모델 생성하기
model = Sequential()

# 첫 번째 합성곱 층
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))

# 최대 풀링 층
model.add(MaxPooling2D(pool_size=(2, 2)))

# 두 번째 합성곱 층
model.add(Conv2D(64, (3, 3), activation='relu'))

# 최대 풀링 층
model.add(MaxPooling2D(pool_size=(2, 2)))

# 평탄화 층
model.add(Flatten())

# 완전 연결 층
model.add(Dense(512, activation='relu'))

# 출력 층
model.add(Dense(10, activation='softmax'))

4. 모델 컴파일 및 학습하기

CNN 모델을 컴파일하고 학습시키겠습니다. 모델을 컴파일할 때는 손실 함수, 옵티마이저, 평가 지표를 지정해야 합니다.

# 모델 컴파일하기
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 모델 학습하기
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test))

5. 모델 평가하기

학습이 완료된 모델을 평가해보겠습니다. 테스트 데이터를 사용하여 모델의 성능을 평가할 수 있습니다.

# 모델 평가하기
test_loss, test_acc = model.evaluate(X_test, y_test)
print('Test Loss: {}, Test Accuracy: {}'.format(test_loss, test_acc))

이제 Keras를 사용하여 합성곱 신경망(CNN)을 구현하는 방법에 대해 알아보았습니다. Keras는 강력한 딥러닝 라이브러리로서 다양한 모델을 간편하게 구현할 수 있습니다. 이를 통해 이미지 처리와 컴퓨터 비전 분야에서 성능 뛰어난 알고리즘을 구현할 수 있습니다.