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(): 차트를 화면에 표시합니다.
위의 코드는 주어진 이미지를 모델을 통해 분석하여, 해당 이미지가 어떤 인테리어 스타일인지 분류하고, 이를 파이 차트로 시각화하여 각 스타일의 확률을 직관적으로 보여주는 프로그램 입니다.