1. 개발 환경 설정
Python 및 Streamlit 설치
- Python 설치: Python 3.8 이상이 필요합니다. Mac에서 Python이 설치되어 있지 않다면, Python 공식 웹사이트에서 다운로드
- 가상 환경 생성:
python3 -m venv streamlit_env source streamlit_env/bin/activate
- 필요한 라이브러리 설치:
pip install streamlit pandas numpy matplotlib tensorflow_hub pillow
Streamlit 설치 확인
Streamlit이 올바르게 설치되었는지 확인하려면 다음 명령을 실행
streamlit hello
브라우저에 Streamlit 데모 앱이 열리면 성공적으로 설치된 것입니다.
2. Streamlit 앱 코드 작성
아래 코드는 이미지 분류와 데이터 시각화를 포함한 Streamlit 애플리케이션입니다.
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow_hub as hub
from PIL import Image
# 앱 제목 및 설명
st.title("이미지 분류 및 데이터 시각화 앱")
st.write("이 앱은 업로드된 이미지를 분류하고 데이터를 시각화합니다.")
# 이미지 업로드 및 분류
uploaded_file = st.file_uploader("이미지를 업로드하세요", type=["jpg", "png", "jpeg"])
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="업로드된 이미지", use_column_width=True)
st.write("이미지를 분류 중입니다...")
# TensorFlow Hub에서 사전 학습된 모델 로드
model = hub.load("https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/classification/5")
image = image.resize((224, 224))
image_array = np.array(image) / 255.0 # 정규화
image_array = np.expand_dims(image_array, axis=0)
predictions = model(image_array)
st.write("분류 결과:", predictions.numpy())
# 데이터 시각화
st.header("데이터 시각화")
data = pd.DataFrame(
np.random.randn(100, 3),
columns=['특성 A', '특성 B', '특성 C']
)
st.line_chart(data)
# 사이드바 예제
st.sidebar.header("사이드바 설정")
range_slider = st.sidebar.slider("값 범위 선택", 0, 100, (25, 75))
st.sidebar.write(f"선택된 범위: {range_slider}")
3. 코드 저장
위 코드를 image_classification_app.py
라는 이름으로 저장하세요:
nano image_classification_app.py
4. 앱 실행
- 디렉토리 이동:
cd /path/to/your/directory
- Streamlit 앱 실행:
브라우저에서 http://localhost:8501로 이동하여 앱을 확인합니다.streamlit run image_classification_app.py
5. 주요 기능 설명
- A. 이미지 업로드 및 분류: 사용자가 이미지를 업로드하면 TensorFlow Hub의 사전 학습된 MobileNet V2 모델을 사용하여 이미지를 분류합니다.
- B. 데이터 시각화: 무작위로 생성된 데이터를 Pandas DataFrame으로 변환하고 이를 라인 차트로 시각화합니다.
- C. 사이드바: 사이드바에 슬라이더를 추가하여 사용자 입력을 받을 수 있습니다.
6. 실행 결과
앱 실행 후 다음과 같은 기능을 테스트할 수 있습니다:
- 이미지를 업로드하고 분류 결과를 확인합니다.
- 데이터가 라인 차트로 표시되는 것을 봅니다.
- 사이드바 슬라이더를 조작하여 선택된 범위를 변경합니다.
7. 추가 팁
- TensorFlow Hub 모델 외에도 다양한 사전 학습 모델을 사용할 수 있습니다.
@st.cache
데코레이터를 활용해 데이터 로딩 속도를 최적화할 수 있습니다.- Streamlit Cloud를 사용해 앱을 쉽게 배포할 수 있습니다.
댓글 없음:
댓글 쓰기