一、训练数据
自制数据以及训练方法参考AI项目十八:YOLOV8自训练关键点检测_yolo关键点检测-CSDN博客
要注意的是同一副图里有多个目标的时候,每个目标的box和keypoint要设置成同一个group_id,如图所示
上图的一个目标有两个关键点head和tail以及一个box fish
二、模型转换
将训练得到的pt模型导出并转换,参考TensorRT-Alpha/yolov8-pose/README.md at main · FeiYull/TensorRT-Alpha · GitHub
部署环境为windows10,cmake生成,vs2019编译
三、代码修改
因为没有用人体姿态模型,所以需要修改tensorrt-Alpha部署代码
默认模型是17个关键点的,我只有两个
修改utils.h
根据种类数量classnum添加dataSets和color:
修改utils.cpp
utils::show和utils::save函数中都要添加:size大小根据classnum确定,我只有一类fish
修改yolov8_pose.cpp
两个关键点修改成如图,m_output_objects_width根据后面的公式自己计算
left, top, right, bottom, confidence, class, keepflag + points * 17
13=7+3*2 其中2是关键点数量
skeleton是关键点连线也就是骨架,point2i中的两个参数是指连线的两个端点,我只有两个关键点也就是一根线;kpt_color是关键点颜色;limb_color是连线颜色
后处理函数中的参数也要自己计算修改,这个参数为xywhc + points * 17,图中的11都是修改后的
11=5+3*2
修改app_yolov8_pose.cpp
参数自己设置好,模型图片什么的路径设置好