基于YOLOv8实现自定义姿态评估模型训练

前言
hello大家好,今天给大家分享一下如何基于yolov8姿态评估模型,实现在自定义数据集上,完成自定义姿态评估模型的训练与推理。
01tiger-pose数据集
yolov8官方提供了一个自定义tiger-pose数据集(老虎姿态评估),总计数据有263张图像、其中210张作为训练集、53张作为验证集。
其中yolov8-pose的数据格式如下:
解释一下:
class-index 表示对象类型索引,从0开始后面的四个分别是对象的中心位置与宽高 xc、yc、width、heightpx1,py1表示第一个关键点坐标、p1v表示师傅可见,默认填2即可。kpt_shape=12x2 表示有12个关键点,每个关键点是x,y  
02模型训练
跟训练yolov8对象检测模型类似,直接运行下面的命令行即可:
yolo train model=yolov8n-pose.pt data=tiger_pose_dataset.yaml epochs=100 imgsz=640 batch=1
03模型导出预测
训练完成以后模型预测推理测试 使用下面的命令行:
yolo predict model=tiger_pose_best.pt source=d:/123.jpg
导出模型为onnx格式,使用下面命令行即可
yolo export model=tiger_pose_best.pt format=onnx
04部署推理
基于onnx格式模型,采用onnxruntime推理结果如下:
ort相关的推理演示代码如下:
def ort_pose_demo(): # initialize the onnxruntime session by loading model in cuda support model_dir = tiger_pose_best.onnx session = onnxruntime.inferencesession(model_dir, providers=['cudaexecutionprovider']) # 就改这里, 把rtsp的地址配到这边就好啦,然后直接运行,其它任何地方都不准改! # 切记把 yolov8-pose.onnx文件放到跟这个python文件同一个文件夹中! frame = cv.imread(d:/123.jpg) 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)) cv.circle(frame, (int(kpts[0]), int(kpts[1])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[2]), int(kpts[3])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[4]), int(kpts[5])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[6]), int(kpts[7])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[8]), int(kpts[9])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[10]), int(kpts[11])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[12]), int(kpts[13])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[14]), int(kpts[15])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[16]), int(kpts[17])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[18]), int(kpts[19])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[20]), int(kpts[21])), 3, (255, 0, 255), 4, 8, 0) cv.circle(frame, (int(kpts[22]), int(kpts[23])), 3, (255, 0, 255), 4, 8, 0) cv.imshow(tiger pose demo - gloomyfish, frame) cv.waitkey(0) cv.destroyallwindows()


高频与射频有何本质不同,你可以一语道破吗
46年屏幕变迁下,富士康、苹果、三星、华为的浴火重生路
TI技术8月研讨会即将开始
lf356调零电路(六款调零电路原理图详解)
黑芝麻智能NeuralIQ ISP的优势
基于YOLOv8实现自定义姿态评估模型训练
2020的通信技术有什么进展
电动工具的应用
干货:空凋的电路和单独回路的设计及注意点
python通过序列生成字典
提供稳定的电压参考
努比亚Z17S发布会前瞻:努比亚Z17S真机曝光电商开启预售,叫板小米MIX2,直播地址抢先知
AI赋能实体经济贡献收入将超570亿元
一种采用人工智能图像识别技术的智能抄表解决方案
华为芯片的自给率已经逼近60%!
国巨电容的特性_国巨电容命名规则
PCB图形转移过程中抗蚀抗电镀层怎样来应用
浅谈智能手机市场格局的变化
长虹激光技术领先 激光电视成家庭影院绝佳伴侣
服务机器人从科幻走进家庭,如何成就智慧家庭核心?