k230 YOLOv5部署目标检测 获取角点数据有误

Viewed 52

重现步骤

1.看官方文档YOLO大作战 此前我已经配好了YOLOv5的环境(没看官方给的了) 已有320320的best.pt文件
2.配置环境 转换 一一配置好 开始转换模型 指定320
320 转换过成warn error都是0(test_yolov5)
3.部署到k230 在官方检测实时视频脚本的基础上(YOLO部分完全按照官方例程) 可以检测到目标 但获取角点数据有误 具体表现为320*320的模型 原模型的x坐标能超出320 裁剪了也没用 导致求解中心点有吾 目标偏左较多yaw才归零

期待结果和实际结果

角点数据应该在320范围内 实际上超出 导致解算错误

软硬件版本信息

嘉立创庐山派 固件:CanMV_K230_LCKFB_micropython_PreRelease_nncase_v2.9.0.img

错误日志

就是用打印 然后x坐标超出了320

尝试解决过程

裁剪了 但是也没有细究

补充材料

没截图

1 Answers

YOLO检测得到的是框的坐标,角点检测可以使用cv_lite,具体参考API文档:https://www.kendryte.com/k230_canmv/zh/main/zh/api/cv_lite/cv_lite.html#rgb888-find-rectangles-with-corners
烧录最新的daliy_build固件,可以在sdcard/exampels/23-CV_Lite目录下找到示例。

emm 原YOLOv5训练出来的.pt是包含四角点的坐标的 你说的框的坐标具体是什么坐标 哪个点还是?
if detection:
coords = detection[0]
scale_x = rgb888p_size[0] / model_input_size[0]
scale_y = rgb888p_size[1] / model_input_size[1]
x1 = int(coords[0] * scale_x)
y1 = int(coords[1] * scale_y)
x2 = int(coords[2] * scale_x)
y2 = int(coords[3] * scale_y)
top_left, top_right = (x1, y1), (x2, y1)
bottom_left, bottom_right = (x1, y2), (x2, y2)

框指的是xywh,左上角坐标和框的宽高,通过这几个值你可以计算出矩形框的四个点坐标,有了框的四角坐标,可以得到中心点的坐标。另外你可能对角点认识有问题,检测框的四个角坐标和目标的角点坐标不是一回事。

ok 谢谢了 我识别的不是矩形框