본문 바로가기
Python/DeepLearning

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

by 하니__ 2024. 4. 18.

 

 

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

이런 형태의 이미지를 gray scale image라고 한다 흔히 말하는 흑백 이미지라고 생각하면 되겠다 자세히는 흑과 백 사이의 색들이 조합된 이미지 즉 회색으로 표현한것이라 그레이 스케일 이미지인

hani08.tistory.com

 

 

 

 

 

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', loss = 'sparse_categorical_crossentropy' , metrics=['accuracy'] )
  return model

 

Flatten은 이전 레이어의 출력인 다차원 배열을 1차원 배열로 변환

 

1134

3628

3910

1334

 

상태의 배열이 있다고 하면

1134362839101334 형태로 만드는 함수

 

 

 

softmax는 액티배이션 함수이며

입력받은 데이터들을 0과 1 사이의 확률로 변환하고, 모든 요소의 합을 1로 만드는 작업을 한다

위 작업에서는 10개의 카테고리컬 데이터로 이루어져있어서

각 클래스에 대한 확률을 계산하고 가장 높은 확률을 가진 클래스를 예측 결과로 반환한다

 

 

 

25번 파일을 어떻게 예측하는지 확인해보자

 

X_test[ 25 , : , : ]

 

 

25번 파일이 도대체 어떤 이미지인지 알 수 가 없다

 

이미지 파일로 확인해보자
plt.imshow( X_test[ 25 , : , : ] , cmap = 'gray' )
plt.show()

 

코트? 인것 같긴한데 확실한 값을 보자

 

y_test[ 25 ]
4 #코트

 

 

그럼 모델의 성능을 확인을 해보자
model.predict( X_test[ 25 , : , : ] )

왜 에러가 난걸까?

 

X_test[ 25 , : , : ].shape
(28, 28)

 

X_test 25번 파일의 데이터파일의 유형은 2차원 배열

하지만 모델이 입력받는 인풋 데이터 값은 3차원 배열이기때문에

reshape 해줘야 한다

 

 

X_test[ 25 , : , : ].reshape( 1, 28, 28 )

 

y_pred = model.predict( X_test[ 25 , : , : ].reshape( 1, 28, 28 ) )

 

y_pred

 

결과를 10개었지만, 가장 높은 숫자의 인덱스를 찾아야한다
맥스값의 인덱스를 찾는 함수는?
argmax()

 

y_pred.argmax()
2
y_test[ 25 ]
4 #코트

 

y_pred.max()
 
0.569253

 

해당 정확도가 56퍼센트라 그런지 틀렸다

정확도가 높은 다른 데이터를 한번 보자

 

 

 

정확도 99퍼센트로 정답을 맞추는것을 볼 수 있다

 

 

 

 

 

딥러닝 - 이미지분류 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