【YOLOv8新玩法】姿态评估寻找链接切割点

学习《OpenCV应用开发:入门、进阶与工程化实践》一书

做真正的OpenCV开发者,从入门到入职,一步到位!

前言

Hello大家好,今天给大家分享一下如何基于深度学习模型训练实现工件切割点位置预测,主要是通过对YOLOv8姿态评估模型在自定义的数据集上训练,生成一个工件切割分离点预测模型

制作数据集

本人从网络上随便找到了个工业工件,然后写代码合成了一些数据,总计数据有360张图像、其中336张作为训练集、24张作为验证集。
在这里插入图片描述

其中YOLOv的数据格式如下:
在这里插入图片描述
解释一下:

Class-index 表示对象类型索引,从0开始 后面的四个分别是对象的中心位置与宽高 xc、yc、width、height
Px1,py1表示第一个关键点坐标、p1v表示师傅可见,默认填2即可。

模型训练

跟训练YOLOv8对象检测模型类似,直接运行下面的命令行即可:

yolo train model=yolov8n-pose.pt data=mul_lines_dataset.yaml epochs=15 imgsz=640 batch=1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

模型导出预测

训练完成以后模型预测推理测试 使用下面的命令行:

yolo predict model=lines_pts_best.pt source=D:\bird_test\back1\2.png

在这里插入图片描述

导出模型为ONNX格式,使用下面命令行即可

yolo export model=lines_pts_best.pt format=onnx

在这里插入图片描述

部署推理

基于ONNX格式模型,采用ONNXRUNTIME推理结果如下:
在这里插入图片描述
在这里插入图片描述

ORT相关的推理演示代码如下:

def ort_keypoint_demo():

    # initialize the onnxruntime session by loading model in CUDA support
    model_dir = "lines_pts_best.onnx"
    session = onnxruntime.InferenceSession(model_dir, providers=['CUDAExecutionProvider'])

    # 就改这里, 把RTSP的地址配到这边就好啦,然后直接运行,其它任何地方都不准改!
    # 切记把 onnx文件放到跟这个python文件同一个文件夹中!
    frame = cv.imread("D:/bird_test/back1/lines_002.png")
    bgr = format_yolov8(frame)
    fh, fw, fc = frame.shape

    start = time.time()
    image = cv.dnn.blobFromImage(bgr, 1 / 255.0, (640, 640), swapRB=True, crop=False)

    # onnxruntime inference
    ort_inputs = {session.get_inputs()[0].name: image}
    res = session.run(None, ort_inputs)[0]

    # matrix transpose from 1x8x8400 => 8400x8
    out_prob = np.squeeze(res, 0).T

    result_kypts, confidences, boxes = wrap_detection(bgr, out_prob)
    for (kpts, confidence, box) in zip(result_kypts, confidences, boxes):
        cv.rectangle(frame, box, (0, 0, 255), 2)
        cv.rectangle(frame, (box[0], box[1] - 20), (box[0] + box[2], box[1]), (0, 255, 255), -1)
        cv.putText(frame, ("%.2f" % confidence), (box[0], box[1] - 10), cv.FONT_HERSHEY_SIMPLEX, .5, (0, 0, 0))
        cx = kpts[0]
        cy = kpts[1]
        cv.circle(frame, (int(cx), int(cy)), 3, (255, 0, 255), 4, 8, 0)

    cv.imshow("Find Key Point Demo", frame)
    cv.waitKey(0)
    cv.destroyAllWindows()


if __name__ == "__main__":
    ort_keypoint_demo()

认真学习 YOLOv8 点这里。

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

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

相关文章

stm32的规则采样与注入采样的理解

规则与注入转换 在STM32中,规则采样(Regular Conversion)和注入采样(Injected Conversion)是用于模数转换的两种不同模式。 规则采样(Regular Conversion):规则采样是STM32中最常用…

【python】TCP测速程序

一、服务端 下面是一个简单的 Python 服务端程序的示例,使用标准库中的 socket 模块来建立一个 TCP 服务器。该服务器接收客户端的连接请求,客户端发送一定大小的数据流以测试 TCP 带宽。 实际场景中带宽测试可能需要更复杂的逻辑来确保测试的准确性。 …

是面试官放水,还是公司实在是太缺人?这都没挂,字节原来这么容易进....

“字节是大企业,是不是很难进去啊?” “在字节做软件测试,能得到很好的发展吗? 一进去就有11.5K,其实也没有想的那么难” 直到现在,心情都还是无比激动! 本人211非科班,之前在字节和…

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】

英杰社区https://bbs.csdn.net/topics/617804998 一、背景 近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程 序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。 程序包含以下几个部…

Java研学-Servlet3.0文件上传下载

一 文件上传 1 介绍 用户选择本地文件资源保存到服务器上,Servlet需要将二进制数据以文件保存到服务器磁盘中,再将磁盘路径保存到数据库中 2 项目搭建 创建web项目,并添加对应jar包(JSTL) 3 API HttpServletRequest 方法–从请求中解析上…

mysql原理--InnoDB的Buffer Pool

