yolov5交互式界面 通用界面-yolo-pyqt-gui(通用界面制作+代码-V5.0-6.0版本)

"YOLOv5交互式界面 - 通用界面-YOLO-PyQt-GUI" 它为YOLOv5的目标检测模型提供了一个用户友好的图形化操作界面。该项目通常基于Python的PyQt库构建,用于封装YOLOv5的功能,并将其转化为可视化工具,使得非专业开发人员也能便捷地使用YOLOv5进行图像或视频中目标的实时检测。

具体来说,该通用界面的主要功能可能包括:

1. 文件上传:用户可以直接在界面上加载图片或视频文件,无需通过命令行接口。

2. 实时预览:对接YOLOv5模型,实现实时视频流的人工智能目标检测,展示带有边界框和类别标签的结果。

3. 检测参数设置:允许用户自定义YOLOv5运行时的各种参数,如模型权重文件路径、输入尺寸、置信度阈值、非极大抑制阈值等。

4. 结果保存:用户可以保存检测结果,包括标注后的图片或者检测到的目标信息。

项目对YOLOv5模型应用的普及和推广有着重要作用,降低了使用者的技术门槛,让AI技术更加贴近实际应用场景,方便用户在无需深入理解YOLOv5内部原理的情况下,快速部署和使用目标检测功能。此GUI界面能适配YOLOv5在这两个主要版本间的更新变化。

yolo GUI OYQT界面——


YOLOv5-GUI是一款专为YOLOv5(包括版本5和版本6)目标检测算法设计开发的图形用户界面(GUI)工具,采用强大的Qt框架构建。该工具汲取了Javacr大神在UI设计与逻辑方面的精华理念,旨在为广大用户提供更为直观、便捷且高效的YOLOv5模型训练、测试和应用体验。

YOLOv5-GUI拥有深色和浅色两种主题风格供用户自由选择,满足不同场景下的视觉需求。深色模式有助于降低长时间使用电脑时的眼部疲劳,而浅色模式则适合在各种光照条件下保持清晰舒适的视觉效果。

此GUI工具集成了YOLOv5的核心功能,包括但不限于模型加载、参数配置、数据集管理、训练过程可视化监控、实时视频目标检测以及结果展示等环节。用户无需通过命令行操作,只需通过点击和拖拽等方式即可完成复杂的深度学习任务,极大降低了YOLOv5的使用门槛。

在实际应用中,YOLOv5-GUI能够帮助科研人员、开发者以及广大AI爱好者更高效地利用YOLOv5算法进行目标检测项目的研究与实践,无论是对已有的公开数据集进行模型训练优化,还是针对特定场景定制目标检测解决方案,都能轻松应对。

代码使用

切换到项目目录:
bash
cd [PyQt5-YOLOv5_V5/PyQt5-YOLOv5_V6]
 接下来,安装所需的环境依赖:
bash
pip install -r requirements.txt
现在,你可以启动应用程序:
bash
python run.py

该GUI应用程序默认采用深色模式,但如果你想切换到浅色模式,只需在run.py文件中将main_ui_dark修改为main_ui_light即可。

这个GUI应用程序提供了许多功能和选项,可以帮助你使用YOLOv5更加方便和高效。你可以在界面上进行图像处理、对象检测等操作。另外,你也可以根据自己的需求对代码进行定制和扩展。

总的来说,这个项目为使用YOLOv5提供了一个直观和友好的界面,使得用户能够更轻松地利用这一强大的目标检测工具。希望你能享受使用这个GUI应用程序,并从中获得更多的收获和乐趣!

