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) | |