PawMatchAI / breed_detection.py
DawnC's picture
Update breed_detection.py
de606c8 verified
raw
history blame
5.56 kB
import re
import gradio as gr
from PIL import Image
# def create_detection_tab(predict_fn, example_images):
# with gr.TabItem("Breed Detection"):
# gr.HTML("""
# <div style='
# text-align: center;
# padding: 20px 0;
# margin: 15px 0;
# background: linear-gradient(to right, rgba(66, 153, 225, 0.1), rgba(72, 187, 120, 0.1));
# border-radius: 10px;
# '>
# <p style='
# font-size: 1.2em;
# margin: 0;
# padding: 0 20px;
# line-height: 1.5;
# background: linear-gradient(90deg, #4299e1, #48bb78);
# -webkit-background-clip: text;
# -webkit-text-fill-color: transparent;
# font-weight: 600;
# '>
# Upload a picture of a dog, and the model will predict its breed and provide detailed information!
# </p>
# <p style='
# font-size: 0.9em;
# color: #666;
# margin-top: 8px;
# padding: 0 20px;
# '>
# Note: The model's predictions may not always be 100% accurate, and it is recommended to use the results as a reference.
# </p>
# </div>
# """)
# with gr.Row():
# input_image = gr.Image(label="Upload a dog image", type="pil")
# output_image = gr.Image(label="Annotated Image")
# output = gr.HTML(label="Prediction Results")
# initial_state = gr.State()
# input_image.change(
# predict_fn,
# inputs=input_image,
# outputs=[output, output_image, initial_state]
# )
# gr.Examples(
# examples=example_images,
# inputs=input_image
# )
# return {
# 'input_image': input_image,
# 'output_image': output_image,
# 'output': output,
# 'initial_state': initial_state
# }
def create_detection_tab(predict_fn, example_images):
# 首先定義CSS樣式
custom_css = """
/* 標籤樣式 */
.tab-nav {
padding: 0 !important;
margin-bottom: 20px !important;
border-bottom: 1px solid #e2e8f0 !important;
}
/* 所有標籤的基本樣式 */
.tab-nav button {
padding: 12px 16px !important;
margin: 0 8px !important;
font-size: 1.1em !important;
font-weight: 500 !important;
transition: all 0.3s ease !important;
border-bottom: 2px solid transparent !important;
background: none !important;
position: relative !important;
}
/* 被選中的標籤樣式 */
.tab-nav button.selected {
color: #4299e1 !important;
border-bottom: 2px solid #4299e1 !important;
background: linear-gradient(to bottom, rgba(66, 153, 225, 0.1), transparent) !important;
}
/* hover 效果 */
.tab-nav button:hover {
color: #4299e1 !important;
background: rgba(66, 153, 225, 0.05) !important;
}
"""
with gr.Blocks(css=custom_css) as detection_tab:
with gr.TabItem("Breed Detection"):
gr.HTML("""
<div style='
text-align: center;
padding: 20px 0;
margin: 15px 0;
background: linear-gradient(to right, rgba(66, 153, 225, 0.1), rgba(72, 187, 120, 0.1));
border-radius: 10px;
'>
<p style='
font-size: 1.2em;
margin: 0;
padding: 0 20px;
line-height: 1.5;
background: linear-gradient(90deg, #4299e1, #48bb78);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: 600;
'>
Upload a picture of a dog, and the model will predict its breed and provide detailed information!
</p>
<p style='
font-size: 0.9em;
color: #666;
margin-top: 8px;
padding: 0 20px;
'>
Note: The model's predictions may not always be 100% accurate, and it is recommended to use the results as a reference.
</p>
</div>
""")
with gr.Row():
input_image = gr.Image(label="Upload a dog image", type="pil")
output_image = gr.Image(label="Annotated Image")
output = gr.HTML(label="Prediction Results")
initial_state = gr.State()
input_image.change(
predict_fn,
inputs=input_image,
outputs=[output, output_image, initial_state]
)
gr.Examples(
examples=example_images,
inputs=input_image
)
return {
'input_image': input_image,
'output_image': output_image,
'output': output,
'initial_state': initial_state
}