371|1

53

帖子

1

资源

一粒金砂(中级)

【二哈识图人工智能视觉传感器】测评之四人脸算法 [复制链接]

         二哈HuskyLens识图目前硬件原理图和源代码不开源, 这个套件面向青少年创客。主控为勘智K210是嘉楠科技自主研发的一款边缘侧AI芯片,基于RISC-V架构,内置卷积神经网络加速器KPU。KPU可以实现人脸检测、人脸识别、图像识别、图像分类等机器视觉任务K210 的 KPU。简单来说就是 KPU 能加载和运行各种现成的 AI 算法模型,实现各种机器视 觉等功能。主要通过在 K210 的 KPU 上跑 YOLO(You Only Look Once)目标检测算法来实现。人脸识别采用基于YOLO的人脸检测算法和特征提取算法。  K210的KPU算力有0.8TOPS 。小小的芯片这个算力很厉害了。主要参数:

WWW.jpg

  人脸识别、特征学习 KPU 在 MaixPy 关键代码,二哈HuskyLens识图是不涉及复杂的AI算法,AI算法已经封装好了,创客拿来用就可以了。

def face_recognize():
    global flag_enter
    global task_mask,task_ld,task_fe
    global sum_3
    global sum_4
    global now_mode
    img = sensor.snapshot()
    code = kpu.run_yolo2(task_fd, img)
    if code:
        for i in code:
            # Cut face and resize to 128x128
            a = img.draw_rectangle(i.rect())
            face_cut = img.cut(i.x(), i.y(), i.w(), i.h())
            face_cut_128 = face_cut.resize(128, 128)
            a = face_cut_128.pix_to_ai()
            # a = img.draw_image(face_cut_128, (0,0))
            # Landmark for face 5 points
            fmap = kpu.forward(task_ld, face_cut_128)
            plist = fmap[:]
            le = (i.x() + int(plist[0] * i.w() - 10), i.y() + int(plist[1] * i.h()))
            re = (i.x() + int(plist[2] * i.w()), i.y() + int(plist[3] * i.h()))
            nose = (i.x() + int(plist[4] * i.w()), i.y() + int(plist[5] * i.h()))
            lm = (i.x() + int(plist[6] * i.w()), i.y() + int(plist[7] * i.h()))
            rm = (i.x() + int(plist[8] * i.w()), i.y() + int(plist[9] * i.h()))
            a = img.draw_circle(le[0], le[1], 4)
            a = img.draw_circle(re[0], re[1], 4)
            a = img.draw_circle(nose[0], nose[1], 4)
            a = img.draw_circle(lm[0], lm[1], 4)
            a = img.draw_circle(rm[0], rm[1], 4)
            # align face to standard position
            src_point = [le, re, nose, lm, rm]
            T = image.get_affine_transform(src_point, dst_point)
            a = image.warp_affine_ai(img, img_face, T)
            a = img_face.ai_to_pix()
            # a = img.draw_image(img_face, (128,0))
            del (face_cut_128)
            # calculate face feature vector
            fmap = kpu.forward(task_fe, img_face)
            feature = kpu.face_encode(fmap[:])
            reg_flag = False
            scores = []
            for j in range(len(record_ftrs)):
                score = kpu.face_compare(record_ftrs[j], feature)
                scores.append(score)
            max_score = 0
            index = 0
            for k in range(len(scores)):
                if max_score < scores[k]:
                    max_score = scores[k]
                    index = k
            if max_score > 85:
                a = img.draw_string(i.x(), i.y(), ("%s :%2.1f" % (
                    names[index], max_score)), color=(0, 255, 0), scale=2)

                sum_3+=1
                if sum_3 == 10:
                    uart_A.write(b'i')
                    print(sum_3)
                    sum_3=0
                    sum_4=0
                    now_mode = 0

            else:
                a = img.draw_string(i.x(), i.y(), ("X :%2.1f" % (
                    max_score)), color=(255, 0, 0), scale=2)#串口数据预留

                sum_4+=1
                if sum_4 == 10:
                    uart_A.write(b'j')
                    print(sum_4)
                    sum_3=0
                    sum_4=0
                    now_mode = 0


            #特征值学习
            if flag_enter==1 :
                print('feature study')
                #features_data = uart_A.read()
                #if features_data:
                    #stu_name = features_data.decode('utf-8')
                    #print("stu_name=",stu_name)
                with open("/sd/features.txt", "a") as f:
                    f.write(str(feature))  #信息写入SD卡
                    record_ftrs.append(feature)			#人脸特征追加到record_ftrs列表
                        #names.append(stu_name)   		  #追加到姓名列表
                    f.write("\n")
                    f.close()
                flag_enter=0
                uart_A.write(b'i')
                now_mode = 0
                sum_3=0
                sum_4=0
                #写入sd卡
            break

       下面进行二哈HuskyLens识图测试:

     放一张女神刘亦菲:

1.jpg     将HuskyLenser二哈屏幕中央的“+”字对准需要学习的人脸,长按“学习按键”完成第一个人脸的学习(各个角度)。松开”学习按键“后,屏幕上会提示:”再按一次按键继续!按其他按键结束“。如要继续学习下一个人脸,则在倒计时结束前短按“学习按键”,可以继续学习下一个人脸。如果不再需要学习其他人脸了,则在倒计时结束前短按”功能按键”即可,或者不操作任何按键,等待倒计时结束。套件可以进行360不同角度深度学习记忆,大大提高准确度。

C1.jpg

识别OK,测试:

来一张古装测试看看:识别!

C7.jpg 看看二哈能不能从多人中认识神仙姐姐:OK,识别准确度很高的,可以用来做门禁识别

C3.jpg      C3.jpg


回复

421

帖子

0

资源

版主

感觉这AI芯片确实不错!


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表