본문 바로가기
Python/DeepLearning

딥러닝 - 이미지 분류 1) Data Preprocessing

by 하니__ 2024. 4. 18.

 

이런 형태의 이미지를 gray scale image라고 한다

흔히 말하는 흑백 이미지라고 생각하면 되겠다

자세히는 흑과 백 사이의 색들이 조합된 이미지

즉 회색으로 표현한것이라 그레이 스케일 이미지인 것

 

 

from tensorflow.keras.datasets import fashion_mnist

우선 위의 이미지 파일을 쓰기위해

텐서플로우의 케라스 데이터셋의 모듈을 이용해 패션 엠니스트를 임포트해주고

 

(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()

로드데이터로 데이터를 불러옴과 동시에

(X_train, y_train), (X_test, y_test) 로 저장해준다

 

이전 머신러닝할때의 트레인 테스트 스플릿과는 살짝 다른데

이 함수를 만든 곳에서는 이렇게 만들었기때문에 살짝 다른 것

 

X_train.shape
(60000, 28, 28)

 

이 이미지 파일들의 shape을 살펴보면 기존 것과는 다른 3차원 배열인데

 

기존 ( 행 , 열 ) 이었던 것에서

 

( 행 , 열 , 레이어(파일갯수)  )

라고 생각하기 쉽겠지만 그렇지 않고

 

(  레이어(파일갯수) , 행 , 열 )이 정답이다

 

그래서 이 shape의 형태는

28행 28열을 갖고 있는 6만개의 데이터

 

혹은

 

6만개의 데이터가 있는데 이 데이터들은

28행 28열을 갖고 있다~

 

 

라고 해석하면 되겠다

 

 

그래서 첫번째 파일인 0번을 찾아보면

X_train[ 0 , :  , : ]

 

이미지 파일로는 이렇게 표현 된다는것을 알려주며

SHOW DATA를 눌렀을시 숫자로 표현되는것을 보여준다

 

 

 

 

y_train.shape
(60000,)

 

그렇다면 y값 또한 3차원 일까?

정답은 1차원이다

 

별 다른 정답'들' 을 가지고 있는것이 아니라

하나의 파일에 하나의 답을 가지고 있기에 1차원이 맞다

 

 

 

피쳐스케일링

 

 

딥러닝을 위해 정규화 스케일링을 하려한다

하지만

 

MinMax 스케일링을 할때에는

 

MinMax값을 컴퓨터가 알고 있고 사람은 모르고 있기에

스케일러를 임포트해주고 해줘! 라고 입력하지만

우리는 이 값의 MinMax를 알고 있다

0부터 255라는 사실을

 

그래서 굳이 스케일러를 사용 하지않고

255로 나눠주면 되겠다

X_train[ 0 , : , : ] / 255.0

 

 

 

 

X_train = X_train / 255
X_test = X_test / 255

 

 

학습용 데이터와 테스트용 데이터 모두 피쳐스케일링 해주자

 

 

 

 

 

딥러닝 - 이미지 분류 2) 모델 생성 및 확인

from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten def build_model() : model = Sequential() model.add( Flatten( ) ) model.add( Dense( 128, 'relu' ) ) model.add( Dense( 10, 'softmax' ) ) model.compile( 'adam',

hani08.tistory.com

 

 

딥러닝 - 이미지분류 3) Confusion Matrix, Acrruracy

앞의 이미지분류가 끝났다면 컨퓨전 매트릭스와 Confusion Matrix 를 확인해야한다 Accuracy_score도 같이 확인하자 from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score y_pred = model.predict(X_

hani08.tistory.com