目标跟踪相关知识总结

电子说

1.2w人已加入

描述

原文链接

feather map

在cnn的每个卷积层,数据都是以三维形式存在的。可以看成许多个二维图片叠在一起,其中每一个称为一个feature map。

1.在输入层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。

2.在其它层,层与层之间会有若干个卷积核(kernel),上一层每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map,有N个卷积核,下层就会产生N个feather map。

卷积核(filter)

每个卷积核具有长宽深三个维度;卷积核的深度与当前图像的深度(feather map的张数)相同。卷积核的个数与下一层需要多少个feather map相同。在CNN的一个卷积层中:卷积核的长、宽都是人为指定的,长X宽也被称为卷积核的尺寸,常用的尺寸为3X3,5X5等;例如,在原始图像层 (输入层),如果图像是灰度图像,其feather map数量为1,则卷积核的深度也就是1;如果图像是grb图像,其feather map数量为3,则卷积核的深度也就是3。

训练数据

  • batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
  • iteration:1个iteration等于使用batchsize个样本训练一次;
  • epoch:1个epoch等于使用训练集中的全部样本训练一次,通俗的讲epoch的值就是整个数据集被轮几次。

例如300个样本训练一次,epoch=1,batchsize = 10 ,iteration=30。

BN(Batch Normalization)层

BN层即batch-norm层,一般是深度学习中用于加速训练速度和一种方法,一般放置在卷积层(conv层)或者全连接层之后,将数据归一化并加速了训练拟合速度。

常用位置:conv→bn→relu

如果网络使用sigmod激活函数,误差在向前传递的时候,经过sigmod单元,需要乘sigmod的梯度,而sigmod的梯度最大是0.25,因此越向前传递,误差就越小了,这就是梯度消散,但是梯度爆炸是什么?注意误差在经过全连接或者卷积层时,也要乘以权重w,如果w都比较大,大过sigmod造成的减小,这样越往前误差就越来越大,产生梯度爆炸。

BN层的计算图如下面所示,x是输入数据,到xhat均值方差归一化,后面xhat到y其实就是普通的一个线性变换,类似全连接但是没有交叉。如果没有BN层,x直接输入后面的网络,训练过程中x分布的变换必然导致后面的网络去调整学习以来适应x的均值和方差,映入了BN层,xhat是一个归一化的数据,代价就是网络中多了一个线性层y,但是前者带来的性能更加大,因此加速了。

算法

AUC(Area Under Curve)

一个正例,一个负例,预测为正的概率值比预测为负的概率值还要大的可能性。所以根据定义:我们最直观的有两种计算AUC的方法:

1:绘制ROC曲线,ROC曲线下面的面积就是AUC的值

2:假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有mn个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,然后除以(mn)就是AUC的值。

AUC作为数值可以直观的评价分类器的好坏,值越大越好。

均值平均精度MAP(Mean Average Precision)

我们使用loU和阈值判断是否为目标。计算模型得到的每个检测框的loU值,用计算出的loU值与设定的loU阈值比较,就可以计算出每个图像中每个类的正确检测次数(A)。对于每个图像,我们都有ground truth的数据,因此也知道了该图像中给定类别的实际目标(B)的数量。我们也计算了正确预测的数量(A)(True possitive)。因此我们可以使用这个公式来计算该类模型的精度(A/B)

Precesion_{C}=\\frac{N(TruePositives){C}}{N(TotalObjects){C}}

即给定一张图像的类别C的Precision=图像正确预测的数量除以在图像张这一类的总的目标数量。 假如现在有一个给定的类,验证集中有100个图像,并且我们知道每个图像都有其中的所有类(基于ground truth)。所以我们可以得到100个精度值,计算这100个精度值的平均值,得到的就是该类的平均精度。

AveragePrecesion_{C}=\\frac{\\sum Precesion_{C}}{N(TotalImages)_{C}}

即一个C类的平均精度=在验证集上所有的图像对于类C的精度值的和/有类C这个目标的所有图像的数量。 现在加入我们整个集合中有20个类,对于每个类别,我们都先计算loU,接下来计算精度,然后计算平均精度。所有我们现在有20个不同的平均精度值。使用这些平均精度值,我们可以轻松的判断任何给定类别的模型的性能。

但是问题是使用20个不同的平均精度使我们难以度量整个模型,所以我们可以选用一个单一的数字来表示一个模型的表现(一个度量来统一它们),我们可以取所有类的平均精度值的平均值,即MAP(均值平均精度)。

MeanAveragePrecesion=\\frac{\\sum AveragePrecesion_{C}}{N(Classes)}

MAP=所有类别的平均精度求和除以所有类别。即数据集中所有类的平均精度的平均值。

EAO 期望平均覆盖率

EAO提出的目的也是希望一个好的跟踪器同时拥有好的精度A和鲁棒性R,如果直接用A和R的两个数加权和则有失公允,所以需要重新定义。

假设有N_s帧长的一个视频,那么一个跟 踪器在这段视频上的覆盖率精度(Overlay accuracy)op为每一帧op的均值,op就是bonding box与ground truth的交并比用Φ表示,即:

Φ_{N_{s}}=\\frac{1}{N_{s}}\\sum {\\atop i=1:N_{s}}Φ_{i}

那么一个理想的EAO就是把N_s从1到一个期望的极大值对应的N_s求个平均,就是期望平均覆盖率,恰如其名,等价于下图的曲线下面积:

算法

shortcut connection

ResNet结构使用了一种连接方式,即“绕近路”的意思。

算法

Bottleneck(瓶颈层)

其意思就是输入输出维度差距较大,就像一个瓶颈一样,上窄下宽亦或上宽下窄。1x1 filters 可以起到一个改变输出维数(channels)的作用。可以看到,右图中 1x1 filters把维度(channels)升高了,输入输出维度差距较大。

算法

感受野:

在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field。用数学的语言就是感受野是CNN中的某一层输出结果的一个元素对应输入层的一个映射。

学习更多编程知识,请关注我的公众号:

代码的路

算法

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分