Vicky000's picture
Update app.py
034f4cf verified
raw
history blame
5.5 kB
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)