내가 하고싶은 건 다 하는 공간

혼자 만들면서 공부하는 딥러닝 1-3 패션 상품 이미지 분류하기: 잘못 분류된 데이터 살펴보기 본문

인공지능

혼자 만들면서 공부하는 딥러닝 1-3 패션 상품 이미지 분류하기: 잘못 분류된 데이터 살펴보기

하고파 2025. 7. 13. 21:36

잘못된 예측 데이터 살펴보기

일단48000개의 데이터 중에서 잘못 예측된 데이터가 5056개가 있다는 걸 파악했습니다. 잡았다 요놈..

오분류된 이미지를 한 번 살펴봐줬습니다. 여러 프로젝트를 해보니 초기 단계에 데이터를 살펴보는 단계가 굉장히 중요하더라고요.

혼동행렬 Confusion Matrix

그 다음에는 혼동행렬을 만들어줘서 잘못 분류된 클래스 쌍을 확인했습니다.

import pandas as pd

df = pd.DataFrame({
    "incorrect_index" :  incorrect_train_indices,
    "prediction" : train_pred_classes[incorrect_train_indices],
    "actual" : train_target[incorrect_train_indices],
})

# confusion matrix 생성
confusion_matrix = pd.crosstab(
    df["actual"], 
    df["prediction"], 
    rownames=["Actual"], 
    colnames=["Predicted"]
)

# 시각화
plt.figure(figsize = (8, 8))

sns.heatmap(confusion_matrix, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix: Fashion MNIST')
plt.show()

색이 진할수록 오분류되는 데이터의 개수가 많음을 의미합니다. 오분류되는 데이터 개수가 가장 많은 클래스 쌍 top3에 대해 살펴보고자 합니다. 

 

1. Predicted : 6(Shirt) / Actual : 0(T-Shirt/Top)

아무래도 셔츠와 티셔츠 둘 다 소매가 짧은 상의라서 오분류가 되는 것 같습니다. 실제로 이 반대 케이스가 top3위를 차지했습니다.

 

2. Predicted : 4(Coat) / Actual : 2(Pullover)

Pullover는 니트 형태의 스웨터로 머리부터 입는 상의이고, Coat는 말 그대로 외투, 겉옷이라고 합니다. 스웨터를 겉옷이라고 잘못 판단했다는 건데, 두 클래스 모두 긴 소매의 상의라는 점에서 유사해보이는 것 같습니다. 또한 해상도가 낮은 이미지라서 여밈의 여 부(지퍼, 단추)가 잘 안 보입니다. 또한 스웨터는 니트 재질일텐데, 해상도가 낮아서 니트 재질이 잘 안 보입니다.


3. Predicted: 0(T-Shirt/Top) / Actual : 6(Shirt)

top1과 같은 맥락.