레이블이 mac인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mac인 게시물을 표시합니다. 모든 게시물 표시

20250115

Streamlit : 이미지 분류 및 데이터 시각화 앱 만들기 (Mac 환경)

1. 개발 환경 설정

Python 및 Streamlit 설치

  1. Python 설치: Python 3.8 이상이 필요합니다. Mac에서 Python이 설치되어 있지 않다면, Python 공식 웹사이트에서 다운로드
  2. 가상 환경 생성:
    python3 -m venv streamlit_env
    source streamlit_env/bin/activate
  3. 필요한 라이브러리 설치:
    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. 앱 실행

  1. 디렉토리 이동:
    cd /path/to/your/directory
  2. Streamlit 앱 실행:
    streamlit run image_classification_app.py
    브라우저에서 http://localhost:8501로 이동하여 앱을 확인합니다.

5. 주요 기능 설명

  • A. 이미지 업로드 및 분류: 사용자가 이미지를 업로드하면 TensorFlow Hub의 사전 학습된 MobileNet V2 모델을 사용하여 이미지를 분류합니다.
  • B. 데이터 시각화: 무작위로 생성된 데이터를 Pandas DataFrame으로 변환하고 이를 라인 차트로 시각화합니다.
  • C. 사이드바: 사이드바에 슬라이더를 추가하여 사용자 입력을 받을 수 있습니다.

6. 실행 결과

앱 실행 후 다음과 같은 기능을 테스트할 수 있습니다:

  • 이미지를 업로드하고 분류 결과를 확인합니다.
  • 데이터가 라인 차트로 표시되는 것을 봅니다.
  • 사이드바 슬라이더를 조작하여 선택된 범위를 변경합니다.

7. 추가 팁

  • TensorFlow Hub 모델 외에도 다양한 사전 학습 모델을 사용할 수 있습니다.
  • @st.cache 데코레이터를 활용해 데이터 로딩 속도를 최적화할 수 있습니다.
  • Streamlit Cloud를 사용해 앱을 쉽게 배포할 수 있습니다.