TensorFlow练习23: “恶作剧”

前面有一个帖《OpenCV检测场景内是否有移动物体》我用树莓派做了一个简单的Motion Detection,放在卫生间的,它会在我上大号时自动播放音乐。

我一个人租房,几个盆友周末时常会找我玩,他们觉得我做的Motion Detection很垃圾。于是我就想恶搞一下,用TensorFlow做一个“人脸识别”,在我上大号时播放音乐,如果是别人就播放《张震讲鬼故事》(@xingCI说放屁声更搞)。

我的任务的训练一个模型可以区分“我”和“其它人”的脸。注意,上面“人脸识别”我是加引号的,其实并不是真正的人脸识别,充其量就是个图像分类。如果你要使用真正的人脸识别,可以试试现成的库OpenFace+dlib《使用OpenFace进行人脸识别》。

有人已经把TensorFlow移植到了树莓派,项目地址tensorflow-on-raspberry-pi

准备数据

本帖需要使用到两组数据:一组是包含我脸的图像,另一组包含其它人人脸的图像。

其它人人脸的收集

找一堆图片,只要不包含自己就行,然后使用OpenCV提取图像中的大脸。

我使用的数据集是前面几帖用到的:《妹子图》《大脸》《imagenet

提取图像中的人脸,我使用OpenCV,据说使用dlib效果更好。

other_peoples_faces.py:

TensorFlow练习23: "恶作剧"

4万多图片,我只提取了1万张脸,应该够使了。

TensorFlow练习23: "恶作剧"
图像大小 64×64

TensorFlow练习23: "恶作剧"

上面是OpenCV做的人脸检测,有了这个数据集又可以反过来训练TensorFlow版本的人脸检测。

斗大熊的脸

给自己拍照1万张,这是我一次拍照最多的一回。

在镜头前摇头晃脑、摆pose,戴眼镜、耳机,仰天45,写代码,呲牙咧嘴,玩手机。。。一定要多样化,直到拍1万张大脸。

训练模型

训练数据有了,下面开始训练。

准确率曲线:

TensorFlow练习23: "恶作剧"

下面要做的就是在树莓派上使用模型,代码示例:

TensorFlow练习23: "恶作剧"

总结:占用内存100多M,准确率还凑合,先用着。

上面方法需要收集两类数据(自己的脸和其他人的脸),有没有办法只使用自己的脸做One-Class分类呢?这样就不需收集其他人的脸了。感觉上可以用autoencoder。

如要转载,请保持本文完整,并注明作者@斗大的熊猫和本文原始地址: http://blog.topspeedsnail.com/archives/10931

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注