1.缓存的重要性 对于使用 InnoDB 作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是以 页 的形式存放在 表空间 中的,而所谓的 表空间 只不过是 InnoDB 对…

0_项目git地址——正点原子minifly与crazyflie

1、说明: 在每个专栏的第一篇文章,笔者都会贴出项目的git地址,方便后来者学习和复现; 下面介绍两个项目的官网资料和git地址,最后给出两者的对比; 2、正点原子minifly (1)minifly官网资料下载中心&#…

vue element plus Typography 排版

我们对字体进行统一规范,力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

Linux信号处理浅析

一、信号从发送到被处理经历的过程 1、常见概念 (1) 信号阻塞 阻塞,即被进程拉黑,信号被发送后,分为两种情况,一种是被阻塞了(被拉黑了),一种是没有被阻塞。 (2) 信号未决 在信号被进程处理…

文件夹重命名方法:文件夹名称随机数字命名,提高文件管理效率的秘诀

在数字时代,每天都会创建、接收和存储大量的文件。那如何有效地管理和查找这些文件?下面云炫文件管理器用简单的方法使用随机数字给文件夹命名。掌握方法可以快速识别和分类文件,提高工作效率。 文件夹随机数字命名前后效果图。 文件夹名称…

Tomcat源码解析(一): Tomcat整体架构

Tomcat源码系列文章 Tomcat源码解析(一): Tomcat整体架构 目录 一、Tomcat整体架构1、Tomcat两个核心组件功能2、Tomcat支持的多种I/O模型和应用层协议 二、Connector连接器1、连接器功能汇总2、ProtocolHandler组件2.1、Endpoint2.2、Processor 3、Adapter组件 三…

向量数据库:Milvus

特性 Milvus由Go(63.4%),Python(17.0%),C(16.6%),Shell(1.3%)等语言开发开发,支持python,go,java接口(C,Rust,c#等语言还在开发中),支持单机、集群部署,支持CPU、GPU运算。Milvus 中的所有搜索和查询操作都在内存中执行…

stable diffusion 人物高级提示词(二)衣物、身材

一、衣服大类 英文中文Shirt衬衫Blouse女式衬衫Dress连衣裙Skirt裙子Pants裤子Jeans牛仔裤Swimsuit泳衣Underwear内衣Bra文胸Panties内裤Stockings长筒袜Shoes鞋子Socks袜子 二、细分分类 dress 是连衣裙: 英文解释Formal Dress正式礼服,通常用于正式…

C# 一看就懂的装箱拆箱案例

文章目录 装箱(Boxing)拆箱(Unboxing)编程语言中的装箱与拆箱优缺点 在C#中,装箱(Boxing)和拆箱(Unboxing)是值类型与引用类型之间相互转换的过程。 装箱(Box…

Maven之属性管理

1.属性管理 1.1 属性配置与使用 ①&#xff1a;定义属性 <!--定义自定义属性--> <properties><spring.version>5.2.10.RELEASE</spring.version> </properties>②&#xff1a;引用属性 <dependency><groupId>org.springframewor…

OBD汽车

相当于客户端与服务器 诊断设备流程 》》》》诊断服务 OBD很多的定死了 Vme就很灵活 WWH 就是两个的结合 OBD15031 SID PID 可以自己定义一些 一个字节255个 两个有效字节 02 01 0D 5555&#xff08;随机值&#xff09;这是请求 两个有效字节 01 OD&#xff08;请求速…

flex布局(2)

五、优缺点 优点&#xff1a; 简单易用&#xff1a;Flex布局使用简单&#xff0c;只需通过设置容器的属性即可实现弹性布局&#xff0c;无需复杂的计算和调整。自适应性&#xff1a;Flex布局可以根据容器的大小自动调整元素的位置和大小&#xff0c;适应不同的屏幕尺寸和设备…

通用机V8R6集群部署_1主1备1见证_图形化_Centos7

KingbaseES 提供数据库部署工具进行数据库集群的部署。KingbaseES 提供基于图形化和命令行操作的集群部署方式&#xff0c;本文档主要用于指导不支持 GUI 的服务器上的 KingbaseES 集群部署工作。 集群简介 KingbaseES软件能够提供一主一备以及一主多备的高可用集群架构&…

Linux系统下gitee使用git提交代码

Linux系统下gitee使用git提交代码 一、安装配置git1.1 在 Linux 中安装 git&#xff0c;并生成授信证书1.2 将SSH key 添加到 ssh-agent1.2 将SSH key 添加到你的gitee账户 二、gitee 的使用2.1 下载项目到本地 三、上传gitee三步走3.1 三板斧第一招&#xff1a;git add3.2 三板…

C++ 开发 + VSCode 调试

C 开发 VSCode 调试 MSYS2 安装 gcc、make下载安装MSMYS2pacman 添加镜像源 GCC1. 安装2. 查看结果3. 环境变量 GDB VSCode 调试所需插件创建项目调试代码1. tasks.json 配置任务2. launch.json 配置调试3. 运行 更进一步的 C/C 设置 参考资料 MSYS2 安装 gcc、make 下载 官…