scikit-learn 官方例子中有多个例子都用到了脸部数据集,本文对Olivetti脸部数据集做一个简要的分析,作为机器视觉的知识的基础。
1.官网介绍
小编先致谢知乎中文翻译团队以及AT&T剑桥实验室:
有四十个不同的个体,每个个体有十张不同的图片。对于某些个体,图像在不同时间拍摄并且改变照明和面部表情(睁开/闭上眼睛,微小/不微笑)和面部细节(戴眼镜/不带眼镜)。所有的图像采用黑色均匀的背景,个体处于直立的正面位置。(容许一定的侧移)
图像被量化为256个的灰度级并以8位无符号整数的形式存储;加载器将这些无符号整数转换为[0,1]之间的浮点值,这样能方面很多算法的使用。
该数据库的”目标”一个是从0到39的整数,代表着图中人物的身份。然而,由于每一类只有十个样例,从无监督学习或半监督学习的角度来看,这个相对较小的数据集更加有趣。
原始的数据集由92x 112大小的图像组成,然而这里提供的版本由64x 64大小的图像组成。
2.数据集的获得
采用函数:
sklearn.datasets.fetch_olivetti_faces(data_home=None, shuffle=False, random_state=0, download_if_missing=True)
获得相应的数据。
函数参数如下:
data_home:optional,默认 None。下载和存储数据集的文件夹,默认存储在 ‘~/scikit_learn_data’ 文件夹下。一般我们为了程序的可移植性以及管理,将数据集放在project的专用文件夹里,于是我们采用相对路径,data_home=’./专用文件夹’
shuffle:boolean, 可选,是否打乱照片。
random_state :int, RandomState instance or None, 可选。与系统的random_state一致。
download_if_missing :可选,默认True。如果数据在本地不可用报错,而不是在网上下载数据。
3.数据构成
官网介绍如下:
数据集包含400张照片,每张照片为64X64数据矩阵,将64X64矩阵存储为1行数据即4096,因此总的数据大小为400X4096.
target为400个标签,总共有40个人的照片,每个人有10张照片。
4.代码深入解读4.1导入数据
将数据读取,此数据需要下载,下载我们得到一个文件名为olivetti_py3.pkz的文件,data_home为下载地址,将其下载至相对路径的datasetsfile文件夹下面,注意表示相对路径为“./”。我们也可以将其下载到其他文件夹,采用绝对路径,比如:data_home=’F:\工作’。
数据的关键字为:
将data以及target分别赋值于X_face_data以及y_face_data。
4.2 数据大小分析
结果如下:
4.3 查看图片
查看图片有多种方式,本文列举最常用的两种方式:
第一种:
结果如下:
第二种:
效果一样:
4.4 保存图片
将图片保存至本地,单张图片的保存方法有两种:
第一种:
第二种:
第一种方式相当于把图片画出来然后保存,第二种方式保存的图片仅仅为系统按照数据生成的图片,大小也按照系统生成的大小进行。大家感受一下(左边为画图生成,右边为系统生成。第一行为大图标,第二行为超大图标):
将所有的图片生成并保存至本地:
保存后的图片如下:
5 小结
本文对Olivetti脸部数据集做了简要的分析,对数据集有了初步的了解,今后遇到类似的数据集可以按照相同的方式进行分析,套路一样。
领取专属 10元无门槛券
私享最新 技术干货