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('''

🎆这是一个可以给烹饪作品打分的工具,以豆瓣炸厨房组热门/精华帖中的作品为标准
😂功能主要是判断烹饪作品是否“炸组风”
当然结果并不十分严谨,纯玩耍用

使用方法
点击下面输入框即可上传图片,等待片刻后即可出结果。其中有两个模型,分别可判断三种标签(炸组、正常、凡尔赛)和两种标签(炸组,正常)。
希望大家都做饭愉快,吃的开心。

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

一些补充
由于食物本身是一个复杂的集合概念,失败的烹饪作品和成功的烹饪作品又属于其子集,都有很多特征,判断起来很复杂,加上本功能所用的模型训练样本有限,所有检测结果经常翻车。

''') gr.HTML('''
visitor badge
''') APP.launch(debug=True)