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

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

做真正的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 点这里。

相关文章
|
5月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
1576 7
学生0元购|低配也能畅玩!《黑神话:悟空》云电脑攻略
《黑神话:悟空》正式上市,这款备受期待的游戏对电脑配置要求不低,但通过云电脑,你无需担心硬件限制,随时随地畅玩大作。最低仅需1.2元/小时,还能利用学生福利免费畅玩。快速上手教程与省钱攻略,助你轻松征服《黑神话:悟空》!
818 8
学生0元购|低配也能畅玩!《黑神话:悟空》云电脑攻略
|
机器学习/深度学习 人工智能 编解码
深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
【9月更文挑战第2天】深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
 深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
2754 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
数据采集 安全 数据处理
制造业、工程设计行业、创投行业的数据治理痛点与解决方案
关注监管政策动态:密切关注数据治理相关法律法规的发布和更新,及时调整企业数据治理策略,确保合规经营。
制造业、工程设计行业、创投行业的数据治理痛点与解决方案
|
机器学习/深度学习 JSON 数据可视化
YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程
本文介绍了如何将个人数据集转换为YOLO11-pose所需的数据格式,并详细讲解了手部关键点检测的训练过程。内容涵盖数据集标注、格式转换、配置文件修改及训练参数设置,最终展示了训练结果和预测效果。适用于需要进行关键点检测的研究人员和开发者。
2420 0
|
数据采集 API 数据安全/隐私保护
简单一步教你如何获取1688商品详情数据
要获取1688商品详情数据,通常需要通过阿里巴巴提供的官方API接口来实现。然而,由于阿里巴巴的API接口通常只对合作伙伴或付费用户开放,并且涉及到数据安全和隐私保护等问题,因此无法直接提供简单的一步操作来获取这些数据。
|
前端开发 测试技术 数据安全/隐私保护
图书馆信息管理系统(项目测试)
图书馆信息管理系统(项目测试)
417 2