yaroslavski88's picture
Upload 24 files
3f67d40
raw history blame
No virus
2.76 kB
from pathlib import Path
from PIL import Image
import streamlit as st
import config
from utils import load_model, infer_uploaded_image, infer_uploaded_video, infer_uploaded_webcam
st.set_page_config(
page_title="Интерактивный интерфейс для YOLOv8",
page_icon="🤖",
layout="wide",
initial_sidebar_state="expanded"
)
# заголовок главной страницы
st.title("Интерактивный интерфейс для YOLOv8")
st.sidebar.header("Настройка модели DL")
# опции модели
task_type = st.sidebar.selectbox(
"Выберите задачу",
config.DETECTION_TASK_LIST
)
model_type = None
if task_type == "Обнаружение транспорта":
model_type = st.sidebar.selectbox(
"Выберите модель",
config.DETECTION_MODEL_CAR_LIST
)
elif task_type == "Обнаружение гос.номера автомобиля":
model_type = st.sidebar.selectbox(
"Выберите модель",
config.DETECTION_MODEL_GN_LIST
)
elif task_type == "Сегментация":
model_type = st.sidebar.selectbox(
"Выберите модель",
config.DETECTION_MODEL_SEG_LIST
)
elif task_type == "Обнаружение объектов":
model_type = st.sidebar.selectbox(
"Выберите модель",
config.DETECTION_MODEL_OTHER_LIST
)
else:
st.error("Другие функции пока не реализованы")
confidence = float(st.sidebar.slider(
"Выберите уверенность модели", 1, 100, 50)) / 100
model_path = ""
if model_type:
model_path = Path(config.DETECTION_MODEL_DIR, str(model_type))
else:
st.error("Пожалуйста, выберите модель на боковой панели")
# загрузка обученной модели
try:
model = load_model(model_path)
except Exception as e:
st.error(f"Не удалось загрузить модель. Пожалуйста, проверьте указанный путь: {model_path}")
# Настройка изображения/видео
st.sidebar.header("Настройка изображения/видео")
source_selectbox = st.sidebar.selectbox(
"Выберите источник",
config.SOURCES_LIST
)
source_img = None
if source_selectbox == config.SOURCES_LIST[0]: # Image
infer_uploaded_image(confidence, model)
elif source_selectbox == config.SOURCES_LIST[1]: # Video
infer_uploaded_video(confidence, model)
elif source_selectbox == config.SOURCES_LIST[2]: # Webcam
infer_uploaded_webcam(confidence, model)
else:
st.error("Выберите источник.")