CIFAR 데이터셋을 검증하는 가장 직관적인 방법은 데이터셋에 포함된 이미지를 콘솔에 직접 시각화하여 확인하는 것입니다. CIFAR의 레이블(label)은 배열(array) 형태로 저장되어 있기 때문에, 클래스 이름에 접근할 때는 추가적인 인덱스가 필요합니다. 이미지 출력에는 matplotlib 라이브러리의 'imshow' 메서드가 사용됩니다.
개발 환경: Google Colaboratory
이 튜토리얼의 코드는 Google Colaboratory에서 실행할 수 있습니다. Google Colab(또는 Colaboratory)은 브라우저에서 바로 Python 코드를 실행할 수 있는 무료 클라우드 기반 개발 환경으로, 별도의 설정이 전혀 필요 없으며 GPU(그래픽 처리 장치)까지 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
코드 예제
print("Verifying the data")
plt.figure(figsize=(10,10))
print("Plot the first 15 images")
print("An extra index is needed since CIFAR labels are arrays")
for i in range(15):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i][0]])
plt.show()코드 출처: https://www.tensorflow.org/tutorials/images/cnn
실행 결과
Verifying the data Plot the first 15 images An extra index is needed since CIFAR labels are arrays
코드 설명
- 데이터 시각화: 정규화(normalization)가 완료된 학습용 이미지 데이터를 화면에 출력하여 정상적으로 로드되었는지 육안으로 확인합니다.
- matplotlib 활용: Python의 대표적인 시각화 라이브러리인 matplotlib의 pyplot 모듈을 사용해 이미지를 그립니다.
- subplot 구성: plt.subplot(5,5,i+1)을 통해 5×5 격자 형태로 첫 번째부터 열다섯 번째까지의 이미지를 배치합니다.
- 축과 그리드 제거: plt.xticks([]), plt.yticks([]), plt.grid(False)로 불필요한 눈금과 그리드를 제거하여 이미지만 깔끔하게 보여줍니다.
- 레이블 인덱싱: CIFAR-10의 레이블은 [[6], [9], [9], ...]처럼 각 항목이 배열로 감싸진 2차원 형태이므로, train_labels[i][0]처럼 [0] 인덱스를 한 번 더 사용해야 실제 클래스 번호에 접근할 수 있습니다.
이 과정을 통해 모델 학습 전에 데이터가 올바르게 전처리되고 로드되었는지 사전에 점검할 수 있어, 이후 CNN 같은 신경망 모델을 학습시킬 때 발생할 수 있는 데이터 관련 오류를 미리 방지할 수 있습니다.