File size: 3,412 Bytes
b4354e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6949120
 
b4354e4
d087391
b4354e4
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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)