Spaces:
Sleeping
Sleeping
File size: 2,786 Bytes
eae42ce | 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 | import gradio as gr
from transformers import pipeline
import wikipedia
# Opsional: Mengatur pencarian Wikipedia ke bahasa Indonesia
wikipedia.set_lang("id")
# 1. LOAD MODEL KHUSUS TANAMAN
print("Sedang memuat model FloraSense...")
# Catatan: Jika model ini belum tersedia, Anda juga bisa memakai "google/vit-base-patch16-224"
classifier = pipeline("image-classification", model="Sisigoks/FloraSense")
def identify_plant(image):
if image is None:
return None, "β οΈ Silakan masukkan gambar terlebih dahulu."
# Model melakukan prediksi
predictions = classifier(image)
# Format output untuk bar persentase (Progress Bar)
confidences = {p["label"]: p["score"] for p in predictions}
# Ambil label tanaman dengan probabilitas tertinggi untuk dicari di Wikipedia
top_plant = predictions[0]["label"]
# 2. PENCARIAN WIKIPEDIA
try:
# Mengambil 2 kalimat pertama dari Wikipedia
wiki_summary = wikipedia.summary(top_plant, sentences=2)
wiki_text = f"### π Tahukah Anda?\n**{top_plant.title()}**: {wiki_summary}"
except wikipedia.exceptions.DisambiguationError:
wiki_text = f"### π Info Wikipedia\nAda banyak arti untuk **{top_plant}**. Silakan cari secara spesifik."
except wikipedia.exceptions.PageError:
# Jika tidak ditemukan di Wikipedia Indonesia, beri pesan khusus
wiki_text = f"### π Info Wikipedia\nMaaf, informasi tentang **{top_plant}** belum tersedia di Wikipedia saat ini."
except Exception:
wiki_text = "### π Info Wikipedia\nGagal terhubung ke server Wikipedia."
return confidences, wiki_text
# 3. MEMBUAT ANTARMUKA GRADIO
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("""
<h1 style='text-align: center;'>πΏ Flora Lens: AI Plant Identifier</h1>
<p style='text-align: center;'>Ambil foto tanaman dari kamera Anda, dan AI akan mendeteksi spesiesnya beserta info dari Wikipedia.</p>
""")
with gr.Row():
with gr.Column():
# PARAMETER BARU: sources=["webcam", "upload"] memunculkan icon kamera dan folder
inp_img = gr.Image(type="pil", sources=["webcam", "upload"], label="π· Ambil Foto / π Upload Gambar")
btn = gr.Button("π Identifikasi & Cari Info", variant="primary")
with gr.Column():
out_label = gr.Label(num_top_classes=3, label="π Hasil Prediksi AI")
out_wiki = gr.Markdown(label="Info Tambahan")
# Menghubungkan tombol dengan fungsi (sekarang outputs ada dua: label dan teks wiki)
btn.click(fn=identify_plant, inputs=inp_img, outputs=[out_label, out_wiki])
if __name__ == "__main__":
demo.launch() |