简介这份资源将 AR、ORL、Yale、YaleB、FERET、PIE 六个经典人脸识别数据库统一打包并转换为 MATLAB 可直接读取的 .mat 格式同时附带 2 个 .m 脚本用于标签整理与随机划分。资源共 1250 个文件主流尺寸为 32×32 与 64×64整包仅 38.77MB适合人脸识别初学者、科研人员以及相关课程实验快速获取标准数据免去逐一下载与格式转换的麻烦。六个数据库覆盖了光照变化、表情差异、太阳镜/围巾遮挡、姿态多角度等典型挑战可分别用于鲁棒性验证、小样本训练、光照影响分析等任务。资源包目录清晰文件名直接标明数据库与尺寸方便按需索引目前已有 2419 人学习使用是一份即取即用的数据集基础包能有效支撑算法原型验证与对比实验。 做计算机视觉、尤其是做人脸识别方向的朋友大概率都绕不开“找数据集”这一步。早几年公开的人脸数据资源远没有现在这么丰富大家做实验基本就是在AR、ORL、Yale、YaleB、FERET、PIE这几个经典库之间来回倒腾直到今天你翻很多论文的对比实验表依然能看到它们的身影。这篇文章我就想一次性把这些常用人脸识别数据库聊透每个库是什么来头、主要测什么问题、文件结构长什么样、怎么划分训练测试集才不被人审稿人挑毛病以及实际使用中容易踩的坑。如果你正准备复现一篇老论文或者刚开始接触人脸识别的实验这篇应该能帮你省下不少时间。1. 先搞清楚这几个“人脸库”到底长什么样很多人第一次看到AR、YaleB、PIE这些缩写时是懵的因为同一个名字在不同的语境里差距太大。先明确一个前提这里说的AR是Purdue大学发布的AR人脸数据库跟路由器、增强现实完全不是一回事我见过不少新手搜“AR人脸数据库”结果被带偏到别的方向去所以下面我会先把每个库的“身份信息”整理清楚。1.1 AR数据库遮挡与光照的“压力测试场”AR数据库是Purdue大学的A.M. Martinez等人采集的主体是126个人其中约70人是男性、56人是女性每人26张彩色或灰度图像分两个时期采集两次间隔大约两周。这个库最大的特点就是包含了非常典型的“墨镜遮挡”和“围巾遮挡”同时还有不同光源方向的变化、表情变化。这意味着它非常适合用来专门测试一个算法对遮挡和光照的鲁棒性。我在实际使用中比较常用的做法是用每个人的前一批次图像做训练后一批次做测试这样可以顺带验证算法在时间跨度上的稳定性。不过要提醒一句AR库中有个别图像样本存在损坏或者采集不完整的情况比如第125、126号对象的部分照片下载后最好先批量检查一下图片能不能正常解码、尺寸是否统一否则训练到一半报错会很痛苦。1.2 ORL数据库小样本入门的经典选择ORL数据库有时候也叫ATT Face Database是剑桥大学ATT实验室做的里面一共40个人每人10张图片总共400张灰度图分辨率是92×112。图片是不同时间拍摄的表情有睁眼闭眼、微笑不微笑的差别还有微小的姿态变化以及是否戴眼镜的区别。这个库放在今天看非常迷你但它的价值恰恰在于“小”。做传统机器学习算法验证时ORL几乎是起步标配比如你写PCA、LBP、LDA这类方法的代码在这个库上跑一遍几分钟就能看到结果。由于数据量小也很适合用来做教学演示就算你的笔记本没有独立显卡一样跑得飞快。它的另一个优点是人脸区域基本居中背景相对干净预处理压力小。1.3 Yale与YaleB把光照变化研究到极致的两个版本Yale Face Database是耶鲁大学早期做的包含15个人、每人11张图片总共165张灰度图主要变化因素集中在三种情况不同方向光源产生的光照变化、表情变化比如正常、悲伤、惊讶、是否佩戴眼镜。这个库比较适合做光照、表情变化的基础验证。YaleB则要“猛”得多。原始版本的YaleB有10个人9种姿态、64种光照条件后来大家经常使用的Extended Yale B版本扩充到了38个人每人大概有几十到上百张图片覆盖9种姿态和64种光照。很多人论文里写的“YaleB”其实指的都是Extended Yale B这点在读论文和下载数据时要特别注意不然你按十个人的版本去复现人数对不上结果必然对不上。在光照变化的研究里YaleB可以说是“极限挑战场”尤其是大角度侧光源下的样本很多算法在这上面识别率会一下子掉下来这也是检验光照归一化手段好不好用的试金石。1.4 FERET与PIE标准化评测和复合变化的大规模样本FERET是美国陆军研究实验室支持建设的大规模人脸识别评测库总人数超过1000人图像总数超过10000张。它最大的价值不只是规模大而是它有一整套固定的官方评测协议fa作为标准正面训练集Fb测表情变化、Fc测光照变化、Dup I和Dup II测不同时间间隔的重复采集识别稳定性。因为协议固定不同论文里的FERET结果是可以横向比较的这点很多其他库做不到。CMU PIE数据库则是卡内基梅隆大学做的68个人总共41368张人脸图像覆盖13种姿态、43种光照条件和4种表情。它的姿态变化跨度非常大可以用来研究多角度人脸识别不过图像数量多存储和预处理都要花更多时间比较适合有明确多姿态需求的研究。2. 六大数据库横向对比一张表帮你做选型2.1 各库核心参数速查我直接把六个数据库的关键信息整理成一张对照表方便你复制到笔记里。这里的数据是我个人下载和使用时常见的经典版本具体细节可能因来源不同略有出入。数据库人数图像数量主要变化因素常见图像规格是否有遮挡样本是否有官方评测协议AR126约3276光照、表情、墨镜遮挡、围巾遮挡165×120左右有无固定官方划分ORL40400表情、微姿态、配饰92×112无无固定官方划分Yale15165光照方向、表情、眼镜320×243左右无无固定官方划分Extended YaleB38约240064种光照、9种姿态192×168裁剪版本常见无常见按Subset划分FERET100010000表情、光照、时间间隔256×384左右无有官方协议CMU PIE684136813种姿态、43种光照、4种表情640×480左右无无固定官方划分这张表适合做初步筛选但具体的目录结构、文件命名方式不同来源下载的版本有可能不一样使用时一定要先打开文件夹看一眼别直接按固定路径写代码。2.2 按用途怎么选论文实验、算法验证、工程预研选型时首先要问自己一个问题我要解决的问题到底是什么如果只是快速验证一个特征提取方法在最简单情况下能不能跑通ORL是首选因为小、快、干净调试起来很舒服如果做的是光照鲁棒性相关工作Yale和Extended YaleB基本是绕不开的尤其是YaleB的子集划分很多论文都是靠它说明光照归一化效果如果方向是遮挡鲁棒性AR数据库最典型墨镜和围巾两类遮挡能覆盖不少实际场景。如果是做多姿态人脸识别PIE非常合适13种姿态的覆盖面在经典库里算很广的。而如果目标是要证明算法在较大规模数据集、标准协议下依然可靠那么FERET是更权威的选择毕竟它有固定协议审稿人比较认可这种“可复现的对比”。至于现在流行的深度学习人脸识别动辄用MS-Celeb-1M、WebFace、LFW做训练和测试这些经典库确实显得小了。但我的建议是在小样本、消融实验、传统方法对比这些环节经典库依然很有用因为它们的变化因素很“纯粹”能帮你精确定位算法短板。大规模数据反而因为干扰因素太多出了问题你很难判断是哪一步导致的。3. 实操要点获取、预处理和评测协议3.1 数据获取渠道与使用授权这些老库的下载渠道比较分散而且很多官方网站年久失修链接经常打不开。ORL的原始页面在ATT现在经常跳转到别的地方更省事的方法是从普林斯顿的CS镜像或者Kaggle上找Yale库在耶鲁CVL的页面可以直接申请Extended Yale B在相关项目主页有下载FERET需要去NIST走正式申请流程签署分发协议后才能拿到PIE则需要给CMU提交使用申请填一份协议表格AR库可以在Purdue的相关页面碰碰运气有时候研究者主页上能直接找到压缩包。这里特别提醒一句这些库基本都是Research Only只能用于学术研究毕业设计、发论文没问题但如果你要做商业产品必须先跟版权方确认授权范围和商用条件否则风险很大。另外下载来的压缩包一定要校验一下图片数量和解码情况我曾经从某个非官方渠道拿到的AR压缩包目录结构没问题但有几十张图其实是损坏的白白浪费了一天调试时间。3.2 图像预处理对齐、裁剪、归一化不管用哪个库预处理都建议按照“人脸检测→对齐→裁剪→灰度化→光照归一化→尺寸统一→像素归一化”这个流程来做。ORL和Yale的画面比较规整人脸基本在中间简单裁剪和缩放就行但YaleB、PIE这类库姿态和光照变化大如果直接用原图算法很容易被背景和光照干扰带偏。人脸检测和对齐我用得比较多的是dlib的landmark检测或者OpenCV自带的检测器近几年也可以用MTCNN或者RetinaFace这类深度学习方法。检测到关键点之后根据两眼坐标把人脸旋转摆正再裁剪到统一尺寸这一步能极大提升后续特征提取的稳定性。光照归一化方面如果你用YaleB做实验建议至少做一次直方图均衡化更讲究一点可以用TanTriggs算法或者DoG滤波这类方法专门抑制光照不均。很多人一上来就堆复杂的深度学习模型但忽略了一个事实在YaleB这种光照极端的数据上一个简单的光照预处理往往比换更大的模型更有效。像素归一化也别忘了通常把灰度值映射到[0,1]区间或者按均值方差做标准化这对深度学习模型的收敛速度影响很明显。3.3 训练测试集划分和官方评测协议训练集和测试集的划分直接决定实验结果能不能被别人复现这也是审稿人经常盯的地方。ORL最常见的划分是每人随机选5张做训练、剩下5张做测试重复多次取平均准确率或者做留一法交叉验证。Yale因为人数少比较适合留一法或者随机划分多次取平均。AR库常用两种划分一种是把一部分人全部图像作为训练、另一部分人作为测试这验证的是“身份是新的”场景另一种是每人前14张不遮挡图像训练、后12张遮挡图像测试这验证的是遮挡鲁棒性。两种做法都有论文在用关键是写清楚。YaleB有一套广泛接受的Subset划分方法把不同光照条件分成5个子集常见做法是用Subset 1到3做训练、Subset 4和5做测试因为后两个子集的光照条件最苛刻能充分检验算法的光照鲁棒性。FERET不用自己划分直接用官方协议就好fa是训练集Fb、Fc、Dup I、Dup II是测试集。PIE采样子集的时候要说明清楚你用的是哪几种姿态、哪几种光照下的图像否则别人很难复现。4. 常见问题与避坑实录4.1 数据集太小模型过拟合怎么办ORL总共400张图Yale 165张这种规模放在深度神经网络里基本上“喂不饱”。我在ORL上试过直接拿一个小型卷积神经网络训练很快训练准确率到100%、测试准确率反而上不去典型的过拟合。后来总结的经验是先换简单模型比如逻辑回归加PCA特征或者浅层的MLP用这类方法跑ORL反而效果很稳定如果非要用深度学习一定要加数据增强比如随机裁剪、水平翻转、小角度旋转、亮度扰动。当然更现实的做法是用这种小库做pipeline验证和结果初步判断正式效果对比还是得去更大的数据集上做。4.2 光照敏感先做光照归一化再谈模型Extended YaleB的Subset 5里那些大角度光源下的人脸灰度分布极其不均匀一半脸亮一半脸暗直接用原始像素训练很多模型都会翻车。我最早做这个实验时没做任何光照预处理ResNet也扛不住测试准确率只有六成左右。后来在预处理阶段加了TanTriggs光照归一化同样的模型直接提升到了九成以上。这个经历给我的启发是数据本身的问题要优先在数据层面解决不要指望模型去硬扛数据缺陷。4.3 标签和文件格式的“隐藏坑”不同来源的AR库目录结构可能差别很大。有的版本按人分文件夹文件夹名是“m-001”、“w-001”这种有的版本不分男女直接按数字编号还有的版本把训练测试混在一起。PIE库的文件命名比较复杂一张图的名字里同时编码了姿态、光照、表情信息比如“p07_s07_c09”这种格式解析的时候一定要对照官方说明切错分隔符就会得到完全错误的标签。我的习惯是第一次拿到任何库先写一个小脚本把每个文件名、标签、图像尺寸输出到一张CSV里人工抽查一遍再进下一步。这个步骤虽然麻烦但能避免后面所有问题被放大。另外有些库里的标签是0开头还是1开头、灰度值范围是0到255还是0到1这些细节都会影响最终结果提前确认好能省很多事。4.4 老库下载链接失效的应急方案这些库的官方下载链接不稳定是常态。ORL我从ATT官网下过一次页面后来改版直接404了最后是从普林斯顿的镜像站找到的FERET走NIST申请虽然正式但周期相对长如果时间紧先看看学校或者实验室是否有人已经申请过直接内部共享使用是很常见的做法。如果从GitHub和Kaggle等第三方渠道获取尽量选star数高、下载量大的仓库拿到后重点校验三件事图片总数对不对、关键样本比如AR的遮挡图是否存在、尺寸和官宣是否一致。我之前遇到过一个“被二次处理过”的AR版本图片被统一缩放过、还转了格式直接导致模型输入尺寸和原论文不一致所以拿到任何非官方来源的数据都要多留个心眼。4.5 避免关键词搜索被“带偏”如果你要搜AR人脸数据库建议直接在搜索引擎里输入“AR face database”或者带“Purdue”字样而不是搜“AR人脸”否则很容易被AR增强现实、AR路由器之类的内容干扰。搜YaleB就输入“Extended Yale Face Database B”搜PIE就用“CMU PIE face database”。这些小细节看起来不起眼但能让下载环节顺利很多。5. 我的一点个人体会这些经典数据库的数据量放在今天的确不算大但我在做小样本算法验证和方法对比时依然经常用它们。原因很简单这几个库的变化维度足够“纯”YaleB就是光照极端AR就是遮挡ORL就是小样本和轻微姿态表情变化算法在哪一步掉链子用它们一测就能定位。而大规模数据集往往是光照、姿态、遮挡、年龄各种因素混在一起最终效果不好时你很难说清楚问题出在哪个环节。另外我经常把ORL和Yale推荐给刚入门的学生因为它们能让你用极低成本把“读图→预处理→特征提取→分类→评估”这条pipeline完整跑通非常适合建立对整个人脸识别流程的直觉。某种程度上这些老库不是过气的实验品而是一把把“手术刀”专门用来解剖算法的具体短板。如果你手头在复现PCA、LBP、SRC这些经典方法这几个库足够你玩得很尽兴关键是每一个细节都亲手过一遍。本文还有配套的精品资源点击获取