Streamlit은 Python 코드만으로 간단한 웹 애플리케이션을 만들 수 있는 도구이다.
복잡한 프론트엔드 지식이 없어도 모델을 불러오고, 사용자 입력을 받고, 예측 결과를 화면에 보여주는 흐름을 빠르게 구현할 수 있다.
AI 모델을 Streamlit 앱에 통합할 때는 일반적으로 모델 로드, 사용자 입력, 결과 출력의 단계를 거친다.
1. 모델 로드
모델 로드는 학습이 완료된 AI 모델을 웹 애플리케이션 안에서 사용할 수 있도록 불러오는 단계이다.
예를 들어 이미지 분류 모델이라면 PyTorch의 .pt 파일이나 ONNX 모델 파일을 불러올 수 있다.
모델을 로드한 뒤에는 보통 추론 모드로 전환한다. PyTorch에서는 model.eval()을 사용하여 학습 중에만 필요한 동작을 비활성화한다.
모델 로드는 앱이 실행될 때마다 반복되면 시간이 오래 걸릴 수 있다. 따라서 Streamlit에서는 캐시 기능을 활용하여 한 번 불러온 모델을 재사용하는 방식이 자주 사용된다.
@st.cache_resource
def load_model():
model = ...
model.eval()
return model
이렇게 하면 사용자가 입력을 여러 번 보내더라도 모델을 매번 다시 불러오지 않아도 된다.
2. 사용자 입력
사용자 입력 단계는 웹 화면에서 사용자가 데이터를 업로드하거나 입력하는 과정이다.
입력 형태는 모델의 종류에 따라 달라진다.
- 이미지 모델: 이미지 파일 업로드
- 텍스트 모델: 문장 입력
- 표 데이터 모델: CSV 파일 업로드 또는 수치 입력
예를 들어 이미지 분류 앱에서는 st.file_uploader()를 사용해 이미지를 업로드받을 수 있다.
uploaded_file = st.file_uploader("이미지를 업로드하세요", type=["jpg", "png"])
이후 입력 데이터는 모델에 맞는 형태로 전처리되어야 한다. 이미지라면 크기 조정, 정규화, Tensor 변환 과정이 필요할 수 있다.
3. 결과 출력
결과 출력은 모델이 예측한 값을 사용자에게 보여주는 단계이다.
분류 모델이라면 예측 클래스와 확률을 출력할 수 있다. 객체 탐지 모델이라면 이미지 위에 bounding box를 표시할 수 있다.
Streamlit에서는 st.write(), st.image(), st.metric() 등을 사용하여 결과를 화면에 표시할 수 있다.
st.write("예측 결과:", predicted_class)
st.write("확률:", confidence)
결과를 단순히 텍스트로 보여주는 것보다 이미지, 표, 그래프 등을 함께 활용하면 사용자가 더 쉽게 이해할 수 있다.
전체 흐름 정리
| 단계 | 역할 | 예시 |
|---|---|---|
| 모델 로드 | 학습된 모델을 앱에서 사용할 수 있도록 불러옴 | .pt, .onnx 모델 로드 |
| 사용자 입력 | 사용자가 데이터를 업로드하거나 입력함 | 이미지 업로드, 텍스트 입력 |
| 결과 출력 | 모델의 예측 결과를 화면에 표시함 | 예측 클래스, 확률, 시각화 결과 |
정리
Streamlit을 사용하면 Python 기반 AI 모델을 간단한 웹 애플리케이션 형태로 구현할 수 있다.
모델 로드 단계에서는 학습된 모델을 불러오고, 사용자 입력 단계에서는 예측에 사용할 데이터를 받는다.
마지막으로 결과 출력 단계에서는 모델의 예측 결과를 사용자가 이해하기 쉬운 형태로 보여준다.
이 구조는 빠르게 AI 데모를 만들거나 모델 테스트용 웹 앱을 제작할 때 유용하게 사용할 수 있다.
'데이터 분석' 카테고리의 다른 글
| AI 이미지 분석 서비스 아키텍처 설계 (0) | 2026.06.26 |
|---|---|
| FastAPI로 AI 모델 웹 API를 구현할 때의 서버 코드 구조 (0) | 2026.06.26 |
| 모델 경량화 후 성능 저하를 확인하기 위한 테스트 방법 (0) | 2026.06.19 |
| Post-Training Quantization과 Quantization-Aware Training의 차이 (0) | 2026.06.19 |
| 딥러닝 모델을 ONNX와 TensorRT로 변환하는 이유 (0) | 2026.06.19 |