重要代码

 def run(self,
            imgsz=640,  # inference size (pixels)
            iou_thres=0.45,  # NMS IOU threshold
            max_det=1000,  # maximum detections per image
            device='',  # cuda device, i.e. 0 or 0,1,2,3 or cpu
            view_img=True,  # show results
            save_txt=False,  # save results to *.txt
            save_conf=False,  # save confidences in --save-txt labels
            save_crop=False,  # save cropped prediction boxes
            nosave=False,  # do not save images/videos
            classes=None,  # filter by class: --class 0, or --class 0 2 3
            agnostic_nms=False,  # class-agnostic NMS
            augment=False,  # augmented inference
            visualize=False,  # visualize features
            update=False,  # update all models
            project='runs/detect',  # save results to project/name
            name='exp',  # save results to project/name
            exist_ok=False,  # existing project/name ok, do not increment
            line_thickness=3,  # bounding box thickness (pixels)
            hide_labels=False,  # hide labels
            hide_conf=False,  # hide confidences
            half=False,  # use FP16 half-precision inference
            dnn=False,  # use OpenCV DNN for ONNX inference
            ):

        # Initialize
        device = select_device(device)
        half &= device.type != 'cpu'  # half precision only supported on CUDA

        # Load model
        model = DetectMultiBackend(self.weights, device=device, dnn=dnn)
        num_params = 0
        for param in model.parameters():
            num_params += param.numel()
        stride, names, pt, jit, onnx, engine = model.stride, model.names, model.pt, model.jit, model.onnx, model.engine
        imgsz = check_img_size(imgsz, s=stride)  # check image size
        names = model.module.names if hasattr(model, 'module') else model.names  # get class names
        if half:
            model.half()  # to FP16

        # Dataloader
        if self.source.isnumeric():
            view_img = check_imshow()
            cudnn.benchmark = True  # set True to speed up constant image size inference
            dataset = LoadStreams(self.source, img_size=imgsz, stride=stride, auto=pt and not jit)
            bs = len(dataset)  # batch_size
        else:
            dataset = LoadImages(self.source, img_size=imgsz, stride=stride, auto=pt and not jit)
            bs = 1  # batch_size
        vid_path, vid_writer = [None] * bs, [None] * bs

        # Run inference
        # model.warmup(imgsz=(1, 3, *imgsz), half=half)  # warmup
        dt, seen = [0.0, 0.0, 0.0], 0
        for path, im, im0s, self.vid_cap, s in dataset:
            statistic_dic = {name: 0 for name in names}
            t1 = time_sync()
            im = torch.from_numpy(im).to(device)
            im = im.half() if half else im.float()  # uint8 to fp16/32
            im /= 255  # 0 - 255 to 0.0 - 1.0
            if len(im.shape) == 3:
                im = im[None]  # expand for batch dim
            t2 = time_sync()
            dt[0] += t2 - t1

            # Inference
            pred = model(im, augment=augment)
            t3 = time_sync()
            dt[1] += t3 - t2

            # NMS
            pred = non_max_suppression(pred, self.conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)
            dt[2] += time_sync() - t3

            for i, det in enumerate(pred):  # detections per image
                im0 = im0s.copy()
                annotator = Annotator(im0, line_width=line_thickness, example=str(names))
                if len(det):
                    det[:, :4] = scale_coords(im.shape[2:], det[:, :4], im0.shape).round()
                    for c in det[:, -1].unique():
                        n = (det[:, -1] == c).sum()  # detections per class
                        s += f"{n} {names[int(c)]}{'s' * (n > 1)}, "  # add to string

                    for *xyxy, conf, cls in reversed(det):
                        c = int(cls)  # integer class
                        statistic_dic[names[c]] += 1
                        label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')
                        annotator.box_label(xyxy, label, color=colors(c, True))


            time.sleep(1/40)
            # print(type(im0s))
            self.send_img.emit(im0)
            self.send_raw.emit(im0s if isinstance(im0s, np.ndarray) else im0s[0])
            self.send_statistic.emit(statistic_dic)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超越接口:探索Dubbo的泛化调用机制

欢迎来到我的博客,代码的世界里,每一行都是一个故事 超越接口:探索Dubbo的泛化调用机制 前言泛化调用的概念Dubbo 中泛化调用的工作原理泛化实现动态RPC泛化调用的高级用法参数和返回值处理异常处理和错误处理策略 controller实践 前言 在现…

为什么 MySQL 采用 B+ 树作为索引?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 「为什么 MySQL 采用 B 树作为索引?」这句话,是不是在面试时经常出现。 要解释这个问题,其实不单单要从数据结构的角度出发,还要考虑磁盘 I/O 操作次数&am…

C语言-函数指针-快速排序算法(书籍示例-入门)

概述 使用C语言,实现结构体多元素,排序算法(冒泡排序),这里使用示例:书籍示例讲解 函数简介 函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 参…

一维差分数组

797. 差分 输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n和 m 第二行包含 n个整数,表示整数序…

Redis Stack 安装部署

参考:Run Redis Stack on Docker | Redis Redis-stack 初体验_redis stack-CSDN博客 【docker】运行redis_docker run redis-stack-server requirepass-CSDN博客 Redis Stack 是一组软件套件,它主要由三部分组成。 一个是 Redis Stack Server&#x…

【HTB】 OpenSource

OpenSource 靶机地址:https://app.hackthebox.com/machines/471 信息收集 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV -p- 10.129.212.208 --min-rate5000 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-08 16:01 CST Nmap scan report f…

Nginx服务 重写功能与反向代理

