CenterNet+ deepsort实现多目标跟踪
首先使用CenterNet训练自己的检测数据集,可以检测人、动物、鱼大等多种自定义类别,然后再把训练好的预训练模型传入deepsort算法进行多目标跟踪。试验结果表明centernet精度和速度方面都具有更好的优势。
CenterNet简介
论文:https://arxiv.org/abs/1904.08189
传统的基于关键点的目标检测方法例如最具代表性的 CornerNet通过检测物体的左上角点和右下角点来确定目标,但在确定目标的过程中,无法有效利用物体的内部的特征,即无法感知物体内部的信息,从而导致该类方法产生了很多误检 (错误目标框)。CenterNet利用关键点三元组即中心点、左上角点和右下角点三个关键点而不是两个点来确定一个目标,使网络花费了很小的代价便具备了感知物体内部信息的能力,从而能有效抑制误检。另外,为了更好的检测中心点和角点,我们分别提出了 center pooling 和 cascade corner pooling 来提取中心点和角点的特征。我们方法的名字叫 CenterNet,是一种 one-stage 的方法。
其抑制误检的原理基于以下推论:如果目标框是准确的,那么在其中心区域能够检测到目标中心点的概率就会很高,反之亦然。因此,首先利用左上和右下两个角点生成初始目标框,对每个预测框定义一个中心区域,然后判断每个目标框的中心区域是否含有中心点,若有则保留该目标框,若无则删除该目标框,其原理如下图所示:
代码连接:https://github.com/xingyizhou/CenterNet
Deepsort简介
Deepsort主要由以下算法组成:
-
1、卡尔曼滤波
-
2、马氏距离
-
3、PCA主成分分析
-
4、匈牙利算法
-
5、行人重识别
-
6、MOT评价指标
其中每一个讲起来又是一大堆,所以留着以后有时间详细讲解。
下面一张图概括且很好的展示了deepsort的算法:
Centernet+deepsort代码
https://github.com/kimyoon-young/centerNet-deep-sort
获取代码
git clone https://github.com/kimyoon-young/centerNet-deep-sort.git
安装repo
conda env create -f CenterNet.yml
pip install -r requirments.txt
快速启动
CENTERNET_PATH = 'CENTERNET_ROOT/CenterNet/src/lib/'
to
e.g) CENTERNET_PATH = '/home/kyy/centerNet-deep-sort/CenterNet/src/lib/'
运行demo
python demo_centernet_deepsort.py
实验结果