2020 8 30
其他技术
in OpenCV
介绍一下RM中可能用到的其他技术
1.Darknet
yolo的作者自己写了一个深度学习的框架叫Darknet, 使用C语言编写, 我们有使用过!!!
但我用过yolo(yolo3,yolo5), 从yolo的效果来看Darknet应该也不会差, 但yolo中有许多网络层OpenCV中没有,
因此OpenCV调用yolo比较困难, 但OpenCV却有Darknet的相关接口, 可以直接调用Darknet的结果.
以下为我使用yolo5的识别效果.
如果你要学习yolo,建议先了解一下:"什么事IOU?""NMS非极大值抑制算法"
我使用DJI的官方数据进行训练, 明年估计不会有数据集了, 需要自己制作, 官方数据集中有"car""armour_1_red""armour_2_blue""watcher"等等,
细数下有30个类左右, 同时由于装甲板与机器人为两个类, 不能直接得出"car_4_red"这样的信息, 还需要识别之后进行处理.
我通过IOU对数据进行预处理, car与armour的IOU=armour, 则认为armour属于car, 从而在训练前, 得到"Car_4_red"这样的类.
由于armour与car合并, 类别数减少, 个人觉得yolo的检测效果也变好了.
2.双目识别
简单提一提, 双目测距依靠, 双目视差进行测距, 简单说依靠左右眼中同一目标的坐标差, 判断距离, 距离反比于视差, 视差越大目标
越近. 但是OpenCV自带的双目测距, 会对两个图像中的所有特征点进行匹配, 并计算所有特征点的距离, 严重拖慢程序. 实际在RM中
只需要对单点进行测距, 比如仅仅测量装甲板四个特征点的距离, 仅仅只需要做四次除法.
双目标定的成功率比较低,要有耐心.