728x90
코딩교육 : yolo 사용한 실습.
CNN은 Convolutional Neural Network의 약자로, 이미지와 같은 그래픽 데이터를 처리하는 데 특화된 인공 신경망의 한 종류입니다.
CNN은 주로 이미지 인식과 관련된 작업에서 사용됩니다. 일반적으로 이미지는 3차원 행렬 형태로 표현되며, CNN은 이러한 이미지 데이터를 입력으로 받아서 특징을 추출하고 분류하는 데 사용됩니다.
CNN은 Convolutional Layer, Pooling Layer, Fully Connected Layer 등으로 구성됩니다. Convolutional Layer는 이미지 데이터의 특징을 추출하는 역할을 합니다. 이 레이어에서는 이미지에 여러 개의 필터를 적용하여 입력 데이터에서 특징 맵(feature map)을 추출합니다. 각 필터는 이미지에서 특정한 패턴이나 특징을 인식하는 데 사용됩니다.
Pooling Layer는 Convolutional Layer에서 추출한 특징 맵의 크기를 줄이는 역할을 합니다. 일반적으로 Max Pooling이 가장 많이 사용됩니다. Max Pooling은 입력 데이터를 일정한 크기의 윈도우로 나눈 후, 각 윈도우에서 최댓값을 추출하여 새로운 특징 맵을 만듭니다.
Fully Connected Layer는 추출된 특징을 입력으로 받아서 분류하는 역할을 합니다. 이 레이어에서는 추출된 특징을 바탕으로 입력 데이터가 어떤 클래스에 속하는지 분류하는 작업을 수행합니다.
CNN은 이미지 인식을 비롯한 다양한 작업에서 우수한 성능을 보입니다. 이는 CNN이 이미지와 같은 그래픽 데이터를 처리하는 데 특화되어 있기 때문입니다. 또한, CNN은 데이터의 특징을 자동으로 추출할 수 있기 때문에, 사람이 수동으로 특징을 추출하는 전통적인 방법보다 더욱 효과적으로 작업을 수행할 수 있습니다.
CNN 예제를 보여드리겠습니다. 이 예제는 Python과 Keras를 사용하여 MNIST 데이터셋을 분류하는 예제입니다.
MNIST 데이터셋은 손글씨 숫자 이미지 데이터셋으로, 총 70,000개의 이미지가 있으며, 각 이미지는 28x28 크기의 흑백 이미지입니다.
아래의 실습을 colab에서 테스트하면 빠르게 학습할 수 있습니다
먼저, 필요한 라이브러리를 import합니다.
python
Copy code
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
다음으로, 데이터를 불러오고 전처리합니다.
# 데이터 불러오기
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 이미지 데이터 전처리
img_rows, img_cols = 28, 28
if K.image_data_format() == 'channels_first':
x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
input_shape = (1, img_rows, img_cols)
else:
x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols, 1)
# 이미지 데이터 정규화
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
# 클래스 라벨 One-Hot Encoding
num_classes = 10
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
이제 모델을 정의하고 학습시킵니다.
# 모델 정의
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
# 모델 컴파일
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
# 모델 학습
batch_size = 128
epochs = 10
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
이제 모델을 평가하고 예측합니다.
# 모델 평가
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
# 모델 예측
predictions = model.predict(x_test)
728x90
'코딩교육 > 인공지능' 카테고리의 다른 글
목동코딩학원, react에서 chatGPT 사용하는 방법 (0) | 2023.03.09 |
---|---|
목동코딩학원 : [코딩교육에 관한 100줄 블로그] (0) | 2023.02.24 |
목동코딩학원, AI Deep learning 사물인식 (0) | 2023.02.19 |
목동코딩학원, 인공지능 학습시키기 (0) | 2023.02.19 |
목동코딩학원, 인공지능 학습시키기 (0) | 2023.02.15 |