转自: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,程序会自动检测,显示出结果。
标签:Web,YOLOv5,gr,Gradio,iou,base,conf,thres,image From: https://www.cnblogs.com/sweeeper/p/18375631