文中提到的手势识别方法一共有三种:
先建立了一个基础神经网络(提取特征信息)
然后建立一个squeeze-and-excitation networks神经网络(挤挤更兴奋神经网络?)
以提高特征地频道亲和力,并改进了这个网络,将高级特征和低级特征进行连接
再建立一个pyramid attention模型(金字塔注意力模型?)
以融合上下文信息中不同地尺度
|----------------------------以上内容来自摘要-------------------------------|
通过进一步分析和了解之后:
这篇文章的重点是YOLO3和SeNet。也用到了FPA作为注意力模型。
YOLO3(You Only Look Once) 是一个已经比较成熟的目标提取软件,在识别速度和准确度上都有不错的效果。
它将整幅图片划分为s*s块小区域,同时提取边界框,位置信息,和分类标签由此实现了一个端到端的系统
SeNet是CVPR 2017大会上出现的一种网络结构。方法大致是通过在特征之间建立依赖。通过学习,给不同的特征互不相同的重要度标记,重视重要度高的特征,较少关注重要度低的特征。
该文章认为,这种结构可以在不增加计算复杂度的情况下提高特征识别能力。
SeNet通常是嵌入在其他网络结构中的一种方法,包括三个操作:
本篇文章的模型主要有三个部分
使用不同的卷积提取不同的特征,形成多个通道的低级卷积
然后将各个低级特征进行融合,得到高级特征用于特征识别
缺点:1. 可能导致大量计算和过拟合 2. 造成计算复杂度上升
解决方法:
1 最大池化:
The maximum pooling can effectively reduce the offset of the estimated mean caused
by the error of the convolution layer parameters
大概意思是,最大池化可以有效限制由于卷积层参数误差造成的估计均值偏移
2 平均池化:
while the average pooling is beneficial to reduce the increase of the estimated variance caused by the neighborhood size limitation
平均池化可以限制由于卷积核大小限制造成的估计方差增长
基础神经网络主要是为了提取丰富的手势信息
为了提高稳定性和泛化能力,本文从训练数据和网络结构两个方面入手
数据方面
对数据修修剪剪,改改饱和度和对比度,旋转,由此生成更多训练数据
网络工作结构方面
maximum pooling:防止均值漂移
translation invariance:保持前后层方差不变,减小耦合程度
为了解决两个问题:
因此使用FPA,提取精确的注意力特征,用于融合全局特征与局部特征,并加以精炼
主要使用了以下两种策略:
1. 不同尺度下的特征融合
首先拿33,55的卷积核,按步长为2,卷积一遍
首先拿33,55的卷积核,按步长为1,卷积一遍
然后用上采样将各个特征进行一次融合
额外的,再用一个1*1的卷积核对不同通道上的特征进行融合,而不是用像素上的值相乘
2. 关注全局上下文信息
使用全局平均池化等方式,获取某些时候的全局特征
Question1
文中的High-level Feature和Low-level Feature是怎么定义的?
Answer1
通过了解CNN网络等前置知识发现
低级特征,比如一段特定的直线,一段特定曲线,U型线等等
高级特征,比较复杂的特征,比如识别对象是猫,那一整个猫头就是复杂特征
Question2
文中的category classification是否是特定的分类模型?
Answer2
不是某种模型。指高级别特征更适合用来做类别分类
使用小规模的卷积核可以降低算法耗时
同时通过增加网络深度,保证视觉感受野大小不变
比如:
一个55的卷积核,提取55的感受野,需要25次运算
而33的感受野,提取55的感受野,需要两层网络,但是只需要332=18次运算
在每一个特征频道有着不同重要性的前提下,我们使用adapted Senet module实现特征重连接
1. 挤(Squeeze)操作
The squeezing operation is used to compress each feature channel from two dimensions into a one dimensional real number which has a global receptive field.
论文中表示,Squeeze操作将每一个二维的特征通道压缩到一个实数上去,这个实数有全局感受野,某种意义上来说,可以表示全局的特征。下面是原作者对Squeeze操作的解释:
首先是 Squeeze 操作,我们顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。
将每个通道中的矩阵压缩成一个实数,发明者举了全局平均池化的例子,优点是可以获得在较浅的层次获得全局感受野,也方便之后的excitation和reweight进行权值排序
目的
获取全局感受野,方便后面的权值赋予和排序操作
方法
全局平均池化等
2. 励磁(excitation)操作
目的
The activation operation uses two fully connected layers to establish dependencies between the channels.
在两个全连接的层上建立依赖,下面是发明者的解释:
其次是 Excitation 操作,它是一个类似于循环神经网络中门的机制。通过参数 w 来为每个特征通道生成权重,其中参数 w 被学习用来显式地建模特征通道间的相关性。
似乎有点不一样,论文中的说法是具体的实现方式,而发明者说的是作用。发明者对实现方式的解释是这样的:
这里我们使用 global average pooling 作为 Squeeze 操作。
紧接着两个 Fully Connected 层组成一个 Bottleneck 结构去建模通道间的相关性,并输出和输入特征同样数目的权重。
我们首先将特征维度降低到输入的 1/16,然后经过 ReLu 激活后再通过一个 Fully Connected 层升回到原来的维度。
这样做比直接用一个 Fully Connected 层的好处在于:
1)具有更多的非线性,可以更好地拟合通道间复杂的相关性;
2)极大地减少了参数量和计算量。然后通过一个 Sigmoid 的门获得 0~1 之间归一化的权重,最后通过一个 Scale 的操作来将归一化后的权重加权到每个通道的特征上。
3. 特征重连接(feature reconnecting/Reweight)
原作者的解释:
最后是一个 Reweight 的操作,我们将 Excitation 的输出的权重看做是进过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。
说得比较模糊,不知道怎么做
本文作者在这一部分进行了改进。
|----------------------------以上是对论文的翻译,下面列举一下看不懂的地方---------------------------|
何为层之间的依赖(dependency)?
|------------------------文章中说明了这么做的目的和优点,但是没有说明具体步骤-------------------|
采用了10个人在一天中不同时间的左右手,复杂背景,共得到3289张图片。建立了16个目标分类的数据集
有通过旋转,放大,调整亮度和饱和度的方法增强训练数据
特别提到了一下batch size这个参数的选择
在2-32之间效果最佳,实验人员选用了32;
并且,为了充分利用显存,实验人员选用了64,并分为两个sub batch(32*2)
Acc: 准确率,指目标手势在识别出来的手势中的比例
Rec: 召回率,正确分类的图片在所有输入图片中的比例
Fvalue: Acc与Rec的调和平均数
Speed: 识别速度
Question:
比较怀疑自己对Acc和Rec的理解有误
因为根据上面的公式,分子是分类正确的图片数目,两者相同,Acc的分母是所有被分类的图片(凡是给出结果都行),Rec的分母是所有输入图像,前者必定小于后者所以Acc一定大于Rec,但从后面的实验结果来看,显然不是这样
TP:实际为正例,被预测为正例,预测正确
FP:实际为负例,被预测为正例,预测错误
FN:实际为正例,被预测为负例,预测错误
TN:实际为负例,被预测为负例,预测正确
查询了网上的资料,这样的解释更容易理解,但不清楚是不是曲解了原作者的意图
文中的Acc,上图的查准率P,所有被判为正例的样本中,确实是正例的
文中的Rec,上图的查准率R,所有的正例的样本中,被判为正例的
这两者有时确实有此消彼长的情况,因此需要调和平均数
当手势的一些主要特征被遮蔽时,算法会混淆不同的手势,有时会检测不到相应手势
而且,根据算法原理来看,很难事先确定哪一部分是模型认为的手势主要特征
最大的感觉是,这个算法好像已经很厉害了,好像没有什么能改进的地方。
仔细想想的话,第一个想法是,能不能把这个算法集成到智能设备上去,当然这一定有人已经想到了。第二个想法是,该算法没有讨论手势在非正对摄像头的情况下的识别效率,我会进一步查询资料了解这个方向的改进难点在什么地方