DawnC commited on
Commit
6471bf7
·
1 Parent(s): f182a56

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -22
app.py CHANGED
@@ -233,34 +233,16 @@ def predict(image):
233
  if top1_prob >= 0.5:
234
  predicted = topk_indices[0][0]
235
  breed = dog_breeds[predicted.item()]
236
- description = get_dog_description(breed)
237
- akc_link = get_akc_breeds_link()
238
-
239
- if isinstance(description, dict):
240
- description_str = "\n\n".join([f"**{key}**: {value}" for key, value in description.items()])
241
- else:
242
- description_str = description
243
-
244
- # 添加AKC連結
245
- description_str += f"\n\n**Want to learn more about dog breeds?** [Visit the AKC dog breeds page]({akc_link}) and search for {breed} to find detailed information."
246
-
247
- # 添加免責聲明
248
- disclaimer = ("\n\n*Disclaimer: The external link provided leads to the American Kennel Club (AKC) dog breeds page. "
249
- "You may need to search for the specific breed on that page. "
250
- "I am not responsible for the content on external sites. "
251
- "Please refer to the AKC's terms of use and privacy policy.*")
252
- description_str += disclaimer
253
-
254
- return description_str
255
 
256
  else:
257
- # 信心不足50%,返回top 3的預測結果並附加連結
258
  topk_breeds = [dog_breeds[idx.item()] for idx in topk_indices[0]]
259
  topk_probs_percent = [f"{prob.item() * 100:.2f}%" for prob in topk_probs[0]]
260
 
261
- # 構建每個品種的連結和預測機率
262
  topk_results = "\n\n".join(
263
- [f"**{i+1}. [{breed}](https://www.akc.org/dog-breeds/{quote(breed)})** ({prob} confidence)"
264
  for i, (breed, prob) in enumerate(zip(topk_breeds, topk_probs_percent))]
265
  )
266
 
@@ -273,9 +255,35 @@ def predict(image):
273
  )
274
 
275
  return explanation
 
276
  except Exception as e:
277
  return f"An error occurred: {e}"
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  iface = gr.Interface(
280
  fn=predict,
281
  inputs=gr.Image(label="Upload a dog image", type="numpy"),
 
233
  if top1_prob >= 0.5:
234
  predicted = topk_indices[0][0]
235
  breed = dog_breeds[predicted.item()]
236
+ return get_breed_info(breed)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
238
  else:
239
+ # 信心不足50%,返回top 3的預測結果,並且當點擊時能查看詳細資訊
240
  topk_breeds = [dog_breeds[idx.item()] for idx in topk_indices[0]]
241
  topk_probs_percent = [f"{prob.item() * 100:.2f}%" for prob in topk_probs[0]]
242
 
243
+ # 提供每個品種的回調函數
244
  topk_results = "\n\n".join(
245
+ [f"**{i+1}. [Click here to view more about {breed}](#) ({prob} confidence)**"
246
  for i, (breed, prob) in enumerate(zip(topk_breeds, topk_probs_percent))]
247
  )
248
 
 
255
  )
256
 
257
  return explanation
258
+
259
  except Exception as e:
260
  return f"An error occurred: {e}"
261
 
262
+ def get_breed_info(breed):
263
+ """
264
+ 返回指定狗品種的詳細資訊,類似於 >=50% 信心時的結果。
265
+ """
266
+ description = get_dog_description(breed)
267
+ akc_link = get_akc_breeds_link()
268
+
269
+ if isinstance(description, dict):
270
+ description_str = "\n\n".join([f"**{key}**: {value}" for key, value in description.items()])
271
+ else:
272
+ description_str = description
273
+
274
+ # 添加AKC連結
275
+ description_str += f"\n\n**Want to learn more about dog breeds?** [Visit the AKC dog breeds page]({akc_link}) and search for {breed} to find detailed information."
276
+
277
+ # 添加免責聲明
278
+ disclaimer = ("\n\n*Disclaimer: The external link provided leads to the American Kennel Club (AKC) dog breeds page. "
279
+ "You may need to search for the specific breed on that page. "
280
+ "I am not responsible for the content on external sites. "
281
+ "Please refer to the AKC's terms of use and privacy policy.*")
282
+ description_str += disclaimer
283
+
284
+ return description_str
285
+
286
+
287
  iface = gr.Interface(
288
  fn=predict,
289
  inputs=gr.Image(label="Upload a dog image", type="numpy"),