[python] CNN을 사용한 이미지 데이터 처리
이미지 데이터 처리를 위한 딥러닝 기술 중 하나로 합성곱 신경망(CNN, Convolutional Neural Network)이 널리 사용됩니다. CNN은 이미지의 지역적인 정보를 학습하여 분류, 객체 검출, 분할 등의 작업에 활용됩니다. 이 포스트에서는 Python과 TensorFlow를 사용하여 간단한 CNN을 구현하고 이미지 데이터를 처리하는 방법을 살펴보겠습니다.
1. 이미지 데이터 불러오기
가장 먼저 이미지 데이터를 불러오는 과정부터 시작하겠습니다. tensorflow
와 matplotlib
패키지를 import하고, 예시로 사용할 이미지 데이터를 불러옵니다.
import tensorflow as tf
import matplotlib.pyplot as plt
image_path = "path_to_your_image.jpg"
image = plt.imread(image_path)
2. 이미지 전처리
불러온 이미지 데이터를 CNN 모델에 입력으로 넣기 전에 전처리 과정이 필요합니다. 이미지의 크기를 조정하고 픽셀 값을 정규화하여 모델의 입력에 맞게 변환합니다.
resized_image = tf.image.resize(image, [224, 224])
normalized_image = resized_image / 255.0
3. CNN 모델 구성
다음으로 CNN 모델을 구성하는 단계입니다. tensorflow.keras
를 사용하여 간단한 CNN 모델을 구현해보겠습니다.
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])
model.summary()
4. 모델 학습 및 예측
이제 구성한 CNN 모델을 학습시키고 예측을 수행해보겠습니다.
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 데이터셋을 이용하여 모델 학습
model.fit(train_images, train_labels, epochs=10)
# 새로운 이미지에 대한 예측
predictions = model.predict(normalized_image)
이상으로 CNN을 사용한 이미지 데이터 처리에 대한 간단한 예제를 살펴보았습니다. 이미지 데이터 처리에 대한 심화적인 내용은 더 많은 공부와 경험이 필요하지만, 이를 통해 이미지 처리에 대한 기본 개념을 이해할 수 있습니다.
참고: TensorFlow 공식 문서 (https://www.tensorflow.org/tutorials/images/cnn)