본문 바로가기
데이터 분석

Streamlit으로 AI 모델을 웹 애플리케이션에 통합하는 과정

by hidden-state 2026. 6. 26.

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 데모를 만들거나 모델 테스트용 웹 앱을 제작할 때 유용하게 사용할 수 있다.