File size: 3,614 Bytes
339b3e3 24537c6 30766cf 339b3e3 24537c6 339b3e3 30766cf 339b3e3 30766cf 339b3e3 30766cf 339b3e3 24537c6 339b3e3 30766cf 339b3e3 30766cf 339b3e3 24537c6 339b3e3 |
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 |
import os
import openai
import streamlit as st
from PIL import Image
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
import numpy as np
# Configuration
UPLOAD_FOLDER = 'static/uploads'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
TARGET_SIZE = (256, 256)
# OpenAI API Key (make sure to keep this key secure and not expose it in public repositories)
OPENAI_API_KEY = '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'
openai.api_key = OPENAI_API_KEY
# Ensure the upload folder exists
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
# Load trained model
MODEL_PATH = 'desnet2.h5'
model = load_model(MODEL_PATH)
classes = [
'American Bollworm on Cotton', 'Anthracnose on Cotton', 'Aphids', 'Army worm', 'Carpetweeds', 'Crabgrass', 'Eclipta',
'Flag Smut', 'Goosegrass', 'Healthy', 'Leaf Curl', 'Leaf smut', 'Morningglory', 'Mosaic sugarcane', 'Nutsedge', 'PalmerAmaranth',
'Powdery_Mildew', 'Prickly Sida', 'Purslane', 'Ragweed', 'RedRot sugarcane', 'RedRust sugarcane', 'Rice Blast', 'Sicklepod',
'SpottedSpurge', 'SpurredAnoda', 'Sugarcane Healthy', 'Swinecress', 'Target_spot', 'Tungro', 'Waterhemp', 'Wheat Brown leaf Rust',
'Wheat Stem fly', 'Wheat aphid', 'Wheat black rust', 'Wheat leaf blight', 'Wheat mite', 'Wheat powdery mildew', 'Wheat scab',
'Wheat___Yellow_Rust', 'Wilt', 'Yellow Rust Sugarcane', 'bacterial_blight in Cotton', 'bollrot on Cotton', 'bollworm on Cotton',
'cotton mealy bug', 'cotton whitefly', 'curl_virus', 'fussarium_wilt', 'maize ear rot', 'maize fall armyworm', 'maize stem borer',
'pink bollworm in cotton', 'red cotton bug', 'thirps on cotton'
]
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
def predict_disease(image_path, model):
test_image = image.load_img(image_path, target_size=TARGET_SIZE)
test_image = image.img_to_array(test_image)
test_image = test_image / 255
test_image = np.expand_dims(test_image, axis=0)
result = model.predict(test_image)
result = result.ravel()
index = np.argmax(result)
pred = str(classes[index])
return pred
def get_disease_info(disease_name):
response = openai.Completion.create(
engine="text-davinci-003",
prompt=f"Explain the cause and solution for the following cotton plant disease: {disease_name}",
max_tokens=150
)
return response.choices[0].text.strip()
# Streamlit app
st.title("Cotton Disease Detection")
st.write("Upload an image to detect the disease.")
uploaded_file = st.file_uploader("Choose an image...", type=["png", "jpg", "jpeg"])
if uploaded_file is not None:
if allowed_file(uploaded_file.name):
# Save the uploaded file to the upload folder
image_path = os.path.join(UPLOAD_FOLDER, uploaded_file.name)
with open(image_path, "wb") as f:
f.write(uploaded_file.getbuffer())
# Resize the image
img = Image.open(image_path)
img = img.resize(TARGET_SIZE)
img.save(image_path)
# Predict the disease
prediction = predict_disease(image_path, model)
# Display the uploaded image
st.image(image_path, caption='Uploaded Image.', use_column_width=True)
st.write(f"Prediction: {prediction}")
# Get disease information from OpenAI GPT
disease_info = get_disease_info(prediction)
st.write("Disease Information:")
st.write(disease_info)
else:
st.write("Please upload an image file (png, jpg, jpeg).")
else:
st.write("No file uploaded.")
|