cuziycloud commited on
Commit
7293209
·
verified ·
1 Parent(s): c18c336

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -17
app.py CHANGED
@@ -16,7 +16,6 @@ print("Tải model và processor thành công!")
16
  model.eval()
17
 
18
  # --- Phần 3: Định nghĩa hàm dự đoán chính ---
19
- # (Hàm này sẽ được gọi mỗi khi người dùng nhấn nút Submit)
20
  def predict(image):
21
  # Dùng processor để xử lý ảnh đầu vào thành định dạng mà mô hình có thể hiểu
22
  inputs = processor(images=image, return_tensors="pt")
@@ -25,28 +24,18 @@ def predict(image):
25
  # torch.no_grad() giúp chạy nhanh hơn vì không cần tính toán cho việc training
26
  with torch.no_grad():
27
  outputs = model(**inputs)
28
-
29
- # Lấy ra điểm số thô (logits) từ kết quả của mô hình
30
  logits = outputs.logits
31
-
32
- # Tìm ra VỊ TRÍ của giống chó có điểm số (logit) cao nhất
33
- predicted_class_idx = logits.argmax(-1).item()
34
-
35
- # Dùng vị trí đó để tra cứu TÊN THẬT của giống chó trong "cuốn sổ" của mô hình
36
- breed_name = model.config.id2label[predicted_class_idx]
37
-
38
- # Tính toán ĐIỂM TIN CẬY (xác suất) cho giống chó đó
39
- # Bằng cách áp dụng hàm softmax rồi lấy ra giá trị tại vị trí đã dự đoán
40
- confidence_score = torch.nn.functional.softmax(logits, dim=1)[0][predicted_class_idx].item()
41
-
42
- # Định dạng kết quả trả về dưới dạng chuỗi văn bản đẹp mắt, ví dụ: "beagle (17.7%)"
43
- return f"{breed_name} ({confidence_score:.1%})"
44
 
45
  # --- Phần 4: Tạo và khởi chạy giao diện người dùng với Gradio ---
46
  iface = gr.Interface(
47
  fn=predict,
48
  inputs=gr.Image(type="pil", label="Tải ảnh chú chó của bạn lên đây"),
49
- outputs=gr.Textbox(label="Kết quả dự đoán"),
50
  title="AI Nhận Diện Giống Chó 🐶",
51
  description="Ứng dụng này sử dụng mô hình AI 'Dog-Breed-120' để nhận diện 120 giống chó khác nhau. Hãy thử tải một bức ảnh lên!",
52
  )
 
16
  model.eval()
17
 
18
  # --- Phần 3: Định nghĩa hàm dự đoán chính ---
 
19
  def predict(image):
20
  # Dùng processor để xử lý ảnh đầu vào thành định dạng mà mô hình có thể hiểu
21
  inputs = processor(images=image, return_tensors="pt")
 
24
  # torch.no_grad() giúp chạy nhanh hơn vì không cần tính toán cho việc training
25
  with torch.no_grad():
26
  outputs = model(**inputs)
 
 
27
  logits = outputs.logits
28
+ probs = torch.nn.functional.softmax(logits,dim=1).squeeze()
29
+ top_idx = probs.argmax().item()
30
+ label = model.config.id2lael[top_idx]
31
+ confidence = probs[top_idx].item()
32
+ return f"{label} ({round(confidence*100, 1)}%)"
 
 
 
 
 
 
 
 
33
 
34
  # --- Phần 4: Tạo và khởi chạy giao diện người dùng với Gradio ---
35
  iface = gr.Interface(
36
  fn=predict,
37
  inputs=gr.Image(type="pil", label="Tải ảnh chú chó của bạn lên đây"),
38
+ outputs="text",
39
  title="AI Nhận Diện Giống Chó 🐶",
40
  description="Ứng dụng này sử dụng mô hình AI 'Dog-Breed-120' để nhận diện 120 giống chó khác nhau. Hãy thử tải một bức ảnh lên!",
41
  )