Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 최솟값
- nan
- numpy
- del
- insert()
- data
- 덴드로그램
- pandas
- append()
- count()
- Dictionary
- sklearn
- analizer
- 최댓값
- IN
- dendrogram
- string
- DataFrame
- list
- wcss
- len()
- 분류 결과표
- function
- elbow method
- hierarchical_clustering
- Python
- 반복문
- Machine Learning
- matplotlib
- DataAccess
Archives
- Today
- Total
개발공부
JPG나 PNG와 같은 이미지 파일을 학습 데이터로 만드는 방법 본문
아래와 같이 tmp 폴더의 horse-or-human, validation-horse-or-human 폴더에는 horses와 humans, 두 개씩의 폴더가 있고 그안에는 각각 말과 사람의 이미지가 들어있다.


이런식으로 분류되어 있는 폴더의 이미지들을 학습데이터화 해주는 텐서플로우의 라이브러리가 존재한다.
그 코드는 아래와 같다.
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# 이미지를 0 - 1 사이의 값으로 피처스케일링 한다.
train_datagen = ImageDataGenerator(rescale= 1/255.0)
validation_datagen = ImageDataGenerator(rescale= 1/255.0)
# 변수로 만들어 줬으면, 그다음 할 일은,
# 이미지가 들어있는 디렉토리의 정보, 이미지 사이즈 정보, 분류할 개수 정보를 알려줘야 한다.
# target_size : image 크기, 원본 크기가 다르더라도 target_size에 지정된 크기로 자동 조절 됩니다
# target_size 와 model의 input_shape 은 가로, 세로가 같아야 한다.
# 2개 분류 class_mode = 'binary
# 3개 이상 분류 class_mode = 'categorical'
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')
아래는 모델의 학습에 적용을 시키는 예제이다.
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import RMSprop
def build_model() :
model = Sequential([
Conv2D(filters = 16, kernel_size = (3,3),
activation = 'relu',
input_shape = (300,300,3)),
MaxPool2D((2, 2),2),
Conv2D(32, (3,3), activation = 'relu'),
MaxPool2D(2,2),
Conv2D(64, (3,3), activation = 'relu' ),
MaxPool2D(2,2),
Flatten(),
Dense(512, activation = 'relu'),
Dense(1, activation = 'sigmoid')
])
return model
model = build_model()
model.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
# train_generator 는 X와 y의 값을 모두 가지고 있어서
# X, y 대신 train_generator만 적으면 된다.
epoch_history = model.fit(train_generator, epochs = 15,
validation_data = (validation_generator))
# validation_generator 는 X와 y의 값을 모두 가지고 있어서
# X, y 대신 validation_generator만 적으면 된다.
model.evaluate(validation_generator)
'Python > Deep Learning' 카테고리의 다른 글
| 파일을 training과 test 디렉토리로 나눠서 저장하는 방법 (0) | 2022.06.15 |
|---|---|
| ImageDataGenerator 를 이용해서 데이터 증강하는 방법 (0) | 2022.06.15 |
| CNN 모델링 과정, 코드 예제 (0) | 2022.06.14 |
| 레이블 인코딩된 값을 원 핫 인코딩으로 바꾸기 to_categorical() (0) | 2022.06.14 |
| 텐서플로우의 모델, 네트워크, 웨이트를 저장하고 불러오는 방법 (0) | 2022.06.14 |