728x90
ImageDataGenerator를 활용하여, 사진파일을 간편하게 전처리 할 수 있다.
라이브러리
import tensorflow.keras
from keras.models import Sequential
from keras.layers import Dense,Flatten,Conv2D, MaxPooling2D, Dropout
모델링
model = tf.keras.models.Sequential()
# Adding first CNN layer
model.add( Conv2D ( 32, ( 3,3 ), activation= 'relu', padding='same', input_shape=( 32,32, 3 ) ))
# Adding maxpool layer
model.add( MaxPooling2D( 2, 2 ))
# adding second CNN layer and maxpool layer
model.add( Conv2D( 63, (3,3), activation='relu', padding='same' ) )
model.add( MaxPooling2D( 2, 2 ) )
# Adding Flattening layer
model.add(Flatten() )
# Adding the dropout layer
model.add(Dropout(0.4))
# Adding fully connected layer
model.add( Dense( 128, activation='relu' ) )
# Adding output layer
model. add (Dense ( 1, activation='sigmoid' ) )
크기가 32 X 32 인 간단한 모델.
컴파일
model.compile( optimizer='adam', loss= 'binary_crossentropy', metrics=['accuracy'])
optimizer는 'adam' ,
두가지의 분류의 문제이기 때문에
loss함수는 'binary_crossentropy'를 사용하고, 위에 activation함수로 'sigmoid'를 사용
정확도를 보기위한 metrics의 'accuracy'
ImageGenerator로 trainining_set, test_set 만들기.
from tensorflow.keras.preprocessing.image import ImageDataGenerator
training_data_dir = '/content/training_set/training_set'
test_data_dir = '/content/test_set/test_set'
train_datagen = ImageDataGenerator(rescale= 1 / 255.0, rotation_range=40, width_shift_range=0.2, height_shift_range=0.4, shear_range = 0.2, zoom_range=0.2, horizontal_flip=True, vertical_flip=True, fill_mode='nearest')
test_datagen = ImageDataGenerator( rescale=1/255.0)
train_generator = train_datagen.flow_from_directory( training_data_dir, target_size=(150, 150), batch_size=20, class_mode='binary' )
test_generator = test_datagen.flow_from_directory( test_data_dir, target_size=(150, 150), batch_size=20, class_mode='binary' )
model.fit(train_generator, steps_per_epoch=100, epochs=100, validation_data=test_generator, validation_steps=50)
ImageDataGenerator를 만들때 여러가지의 파라미터를 설정해줌으로, 전처리를 할 수 있다.
( rescale , rotation_range, width_shift_range, height_shift_range, shear_range, zoom_range, horizontal_flip,
vertical_flip, fill_mode )
flow_from_directory method로 ImageDataGenerator를 씌워준다. ( 설정된 경로에 , 설정된 전처리를 함.)
마지막으로 fit 해준다.
( test_set은 하지 않았다.)
'IT 프로그래밍 관련 > 딥러닝' 카테고리의 다른 글
CNN으로 이미지 파일 시험코드 (0) | 2021.03.03 |
---|---|
타임시리즈 데이터분석용 Prophet 라이브러리 (0) | 2021.03.03 |
google colab에서 데이터 압축 풀기 (0) | 2021.03.02 |
Callback함수 사용법 코드 (0) | 2021.03.02 |
분류 문제에서, 컴파일에 사용할 loss함수 선택 방법과 코드 (0) | 2021.03.02 |
댓글