AI Service

Interior Image를 인식하여, Interior Style을 추론하는 서비스 프로그램

Ed2024 2024. 10. 12. 01:52

이 코드는 TensorFlow를 사용하여 인테리어 스타일을 인식하는 모델을 통해 이미지를 분류하고, 그 결과를 파이 차트로 시각화하는 Python 프로그램입니다. 아래는 코드의 각 부분에 대한 구체적인 설명입니다.

 

https://www.youtube.com/watch?v=5dvyLgdae1Q&t=319s

 

1. 라이브러리 임포트

 

  • tensorflow.keras: 딥러닝 모델을 로드하고, 예측을 수행하는 데 사용됩니다.
  • PIL (Python Imaging Library): 이미지 파일을 열고, 크기 조정 및 전처리를 수행합니다.
  • numpy: 이미지 데이터를 배열로 처리하고, 수치 연산에 사용됩니다.
  • matplotlib.pyplot: 예측 결과를 시각화하는 파이 차트를 그리는 데 사용됩니다.

2. NumPy 출력 형식 설정

np.set_printoptions(suppress=True): NumPy 배열의 과학적 표기법(scipy)을 비활성화하여 출력값을 더 직관적으로 보기 좋게 합니다.

 

3. 모델 로드 및 컴파일

 

  • model = tensorflow.keras.models.load_model: 사전 학습된 Keras 모델(keras_model.h5)을 불러옵니다.
  • model.compile(): 모델의 손실 함수와 최적화 알고리즘을 정의합니다.
    • categorical_crossentropy: 다중 클래스 분류를 위한 손실 함수.
    • sgd: 확률적 경사 하강법을 사용한 최적화 알고리즘.
  • model.summary(): 모델의 구조를 출력하여 각 층(layer)과 파라미터 개수를 확인합니다.

4. 이미지 배열 준비

data: 모델에 입력할 이미지 데이터를 담을 배열입니다. shape=(1, 224, 224, 3)는 이미지 1개가 높이 224, 너비 224, RGB 채널 3을 가진 형태로 설정됩니다.

 

5. 이미지 불러오기 및 전처리

 

  • Image.open(): 예측에 사용할 이미지를 불러옵니다.
  • ImageOps.fit(): 이미지를 224x224 크기로 조정합니다. 중심을 기준으로 이미지를 잘라내어 왜곡을 최소화합니다.
  • np.asarray(): 이미지를 NumPy 배열로 변환합니다.
  • image.show(): 조정된 이미지를 화면에 표시합니다.

6. 이미지 정규화 및 배열에 저장

 

  • normalized_image_array: 이미지 배열을 -1에서 1 사이의 값으로 정규화합니다. 이 과정은 모델이 학습할 때 사용한 정규화 방식과 일치해야 합니다.
  • data[0] = normalized_image_array: 정규화된 이미지를 모델 입력 배열에 저장합니다.

7. 모델 예측

model.predict(): 입력 이미지에 대한 예측을 수행하고, 결과를 출력합니다. prediction 변수에는 각 스타일에 대한 확률 값이 저장됩니다.

 

8. 예측 결과 처리 및 라벨링

 

  • ratio: 모델의 예측 결과를 리스트로 변환하여 각 인테리어 스타일의 확률 값을 저장합니다.
  • labels: 각 클래스에 해당하는 스타일 이름을 정의한 리스트입니다.

9. 파이 차트 생성 및 시각화

 

  • explode: 각 파이 조각이 중심에서 얼마나 벗어나 보이게 할지를 설정합니다.
  • colors: 각 스타일에 대응하는 파이 조각의 색상을 지정합니다.
  • wedgeprops: 파이 조각의 스타일(두께, 테두리 색 등)을 설정합니다.
  • plt.title(): 차트의 제목을 설정합니다.
  • plt.pie(): 파이 차트를 생성하고, autopct로 조각의 확률을 소수점 한 자리까지 표시합니다.
  • plt.legend(): 파이 차트 옆에 범례를 표시합니다.
  • plt.savefig(): 파이 차트를 이미지 파일로 저장합니다.
  • plt.show(): 차트를 화면에 표시합니다.

 

위의 코드는 주어진 이미지를 모델을 통해 분석하여, 해당 이미지가 어떤 인테리어 스타일인지 분류하고, 이를 파이 차트로 시각화하여 각 스타일의 확률을 직관적으로 보여주는 프로그램 입니다.