본문 바로가기
DataScience/MachineLearning

딥러닝 텐서플로우 CNN 구조, pooling, 파이썬으로 압축파일 풀기, JPG나PNG 같은 이미지파일을 학습 데이터로 만드는 방법, 파이썬 각 폴더에 저장되어 있는 사진파일이름들 출력

by leopard4 2022. 12. 30.

1. CNN구조

결론부터 말하면 : 사진의 특징을 잡아서 압축하는 개념

 

이미지는 행과 열로 이루어져있다 

예시

(28, 28)

그래서 Gray(1차원) 이미지 같은경우는 Flatton()만 사용해서 학습을 시키면 되지만.

컬러이미지는 R, G ,B  3장으로 이루어진것과 같다.(3차원 이라는것)

(28, 28, 3)

그렇기에 변환 과정을 거쳐야 한다.

과정은 kernel 로 image에 stride 만큼 feature map으로 만들어  (Convolution + ReLu) (변환) 

Convolution

 

 

MAX or Average 로  stride만큼 Pooling (Downsampling) 해서 Flattening 하는것 (압축)

Pooling

 

2. 파이썬으로 압축파일 푸는방법

import zipfile

file = zipfile.ZipFile('/tmp/horse-or-human.zip') # 집파일을 가져와서 변수로저장

file.extractall('/tmp/horse-or-human') # 가져온 집을 이폴더에 풀어라

3.각 폴더에 저장되어 있는 사진파일이름들 출력하기

 

import os

os.listdir(train_horse_dir) # 폴더 내용을 리스트로 가져온다.

4. jpg나 png 와 같은 이미지파일을, 딥러닝 학습 데이터로 만드는 방법

이미지파일을 넘파이 어레이로 변환시켜주는, ImageDataGenerator 라이브러리를 사용한다.

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale= 1/255.0 ) # rescale == 읽어올때 피처스케일링 하라는것 , 2를쓰면 2배

# 라이브러리를 변수로 만들었으면, 그 다음 할일은,
# 이미지가 들어있는 디렉토리 정보와 이미지 사이즈정보와 몇개로 분류할지 정보를
# 알려준다.

train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human', target_size=(300, 300), class_mode='binary' ) # target_size == 파일을 넘파이로 만들때 몇행 몇열로 만들것이냐