查看: 10222|回复: 12

人脸识别准备 -- 基于raspberry pi 3b + movidius

  [复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-10-26 17:10:01 | 显示全部楼层 |阅读模式
    分享到:
    最近准备系统地学习一下深度学习和TensorFlow,就以人脸识别作为目的。

    十年前我做过一些图像处理相关的项目和研究,涉及到图像检索。记得当时使用的是SIFT特征提取,该特征算子能很好地抵抗图像旋转、仿射变换等变化。可以说SIFT是图像特征工程方面做得很出色的算子。

    现如今深度学习特别是CNN,ResNet等模型被研究者发明之后,图像特征工程似乎已经很“没有必要”了。深度神经网络通过多层表示能够更抽象地表示图像的特征(称作embedding)。

    在人脸识别也得益于深度学习,其中facenet的性能非常出色。facenet基于triplet loss训练模型输出128维embedding。训练时准备M个人,每个人N张图像,目标使得同一个人的不同人脸的embedding距离尽量小,而不同人的人脸图像的embedding尽量大。

    本文将描述基于raspberry 3B + movidius作为硬件平台,TensorFlow facenet作为模型实现人脸识别。后续将基于这套edge computing做一套完整的人脸识别系统,例如考勤系统。【AI入门学习套件】raspberry 3B + movidius在爱板商城也有卖,有兴趣的可以点击>商城购买链接
    本文将不涉及在线人脸检测过程。

    raspberry 3B

    当前的系统:
    1. pi@raspberrypi:~ $ uname -a
    2. Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l GNU/Linux
    复制代码

    相关外设:
    • 16G tf卡
    • 官方摄像头
    • 3.5电阻触屏

    1.jpg

    TensorFlow准备

    首先在raspberry上安装TensorFlow。目前raspberry上预装了python2.7和python3.5.我们选择python3.5.
    https://github.com/lhelontra/tensorflow-on-arm/releases下载tensorflow-1.3.1-cp35-none-linux_armv7l.whl并安装:
    1. pip3 install tensorflow-1.3.1-cp35-none-linux_armv7l.whl
    复制代码

    可能需要pip3一些别的:
    1. # numpy issue
    2. sudo apt-get install libatlas-base-dev
    3. # opencv cv2
    4. pip3 install opencv-python
    5. sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

    6. pip3 install sklearn
    7. pip3 install scipy
    8. # qt issue
    9. sudo apt-get install libqtgui4 libqt4-test
    复制代码

    测试:
    1. pi@raspberrypi:~ $ python3
    2. Python 3.5.3 (default, Jan 19 2017, 14:11:04)
    3. [GCC 6.3.0 20170124] on linux
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. >>> import tensorflow
    6. >>> tensorflow.__version__
    7. '1.3.1'
    复制代码

    pi上运行facenet

    有了TensorFlow之后我们可以编译facenet并在pi上运行。https://github.com/davidsandberg/facenet/tree/tl_revisited
    基于模型20170512-110547运行compare.py来比较多张图像中人脸的距离。发现速度非常慢。
    具体说,首先检测图像中的人脸,这里运行了mtnet网络,然后再通过facenet网络inference。单独测试inference的时间开销20+秒(inference时人脸图像都是160x160)。相比之下用dlib的开销在2秒左右。这样的性能很让人沮丧?
    为了将facenet进行到底,我选择加速,movidius是神经计算神器,inference速度非常快。

    movidius sdk 安装
    clone代码
    1. git clone -b ncsdk2 https://github.com/movidius/ncsdk.git
    复制代码

    因为我们事先安装了TensorFlow,所以修改ncsdk.conf,不再安装TensorFlow,但是还需要caffe
    1. INSTALL_DIR=/opt/movidius
    2. INSTALL_CAFFE=yes
    3. CAFFE_FLAVOR=ssd
    4. CAFFE_USE_CUDA=no
    5. INSTALL_TENSORFLOW=no
    6. INSTALL_TOOLKIT=yes
    7. PIP_SYSTEM_INSTALL=no
    8. VERBOSE=yes
    9. USE_VIRTUALENV=no
    10. #MAKE_NJOBS=1
    复制代码
    make install

    ncs model编译
    clone代码:
    1. git clone -b ncsdk2 https://github.com/movidius/ncappzoo.git
    复制代码
    在tensorflow/facenet下,根据README一步一步编译。最终得到facenet_celeb_ncs.graph文件,这个文件是movidius识别的图模型文件。
    Movidius人脸识别

    这里我先不考虑在线人脸检测。先准备一张照片,离线人脸检测并保存人脸图像作为比对目标。先以一张人脸为例,多个人脸图像其实是一样的。

    在线检测时我们将摄像头的resolution设置小一些,例如280x280。在线识别是,人脸尽量靠近摄像头,这样可以认为这张照片就是人脸照片。或者也可以限定人脸在显示屏上给定的一个区域。

    目前inference的速度~100ms,当前对ncs还不是很了解,待进一步研究后再优化。
    2.jpg
    代码如下(保存在ncappzoo/tensorflow/facenet)
    1. VALIDATED_IMAGES_DIR + '/my1.png'
    复制代码
    是一张人脸图像,通过人脸检测得到后保存的结果
    游客,如果您要查看本帖隐藏内容请回复


    本文作者 wlu,转载自cnblogs




    回复

    使用道具 举报

    该用户从未签到

    发表于 2018-10-30 09:52:33 | 显示全部楼层
    有意思,先看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2018-10-30 22:36:03 | 显示全部楼层
    值得学习,对于人脸识别是可以参考学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2018-11-4 20:47:44 | 显示全部楼层
    55555555555555555555555555
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2018-11-6 12:39:47 | 显示全部楼层
    6666666666666666666666
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-25 14:50
  • 签到天数: 1071 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2018-11-8 08:12:58 | 显示全部楼层
    人脸识别有开源的库吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-8-28 11:59
  • 签到天数: 1558 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-11-14 17:37:50 | 显示全部楼层
    看看识别速度有多快
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-3 08:49
  • 签到天数: 46 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2018-11-15 13:41:01 | 显示全部楼层
    学习 了 大牛  希望后续有其他帖子跟进学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 18:33 , Processed in 0.208763 second(s), 37 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.