手势识别(三)--ChaLearn Gesture Challenge数据说明

2023-12-31 23:40

本文主要是介绍手势识别(三)--ChaLearn Gesture Challenge数据说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文:http://www.cnblogs.com/tornadomeet
另外一个博主根据上文修改过:http://blog.csdn.net/wm_1991/article/details/52577623
ChaLearn Gesture Challenge挑战赛是手势识别中比较新的(2011年开始的)一个挑战赛,属于 机器学习挑战赛中的一个,其初衷是进行One-Shot learning的挑战,当然也不局限在此。官网为: http://gesture.chalearn.org/  ,2012年分别主办了两轮比赛,一个是在CVPR2012中进行,另一个是在ICPR2012中进行。关于本次比赛的一些规则,以及已经完成比赛的作者的识别方法的一些细节在官网上都能查看得到。大家有兴趣13年也可以参加下。因为在日常生活中会遇到各种各样的手势,如果对这些手势的识别能取得很大成功的话,那么离AI又更近一步了,下面这张图是生

活中常见产生手势的场所:

  

  本文主要是简单介绍下关于这个挑战赛的数据库,数据库的英文名称为ChaLearn Gesture Data,简称CGD,或者CGD2011。数据库可以从http://gesture.chalearn.org/data/cgd2011这里下载,如果下载压缩版的则大小约5G,否则无压缩版的则达到30G。考虑到即使压缩过后,其实也不会对识别结果有太大的影响,且本人电脑承受能力有限,所以我这里下载了个压缩版的。

  当然了,下载下来后的数据库都是视频格式,分为深度图像视频和彩色图像视频,因为在录制视频的时候是用Kinect录制的。由此可见,这些手势识别既可以能有深度信息又可以利用色彩信息,这对搞深度数据的行为识别的人算是一个很好的公共数据库了。

  下面是这个数据库的一些特征:

  1. 共有30个左右的手势单词,也就是说有30个基本的手势动作。

  2. 视频数据分为500个batch,每个batch含有94个视频,视频分为2种,每种各47个。如果视频名称为M_x.avi的话,则表示是RGB图像的视频,否则名称为K_x.avi表示的是深度图像的视频。每个视频有可能有多个基本手势动作,一般是1~5个,且每个batch最终是100个手势,很明显这中间有重复的手势(因为总共才有30个手势单词)。因此,最终有50000=500*100个手势。每个batch如下图显示:

  

  当然了,其中还包含了2个csv文件,用来描述训练和测试数据用的(具体应用还没弄过)。数据库中每一个batch都是对应一个人的手势,且每一个batch都只有8~15种手势,虽然说有47个视频共100个手势,但是这是One-shot learning,所以训练数据的标签也是只有8~15个,其它的都是测试数据的标签(每一个batch中的每一种手势都只能用一个视频来训练)。

  3. 视频数据的录制是由20个人完成的。取出一个人的某一个手势的深度图和RGB图,显示如下:

  

  4. 视频中每一张图片的大小为240*320.

  5. 视频的帧率是每秒10帧。

  6. 这500个batch又分为2种,即”devel”和”valid”,其中”devel”有480个,”valid”有20个。”devel”表示可用于挑战赛开发(development)的数据库,这些数据提供了训练数据和测试数据的标注。”valid”表示用于验证(validation)的,只提供了训练数据的标签。测试结果需要在网络上提交。

  7. 深度图像是以灰阶的形式显示出来的,其计算公式如下所示:

  f(x)=(x-mini)/(maxi-mini),max为最大距离,min为最小距离。X是当前点的距离,f(x)为深度图像显示时的灰度值。

  8. 深度图像也是有不同精度的,因为录制数据时的软件版本不同。这里分为3个精度,0表示一般(Mediocre),1表示比较好(Good),2表示非常好(Very Good). 比如说前面几个batch的精度显示如下(num表示序号,acc表示精度, miss表示漏洞的文件):

   

  如果大家是研究手势识别的话,特别是基于Kinet深度信息的,可以一起交流下,挑战下这个数据库.

官网上不仅提供了数据库的下载以及一些比赛规则,还提供了丰富的sample,这些sample中包含了很多图片,视频的处理,比如说深度图像和RGB图像的去噪,梯度计算,采样;视频特征的提取,这些特征包括STIP,MHI,MEI,HOG,HOF,PCA等;一些手势识别的算法,比如DTW;头部检测,骨骼检测,背景消除等等。在官网http://gesture.chalearn.org/data/sample-code上可以下载到最新版的code,解压后有4个.m文件,这4个文件就是提供的sample,分别为browse.m(用来浏览和播放视频数据的,有GUI,类似一个简单的播放器),examples.m(该文件中包含了26个sample,sample的内容如上面所讲),main.m(该文件提供了一个principal motion的识别算法,有整个训练和识别的全部代码,效果还不错),prepare_final_resu(主要是用来参加挑战赛提交验证代码的格式统一用的)。

