군침이 싹 도는 코딩

이미지 파일을 numpy로 변환 후 학습 본문

Python/Deep Learning

이미지 파일을 numpy로 변환 후 학습

mugoori 2022. 12. 30. 13:07

인공지능에게 학습을 시키려면 넘파이로 된 데이터를 주어야한다

이미지를 다운로드 받으면 그것을 바로 넣어주는게 아닌 넘파이로 변환시켜서 넣어줘야한다

 ImageDateGenerator 라이브러리를  사용하면 된다

 

 

 

from tensorflow.keras.preprocessing.image import ImageDataGenerator # 라이브러리 임포트

train_datagen = ImageDataGenerator( rescale = 1 / 255.0 ) # 트레인 용

validation_datagen = ImageDataGenerator( rescale = 1 / 255.0 ) # 테스트 용

# ImageDataGenerator라이브러리를 training용과 validation용 변수로 만든다.
파라미터는 (rescale = 1 / 255.0 피쳐 스케일링해서 가져오라는 뜻)

 

 

 

 

train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human', target_size = (300,300), class_mode = 'binary' )

validation_generator = validation_datagen.flow_from_directory('/tmp/validation-horse-or-human', target_size = (300,300), class_mode = 'binary' )

# 변수로 만들어 주었으면 이미지가 들어있는 디렉토리의 정보,

이미지 사이즈의 정보, 분류할 갯수의 정보를 알려줘야 한다.
target_size는 input_shape과 같아야 한다. 다만, input_shape은 컬러이기때문에 300,300,3이라고 했지만

target_size는 자동으로 컬러로 인식하기때문에 300,300까지만 기재하면 된다.
class_mode = 디폴트가 Categorical로 되어있는데 이는 3개 이상 분류한다는 의미이다

2개일땐 binary 이므로 데이터에 맞게 적용해 준다

train_generator는, numpy array와, 해당이미지의 정답지도 가지고 있는 변수이다.

X_train과 y_train을 모두 한꺼번에 가지고 있다.
validation data도 똑같이 만들어 준다.
X_val과 y_val을 만들어 준다.

 

 

epoch_history = model.fit(train_generator, epochs=15, validation_data=(validation_generator))
>>>
Epoch 1/15
33/33 [==============================] - 18s 258ms/step - loss: 2.6608 - accuracy: 0.6728 - val_loss: 0.6386 - val_accuracy: 0.8398
Epoch 2/15
33/33 [==============================] - 8s 256ms/step - loss: 0.2452 - accuracy: 0.9075 - val_loss: 1.2848 - val_accuracy: 0.7812
Epoch 3/15
33/33 [==============================] - 8s 254ms/step - loss: 0.2679 - accuracy: 0.9221 - val_loss: 1.6663 - val_accuracy: 0.8008

''''

Epoch 15/15
33/33 [==============================] - 8s 247ms/step - loss: 0.1903 - accuracy: 0.9854 - val_loss: 2.7281 - val_accuracy: 0.8672

# 이제 학습을 시켜준다 이때 model.fit() 안에 X-train,y_train 이런식으로 넣었다면

여기서는 train_generator에 시험지와 정답지 모두가 들어있는 셈 이므로 이것만 넣어주면 된다

벨리데이션 데이터도 마찬가지로 X_test,y_test 가 들어갔지만

이 역시 validation_generator가 모두 가지고 있기 때문에 이것만 넣어주면 된다.

'Python > Deep Learning' 카테고리의 다른 글

Fine Tuning  (0) 2023.01.02
Transfer Learning  (0) 2023.01.02
파이썬으로 파일 다운로드 및 압축파일 푸는 방법  (0) 2022.12.30
Pooling  (0) 2022.12.30
CNN 의 구조  (0) 2022.12.30