Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| from PIL import Image | |
| # Memuat model tetap sama | |
| model = pipeline("image-classification", model="wellCh4n/tomato-leaf-disease-classification-vit", top_k=10) | |
| # Fungsi klasifikasi tetap sama | |
| def classify(image): | |
| if image is None: | |
| # Menambahkan pengecekan untuk gambar kosong untuk stabilitas | |
| return None | |
| if not isinstance(image, Image.Image): | |
| image = Image.fromarray(image) | |
| predictions = model(image) | |
| # Mengubah format output agar sesuai dengan yang diharapkan oleh gr.Label | |
| confidences = {p['label']: p['score'] for p in predictions} | |
| return confidences | |
| # --- PERUBAHAN UTAMA: Membangun UI dengan gr.Blocks --- | |
| with gr.Blocks(theme=gr.themes.Soft()) as app: | |
| gr.Markdown( | |
| """ | |
| # Analisis Penyakit Tanaman 🍅 | |
| Unggah gambar daun tanaman untuk mengidentifikasi potensi penyakit. | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(): | |
| # 1. Definisikan komponen input gambar secara manual | |
| image_input = gr.Image(type="pil", label="Unggah Gambar Daun") | |
| # 2. Definisikan tombol untuk memulai analisis | |
| submit_button = gr.Button("Analisis Gambar", variant="primary") | |
| with gr.Column(): | |
| # 3. Definisikan komponen output label secara manual | |
| label_output = gr.Label(label="Hasil Analisis") | |
| # 4. Hubungkan aksi tombol 'click' dengan fungsi 'classify' | |
| # Di sinilah kita mendefinisikan API secara eksplisit dan solid | |
| submit_button.click( | |
| fn=classify, | |
| inputs=image_input, | |
| outputs=label_output, | |
| api_name="predict" # Nama API sekarang terikat pada aksi, bukan interface | |
| ) | |
| # Meluncurkan aplikasi tetap sama | |
| app.launch(show_api=True) |