YOLOv5实战记录 Gradio搭建Web GUI

news/2024/11/16 14:49:26/文章来源:https://www.cnblogs.com/sweeeper/p/18375631

转自:https://blog.csdn.net/EmileJiao/article/details/137448176

最终的:

import torch
import gradio as grmodel=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.45def det_image(img,conf_thres,iou_thres):model.conf=conf_thresmodel.iou=iou_thresreturn 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 grmodel=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 grmodel=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.45gr.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,程序会自动检测,显示出结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786002.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火山引擎VeDI实验平台助推企业量化决策能力升级

DataTester技术团队基于并行化的Leiden算法,快速处理亿级用户的复杂社交网络,完成基于社交圈的聚类分流。 更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 量化决策,正成为企业在数智化浪潮中掌握方向的必备之舵。通过“拍脑袋”式的…

基础组件:文本及样式

一、Text Text 用于显示简单样式文本,它包含一些控制文本显示样式的一些属性,一个简单的例子如下: Text("Hello world",textAlign: TextAlign.left, );Text("Hello world! Im Jack. "*4,maxLines: 1,overflow: TextOverflow.ellipsis, );Text("Hel…

设计模式[5]-代理模式

代码:https://gitee.com/Aes_yt/design-pattern代理模式 代理模式需要给某对象提供一个代理来访问该对象。是客户端和目标对象之间的一个媒介。 代理模式主要包括三种角色抽象主题:接口或抽象类,有着业务方法,可以让真实主题和代理对象来实现。 真实主题:实现了抽象主题的…

设计模式[2]-工厂模式

代码:https://gitee.com/Aes_yt/design-pattern工厂模式 1. 简单工厂模式 简单工厂模式主要包括三种角色:简单工厂 : 创建具体产品 抽象产品 : 具体产品的父类 具体产品 : 简单工厂创建的对象例子: 设计一个游戏机类(GameConsole) 作为抽象产品,然后设计具体的产品(Plan…

2021-12-29-md1

代码:https://gitee.com/Aes_yt/design-pattern代理模式 代理模式需要给某对象提供一个代理来访问该对象。是客户端和目标对象之间的一个媒介。 代理模式主要包括三种角色抽象主题:接口或抽象类,有着业务方法,可以让真实主题和代理对象来实现。 真实主题:实现了抽象主题的…

dubbo[3]_注解配置

本文介绍注解方式配置dubbo的例子。 服务提供Provider 1. 定义接口Animal和实现类CatAnimal: public interface Animal {/*** 描述: 返回动物的叫声*/String sound(); }Cat: package com.yt.provider;import com.alibaba.dubbo.config.annotation.Service;@Service(timeout = 5…

dubbo[2]_XML配置

本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。 1. zookeeper下载安装 本文的例子使用zookeeper作为注册中心。 首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/rele…

2021-05-13-md1

本文介绍注解方式配置dubbo的例子。 服务提供Provider 1. 定义接口Animal和实现类CatAnimal: public interface Animal {/*** 描述: 返回动物的叫声*/String sound(); }Cat: package com.yt.provider;import com.alibaba.dubbo.config.annotation.Service;@Service(timeout = 5…

2021-05-12-md1

本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。 1. zookeeper下载安装 本文的例子使用zookeeper作为注册中心。 首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/rele…

Myslq千万级数据量查询

两千四百万数据量SQL查询没有索引时 如果字段无索引,耗时十分钟无索引查询过程 MySQL 需要对 2400 万条数据一一进行比较,假设每条记录的处理时间为 0.025 ms,那么总查询时间大约为 10 分钟(即 2400 万 0.025 ms)。 •全表扫描: 当查询 kh = 03356129487 时,如果表上没有…

001.MinIO简介

MinIO 简介 MinIO 是天然的云原生存储,可以作为轻量级容器运行,由相关编排服务(如 Kubernetes )管理。 整个服务器是一个不到100MB的静态二进制文件,并且在使用CPU和内存资源方面即使在高负载场景也非常高效,因此可以在共享硬件上共同托管大量租户。 MinIO 可以在任何地方和…

转载:国产麒麟v10、UOS系统在线比较两个Word文件的内容差异

调用PageOffice的WordCompare方法,同时在线打开两个Word文档,可以切换显示其中的一个文档,或者显示两个文档的对比结果,即可实现在线的文档内容比较功能。此功能可以应用在以下方面: 文档管理中,比较两个版本Word文档的差别。 在处理文档管理的Web项目中,比较两个版本的…