基于深度学习的目标跟踪算法是否可能做到实时

感谢邀请,基于深度学习的算法的实时性是可以解决的。不过,我们需要注意以下几个问题。1、必须在GPU上运行。那些主流算法的网络在CPU上跑一次前向运行都在100MS这个环节,裁剪网络不是跟踪领域解决的问题。2、不能采用粒子滤波框架,使用这个框架肯定不可能实时。3、使用超快速的学习算法。不能使用BP,finetune就算再怎么优化,也需要几个前后向传播,那就是几倍的时间。

mtcnn和yolov3和ssd等目标检测算法各有什么特点或优势?

MTCNN算法是多任务级联卷积神经网络,用于人脸检测和人脸对齐,它是一种级联结构,类似Adaboost算法,主要包括三个子网络:一个是P-Net网络,主要获得人脸区域的候选窗口和边界框的回归向量,并用该回归向量对候选窗口进行校准,然后通过非极大值抑制来合并高度重叠的候选框;第二个子网络是R-Net网络,也是只做检测和边界框回归两个任务;最后一个子网络是O-Net网络,对前面的候选框做进一步的筛选,回归边界框,同时在每个边界框上计算特征点的位置。

而且,MTCNN一种多尺度网络结构,在输入图像数据前,先构建图像金字塔,获得不同尺度的图像再送入P-Net网络。SSD算法是one-stage、端到端的目标检测算法,主要思路是在图片的不同位置进行密集采样,采用不同的尺度比和长宽比,利用卷积神经网络结构提取特征进行分类和回归,其优势是速度快。SSD提取不同尺度的特征图来做检测,前面的大尺度特征图用于检测小目标,后面的小尺度特征图用于检测大目标,采用VGG16作为基础模型。

yolo目标检测算法的基本思想是利用CNN对输入图像提取特征,将输入图像划分成S×S个单元格,如果某个物体的中心位置落入其中一个单元格,那么由该单元格负责检测这个目标。YOLO V3在之前yolo结构的基础上,采用多个尺度融合的方式做预测,加强对小目标检测的精确度。基础分类网络类似ResNet残差网络,分类任务用Logistic取代了softmax,并利用9种尺度的先验框,可以很好的检测大目标和小目标。

MTCNN是专门用于检测人脸的目标检测算法,而yolo和SSD算法是通用的目标检测算法。通用的目标检测算法还有另一种类型,就是two stage的网络模型,先利用一些算法产生候选区域,然后再对候选区域进行分类和回归,这类典型的算法有R-CNN算法、Fast R-CNN算法以及Faster R-CNN算法、FPN算法等。

目标检测算法评估中提到混淆矩阵,其中精确、召回率有何区别,只关注一个可以吗?

我们在目标检测算法中,如人脸、车辆检测算法,常使用 混淆矩阵来评估算法模型的效果。但是在选择具体的模型评估指标时,并非是不加思索的套用指标计算公式,简单的给出指标的计算结果。同时还需要结合算法模型的实际应用场景、数据集特征分布等等。如,我们常习惯使用准确率评价分类算法模型的效果,选用这个指标的原因,一方面是因为我们熟悉它,另一方面它也是一个很直观的评价指标。

但是在某些场景下,单一的准确率即使100%也不能代表这个算法模型的效果好,比如 在不平衡分布数据集的场景中。下面我们通过一个例子来理解一下。比如,我们通过近百年全球各地区地震数据训练了一个能够预测地震区域的算法模型,并且准确率高达 99%,你认为这个算法效果如何?准确率(Accuracy)准确率是我们常见的模型评估指标,它表示所有的预测正确(正类、负类)的占全部测试集数量的比重,计算公式如下。

下图是来自维基百科的2018年全球地震数据:现在这个模型,将所有的地区都检测为 非地震区域。在全球全年数十亿地区特征信息中,已知6级以上地震130余起,这个模型准确率 0.9999……无限接近1,我们会发现这个模型达到了近乎完美的准确率,可即使这个模型拥有接近完美的准确率,但是在这个场景中单纯的靠准确率显然不是一个合适的指标评估方式。

地震检测是一个不平衡的分类问题,其数据集分布也是不平衡的。我们需要检测的类别有两个——地震区域和非地震区域,其中非地震区域类别代表了绝大多数的数据。类似,在海啸、恐怖分子、罕见疾病检测算法中。其正例类别数量,如地震区域、海啸、恐怖分子、疾病,远远少于负例类别的数量。这种问题是数据科学中比较常见的例子,其中准确率并不能作为评估模型的衡量标准。

简单的讲,这种检测场景中我们更应该关注于正例(地震区域)的识别效果。召回率(Recall)我们应该最大化模型找到数据集中所有相关正类的能力,即最大化召回率(Recall,又称查全率)的衡量指标,也就是正确判为地震区域占实际所有地震区域的比例,计算公式如下。我们通过召回率计算公式,不难得出:如果模型将所有的区域都预测为地震区域,那么模型的召回率就是 100%,因为预测所有区域都是地震区域,自然也包括了真实发生地震的区域。

那么,此时我们就得到了一个完美的模型吗?同样,并没有。精确率(Precision)精确率可以理解为在所有被模型检测为地震的地区中,真正发生地震的区域所所有测试集的比例,计算公式如下:现在,我们在一起回顾下前面内容可以看到,在第一个模型中将所有地区都检测为非地震区域,虽然这个模型准确率无限接近100%,但是它是不能使用的,因为它的精确度和召回率都是零,因为True Postive(TP,混淆矩阵)为零。

在第二个模型中,将所有的地区都检测为地震区域,此时召回率达到100%,但我们发现所有人将会在持续的地震伪警报中,惶惶不安,它同样不能够使用。现在,我们重新训练一下模型,模型将将其返回的区域都正确地识别为地震区域,即精确率达到了100%,但是召回率很低,因为它只返回了1个区域,实际上会有很多假负类(False Negative FN),即漏报的地震区域,此时也是不能够使用。


文章TAG:算法  跟踪  目标  
下一篇