snake-early / app.py
AmitPress
update new weight file
d2025fc
raw
history blame
2.09 kB
from ultralytics import YOLO
import streamlit as st
from PIL import Image
import requests
from bs4 import BeautifulSoup
model = YOLO('resource/best_yolov8x.pt')
classes = ['Acrochordus-granulatus', 'Ahaetulla-nasuta', 'Ahaetulla-prasina', 'Argyrogena-fasciolata', 'Boiga-cyanea', 'Boiga-cynodon', 'Boiga-multomaculata', 'Boiga-trigonata', 'Bungarus-caeruleus', 'Bungarus-fasciatus', 'Cerberus-rynchops', 'Chrysopelea-ornata', 'Coelognathus-radiatus', 'Daboia-russelii', 'Dendrelaphis-cyanochloris', 'Dendrelaphis-pictus', 'Dendrelaphis-tristis', 'Echis-carinatus', 'Enhydris-enhydris', 'Fordonia-leucobalia', 'Fowlea-piscator', 'Gerarda-prevostiana', 'Homalopsis-buccata', 'Hydrophis-platurus', 'Indotyphlops-braminus', 'Laticauda-colubrina', 'Laticauda-laticaudata', 'Lycodon-aulicus', 'Macropisthodon-plumbicolor', 'Malayopython-reticulatus', 'Naja-kaouthia', 'Naja-naja', 'Oligodon-arnensis', 'Oreocryptophis-porphyraceus', 'Ovophis-monticola', 'Psammodynastes-pulverulentus', 'Ptyas-korros', 'Ptyas-mucosa', 'Python-bivittatus', 'Rhabdophis-subminiatus', 'Sinomicrurus-macclellandi', 'Trimeresurus-albolabris', 'Trimeresurus-erythrurus', 'Trimeresurus-popeiorum', 'Xenochrophis-piscator', 'Nil-object']
col1, col2 = st.columns([2,1])
col1.title('Snake Detection System')
photo = col2.file_uploader('Upload an Image (JPEG)', type='jpg')
if photo:
col2.success('Successfully Uploaded')
col1.image(photo)
image = Image.open(photo)
try:
bx = model(image)[0].boxes[0]
col1.write(f"Result: {(classes[int(bx.cls[0])])}")
txt = classes[int(bx.cls[0])]
genus, species = txt.split('-')
data = requests.get(f'https://reptile-database.reptarium.cz/species?genus={genus}&species={species}')
bs = BeautifulSoup(data.content, 'html.parser')
desc = bs.find('td', string='Comment').find_next_sibling('td').text
col1.write(desc)
except:
col1.write(f"Result: Could not detect")
else:
col1.write('Please Upload an Image of a Snake')
col1.write('Result will be shown as soon as the image is uploaded')