YOLOv5实战记录 Gradio搭建Web GUI
转自:https://blog.csdn.net/EmileJiao/article/details/137448176

最终的:
import torch
import gradio as gr
model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")
title="基于Gradio的YOLOv5演示项目"
desc="这是一个基于YOLOv5的项目,非常简洁。"
base_conf,base_iou=0.25,0.45
def det_image(img,conf_thres,iou_thres):
model.conf=conf_thres
model.iou=iou_thres
return model(img).render()[0]
gr.Interface(inputs=["image",gr.Slider(maximum=1,minimum=0,value=base_conf),gr.Slider(maximum=1,minimum=0,value=base_iou)],
outputs=["image"],
fn=det_image,
title=title,
description=desc,
live =True,
examples=[["./datasets/images/train/30.jpg",base_conf,base_iou],["./datasets/images/train/60.jpg",base_conf,base_iou]]
).launch(share=True)
#live=True, 可以实现实时检测,不需要点击submit。
# inputs=["image"] 映射,组件调用。实际上调用了gr.Image()
#创建slider时,并没有显式绑定。这是因为fn会绑定input和output input中的三个参数,对应了det_image的三个传参。
初始:
import torch
import gradio as gr
model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")
gr.Interface(inputs=["image"],
outputs=["image"],
fn= lambda img:model(img).render()[0], ).launch()
# inputs=["image"] 映射,组件调用。实际上调用了gr.Image()

我们继续完善页面,添加标题,添加conf-thres 和iou-thres两个参数的滚动条,代码如下:
import torch
import gradio as gr
model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")
title="基于Gradio的YOLOv5演示项目" #标题
desc="这是一个基于YOLOv5的项目,非常简洁。" #描述
def det_image(img,conf_thres,iou_thres):
model.conf=conf_thres #conf代表置信度阈值,数值越低框越多。
model.iou=iou_thres #代表IOU阈值,数值越低框越少,越高框越多。
return model(img).render()[0]
gr.Interface(inputs=["image","slider","slider"],
outputs=["image"],
fn=det_image,
title=title,
description=desc).launch()
#inputs=["image"] 映射,组件调用。实际上调用了gr.Image()
#创建slider时,并没有显式绑定。这是因为fn会绑定input和output input中的三个参数,对应了det_image的三个传参。
现在这样有个问题,conf和iou是0-100之间的数,我们需要设置成0-1,可以直接给
model.conf=conf_thres/100
model.iou=iou_thres/100
但是这种方法不够好,我们可以改善组件本身。
将“slider”改为:gr.Slider(maximum=1,minimum=0) 可以设置默认值: base_conf,base_iou=0.25,0.45 gr.Slider(maximum=1,minimum=0,value=base_conf)
继续完善界面,我们可以预先放几个案例,供用户选择。
添加examples=[["./datasets/images/train/30.jpg",base_conf,base_iou],["./datasets/images/train/60.jpg",base_conf,base_iou]]
如果想调用摄像头检测,将inputs=["image" 改为 inputs=[gr.Webcam() 即可
现在我们每次检测都需要点击submit才可以。在gr.Interface()中添加live=True,可以实现实时检测,不需要点击submit,程序会自动检测,显示出结果。

浙公网安备 33010602011771号