|
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]: |
|
infer_uploaded_image(confidence, model) |
|
elif source_selectbox == config.SOURCES_LIST[1]: |
|
infer_uploaded_video(confidence, model) |
|
elif source_selectbox == config.SOURCES_LIST[2]: |
|
infer_uploaded_webcam(confidence, model) |
|
else: |
|
st.error("Выберите источник.") |
|
|