20240729 딥러닝으로 이미지 학습시키기_01

구글에서 제공하는 테스트용 데이터 불러오기

딥러닝으로 이미지를 학습 활용 예시

  • 자율주행 시 주변 사물 인식
  • 의료 이미지 분석
    • 암 진단 (구글 LYNA 딥러닝 모델의 정확도는 99%라고 함)
    • 흉부 엑스레이 사진을 통한 악성 폐결절 진단
  • 얼굴 인식 프로그램 - CCTV로 범인 찾기
  • 농업 분야 : 드론을 통해 작물 상태 모니터링
  • 패션 산업 : 스타일 추천 시스템 개발

뉴럴 네트워크에 넣을 수 있는 값은 ‘숫자’인데 이미지를 어떻게 넣을까?

  • 이미지의 픽셀 데이터는 숫자로 표현이 가능하다. (이미지는 픽셀의 조합)
    • 픽셀은 색상 조합으로 이루어져 있는데, 이를 활용해서 뉴럴네트워크에 넣으면 이미지 분석을 할 수가 있다.

구글에서 제공하는 테스트용 데이터를 가져오기

import tensorflow as tf

## 텐서플로우에서 제공하는 기본 데이터 셋 중 하나로 이미지 데이터랑 정답 데이터가 들어있음.(실행 시 구글에서 다운받아짐)
(trainX,tranY),(testX,testY) = tf.keras.datasets.fashion_mnist.load_data() ## 이 데이터셋을 활용할때만 사용하는 선언방식으로 신경쓸필요 없음
  • 위 코드를 실행시키면 아래와 같이 샘플 데이터를 다운받을 수 있음
  • 관련 Docs : https://www.tensorflow.org/api_docs/python/tf/keras/datasets/mnist/load_data

Fashion MNIST

  • 구성: 10개의 카테고리(티셔츠/탑, 바지, 스웨터, 드레스, 코트, 샌들, 셔츠, 스니커즈, 가방, 앵클 부츠)로 분류된 70,000개의 흑백 이미지.
  • 크기: 각 이미지는 28x28 픽셀 크기.
  • 형식: 원래 MNIST와 같은 포맷으로 제공되어, 기존의 MNIST를 처리하는 코드를 거의 수정 없이 사용할 수 있음.
# Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
# 29515/29515 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step
# Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
# 26421880/26421880 ━━━━━━━━━━━━━━━━━━━━ 2s 0us/step  
# Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
# 5148/5148 ━━━━━━━━━━━━━━━━━━━━ 0s 0s/step
# Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
# 4422102/4422102 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step

파이썬에서 이미지 미리보기 띄우기 (matplotlib)

  • pip install matplotlib를 통해 설치
import matplotlib.pyplot as plt

plt.imshow(trainX[0])
plt.show()
  • 이미지를 보여줌

전체 소스

import tensorflow as tf
import matplotlib.pyplot as plt ## 이미지를 볼 수 있는 파이썬 라이브러리 , pip install matplotlib를 통해 설치

## 데이터 셋 가져오기

## 텐서플로우에서 제공하는 기본 데이터 셋 중 하나로 이미지 데이터랑 정답 데이터가 들어있음.(실행 시 구글에서 다운받아짐)
(trainX,tranY),(testX,testY) = tf.keras.datasets.fashion_mnist.load_data() ## 이 데이터셋을 활용할때만 사용하는 선언방식으로 신경쓸필요 없음

class_names = ['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankel boot']

plt.imshow(trainX[0])
plt.gray()
plt.colorbar()
plt.show()