#!/usr/bin/env python # -*- coding: utf-8 -*- """ ------------------------------------------------- @File Name: app.py @Author: yash mohite @Date: 2023/5/15 @Description: ------------------------------------------------- """ 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 # setting page layout st.set_page_config( page_title="Defect Detection with YOLOv8", page_icon="🤖", layout="wide", initial_sidebar_state="expanded" ) # main page heading st.title("Defect Detection with YOLOv8") # sidebar st.sidebar.header("DL Model Config") # model options task_type = st.sidebar.selectbox( "Select Task", ["Rust","Scratch","Fabric"] ) model_type = None model_type = st.sidebar.selectbox( "Select Model", config.DETECTION_MODEL_LIST ) confidence = float(st.sidebar.slider( "Select Model Confidence", 30, 100, 50)) / 100 model_path = "" if model_type: model_path = Path(config.DETECTION_MODEL_DIR, str(model_type)) else: st.error("Please Select Model in Sidebar") # load pretrained DL model try: model = load_model(model_path) except Exception as e: st.error(f"Unable to load model. Please check the specified path: {model_path}") # image/video options st.sidebar.header("Image/Video Config") source_selectbox = st.sidebar.selectbox( "Select Source", 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("Currently only 'Image' and 'Video' source are implemented")