acnedetection / app.py
ahmadalfian's picture
Update app.py
45fd911 verified
raw
history blame
1.65 kB
import gradio as gr
import numpy as np
from PIL import Image, ImageDraw
from ultralytics import YOLO
# Muat model YOLO
model = YOLO('best.pt') # Pastikan path ini benar
# Fungsi untuk melakukan deteksi jerawat
def detect_acne(image):
# Mengonversi gambar PIL ke format numpy
img_np = np.array(image)
# Deteksi jerawat
results = model.predict(source=img_np, imgsz=640)
# Menggambar kotak deteksi pada gambar
draw = ImageDraw.Draw(image)
for result in results:
boxes = result.boxes
if boxes is not None and len(boxes.xyxy) > 0:
for i, box in enumerate(boxes.xyxy):
x1, y1, x2, y2 = box[:4]
conf = boxes.conf[i] if boxes.conf is not None and len(boxes.conf) > i else None
# Menggambar kotak dan confidence score
draw.rectangle([x1, y1, x2, y2], outline="red", width=2)
if conf is not None:
draw.text((x1, y1 - 10), f'{conf:.2f}', fill="red")
return image
# Membuat interface Gradio
interface = gr.Interface(fn=detect_acne, inputs=gr.Image(type="pil"), outputs="image", title="Deteksi Jerawat dengan YOLOv8")
# Meluncurkan aplikasi dengan URL publik dan port yang tersedia
if __name__ == "__main__":
try:
# Coba meluncurkan aplikasi pada port 7861
interface.launch(server_port=7861, share=True) # Mengaktifkan URL publik untuk dibagikan
except OSError:
# Jika port 7861 tidak tersedia, jalankan pada port acak yang tersedia
interface.launch(server_name="0.0.0.0", share=True) # Mengaktifkan URL publik dengan port acak