Spaces:
Sleeping
Sleeping
from fastai.vision.all import * | |
from io import BytesIO | |
import requests | |
import streamlit as st | |
""" | |
# 香蕉病害分類 | |
""" | |
""" | |
#### 健康香蕉葉示例 | |
""" | |
img1 = Image.open('/home/user/app/healthy_1.jpg') | |
img2 = Image.open('/home/user/app/healthy_2.jpg') | |
img3 = Image.open('/home/user/app/healthy_3.jpg') | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.image(img1, caption="healthy_1", use_column_width=True) | |
with col2: | |
st.image(img2, caption="healthy_2", use_column_width=True) | |
with col3: | |
st.image(img3, caption="healthy_3", use_column_width=True) | |
""" | |
#### 香蕉葉斑病(Black sigatoka;Black leaf streak) | |
病原菌學名:Mycosphaerella fijiensis (= M. fijiensis var. fijiensis ) | |
目前仍被視為危害全球香蕉產區最嚴重之病害,對香蕉作物之生存威脅至鉅。此病不但直接危害蕉株葉片,影響蕉株健葉數,導致產期延後或減產。 | |
亦可間接造成香蕉外銷船運期間,因採收株葉片數不足,引發蕉果果齡偏高過熟而黃化廢棄。最早於1963年被報導發生於斐濟,國內最早記載於1927年,但缺乏考證。 | |
1960年代在國內蕉區大流行,曾造成相當嚴重之損失,惟自1978年賽洛瑪颱風,高屏蕉區被夷為平地後,舊蕉園葉斑病菌初期感染源密度明顯降低, | |
加上全面執行葉部病害防治作業後,葉斑病發生地區由屏東往高雄旗山主產區逐年減少,目前僅侷限於臺灣東半部台東關山以北至花蓮壽豐之間,在西半部僅零星發生於高雄美濃至台南楠西一帶。 | |
病徵:初期病徵通常出現在第3或第4片葉背面,為紅棕色小條斑,大約5~10 ×0.1~1公厘,與葉脈平行,通常集中在葉片左側和葉尖部位。 | |
之後條斑擴大變黑,同時亦出現在葉表面。至中期條斑擴大而呈橢圓形褐斑,周圍有黃色暈圈。至後期轉呈黑褐色或黑色病斑,而後病斑中間開始變灰色。受害葉片提早枯死。 | |
""" | |
img1 = Image.open('/home/user/app/sigatoka_1.jpg') | |
img2 = Image.open('/home/user/app/sigatoka_2.jpg') | |
img3 = Image.open('/home/user/app/sigatoka_3.jpg') | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.image(img1, caption="sigatoka_1", use_column_width=True) | |
with col2: | |
st.image(img2, caption="sigatoka_2", use_column_width=True) | |
with col3: | |
st.image(img3, caption="sigatoka_3", use_column_width=True) | |
""" | |
#### 圓星病(Cordana leaf spot) | |
病原菌學名:Cordana musae(Zimm.)Hohnel | |
分布極廣,但屬輕微葉部病害。當葉片弱化、老化、處逆境、營養不良、有傷口或受其他生物感染時,危害較明顯。 | |
病斑大,橢圓形,呈同心圓,淡褐色或黃色。病斑中心為灰色、周圍繞有鮮黃色暈圈; | |
病斑有時會融合擴大,或在葉片邊緣銜接而使整個葉緣枯掉,本病通常只在老葉發生。 | |
防治方法:葉部黑星病防治藥劑對本病皆有防治效果。 | |
""" | |
img1 = Image.open('/home/user/app/cordana_1.jpg') | |
img2 = Image.open('/home/user/app/cordana_2.jpg') | |
img3 = Image.open('/home/user/app/cordana_3.jpg') | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.image(img1, caption="cordana_1", use_column_width=True) | |
with col2: | |
st.image(img2, caption="cordana_2", use_column_width=True) | |
with col3: | |
st.image(img3, caption="cordana_3", use_column_width=True) | |
""" | |
#### 擬盤多毛胞屬真菌病害(Pestalotiopsis) | |
著名的植物病原體品種,主要分布於熱帶地區,可危害多種果樹,於貯後病害紀錄如檬果、番石榴、荔枝、酪梨等皆曾發現,也常引起水果的果腐病。 | |
病徵:感染葉片則出現淡黃褐色病斑,表面散生黑色小點,此為分生孢子盤構造,常發生於破損葉片或生長勢較弱的植株; | |
受感染植株在新梢的修剪傷口附近可見病班,病斑表面黑色小點突起,為分生孢子盤內有分生孢子,可由表面頂點孔處釋出。 | |
""" | |
img1 = Image.open('/home/user/app/pestalotiopsis_1.jpg') | |
img2 = Image.open('/home/user/app/pestalotiopsis_2.jpg') | |
img3 = Image.open('/home/user/app/pestalotiopsis_3.jpg') | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.image(img1, caption="pestalotiopsis_1", use_column_width=True) | |
with col2: | |
st.image(img2, caption="pestalotiopsis_2", use_column_width=True) | |
with col3: | |
st.image(img3, caption="pestalotiopsis_3", use_column_width=True) | |
def predict(img): | |
st.image(img, caption="Your image", use_column_width=True) | |
pred, key, probs = learn_inf.predict(img) | |
# st.write(learn_inf.predict(img)) | |
f""" | |
## This **{'is cordana' if pred == 'cordana' else 'is pestalotiopsis' if pred == 'pestalotiopsis' else 'is sigatoka' if pred == 'sigatoka' else 'is healthy'}** banana leaf. | |
### Prediction result: {pred} | |
### Probability of {pred}: {probs[key].item()*100: .2f}% | |
""" | |
path = "./" | |
learn_inf = load_learner(path + "demo_model.pkl") | |
option = st.radio("", ["Upload Image", "Image URL"]) | |
if option == "Upload Image": | |
uploaded_file = st.file_uploader("Please upload an image.") | |
if uploaded_file is not None: | |
img = PILImage.create(uploaded_file) | |
predict(img) | |
else: | |
url = st.text_input("Please input a url.") | |
if url != "": | |
try: | |
response = requests.get(url) | |
pil_img = PILImage.create(BytesIO(response.content)) | |
predict(pil_img) | |
except: | |
st.text("Problem reading image from", url) | |