Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from ultralytics import YOLO | |
| import PIL.Image | |
| from groq import Groq | |
| import os | |
| # 1. Initialize YOLO and Groq | |
| # Make sure "best.pt" is uploaded to your Hugging Face Space | |
| model = YOLO("best.pt") | |
| client = Groq(api_key=os.environ.get("Bot")) | |
| def get_urdu_advice(disease_name): | |
| """Fetches cure and advice in Urdu from Groq LLM""" | |
| prompt = f"The plant has been diagnosed with {disease_name}. Please provide a brief description of this disease and its cure in Urdu language for a farmer." | |
| completion = client.chat.completions.create( | |
| model="llama-3.1-8b-instant", | |
| messages=[{"role": "user", "content": prompt}], | |
| ) | |
| return completion.choices[0].message.content | |
| def predict_and_advise(input_img): | |
| # Detection | |
| results = model.predict(source=input_img, conf=0.25) | |
| res_plotted = results[0].plot() | |
| # Get the name of the top detected disease | |
| if len(results[0].boxes) > 0: | |
| # Extract class name of the first detection | |
| class_id = int(results[0].boxes.cls[0]) | |
| disease_name = results[0].names[class_id] | |
| urdu_advice = get_urdu_advice(disease_name) | |
| else: | |
| disease_name = "No disease detected" | |
| urdu_advice = "پودا صحت مند لگ رہا ہے یا کوئی بیماری نہیں ملی۔" | |
| # Convert BGR to RGB for output | |
| output_img = PIL.Image.fromarray(res_plotted[:, :, ::-1]) | |
| return output_img, urdu_advice | |
| # 3. Gradio Blocks UI | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# 🌾 AgriBot PK: Rice Disease Detector") | |
| gr.Markdown("پودے کی تصویر اپ لوڈ کریں تاکہ بیماری کی شناخت ہو سکے اور علاج معلوم کیا جا سکے۔") | |
| with gr.Row(): | |
| input_file = gr.Image(type="pil", label="Upload Leaf Image") | |
| output_image = gr.Image(type="pil", label="Detected Disease") | |
| urdu_text = gr.Textbox(label="Disease Info & Cure (Urdu)", lines=10) | |
| submit_btn = gr.Button("Detect & Get Advice") | |
| submit_btn.click(fn=predict_and_advise, inputs=input_file, outputs=[output_image, urdu_text]) | |
| demo.launch() | |