Willky commited on
Commit
a396d8d
·
verified ·
1 Parent(s): d7d3902

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +66 -0
  2. requirements.txt +5 -0
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from ultralytics import YOLO
3
+ import requests
4
+ import cv2
5
+ import os
6
+
7
+ # Load model YOLOv8 resmi (ringan dan otomatis diunduh oleh Hugging Face)
8
+ model = YOLO('yolov8n.pt')
9
+
10
+ # Alamat server HP kamu via tunnel
11
+ URL_HP_SERVER = "https://caf39abf042b9d.lhr.life/api/upload"
12
+
13
+ def deteksi_dan_kirim_ke_hp(gambar):
14
+ if gambar is None:
15
+ return None, "Silakan unggah foto terlebih dahulu."
16
+
17
+ # 1. Jalankan Deteksi AI YOLOv8
18
+ results = model(gambar)
19
+ hasil = results[0]
20
+
21
+ # Gambar bounding box hasil deteksi
22
+ gambar_hasil = hasil.plot()
23
+ output_path = "temp_result.jpg"
24
+ cv2.imwrite(output_path, cv2.cvtColor(gambar_hasil, cv2.COLOR_RGB2BGR))
25
+
26
+ # Ekstrak nama objek dan persentase akurasinya
27
+ label_terdeteksi = []
28
+ for box in hasil.boxes:
29
+ cls_id = int(box.cls[0])
30
+ nama_objek = model.names[cls_id]
31
+ conf = float(box.conf[0])
32
+ label_terdeteksi.append(f"{nama_objek} ({conf*100:.1f}%)")
33
+
34
+ keterangan = ", ".join(label_terdeteksi) if label_terdeteksi else "Tidak ada objek terdeteksi"
35
+
36
+ # 2. Kirim File Gambar & Info Deteksi ke Server HP
37
+ status_pengiriman = ""
38
+ try:
39
+ with open(output_path, 'rb') as f:
40
+ files = {'image': ('hasil_deteksi.jpg', f, 'image/jpeg')}
41
+ data = {'info': keterangan}
42
+ response = requests.post(URL_HP_SERVER, files=files, data=data, timeout=15)
43
+
44
+ if response.status_code == 200:
45
+ status_pengiriman = f"Tersimpan di HP! Info: {keterangan}"
46
+ else:
47
+ status_pengiriman = f"Gagal simpan ke HP (Kode: {response.status_code})"
48
+ except Exception as e:
49
+ status_pengiriman = f"Gagal menghubungi HP: {str(e)}"
50
+
51
+ return cv2.cvtColor(gambar_hasil, cv2.COLOR_BGR2RGB), status_pengiriman
52
+
53
+ # Tampilan Web UI
54
+ demo = gr.Interface(
55
+ fn=deteksi_dan_kirim_ke_hp,
56
+ inputs=gr.Image(type="numpy", label="Unggah Gambar"),
57
+ outputs=[
58
+ gr.Image(label="Hasil Deteksi YOLOv8"),
59
+ gr.Textbox(label="Status Home Server HP")
60
+ ],
61
+ title="Sistem Deteksi AI + Home Storage HP",
62
+ description="Komputasi AI diproses di Hugging Face (Cloud), file disimpan fisik di HP (Termux)."
63
+ )
64
+
65
+ if __name__ == "__main__":
66
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ ultralytics
2
+ requests
3
+ gradio
4
+ opencv-python-headless
5
+ pillow