首页 > 其他分享 >Pyqt搭建YOLOV5目标检测界面

Pyqt搭建YOLOV5目标检测界面

时间:2024-11-01 19:16:10浏览次数:3  
标签:YOLOV5 False self YOLOv5 Pyqt im names 界面 model

往期热门博客项目回顾:

计算机视觉项目大集合

改进的yolo目标检测-测距测速

路径规划算法

图像去雨去雾+目标检测+测距项目

交通标志识别项目

yolo系列-重磅yolov9界面-最新的yolo

姿态识别-3d姿态识别

深度学习小白学习路线

yolo GUI OYQT界面

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

img

在这里插入图片描述

  • 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)

最后:计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!

(im0s if isinstance(im0s, np.ndarray) else im0s[0])
self.send_statistic.emit(statistic_dic)


## 最后:计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!

## code

标签:YOLOV5,False,self,YOLOv5,Pyqt,im,names,界面,model
From: https://blog.csdn.net/QQ_1309399183/article/details/143439105

相关文章

  • 使用wxpython开发跨平台桌面应用,实现程序托盘图标和界面最小化及恢复处理
    在前面随笔《基于wxpython的跨平台桌面应用系统开发》介绍了一些关于wxpython开发跨平台桌面应用的总体效果,开发桌面应用,会有很多界面细节需要逐一处理,本篇随笔继续深入该主题,对开发跨平台桌面应用的一些实现细节继续深入研究并总结,介绍程序托盘图标和界面最小化及恢复处理。1、......
  • Visual Studio Code(VSCode)中设置中文界面
    在VisualStudioCode(VSCode)中设置中文界面,你可以采用以下几种方法,以下是详细步骤:方法一:通过设置菜单设置中文打开VSCode:首先,确保你已经打开了VSCode软件。进入设置:点击菜单栏中的“文件”(File)选项。在下拉菜单中选择“首选项”(Preferences)。点击“设置”(Settings)。搜索并设置语......
  • 界面控件DevExpress JS & ASP.NET Core v24.1亮点 - 支持Angular 18
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中......
  • 管家婆工贸ERP BB069.反写销售单据结算日期单号+BB071.销售选单界面查看完工入库数量
    BB069.反写销售单据结算日期单号最低适用版本:工贸系列23.5插件简要功能说明:往来核销单和收款单过账后,如果被结算的销售单和销售退货单结算完毕,则将结算单据的单据编号反写到销售单和销售退货单的表头自定义字段中更多细节描述见下方详细文档插件操作视频:进销存......
  • 界面控件DevExpress WPF中文教程:Data Grid——卡片视图概述
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 界面控件Kendo UI for Angular 2024 Q3亮点 - 全新的页面模板
    随着最新的2024Q3版本,Progress使用户能够使用现成的页面模板和构建块更快地构建令人惊叹的应用程序,使您的Telerik和KendoUI开发体验更好。Telerik和KendoUI 2024Q3版本将焦点放在新推出的页面模板和构建块上,每个页面模板和构建块都预先配置了TelerikUIforBlazor、KendoU......
  • 阿里云DataV Board大屏管理系统用户界面概览
    数据可视化DataV_数据分析工具_双十一数据可视化_三维可视化-阿里云产品界面布局概览在进入DataVBoard产品主界面,分为工作台、设计中心、可视化学院、帮助和教程四个主要板块。工作台可视化应用搭建的主要入口,包含工作空间管理、项目管理、画布创建、可视化应用搭建、蓝......
  • 自动驾驶热成像物体检测- YOLOv9 - YOLOv8 - YOLOv5 - YOLOv7
    标签-物体检测filadataset-模型在这里插入图片描述类别(4)-自行车-汽车-狗-人在这里插入图片描述度量指标-平均精度均值(mAP):88.8%-准确率(Precision):92.0%-召回率(Recall):78.9%尝试此模型-上传一张图片或者从您的设备中选择在这里插......
  • 汉文博士软件使用方法及界面截图
    单字及组词检索(列出词典中包含指定汉字的所有词条)界面左方有“词典”和“字典”两个选项卡。字典选项卡只检索单字,而词典选项卡既检索单字,也检索词条。可使用“首字相同”、“末字相同”和笔画数功能筛选返回的词条。在词典选项卡的文本框中,需检索的词条,下方的词条栏会显示相关......
  • Matlab之App Designer simulink模型调用及仿真结果显示在GUI界面上
    一、背景介绍在利用MatlabAppDesigner成功构建出直观的用户图形界面(GUI)后,我们可以采用代码调用Simulink模型,实现模型的调用与执行,并将分析结果实时反馈至GUI界面上。这一做法极大地增强了用户与应用之间的交互体验。本文将以案例讲解的方式,详细阐述如何通过MatlabAppDesig......