import gradio as gr from roboflow import Roboflow import tempfile import os # Inisialisasi Roboflow rf = Roboflow(api_key="Otg64Ra6wNOgDyjuhMYU") project = rf.workspace("alat-pelindung-diri").project("nescafe-4base") model = project.version(36).model # Fungsi untuk menangani input dan output gambar def detect_objects(image): # Menyimpan gambar yang diupload sebagai file sementara with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as temp_file: image.save(temp_file, format="JPEG") temp_file_path = temp_file.name # Lakukan prediksi pada gambar predictions = model.predict(temp_file_path, confidence=60, overlap=80).json() # Menghitung jumlah objek per kelas class_count = {} for prediction in predictions['predictions']: class_name = prediction['class'] if class_name in class_count: class_count[class_name] += 1 else: class_count[class_name] = 1 # Menyusun output berupa string hasil perhitungan result_text = "Jumlah objek per kelas:\n" for class_name, count in class_count.items(): result_text += f"{class_name}: {count} objek\n" # Menyimpan gambar dengan prediksi output_image = model.predict(temp_file_path, confidence=60, overlap=80).save("/tmp/prediction.jpg") # Hapus file sementara setelah prediksi os.remove(temp_file_path) return "/tmp/prediction.jpg", result_text # Membuat antarmuka Gradio iface = gr.Interface( fn=detect_objects, # Fungsi yang dipanggil saat gambar diupload inputs=gr.Image(type="pil"), # Input berupa gambar outputs=[gr.Image(), gr.Textbox()], # Output gambar dan teks live=True # Menampilkan hasil secara langsung ) # Menjalankan antarmuka iface.launch()