查看: 2074|回复: 2

[征集/转载] 人脸识别器(双角蜂鸟集联教程)

[复制链接]
  • TA的每日心情
    擦汗
    2020-4-8 12:00
  • 签到天数: 381 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-8-20 09:55:13 | 显示全部楼层 |阅读模式
    分享到:
    人脸检测器 + 情景记录器 = 人脸识别器
    本章为您介绍如何使用两个角蜂鸟基于人脸检测与情景记录器来实现人脸识别。
    • 注意:本范例需要同时运行两个角蜂鸟进行集联
    • 本教程基于Ubuntu 16.04系统

    路径和文件
    • 人脸识别Python:SungemSDK-Python/examples/apps/FaceRecorder/FaceRecorder.py
    • 模型文件 - 检测:SungemSDK-Python/examples/graphs/graph_face_SSD
    • 模型文件 - 识别:SungemSDK-Python/examples/graphs/graph_face_rec

    图像识别 Image Recognition
    连接两个角蜂鸟后,在FaceRecorder目录下执行以下命令来启动 双角蜂鸟人脸识别 范例。
    ~/SungemSDK-Python/examples/apps/FaceRecorder$ python3 FaceRecorder.py
    运行后会出现窗口 Detection, 显示人脸检测结果。 如果检测到人脸, 会出现第二个窗口 Rec 指示录制目标。
    单击 Detection 窗口, 按住 1 可将当前人脸录入至第一个存档中。将负责检测的角蜂鸟对准第二个人, 在Rec 窗口中出现第二个人后, 按住 2 可将第二人录入至第二个存档中。 之后按 r 即可实时训练出人脸分类器。
    识别结果将显示于人脸的检测框上。
    键盘输入:
    • 1-9: 将录制框中人脸储存至1-9。
    • s: 将存档数据存储至指定路径。
    • l: 从指定路径读取存档数据,需与 numBin 符合。
    • p: 重置存档。
    • 注意:必须点击OpenCV窗口键盘输入才有效。

    参数设置初始化
    # Load device (载入双设备)
    # 第二个角蜂鸟设置deviceIdx为1,设置检测器 verbose = 0 来关掉检测相关的终端输出。
    net = hs.HS('FaceRec', zoom = True, verbose = 2)
    net2 = hs.HS('FaceDetector', deviceIdx = 1, zoom = True, verbose = 0, threshSSD=0.55)
    # Set camera mode (摄像头模式)
    if WEBCAM: video_capture = cv2.VideoCapture(0)
    两种模式(WEBCAM):
    • True时使用外接USB摄像头
    • False时使用角蜂鸟内置摄像头
    人脸检测 + 识别
    while True:
            if WEBCAM: _, img = video_capture.read()
            else: img = None
           # 利用第二个角蜂鸟的人脸检测网络得到检测结果
            result = net2.run(img)
            # 记录录制框中的人脸,设置存档数为5,设置人脸数据存档路径
            key = cv2.waitKey(5)
            if len(result[1]) > 0:
                    box = result[1][0]
                    if box[5] - box[3] > 10 or box[4] - box[2] > 10:
                                            recCrop = result[0][box[3]:box[5],box[2]:box[4],:]
                            face_res = net.run(recCrop)
                            prob = net.record(face_res, key, saveFilename='../../misc/face.dat', numBin = 5)
            # 遍历所有检测框,利用第一个角蜂鸟的人脸识别网络返回框中的ID
            for box in result[1]:
                    cropped = result[0][box[3]:box[5],box[2]:box[4],:].copy()
                    face_res = net.run(cropped)
                    cv2.waitKey(20)
                    prob = net.record(face_res, -1, saveFilename='../../misc/face.dat', numBin = 5)
                    # 输出ID在人脸框上
                    if prob is not None:
                            cv2.putText(result[0], '%d' % (prob.argmax() + 1), (box[2],box[3]-25),
            # 画人脸检测结果
            img = net2.plotSSD(result)
            cv2.imshow('Detection', result[0])
            try:
                    # 画录制框               cv2.imshow('Rec',recCrop)
            except:
                   pass
                  cv2.waitkey(1)



    回复

    使用道具 举报

  • TA的每日心情

    2024-4-8 15:13
  • 签到天数: 42 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2018-8-20 10:00:01 | 显示全部楼层
    排版有问题,请查实修改
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-4-8 12:00
  • 签到天数: 381 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2018-8-20 12:12:54 | 显示全部楼层
    satoll 发表于 2018-8-20 10:00
    排版有问题,请查实修改

    现在是否可以了吗
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 03:33 , Processed in 0.125983 second(s), 19 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.