Spaces:
Runtime error
Runtime error
File size: 4,036 Bytes
e9e5323 c1115fd c9ce858 97b86b5 2ccd650 94239c6 97b86b5 c1115fd c9ce858 c1115fd c9ce858 c1115fd 97b86b5 b2bee1d d5cf266 b2bee1d d5cf266 c9ce858 0492776 360336c ddab68e e280fa2 28026d6 d5cf266 0492776 5e3b678 e46d69b 0492776 7e7ca04 b2bee1d 18b3e22 7e7ca04 0492776 6b95018 b2bee1d d5cf266 a9dc373 b2bee1d 0492776 c9ce858 6b95018 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import os
import torch
import urllib
from PIL import Image
import streamlit as st
from pathlib import Path
def check_suffix(file='yolov5s.pt', suffix=('.pt',), msg=''):
# Check file(s) for acceptable suffix
if file and suffix:
if isinstance(suffix, str):
suffix = [suffix]
for f in file if isinstance(file, (list, tuple)) else [file]:
s = Path(f).suffix.lower() # file suffix
if len(s):
assert s in suffix, f"{msg}{f} acceptable suffix is {suffix}"
def check_file(file, suffix=''):
# Search/download file (if necessary) and return path
check_suffix(file, suffix) # optional
file = str(file) # convert to str()
if os.path.isfile(file) or not file: # exists
return file
elif file.startswith(('http:/', 'https:/')): # download
url = file # warning: Pathlib turns :// -> :/
# '%2F' to '/', split https://url.com/file.txt?auth
file = Path(urllib.parse.unquote(file).split('?')[0]).name
if os.path.isfile(file):
print(f'Found {url} locally at {file}') # file already exists
else:
print(f'Downloading {url} to {file}...')
torch.hub.download_url_to_file(url, file)
assert Path(file).exists() and Path(file).stat(
).st_size > 0, f'File download failed: {url}' # check
return file
# def read_pretrain(path):
# return torch.hub.load('ultralytics/yolov5', 'custom', path=path)
# default_pretrained = '2022.11.04-YOLOv5x6_1280-Hololive_Waifu_Classification.pt'
st.title("Hololive Waifu Classification")
image = st.text_input('Image URL', '')
st.info(
'Images for quick tesing:\n \n \n'
' - https://i.imgur.com/tFZwWYw.jpg'
'\n \n \n'
' - https://static.wikia.nocookie.net/omniversal-battlefield/images/b/bd/Council.jpg'
'\n \n \n'
' - https://rare-gallery.com/uploads/posts/951368-anime-anime-girls-digital-art-artwork-2D-portrait.jpg'
'\n \n \n'
' - https://megapx-assets.dcard.tw/images/65993ab1-fe08-43be-87cd-2ecd201cacbd/1280.jpeg'
'\n \n \n'
' - https://img.esportsku.com/wp-content/uploads//2021/07/hololive-en.png')
pretrained = st.selectbox('Select pre-trained', ('2022.11.04-YOLOv5x6_1280-Hololive_Waifu_Classification.pt', '2022.11.01-YOLOv5x6_1280-Hololive_Waifu_Classification.pt'))
imgsz = st.number_input(label='Image Size', min_value=None, max_value=None, value=1280, step=1)
conf = st.slider(label='Confidence threshold', min_value=0.0, max_value=1.0, value=0.25, step=0.01)
iou = st.slider(label='IoU threshold', min_value=0.0, max_value=1.0, value=0.45, step=0.01)
multi_label = st.selectbox('Multiple labels per box', (False, True))
agnostic = st.selectbox('Class-agnostic', (False, True))
amp = st.selectbox('Automatic Mixed Precision inference', (False, True))
max_det = st.number_input(label='Maximum number of detections per image', min_value=None, max_value=None, value=1000, step=1)
clicked = st.button('Excute')
# with st.spinner('Loading the model...'):
# model = read_pretrain(default_pretrained)
if clicked:
with st.spinner('Loading the image...'):
image_path = check_file(image)
input_image = Image.open(image_path)
# if default_pretrained != pretrained:
with st.spinner('Loading the model...'):
# model = torch.hub.load('ultralytics/yolov5', 'custom', path=os.path.join('pretrained', pretrained))
# model = torch.hub.load('ultralytics/yolov5', 'custom', path=pretrained)
model = read_pretrain(pretrained)
with st.spinner('Updating configuration...'):
model.conf = float(conf)
model.max_det = int(max_det)
model.iou = float(iou)
model.agnostic = agnostic
model.multi_label = multi_label
model.amp = amp
with st.spinner('Predicting...'):
results = model(input_image, size=int(imgsz))
for img in results.render():
st.image(img)
st.write(results.pandas().xyxy[0])
os.remove(image_path)
|