【论文笔记】基于带有多尺度信息的特征校准网络的实时手势检测

1.文章的研究现状

文中提到的手势识别方法一共有三种:

  1. 基于可穿戴设备,由设备上的传感器传回数据判断手势移动
    这种方法的弊端在于,设备造价昂贵,可识别的手势不自然
  2. 基于计算机视觉的方法,弊端在于容易受光照和复杂背景的干扰
    基本流程:手势分割->特征提取->分类器分类
    手势分割->通过肤色,纹理,多种模型分割
    特征提取->人为设定特征
    分类器分类->神经网络,隐马尔可夫模型(HMM),多信息融合,反向传播(BP)
  3. 基于神经网络的手势识别,也是本文使用的方法
    之前的神经网络都是通过增加隐藏层层数的方法提高识别精度,牺牲了识别效率
    本文中将要介绍squeeze-and-excitation networks,在不大量增加复杂度的前提下提高识别成功率

    神经网络本身的优点:
    1 不用手工选取特征和提取特征
    2 可以识别旋转和缩放的手势
    3 可以降低时间复杂度
    当前神经网络的缺陷:
    1 为了提高识别准确性,而增加网络深度,牺牲了时间效率
    2 在识别较远的目标时稳定性不足

2.解决了什么问题

  1. 复杂背景
  2. 较远距离
  3. 快速准确地识别图片中地手势
  4. 稳定性(robustness)

3.创新点在哪里

先建立了一个基础神经网络(提取特征信息)
然后建立一个squeeze-and-excitation networks神经网络(挤挤更兴奋神经网络?)
以提高特征地频道亲和力,并改进了这个网络,将高级特征和低级特征进行连接
再建立一个pyramid attention模型(金字塔注意力模型?)
以融合上下文信息中不同地尺度
|----------------------------以上内容来自摘要-------------------------------|
通过进一步分析和了解之后:
这篇文章的重点是YOLO3和SeNet。也用到了FPA作为注意力模型。

3.1 YOLO

YOLO3(You Only Look Once) 是一个已经比较成熟的目标提取软件,在识别速度和准确度上都有不错的效果。
它将整幅图片划分为s*s块小区域,同时提取边界框,位置信息,和分类标签由此实现了一个端到端的系统

3.2 SeNet

SeNet是CVPR 2017大会上出现的一种网络结构。方法大致是通过在特征之间建立依赖。通过学习,给不同的特征互不相同的重要度标记,重视重要度高的特征,较少关注重要度低的特征。
该文章认为,这种结构可以在不增加计算复杂度的情况下提高特征识别能力。
SeNet通常是嵌入在其他网络结构中的一种方法,包括三个操作:

  1. Squeeze
  2. Excitation
  3. Reweight

4.比别的算法好在哪里

  1. 结合了前后(上下文)手势信息,准确度和精度更高
  2. 可以识别较远的手势
  3. 相比其他算法在识别率和速度上起码一项上有优势
    在这里插入图片描述

5.基础神经网络框架以及这篇论文的框架模型

本篇文章的模型主要有三个部分

  1. 一个基础神经网络作为框架
  2. 一个FPA注意力模型,用于融合全局和本地特征,精炼融合得到的特征
  3. 一层SeNet模型,用来建立特征通道之间的联系

5.1 用于提取特征信息的基础神经网络框架

5.1.1 structural selection

使用不同的卷积提取不同的特征,形成多个通道的低级卷积
然后将各个低级特征进行融合,得到高级特征用于特征识别
缺点: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
平均池化可以限制由于卷积核大小限制造成的估计方差增长

5.1.2 main function description

基础神经网络主要是为了提取丰富的手势信息
为了提高稳定性和泛化能力,本文从训练数据和网络结构两个方面入手
数据方面
对数据修修剪剪,改改饱和度和对比度,旋转,由此生成更多训练数据
网络工作结构方面
maximum pooling:防止均值漂移
translation invariance:保持前后层方差不变,减小耦合程度

5.2 FPA(feature pyramid attention)

为了解决两个问题:

  1. 不同比例缩放的图片很难分辨
  2. 低级特征和高级特征的特征信息不同

因此使用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
不是某种模型。指高级别特征更适合用来做类别分类

5.3 使用小规模的卷积核

使用小规模的卷积核可以降低算法耗时
同时通过增加网络深度,保证视觉感受野大小不变
比如:
一个55的卷积核,提取55的感受野,需要25次运算
而33的感受野,提取55的感受野,需要两层网络,但是只需要332=18次运算

5.4 使用SeNet,建立在不同的特征频道之间的特征依赖

在每一个特征频道有着不同重要性的前提下,我们使用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 的输出的权重看做是进过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。

说得比较模糊,不知道怎么做

本文作者在这一部分进行了改进。

  1. 对全连接层得到的模型进行上采样,得到一个26*26的矩阵
  2. 结合基础网络,将基础网络中每个通道的特征用一个卷积融合起来,再与全连接层的特征相融合

|----------------------------以上是对论文的翻译,下面列举一下看不懂的地方---------------------------|
何为层之间的依赖(dependency)?
|------------------------文章中说明了这么做的目的和优点,但是没有说明具体步骤-------------------|

6.实验采用了哪些指标

6.1 数据集

采用了10个人在一天中不同时间的左右手,复杂背景,共得到3289张图片。建立了16个目标分类的数据集
有通过旋转,放大,调整亮度和饱和度的方法增强训练数据

6.2 参数选择

特别提到了一下batch size这个参数的选择
在2-32之间效果最佳,实验人员选用了32;
并且,为了充分利用显存,实验人员选用了64,并分为两个sub batch(32*2)

6.3 评价指标

Acc: 准确率,指目标手势在识别出来的手势中的比例
Rec: 召回率,正确分类的图片在所有输入图片中的比例
Fvalue: Acc与Rec的调和平均数
Speed: 识别速度

Question:
在这里插入图片描述
比较怀疑自己对Acc和Rec的理解有误
因为根据上面的公式,分子是分类正确的图片数目,两者相同,Acc的分母是所有被分类的图片(凡是给出结果都行),Rec的分母是所有输入图像,前者必定小于后者所以Acc一定大于Rec,但从后面的实验结果来看,显然不是这样

TP:实际为正例,被预测为正例,预测正确
FP:实际为负例,被预测为正例,预测错误
FN:实际为正例,被预测为负例,预测错误
TN:实际为负例,被预测为负例,预测正确
在这里插入图片描述
查询了网上的资料,这样的解释更容易理解,但不清楚是不是曲解了原作者的意图
文中的Acc,上图的查准率P,所有被判为正例的样本中,确实是正例的
文中的Rec,上图的查准率R,所有的正例的样本中,被判为正例的
这两者有时确实有此消彼长的情况,因此需要调和平均数

7.方法有什么缺点

当手势的一些主要特征被遮蔽时,算法会混淆不同的手势,有时会检测不到相应手势
而且,根据算法原理来看,很难事先确定哪一部分是模型认为的手势主要特征

8.自己的想法

最大的感觉是,这个算法好像已经很厉害了,好像没有什么能改进的地方。
仔细想想的话,第一个想法是,能不能把这个算法集成到智能设备上去,当然这一定有人已经想到了。第二个想法是,该算法没有讨论手势在非正对摄像头的情况下的识别效率,我会进一步查询资料了解这个方向的改进难点在什么地方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值