目标:检测并跟随目标(人) on TX2
基本方案
嵌入式设备,计算资源有限,对算法的运行时间敏感。
-
detection: YOLOv3(-tiny)
-
tracking: KCF
当前状态
-
YOLOv3在TX2上能跑到5fps,但存在偶尔漏检的情况。YOLOv3使用darknet。
-
KCF虽然非常快,但很容易跟丢,对于目标形变(人的姿态变化)、目标移动较快、目标离开场景等情况,效果较差。KCF使用opencv contrib的实现。
工作内容
Detection
-
使用TensorRT移植YOLOv3,减少检测时间。
-
使用应用场景的数据,训练YOLO。
Tracking
-
改进特征,加入“人体”特征,同时要注意特征计算要很快。
-
多帧融合预测搜索范围。
Detection和Tracking的结合
-
结合的方法,一部分取决于两个算法的精度和速度。越好越快,结合的方式可以越简单。
RGBD
-
获取方法
-
Kinect,已测试
-
ZED, 未测试
-
-
YOLO@RGBD
-
KCF@RGBD
用pytorch实现yolov3模型
调试时发现,pytorch版本的代码和darknet相差很大。
发现原因:图像预处理时的resize,虽然都使用双线性插值,darknet自己实现的插值算法,我使用opencv的resize实现,计算的结果小数点第3位有很大差别,第2位有少许差别。由于输入不同,网络参数相同,另外网络结构的具体实现,也存在差异,这些共同导致了pytorch代码的输出,和darknet差别巨大。
解决办法:用pytorch重新训练yolov3,进行适度的参数调整,使得参数适应移植后的平台。
任何重现或者移植的工作,一定要实现学习过程,才是有意义的复现。