Spaces:
Sleeping
Sleeping
import gradio as gr | |
from timeit import default_timer as timer | |
from transformers import pipeline | |
m1='models/3labels' | |
m2='models/2labels' | |
modelList=[m2,m1] | |
def classifier(modelName,img): | |
startTime=timer() | |
pipe = pipeline(task="image-classification", | |
model=modelName | |
) | |
preds = pipe(img) | |
result={} | |
for pred in preds: | |
if pred["label"] == "zhazu": | |
result["炸组"] = pred["score"] | |
elif pred["label"] == "versailles": | |
result["凡尔赛"] = pred["score"] | |
else: | |
result["正常"] = pred["score"] | |
#result[pred["label"]] = pred["score"] | |
endTime=timer() | |
predTime=round(endTime-startTime,4) | |
return result,predTime | |
css=''' | |
#main {background-color: #ffffff;opacity: 0.8;background-image: repeating-linear-gradient(45deg, #edffe1 25%, transparent 25%, transparent 75%, #edffe1 75%, #edffe1), repeating-linear-gradient(45deg, #edffe1 25%, #ffffff 25%, #ffffff 75%, #edffe1 75%, #edffe1); | |
background-position: 0 0, 40px 40px;background-size: 80px 80px;} | |
#mainContainer {max-width: 700px; margin-left: auto; margin-right: auto;background-color:transparent;} | |
#btn {border: 2px solid #3ed6e500; margin-left: auto; margin-right: auto;background-color:#3ed6e500;border-radius: 5px; | |
:hover{ | |
color: #92ccd8; } } | |
#bg {border:2px solid #888;background-color:#fff;border-radius: 5px;} | |
''' | |
APP = gr.Blocks(css=css) | |
APP.encrypt = False | |
with APP: | |
with gr.Column(elem_id="main"): | |
with gr.Column(elem_id="mainContainer"): | |
gr.HTML(''' | |
<div align=center> | |
<img src="https://huggingface.co/Ailyth/2_Labels/resolve/main/banner.png"/> | |
</div><br> | |
<p style="font-size:12.5px">🎆这是一个可以给烹饪作品打分的工具,以豆瓣炸厨房组热门/精华帖中的作品为标准<br> | |
😂功能主要是判断烹饪作品是否“炸组风”<br> | |
当然结果并不十分严谨,纯玩耍用 | |
<br><br/> | |
<b>使用方法</b><br> | |
点击下面输入框即可上传图片,等待片刻后即可出结果。其中有两个模型,分别可判断三种标签(炸组、正常、凡尔赛)和两种标签(炸组,正常)。<br> | |
希望大家都做饭愉快,吃的开心。</p> | |
''') | |
imgUpload=gr.components.Image(type="filepath", label="选择图片",elem_id="bg") | |
modelSelect=gr.components.Radio(choices=modelList,label="选择预测模型:(第一个模型是两个分类,第二个是三个分类)",value=m2,elem_id="bg") | |
btn=gr.Button(value='💥提交',elem_id="btn") | |
predResult=gr.components.Label(num_top_classes=3,label="预测结果",elem_id="bg") | |
predTime=gr.Number(label="实际预测耗时 (秒)",elem_id="bg") | |
btn.click(classifier,inputs=[modelSelect,imgUpload], outputs=[predResult,predTime]) | |
gr.HTML(''' | |
<br/> | |
<p> 一些补充<br> | |
由于食物本身是一个复杂的集合概念,失败的烹饪作品和成功的烹饪作品又属于其子集,都有很多特征,判断起来很复杂,加上本功能所用的模型训练样本有限,所有检测结果经常翻车。</p>''') | |
gr.HTML('''<div align=center><img id="visitor-badge" alt="visitor badge" src="https://visitor-badge.laobi.icu/badge?page_id=Ailyth/ZhazuClassifier" /></div>''') | |
APP.launch(debug=True) | |