首页 > 其他分享 >YOLOv5实战记录 Gradio搭建Web GUI

YOLOv5实战记录 Gradio搭建Web GUI

时间:2024-08-23 11:15:39浏览次数:7  
标签:Web YOLOv5 gr Gradio iou base conf thres image

转自: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

相关文章

  • C# WebSocket Fleck 源码解读
    最近在维护公司旧项目,偶然发现使用Fleck实现的WebSocket主动推送功能,(由于前端页面关闭时WebSocketServer中执行了多次OnClose事件回调并且打印了大量的关闭日志,),后来我特地看了源码,这里做一些分享github: https://github.com/statianzo/Fleck 在源码中,作者在Samples项目中......
  • HtmlUnit:自动化操作web页面的java工具
    java有httpclient等工具,可以模拟进行一些web操作,但一些逻辑是在前端js中执行的,此时httpclient就比较困难了。此时可以考虑使用HtmlUnit,模拟出一个浏览器,全程在浏览器中操作。 本文以在百度中输入搜索关键字->点击“百度一下”按钮->打印搜索结果这一过程为例,演示HtmlUnit的......
  • Javaweb+jsp外卖点餐系统+源码(三)
    第三章详细设计3.1 用户的主界面用户的主菜单界面。页面如图3-1所示:图3-1 用户的主界面3.2用户注册页面用户在首次登录外卖订餐系统管理页面时,需要在注册页面需要完成个人信息的注册。页面如图3-2所示:图3-2外卖订餐系统的注册页面3.3用户登录界面用户通......
  • WebAPI中写单元测试
    首次在WebAPI中写单元测试xUnit这次我使用的是xUnit测试框架,而不是VS自带的MSTest框架。在添加新建项目时选择xUnit测试项目就行了。目前只体验到了一个差别,即xUnit可以使用特性向测试方法传参,而不用在测试方法中一个赋值语句一个个去定义参数,这是比较方便的。单元测试有一个......
  • ubuntu18安装novnc实现web远程桌面
    1.安装基础软件sudoaptinstall-ygit 2.下载novncsudogitclonegit://github.com/kanaka/noVNC/opt/novnc 3.修改权限sudochown-R$USER:$USER/opt/novnc 4.安装并运行vnc服务sudoaptinstall-ytightvncserversudovncserver 5.生成证书......
  • 【待做】【ByPass系列】php的webshell绕过方法总结
    原创掌控安全EDU一、php的异或运算$a="~+d()"^"!{+{}"这个表示了$a=这两个字符串之间进行一个异或运算运算异或运算符,按二进制位进行异或运算这里的运算会把符号转化为ascii码,再转化为二进制,再转化为十进制进行运算,再把结果转化为ascii码通过这个转换的方式来绕过检测<......
  • 【HW系列+技战法】内存马的Webshell联合对抗技战法
    原创BeatRex的成长记录一、技战法概述二、Webshell对抗手段2.1落地文件型Webshell检测与对抗2.1无文件型内存马检测与对抗2.3Webshell免杀对抗一、技战法概述Webshell是黑客经常使用的一种后门,其目的是获得服务器的执行操作权限,常见的Webshell编写语言为A......
  • 推荐一款强大的Web前端项目工程框架,实战检验很强大,高效稳定(附源码)
     前言在当前的Web前端开发领域,开发者经常面临如何快速构建高效、稳定、可维护的大型中台系统的问题。现有的解-决方案往往存在study曲线陡峭、组件库不够丰富、开发效率低下等痛点。为了解决这些问题,MyUI应运而生,提供了一个丰富、高效的Web前端项目工程框架。介绍MyUI是......
  • BiFinance链接未来金融将传统资产与WEB3生态的融合之路
    2024年8月20日,我们举办了一场名为“BiFinance链接未来金融将传统资产与WEB3生态的融合之路”的TwitterSpace活动: BiFinance介绍:BiFinance是一家领先的全球数字资产交易平台,致力于通过创新的区块链技术将传统金融资产与Web3生态系统紧密结合。自成立以来,BiFinance一直在推动......
  • .net8 的webapi部署到华为云的操作
    首先还是打包到文件夹:我的服务器是X64的centos8系统,所以我的配置如图: 发布后,我没有用它的dockerfile,而是用的docker-compose去编写的docker脚本,如下:services:ticket_manager_Api:#服务名称container_name:ticket_manager_Api#容器名称hostname:ticke......