Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -133,10 +133,26 @@ def preprocess_image(image):
|
|
| 133 |
return transform(image).unsqueeze(0)
|
| 134 |
|
| 135 |
|
| 136 |
-
def get_akc_breeds_link(breed):
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
|
| 141 |
|
| 142 |
async def predict_single_dog(image):
|
|
@@ -424,7 +440,6 @@ async def predict(image):
|
|
| 424 |
<span class="value">{description['Lifespan']}</span>
|
| 425 |
</div>
|
| 426 |
</div>
|
| 427 |
-
|
| 428 |
<h2 class="section-title">
|
| 429 |
<span class="icon">๐</span> TEMPERAMENT & PERSONALITY
|
| 430 |
</h2>
|
|
@@ -440,7 +455,6 @@ async def predict(image):
|
|
| 440 |
</span>
|
| 441 |
</span>
|
| 442 |
</div>
|
| 443 |
-
|
| 444 |
<h2 class="section-title">
|
| 445 |
<span class="icon">๐ช</span> CARE REQUIREMENTS
|
| 446 |
</h2>
|
|
@@ -491,7 +505,6 @@ async def predict(image):
|
|
| 491 |
<span class="value">{description['Care Level']}</span>
|
| 492 |
</div>
|
| 493 |
</div>
|
| 494 |
-
|
| 495 |
<h2 class="section-title">
|
| 496 |
<span class="icon">๐จโ๐ฉโ๐งโ๐ฆ</span> FAMILY COMPATIBILITY
|
| 497 |
</h2>
|
|
@@ -511,14 +524,12 @@ async def predict(image):
|
|
| 511 |
<span class="value">{description['Good with Children']}</span>
|
| 512 |
</div>
|
| 513 |
</div>
|
| 514 |
-
|
| 515 |
<h2 class="section-title">
|
| 516 |
<span class="icon">๐</span> DESCRIPTION
|
| 517 |
</h2>
|
| 518 |
<div class="description-section">
|
| 519 |
<p>{description.get('Description', '')}</p>
|
| 520 |
</div>
|
| 521 |
-
|
| 522 |
<div class="action-section">
|
| 523 |
<a href="{get_akc_breeds_link(breed)}" target="_blank" class="akc-button">
|
| 524 |
<span class="icon">๐</span>
|
|
@@ -583,6 +594,7 @@ async def predict(image):
|
|
| 583 |
return error_msg, None, None
|
| 584 |
|
| 585 |
|
|
|
|
| 586 |
def show_details_html(choice, previous_output, initial_state):
|
| 587 |
if not choice:
|
| 588 |
return previous_output, gr.update(visible=True), initial_state
|
|
@@ -804,7 +816,7 @@ def main():
|
|
| 804 |
|
| 805 |
# Footer
|
| 806 |
gr.HTML('''
|
| 807 |
-
For more details on this project and other work, feel free to visit my GitHub
|
| 808 |
<a href="https://github.com/Eric-Chung-0511/Learning-Record/tree/main/Data%20Science%20Projects/Dog_Breed_Classifier">
|
| 809 |
Dog Breed Classifier
|
| 810 |
</a>
|
|
@@ -814,4 +826,4 @@ def main():
|
|
| 814 |
|
| 815 |
if __name__ == "__main__":
|
| 816 |
iface = main()
|
| 817 |
-
iface.launch(share=True)
|
|
|
|
| 133 |
return transform(image).unsqueeze(0)
|
| 134 |
|
| 135 |
|
| 136 |
+
def get_akc_breeds_link(breed: str) -> str:
|
| 137 |
+
"""Generate AKC breed page URL with intelligent name handling"""
|
| 138 |
+
# ๅบๆฌ็ๅญ็ฌฆไธฒ่็
|
| 139 |
+
breed_name = breed.lower()
|
| 140 |
+
|
| 141 |
+
# ่็ๅธธ่ฆ็ๅ็จฑๆ ผๅผ
|
| 142 |
+
breed_name = breed_name.replace('_', '-')
|
| 143 |
+
breed_name = breed_name.replace("'", '')
|
| 144 |
+
breed_name = breed_name.replace(" ", '-')
|
| 145 |
+
|
| 146 |
+
# ่็็นๆฎๆ
ๆณ
|
| 147 |
+
special_cases = {
|
| 148 |
+
'mexican-hairless': 'xoloitzcuintli',
|
| 149 |
+
'brabancon-griffon': 'brussels-griffon',
|
| 150 |
+
'bull-mastiff': 'bullmastiff',
|
| 151 |
+
'walker-hound': 'treeing-walker-coonhound'
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
breed_name = special_cases.get(breed_name, breed_name)
|
| 155 |
+
return f"https://www.akc.org/dog-breeds/{breed_name}/"
|
| 156 |
|
| 157 |
|
| 158 |
async def predict_single_dog(image):
|
|
|
|
| 440 |
<span class="value">{description['Lifespan']}</span>
|
| 441 |
</div>
|
| 442 |
</div>
|
|
|
|
| 443 |
<h2 class="section-title">
|
| 444 |
<span class="icon">๐</span> TEMPERAMENT & PERSONALITY
|
| 445 |
</h2>
|
|
|
|
| 455 |
</span>
|
| 456 |
</span>
|
| 457 |
</div>
|
|
|
|
| 458 |
<h2 class="section-title">
|
| 459 |
<span class="icon">๐ช</span> CARE REQUIREMENTS
|
| 460 |
</h2>
|
|
|
|
| 505 |
<span class="value">{description['Care Level']}</span>
|
| 506 |
</div>
|
| 507 |
</div>
|
|
|
|
| 508 |
<h2 class="section-title">
|
| 509 |
<span class="icon">๐จโ๐ฉโ๐งโ๐ฆ</span> FAMILY COMPATIBILITY
|
| 510 |
</h2>
|
|
|
|
| 524 |
<span class="value">{description['Good with Children']}</span>
|
| 525 |
</div>
|
| 526 |
</div>
|
|
|
|
| 527 |
<h2 class="section-title">
|
| 528 |
<span class="icon">๐</span> DESCRIPTION
|
| 529 |
</h2>
|
| 530 |
<div class="description-section">
|
| 531 |
<p>{description.get('Description', '')}</p>
|
| 532 |
</div>
|
|
|
|
| 533 |
<div class="action-section">
|
| 534 |
<a href="{get_akc_breeds_link(breed)}" target="_blank" class="akc-button">
|
| 535 |
<span class="icon">๐</span>
|
|
|
|
| 594 |
return error_msg, None, None
|
| 595 |
|
| 596 |
|
| 597 |
+
|
| 598 |
def show_details_html(choice, previous_output, initial_state):
|
| 599 |
if not choice:
|
| 600 |
return previous_output, gr.update(visible=True), initial_state
|
|
|
|
| 816 |
|
| 817 |
# Footer
|
| 818 |
gr.HTML('''
|
| 819 |
+
For more details on this project and other work, feel free to visit my GitHub
|
| 820 |
<a href="https://github.com/Eric-Chung-0511/Learning-Record/tree/main/Data%20Science%20Projects/Dog_Breed_Classifier">
|
| 821 |
Dog Breed Classifier
|
| 822 |
</a>
|
|
|
|
| 826 |
|
| 827 |
if __name__ == "__main__":
|
| 828 |
iface = main()
|
| 829 |
+
iface.launch(share=True, debug=True)
|