CASIA-B步态数据集的一些粗糙理解

本文深入探讨了CASIA-B步态数据集的结构与应用,详细介绍了数据集包含的124个人的不同状态视频,以及如何利用深度学习进行步态识别。通过实例分析,展示了数据集在跨视角、多状态下的识别挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       CASIA-B步态数据集是中科院自动化所提供的,发布时间虽然已经有快二十年了,但是基本上国内外论文都以该数据集进行评估识别精度。首先该CASIA-B数据集包括轮廓图形式和能量图形式,再就是需要申请的CASIA-B的15004个视频,实际上还是比较大的,申请途径也不难。由于该视频数据集不允许商业化,所以这里不提供视频百度云了,真的有需要可以自己申请。

     先说一下video的视频数据集吧,视频格式是avi,虽说每段视频只有不到十秒,但是总体的数据集还是很大的,首先包括了124个人,状态共有十一种(多了一个空背景):2种带包的(有的是单间跨包、有的是手提包)两种穿厚衣服(应该是一个很厚,一个更厚),然后是6种正常状态下的,在加一个空背景。每种状态分别从11个角度进行拍摄(0°,18°,36°,...180°),总共计算,11*11*124=15004。 步态识别在某种程度上将仍是分类任务,不同的文献可能有不同的分类标准,如果去掉空背景外,可以被利用的视频总共有13640个,属于每个行人的共有110个视频。

    现在再说一下轮廓图数据集,上面中包含行人的13640个视频,将每个视频分解成若干帧,(若干是因为每个视频存在时间长短不一,所以分解的帧数不统一),然后中科院利用分割算法,将行人轮廓分解得到二值图,假如每个视频平均分解了50帧,总共的轮廓图图片张数为682000,大部分分割的特别漂亮,鉴于当时的技术,估计应该是应用传统方式,图像和背景的差分法分割的上面也提到了含有空背景状态,如图1, 

         

                                                              图1.视频-轮廓序列

      但是也存在一些分割存在空洞或边缘破损的,如果要在实验中用到该数据集可能需要处理一下。比如图2这种,理论上说这种情况还挺多的。之前看到一些论文说用膨胀腐蚀,我觉得这种方法并不好,膨胀腐蚀会直接改变轮廓的边缘形状,我们只需要将这些空洞的修补,这里我觉得可以利用八领域进行修补。

          

                    图2 破损的轮廓图

  CASIA-B步态数据集的最大特点就是跨视角,多状态。

补充一下步态识别、人脸识别或者是虹膜识别中的“识别”到底和mnist分类、猫狗分类、垃圾分类到底有什么区别?

       简单来说,分类就是知道了固定类别,比如垃圾分类,我们对干垃圾,湿垃圾进行分类,无外乎就这几种,所以分类尾端都会连接一个softmax,然后有几个类就有几个输出值,代表属于这几类的概率值。

      在“识别”任务中,就不知道类的数量了,以最简单的iphone手机的人脸识别开机做说明,全世界每个人都有自己的一张脸,如果每个人都为一个类,那岂不是有好几十亿类,当前利用深度学习进行“识别”,其实都是先训练,在识别。

     训练“识别网络”类比孩童的眼睛去观察,比如,记住该人的眼睛,鼻子,脑袋,实际上就是提取人体身份信息的能力。

     在“识别”过程,在外文中常用“Verification”,通过对比特征的差异性进行对比判别,在手机人脸识别中,新机会先记住机主的人脸图片,在使用中刷脸开机,就是通过与机主人脸的特征比对进行判别是否开机。

下面来看看各使用到步态的经典文献和一些硕博论文到底是怎么使用CASIA-B这种数据集的。

    1. DeepGait  :A Learning Deep Convolutional Representation for Gait Recognition

     这篇论文用了两种数据集进行步态识别,这里只针对CASIA-B,该论文主要分为两个步骤,(1)训练步态特征提取网络VGG-D(vgg16)

(2)gallery和probe 进行对比。

第一步中它直接用Imagenet预训练模型作为的步态特征提取网络,这样确实比较简单粗暴,可能他觉得Imagenet训练完的VGG-D具有强大的特征提取能力,和VGG-D的结构完全一样,除了softmax1000。此外还有不同周期内取最大特征值作为特征等细节,可以自行看论文。

开始在CASA-B中直接进行“Verification”,采用欧式距离进行评估,,说明一下注册集(gallery),和测试集(probe)的含义:

以iphone手机为例,新机最初会接受机主的一张人脸,这就是注册集(gallery),在今后使用时候,不同的人拿着想刷脸开机,这些人脸图片就是测试集(probe),一般我们在刷脸是,机器会报,请正对脸,请侧脸,请咋眼,就是输入了多种注册集,一般情况下我们希望数据集能够符合常规情况,比如人脸是正脸,不能挤眉弄眼,同理,步态识别我们希望将NM选为注册集。

DeepGait做了两组实验,第一组关注角度,第二组关注衣物。

第一组实验如下,既然只关注角度,即只对NM下的6种数据集实验,NM01-04作为gallery,NM05-06作为probe,分别比较0°,18°....180°。以0°为例,001-124中的NM05-06的0°下的周期视频帧进行特征提取,设第i个特征为Pi,  对001-124中的NM01-04的0°下的视频帧进行特征提取,得到的特征集合为G,pi与G中每个特征进行欧式距离,找到与其最小的Gi,根据Gi的身份进行判别其id.

第二章实验如下,包括三种比对,gallery和probe是(nn,nn)、(cl,cl)、(bg、bg),既然关注衣物,角度就固定,选择最简单的90°。以nn,nn为例,001-124中,NM01-06中,90°下,第五个周期序列作为注册集(gallery),第六个周期序列作为测试集(probe).(cl,cl),(bg,bg)使用第一个周期作为注册集,第二个周期作为测试集。

未完待续...

 

 

CASIA-B是计算机视觉领域一个常用的人体数据集,其中包括了二值人体轮廓图。将图像转换为二值人体轮廓图,通常需要使用图像处理技术,例如阈值分割、边缘检测、轮廓提取等步骤。以下是一个简化的代码示例,展示如何使用Python中的OpenCV库来实现这一过程: ```python import cv2 import numpy as np # 假设你已经有了一个灰度图像binary_image # 如果是从彩色图像转换来的,需要先将其转换为灰度图 # color_image = cv2.imread('path_to_image.jpg') # gray_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY) # 读取图像 binary_image = cv2.imread('path_to_binary_image.jpg', 0) # 使用阈值分割或者Otsu的方法来获取二值图像 _, binary_contour_image = cv2.threshold(binary_image, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) # 可选:进一步平滑图像 # binary_contour_image = cv2.GaussianBlur(binary_contour_image, (5, 5), 0) # 使用findContours找到轮廓 contours, _ = cv2.findContours(binary_contour_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 创建一个新的图像,用于绘制轮廓 contour_image = np.zeros_like(binary_image) # 绘制轮廓 cv2.drawContours(contour_image, contours, -1, (255, 255, 255), 1) # 显示结果 cv2.imshow('Binary Contour Image', contour_image) cv2.waitKey(0) cv2.destroyAllWindows() # 保存图像 cv2.imwrite('contour_image.jpg', contour_image) ``` 请注意,这个代码示例是非常基础的,实际应用中可能需要更复杂的图像预处理步骤来适应不同的图像条件。比如,可能需要进行图像去噪、形态学操作等步骤来优化二值化效果和轮廓的清晰度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值