ZhazuClassifier / app.py
Ailyth's picture
Update app.py
6949120
raw
history blame contribute delete
No virus
3.41 kB
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)