基于VGG19的识别中国人、韩国人、日本人分类器
这是本学期机器学习课程的项目。通过这个项目了解了不少东西,希望通过博客记录下整个项目过程。
国外有一个网站上有一个非常有趣的测试,他们在街头收集了一共18名中国人、韩国人、日本人的照片,放在网站上,让人去识别。博主自己尝试过一次,18个对了7个,38%的正确率,跟猜的概率并没有相差太多,恰好刚在学习深度学习一些模型,了解到可以通过深度的学习模型构建分类器去识别。在一时冲动之下,有了这个项目。废话不多说,直接开始博主完成整个项目的过程。
- 数据集构造
网上没有找到现成的数据集,甚至没有找到单纯包含中国人或者日本人或者韩国人的数据库。遂决定自己构造数据集,能够想到的办法就只能从当地的官方网站(譬如政府、学校等等)收集图片作为我们的训练集。在一番折腾之后,得到具体数据集情况如下:
名称 | 数据来源 | 样本数目 |
---|---|---|
中国人 | 政府网站、明星、老师、学生 | 483 |
日本人 | 政府网站、明星、老师、学生 | 407 |
韩国人 | 408 |
ps:这里我们韩国人的数据存在问题,因为直接来源于Google,真实性不如收集到的中国人和日本人,很可能原始标记就存在问题。
- 人脸检测
人脸检测,我们主要使用的是Haar分类器,这个分类器原理在这篇博文中介绍的很仔细。主要的步骤包括:1)使用Haar-like特征做检测;2)使用积分图(Integral Image)对Haar-like特征求值进行加速;3)使用AdaBoost算法训练区分人脸和非人脸的强分类器;4)使用筛选式级联把强分类器级联到一起,提高准确率。本文直接在python使用opencv提供的接口,顺利完成了人脸检测。效果如下: