Apollo5.5源码解析:目标检测

代码位置: Apollo/modules/perception/camera/lib/obstacle

一、目标检测CNN网络Detector

1. Init:加载参数

  • 输入CNN的图像预处理参数:裁剪、resize,确定输入CNN网络的图像长宽);
  • 感知结果后处理参数:NMS阈值、符合要求的检测框尺寸阈值等;
  • 加载CNN网络结构;

2. 推理

图像在GPU上做Resize -》推理 -》获取推理结果

具体inference使用简单工厂模式介绍详见: https://blog.csdn.net/Cxiazaiyu/article/details/106570190

二、目标追踪Tracker

因为目前主流的深度学习主要还是针对单帧图片进行推理,而非对视频进行处理,因此帧间信息的利用主要是依靠后处理。

目标追踪的主要目的是在多帧之间锁定相同的目标,并利用多帧的信息对锁定后的目标的位置、速度等信息进行优化。

目标追踪的入口类为OMTObstacleTracker,继承自接口类BaseObstacleTracker。路径:Apollo/modules/perception/camera/lib/obstacle/tracker/omt/omt_obstacle_tracker.h

主要的方法是bool OMTObstacleTracker::Associate2D(const ObstacleTrackerOptions &options,CameraFrame *frame),负责将当前帧检测到的目标与已经追踪到的所有目标std::vector targets_做对比,如果该帧内的物体与已经追踪到的某一Target有足够高的相似性,则认为是同一目标,并将新目标归并到相应的Target中,随后根据新添加的测量数据更新该Target的属性。

1. 评价两目标相似性

代码路径:Apollo/modules/perception/camera/lib/obstacle/tracker/common/similar.h

评估两个object的相似性:

a. 根据CNN抽取的feature相似性:float ScoreAppearance(const Target &target, TrackObjectPtr object);

对于检测到的每个物体,CNN输出一个object_feature。计算两帧之间检测到的目标的相似性的方法定义在Apollo/modules/perception/camera/lib/obstacle/tracker/common/similar.h文件中,并提供CPU和GPU两种实现方法。

b. 根据中心点距离评价相似性:float ScoreMotion(const Target &target, TrackObjectPtr object);

c. 根据box形状差异(长宽差异)评价相似性:float ScoreShape(const Target &target, TrackObjectPtr object);

d. 根据bbox的IOU计算:float ScoreOverlap(const Target &target, TrackObjectPtr track_obj);

最后,综合考虑Motion\Shape\Appearance\Overlap的评分后给出的综合评分,使用的方法void OMTObstacleTracker::GenerateHypothesis(const TrackObjectPtrs &objects),并根据评分排序给出关联最大的可能性。

2. 运动估计

针对跟踪到的目标融合多帧的信息,给出更准确的位置、航向等。

定义了Target结构体,存储多帧融合后的目标信息,包括航向direction、位置world_center、id等,以及TrackObjectPtrs tracked_objects成员变量,即该Target在每帧中对应的objects。

融合多帧信息时针对变量的特性使用了多种滤波方法,如使用FirstOrderRCLowPassFilter滤去direction中高频变化的量、使用KalmanFilterConstVelocity过滤世界坐标系下的空间位置、使用MeanFilter处理世界坐标系下的速度、使用MaxNMeanFilter处理世界坐标系下的目标的lenght-width-height。具体的滤波方法类存储在Apollo/modules/perception/camera/lib/obstacle/tracker/common/kalman_filter.h文件中。

 

 

 

 

你可能感兴趣的:(自动驾驶,自动驾驶,目标检测,Apollo)