mameng 发表于 2022-1-8 23:07

【二哈识图人工智能视觉传感器】测评之四人脸算法

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

<p></p>

<p><span style="font-size:16px;">&nbsp; 人脸识别、特征学习 KPU 在 MaixPy 关键代码,二哈HuskyLens识图是不涉及复杂的AI算法,AI算法已经封装好了,创客拿来用就可以了。</span></p>

<pre>
<code>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 * i.w() - 10), i.y() + int(plist * i.h()))
            re = (i.x() + int(plist * i.w()), i.y() + int(plist * i.h()))
            nose = (i.x() + int(plist * i.w()), i.y() + int(plist * i.h()))
            lm = (i.x() + int(plist * i.w()), i.y() + int(plist * i.h()))
            rm = (i.x() + int(plist * i.w()), i.y() + int(plist * i.h()))
            a = img.draw_circle(le, le, 4)
            a = img.draw_circle(re, re, 4)
            a = img.draw_circle(nose, nose, 4)
            a = img.draw_circle(lm, lm, 4)
            a = img.draw_circle(rm, rm, 4)
            # align face to standard position
            src_point =
            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, feature)
                scores.append(score)
            max_score = 0
            index = 0
            for k in range(len(scores)):
                if max_score &lt; scores:
                  max_score = scores
                  index = k
            if max_score &gt; 85:
                a = img.draw_string(i.x(), i.y(), ("%s :%2.1f" % (
                  names, 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
</code></pre>

<p><strong>&nbsp; &nbsp; &nbsp; <span style="font-size:16px;">&nbsp;下面进行</span></strong><span style="font-size:16px;">二哈HuskyLens识图<strong>测试:</strong></span></p>

<p><span style="font-size:16px;"><strong>&nbsp; &nbsp; &nbsp;放一张女神刘亦菲:</strong></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; 将HuskyLenser二哈屏幕中央的&ldquo;+&rdquo;字对准需要学习的人脸,长按&ldquo;学习按键&rdquo;完成第一个人脸的学习(各个角度)。松开&rdquo;学习按键&ldquo;后,屏幕上会提示:&rdquo;再按一次按键继续!按其他按键结束&ldquo;。如要继续学习下一个人脸,则在倒计时结束前短按&ldquo;学习按键&rdquo;,可以继续学习下一个人脸。如果不再需要学习其他人脸了,则在倒计时结束前短按&rdquo;功能按键&rdquo;即可,或者不操作任何按键,等待倒计时结束。套件可以进行360不同角度深度学习记忆,大大提高准确度。</span></p>

<p></p>

<p><span style="font-size:20px;">识别OK,测试:</span></p>

<p><span style="font-size:20px;">来一张古装测试看看:识别!</span></p>

<p><span style="font-size:20px;">看看二哈能不能从多人中认识神仙姐姐:OK,识别准确度很高的,可以用来做门禁识别</span></p>

<p>&nbsp; &nbsp;&nbsp;<br />
</p>

wangerxian 发表于 2022-1-10 13:18

<p>感觉这AI芯片确实不错!</p>
页: [1]
查看完整版本: 【二哈识图人工智能视觉传感器】测评之四人脸算法