关于该数据库的挑战赛在2012年主办了2场,其比赛结果依次分别在CCPRW2012和ICPRW2012中公布。这2轮比赛过程中官网http://gesture.chalearn.org/中都有对参加比赛的队伍所使用的方法等从感性上做了个调查,并且公布了其调查报告。从这些报告中我们可以参考到做手势识别的大概流程,每个流程中常见的方法是什么,我想这点对初步进入该领域的人来说应该有很大的启发作用。下面就官网发布的第二轮比赛调查Method survey文章来简单分析下。

  从文章中可以看出识别过程主要分为2大部分:预处理及数据表达、识别。

  其中预处理及数据表达又可以细分为很多,比如说图像增强和滤波,这有时候也是需要的,因为识别的视频数据中有不少噪声。文章对比赛获得前8名的方法分析了下,其结果如下:

   

  其中的方法也有不少,比如说去噪,均衡白化,对比度增强,频域变化,背景消除等。特征提取各队伍使用的方法分布如下:

   

  其中包括了常见的HOG/HOF描述等。

  当然了,特征最终提取出来还是要经过维数约简的,如下:

   

  在识别过程中,有可能会使用到时间分割,如下:

   

  很多分割方法和识别是结合在一起的。

 

  当然了,识别过程中比较重要的是手势的表达,这些队伍使用的方法如下:

   

  其中基于可变长度的向量表示最多。

 

  在分类时的相似度测量,使用的方法分布如下:

   

  最后面就是使用的分类器了,如下所示:

   

  可以看出在这些队伍中,用得最多的分类器是最近邻。

 

  现在总结下手势识别系统的大概流程可以如下(当然了,并不是每个步骤都需要的):

  去噪预处理——》时间分割——》特征提取——》维数约简——》特征表示——》分类器设计(可能用到相似度测量).

CGD数据库是2011年建立的,且在2012年利用该数据库进行了两轮One shot learning的挑战赛,从官网上给的CGD数据库可以推断出组织方是花费了很大的精力来收集这些数据的,不仅而此,组织方还给出了很多sample代码以及一些对应数据采集界面,方便大家共同扩大该数据库。CGD数据库目前有50000多个关于手势视频,共500个batch,每个batch都是同一个人在相同环境下的手势动作,只是手势内容不同而已。且每个batch都分为训练部分和测试部分。训练部分的每个视频只包含一个手势,而测试视频则包含1~5个手势。且两者都有标注对应的视频是哪个手势。在看过one shot learning的一些文章前脑袋里会有2个疑惑。

  1. 该CGD数据库只适应于做One shot learning吗?

  答案肯定不是。不过在目前的CGD库的每个batch中的训练部分中,一个手势只对应一个视频,且每个视频只有一个手势。测试部分则可以有多个手势(意味着需要进行不同手势的时间维分割),不同的batch之间只是人和环境不同,且手势类别的标注是独立的,也就是说batch01和batch02中标注为1的那个手势其实不一定是同一个手势。这个也非常容易理解,因为该数据库目前是为了one shot learning而标注的,一个手势只能用一个视频来学习。所以CGD的50000个手势大部分都没有用到,其实只用到了其中的30个视频作为训练即可,其它的都可以用来做测试。因此,在目前的数据库和目前的标注下,确实只能用于做one shot learning,如果想用到其它需要大量数据训练的领域的话(比如deep learning, supervised learning等)就需要重新标注这些手势视频,使它们的标注在不同的batch中保持一致。

 

  2. 2012年的这两轮one shot learning比赛算法流程大致是什么呢?不是说只能用一个数据来训练么,那为什么官方的分析ChaLearn Gesture Challenge_4:one shot learning比赛结果简单分析中还有分类器这一栏呢?

  首先因为one shot learning确实只能使用一个样本来训练,所以一般的分类器都会失效。比如说svm,adaboost,random tree等。因为这些类器的设计需要大量的正样本,同时也需要不少负样本,所以就目前只有一个样本的情况,是不可能训练出这些分类器参数的。并且该挑战赛其实是一个多分类问题,那就更需要样本了。因此这里的分类器我们要理解为测试样本的特征和训练样本中的每个样本特征(因为N个手势对应N个样本)进行相似度比较,找出最相似的那个样本手势类别为最终的分类结果。从这些比赛作者提供的论文可以看出,它们大部分都使用最近邻法,这就很容易理解了。

  现在来看看one shot learning比赛的大致算法流程:首先肯定是提取出每个batch中训练样本的特征(虽然每个手势只有一个视频),这个特征一般用个向量表示。然后把测试视频中手势的特征向量也提取出来,由于一个测试视频有可能含有多个手势,所以必须先把这些手势视频区域给分割出来,这个分割的准确非常影响最终的评价结果(其实就是相似度测量),因为后面是用编辑距离来评价的,如果分割出的手势个数出现错误,或者位置出现错误,则这个编辑距离会变得很大。从比赛统计结果发现,参赛队伍一般使用candidate cuts的方法来进行分割的。

参考资料:

     http://gesture.chalearn.org/

      Method survey


这篇关于手势识别(三)--ChaLearn Gesture Challenge数据说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/557505

相关文章

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

Spring Boot Actuator使用说明

《SpringBootActuator使用说明》SpringBootActuator是一个用于监控和管理SpringBoot应用程序的强大工具,通过引入依赖并配置,可以启用默认的监控接口,... 目录项目里引入下面这个依赖使用场景总结说明:本文介绍Spring Boot Actuator的使用,关于Spri