查看: 1098|回复: 7

[Movidius NCS] 人脸识别准备 -- 基于raspberry pi 3b + movidius

[复制链接]

主题

好友

670

积分

举人

  • TA的每日心情

    3 天前
  • 签到天数: 8 天

    连续签到: 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




    回复

    使用道具 举报

    主题

    好友

    19

    积分

    白丁

    该用户从未签到

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

    使用道具 举报

    主题

    好友

    17

    积分

    白丁

    该用户从未签到

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

    使用道具 举报

    主题

    好友

    14

    积分

    白丁

    该用户从未签到

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

    使用道具 举报

    主题

    好友

    24

    积分

    白丁

    该用户从未签到

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

    使用道具 举报

    主题

    好友

    1171

    积分

    进士

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 66 天

    连续签到: 25 天

    [LV.6]常住居民II

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

    使用道具 举报

    主题

    好友

    2335

    积分

    进士

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 1213 天

    连续签到: 6 天

    [LV.10]以坛为家III

    发表于 5 天前 |显示全部楼层
    看看识别速度有多快
    回复

    使用道具 举报

    主题

    好友

    128

    积分

    童生

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 12 天

    连续签到: 2 天

    [LV.3]偶尔看看II

    发表于 4 天前 |显示全部楼层
    学习 了 大牛  希望后续有其他帖子跟进学习
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网

    GMT+8, 2018-11-19 16:04 , Processed in 0.165405 second(s), 22 queries , MemCache On.

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

    苏公网安备 32059002001056号

    Powered by Discuz!

    返回顶部