본문 바로가기
Drawing (AI)/DeepLearning

Udemy - 딥러닝의 모든 것(CNN 구축하기)

by 생각하는 이상훈 2023. 9. 5.
728x90

Dog or Cat

개와 고양이 사진을 주었을때 제대로 구분해 낼 수 있는 CNN모델을 구축해보도록 하자.

Importing the libraries

import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator
 
tf.__version__
 
 

Part 1 - Data Preprocessing

Preprocessing the Training set

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)
training_set = train_datagen.flow_from_directory('dataset/training_set',
                                                 target_size = (64, 64),
                                                 batch_size = 32,
                                                 class_mode = 'binary')
 
 

Preprocessing the Test set

test_datagen = ImageDataGenerator(rescale = 1./255)
test_set = test_datagen.flow_from_directory('dataset/test_set',
                                            target_size = (64, 64),
                                            batch_size = 32,
                                            class_mode = 'binary')
 
 

Part 2 - Building the CNN

 

Initialising the CNN

cnn = tf.keras.models.Sequential()
 

Step 1 - Convolution

cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=[64, 64, 3]))
 
 

Step 2 - Pooling

cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
 

Adding a second convolutional layer

cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
 
 

Step 3 - Flattening

cnn.add(tf.keras.layers.Flatten())
 

Step 4 - Fully connected layer

cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))
 
 

Step 5 - Output Layer

cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
 
 

Part 3 - Training the CNN

Compiling the CNN

cnn.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
 
 

Training the CNN on the Training set and evaluating it on the Test set

cnn.fit(x = training_set, validation_data = test_set, epochs = 25)
 
 

Part 4 - Making a single prediction

import numpy as np
from keras.preprocessing import image
test_image = image.load_img('dataset/single_prediction/cat_or_dog_1.jpg', target_size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = cnn.predict(test_image)
training_set.class_indices

if result[0][0] == 1:
  prediction = 'dog'
else:
  prediction = 'cat'
  
print(prediction)

개, 고양이의 사진을 넣었을때 정확하게 dog와 cat을 출력하는 것을 볼 수 있었다.


 

728x90

'Drawing (AI) > DeepLearning' 카테고리의 다른 글

Udemy - 딥러닝의 모든 것(SOM)-(2)  (1) 2024.01.03
Udemy - 딥러닝의 모든 것(SOM)-(1)  (0) 2023.09.12
GAN  (0) 2023.07.26
CNN for NLP  (0) 2023.07.22
딥러닝 직접 구현하기 - (신경망 학습)  (0) 2023.07.06