人脸识别系列(四):Webface系列1(CASIA-WebFace)

本文介绍CASIA-WebFace数据集的构建过程,采用半自动方法从IMDb网站收集并标记人脸图像,最终形成包含10,575人及494,414张照片的大规模人脸数据集。文章还概述了使用Inception和VGG网络技巧的人脸识别模型。

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

论文链接:Learning Face Representation from Scratch

这篇文章的亮点在于提出一种半自动的方法来收集网络上的人脸图像,最终组成了国内人脸识别届颇具盛名的人脸训练集 CASIA-WebFace,同时还提出了一种11层的CNN最终达到了lfw上的state-of-art。

##数据集的构建

构建数据集时,从网络上爬图像下来很容易,但是给图片逐一做标记却很难。因此作者借用了IMDb网站,通过半自动的方式完成了爬图像和标记。

(IMDb是一个电影、电视和名人内容的展示网站)

在IMDb,每个名人都有一个主页,类似

这里写图片描述

然后先把人的名字爬下来,再爬照片,每个人都有一个mainphoto与photo gallery。

下一个难题在于photo gallery中的一些照片中会出现很多的人。
也就是说要区分出现很多人的照片具体谁是谁,即检测到的人脸的聚类问题

用现有的人脸识别方法来提取特征然后聚类人脸是一种常用的方法,一般的聚类方法需要计算所有样本之间的相似矩阵,这个矩阵会很大,无法加载入内存,因此作者使用了一种更快的聚类方法:

1.通过人脸识别方法提取人脸特征;

2.使用每个名人的mainphoto作为它的种子(因为mainphoto一般都是正脸,而且不会出现其他人);

3.使用那些只有1个人脸的图片去增加每个名人的种子的数量;

4.在photo gallery剩下的图片中,通过与种子的相似度来找到属于每个名人的其余照片。

5.裁剪人脸,将同一个名人的脸单独存入一个路径内,之后再进行人工纠错,进一步提高数据集纯度。

最终得到了10,575人\494,414照片的数据集 CASIA-WebFace。

作者给出了一些常见的人脸数据集的统计数据以比较,可以看出 CASIA-WebFace是当时人脸数据集中数据量最大的公开数据集,为人脸识别技术的发展做出了很大贡献。
这里写图片描述
想要下载CASIA-WebFace的可以通过博主发布的链接下载,内含百度云以及谷歌云硬盘的下载链接:
https://download.youkuaiyun.com/download/fire_light_/11835079

人脸识别网络

使用了Inception、VGG的网络构筑技巧,即更深的卷积层、低维度的特征表达、多种损失函数、与小的卷积核。

网络结构如下:
这里写图片描述
一些技巧的解读:

1.使用多个3x3的卷积核代替大卷积核
2.只使用一个全连接层,减少参数量
3.使用两种监督信号
可以看出作者在网络构筑上没有提出新的思想,而是借鉴了Inception以及DeepId网络的优秀结构。

测试结果:

这里写图片描述

其中与ABCDE对应的特征提取与验证算法如下:

这里写图片描述
DR表示在CASIA上训练的上述的卷积神经网络。

                                </div>
### CASIA-WebFace 数据集概述 CASIA-WebFace 是一个人脸识别领域广泛使用的大型公开数据集[^1]。该数据集由来自中国科学院自动化研究所的研究人员创建,旨在促进人脸识别算法的研发和评估。 #### 数据集特点 作为当时规模最大的公共人脸数据库之一,CASIA-WebFace 收录了大量的真实世界场景下采集到的人脸图像,具有丰富的多样性特征[^2]。这使得基于此数据集开发出来的模型能够更好地适应各种复杂环境下的应用需求。 #### 获取方式 为了方便研究人员获取并利用这一宝贵资源,提供了多种渠道供下载: - 百度网盘分享链接 - Google Drive 链接 具体地址可通过第三方平台如 优快云 进行访问获得。 #### 清洗处理 考虑到原始数据可能存在质量问题(例如模糊不清、角度异常等问题),建议使用者采用 RetinaFace 工具来预处理这些图片文件。通过这种方式可以有效去除不符合标准的数据样本,从而提高后续训练过程中的效率与准确性[^3]。 ```python from retinaface import RetinaFace import os def clean_dataset(input_dir, output_file='invalid_images.txt'): invalid_paths = [] for root, dirs, files in os.walk(input_dir): for file_name in files: img_path = os.path.join(root, file_name) resp = RetinaFace.detect_faces(img_path) if not isinstance(resp, dict): # 如果返回不是字典,则说明检测失败 invalid_paths.append(img_path) with open(output_file, 'w') as f: for path in invalid_paths: f.write(f"{path}\n") clean_dataset('/path/to/CASIA-WebFace') ``` 上述脚本展示了如何使用 `RetinaFace` 库来进行简单的数据清理操作,将无法成功检测出人脸的图片路径保存至指定文本文件中以便进一步审查或移除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值