깨끗한 방 vs 더러운 방 구별 해보기
app
This app was built in Streamlit! Check it out and visit https://streamlit.io for more awesome community apps. 🎈
cleanmessyapp-hpulumeuwumcu8u4vhnruy.streamlit.app
1. 프로젝트 개요
최근 AI 기술이 발전하면서 다양한 분야에서 인공지능이 활용되고 있습니다. 그중에서도 이미지 분류 모델을 활용하면 특정 사물이나 공간의 상태를 자동으로 판별할 수 있습니다. 이번 글에서는 Teachable Machine을 이용해 깨끗한 방과 더러운 방을 구별하는 딥러닝 모델을 만들고, 이를 배포하는 과정에 대해 소개하겠습니다.
이 프로젝트는 사용자가 사진을 업로드하면 AI가 방의 상태를 분석하고, 깨끗한지 또는 더러운지를 판별하여 결과를 제공합니다. 이를 위해 딥러닝 모델(TensorFlow/Keras)과 Streamlit 기반의 웹 인터페이스를 사용했습니다.
2. 작업 순서 및 파일 구성
🔹 1) Teachable Machine으로 모델 학습 및 다운로드
머신러닝 분류모델: 구글 티쳐블 머신(Teachable Machine)
티쳐블 머신(Teachable Machine)이란?티쳐블 머신(Teachable Machine)은 구글(Google)이 개발한 머신러닝 모델을 누구나 쉽게 만들고 사용할 수 있도록 지원하는 웹 기반 도구입니다. 프로그래밍이나 머신러
maeilcoding.tistory.com
Google의 Teachable Machine을 활용하여 깨끗한 방과 더러운 방을 구별하는 딥러닝 모델을 학습했습니다.
- 깨끗한 방과 더러운 방 이미지를 학습시켜 이미지 분류 모델을 생성
- 학습된 모델을 .h5 파일(keras_model.h5) 형태로 다운로드하여 저장
🔹 2) TensorFlow 설치
Teachable Machine에서 다운로드한 모델을 불러오기 위해 TensorFlow를 설치했습니다.
🚨 문제 발생: TensorFlow 2.18에서 keras.models import 오류
최신 버전의 TensorFlow(2.18)를 설치한 후 다음과 같은 코드를 실행했을 때 오류가 발생했습니다.
from keras.models import load_model # TensorFlow is required for Keras to work
TensorFlow 2.18에서는 keras가 독립적인 패키지로 분리되어 있어, 기존 코드가 동작하지 않았습니다.
✅ 해결 방법: TensorFlow 2.15로 다운그레이드
최신 버전을 삭제하고, Teachable Machine에서 생성된 모델과 호환되는 TensorFlow 2.15 버전을 설치했습니다.
📌 터미널 명령어
pip uninstall tensorflow keras
pip install tensorflow==2.15
이제 tensorflow.keras.models를 정상적으로 불러올 수 있게 되었습니다.
🔹 3) Streamlit 앱 코드 작성 (app.py)
TensorFlow 모델을 활용한 웹 애플리케이션을 만들기 위해 Streamlit을 이용하여 app.py를 작성했습니다.
- 사용자가 이미지를 업로드하면 AI가 방의 상태를 분석하여 결과를 출력
- tensorflow.keras.models.load_model()을 사용하여 저장된 모델을 불러오고 예측 수행
- Streamlit을 활용하여 간단한 UI 구성
🔹 4) 라이브러리 정리 (requirements.txt)
프로젝트에서 사용한 패키지를 requirements.txt에 저장하여 배포 환경을 설정했습니다.
streamlit
TensorFlow==2.15
pillow
numpy
이 파일을 사용하면 앱 개발과 동일한 환경을 구성할 수 있으며, Streamlit Cloud에 배포할 경우 필요한 패키지가 자동으로 설치됩니다.
🔹 5) Streamlit Cloud에 배포
웹 애플리케이션을 배포하기 위해 Streamlit Cloud를 사용했습니다.
- GitHub에 프로젝트 푸쉬
- Streamlit Cloud에 깃허브 연동 후 배포
- Advanced settings 에서 개발환경과 동일하도록 인터프리터 설정
- 사용자가 웹에서 직접 AI 모델을 활용할 수 있도록 설정
3. 활용 가능성 및 확장 아이디어
이 앱은 단순히 방의 깨끗함을 판별하는 것뿐만 아니라, 다양한 확장 가능성이 있습니다.
- 호텔 및 숙박업소: 객실 상태를 자동으로 평가하여 청소 필요 여부를 판단
- 청소 서비스: 고객이 사진을 업로드하면 청소 서비스 필요 여부를 자동으로 진단
- 스마트홈 및 IoT: 로봇 청소기와 연계하여 자율적인 청소 시스템 구축
- 쓰레기 및 오염 감지: 일반 환경에서 쓰레기 여부를 분석하는 기능으로 확장 가능
딥러닝 기술과 간단한 웹 인터페이스를 활용하면 이처럼 유용한 인공지능 서비스를 쉽게 만들 수 있습니다. 관심이 있다면 직접 시도해보세요! 😊