六、重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regular expression),因此编译之前要安装PCRE库,rewrite是nginx服务器的重要功能之一,用于实现URL的…

Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换

Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换坐标转换是游戏开发过程中必不可少的环节 看下图 世界坐标、屏幕坐标、UI 坐标 三种坐标系的转换过程,此文章中的 UI 坐标特指 UGUI 坐标 从上图可以看到,世界坐标 和 UI 坐标 需要通过 屏幕坐标作为中间转…

MemberPress配置和使用会员登录页面

目录 隐藏 创建会员登录页面 编辑登录页面 设计您的登录页面 链接到您的登录页面 创建会员登录页面 要创建MemberPress会员登录页面,您需要做的就是导航到 MemberPress > 设置 > 页面选项卡,然后在页面顶部附近的“MemberPress 登录页面”…

面试官脑子有病系列:为什么 HashMap 是线程不安全的?

文章目录 前言HashMap为啥线程不安全?HashMap线程不安全的根本原因put 方法中的非原子性操作扩容时的非原子性操作 安全的HashMap总结 前言 Hi,大家好,我是王二蛋。 我们在面试的时候,经常会被问到一些有的没的、看似高深但与日…

科技型中小企业怎么做

在当今快速发展的科技时代,科技型中小企业扮演着越来越重要的角色。这些企业不仅推动了技术创新,还为经济增长和社会进步做出了巨大贡献。那么,科技型中小企业应如何制定并执行其发展战略呢? 1. 明确定位与战略规划 对于任何企业…

SD-WAN为出海电商提供了什么支持

出海电商行业的持续发展与壮大,使得网络连接的稳定性和效率成为其成功的关键因素。SD-WAN(软件定义广域网)作为一种先进的网络解决方案,为出海电商提供了诸多优势和支持。 首先,SD-WAN通过智能路由技术,能够…

华火电焰灶测评:电焰灶十大品牌哪个好?实力排名怎么样?

华火新能源电焰灶作为现代厨房技术的一大创新,近年来受到了广泛关注。在新能源电焰灶市场中,目前只有华火品牌具有独立研发、独立生产、品质背书、完善服务等雄厚的综合实力;而华火品牌凭借其独特的技术和优势,与其他传统燃气灶品…

EDM邮件群发推广多少钱?有哪些优势?

电子邮件营销(Electronic Direct Mail, EDM)以其高性价比、精准定向与可度量效果的优势,成为众多企业不可或缺的营销策略。云衔科技,作为企业数字广告营销和SaaS软件服务的领军者,以其创新的智能EDM邮件营销系统解决方…

2024 工业物联网通信与网络安全国际学术会议(IIOTNS 2024)

【会议英文官网】:www.iiotns2024.org 【会议时间】: 2024年5月10-12日 【一轮截稿时间】: 2024年3月10-12日 所有于一轮截稿时间之前投稿,后续通过审核并被大会录用的稿件享早鸟优惠:单篇立减400元!&am…

如何快速识别陶瓷件的外观缺陷吗?

陶瓷件由陶瓷材料制成的物品或零部件,通常用于装饰、日常生活用品、工艺品或工业应用。陶瓷是一种非金属材料,具有耐高温、耐磨损、绝缘、化学稳定等特性,因此在许多领域得到广泛应用。 本案针对陶瓷件尺寸长25mm*宽11mm*高2mm的产品的外观检…

HarmonyOS 应用开发-ArkUI事件机制

ArkUI提供了事件机制,这些事件提供了不同的信息用于处理程序交互逻辑,ArKUI事件按照功能来讲,可以分为以下几种: 点击事件触摸事件挂载卸载事件拖拽事件按键事件焦点事件鼠标事件组件区域变化事件组件可见区域变化事件组件快捷键…

C++ primer 第十八章

C语言的三大特性:异常处理、命名空间、多重继承。 1.异常处理 异常处理机制允许我们能够将问题的检测与解决过程分离开来。 1.1、抛出异常 在C语言中,我们通过抛出一条表达式来引发一个异常。 当执行一个throw时,程序的控制权从throw转移…

T527 Qt 触摸 ----- TSLIB

一、调试 1、驱动路径 bsp/drivers/input/ctp/gt9xx/gt9xx_ts.c 2、硬件接口 挂载在TWI0下 3、中断复位脚 4、设备树 &twi0 {clock-frequency <400000>;pinctrl-0 <&twi0_pins_default>;pinctrl-1 <&twi0_pins_sleep>;pinctrl-names &quo…

SpringBoot 定时任务实践、定时任务按指定时间执行

Q1. springboot怎样创建定时任务&#xff1f; 很显然&#xff0c;人人都知道&#xff0c;Scheduled(cron ".....") Q2. 如上所示创建了定时任务却未能执行是为什么&#xff1f; 如果你的cron确定没写错的话 cron表达式是否合法&#xff0c;可参考此处&#xff0c…