插播广告:我的个人博客:了起的博。
角蜂鸟的DEMO里没有FaceNet的应用。不过在模型里附带了它。FaceNet是一款很经典好用的人脸识别的模型。极大的加速了自己项目的开发。毕竟谷歌训练的时候可以有很大的训练数据,个人玩的话,鬼知道练到猴年马月了。
这里直接借用了情景记录器的程序,角蜂鸟的情景记录器功能非常好用,对于玩家级别的用户来说实用性非常强大,真的相当于是傻瓜化操作了,上两个傻瓜化操作的开源硬件的发展大家也都看见了,一个Arduino,一个树莓派,可以说都是大获全胜。
官方DOC:https://hornedsungem.github.io/Docs/cn/workflow/python/recorder/
NCS facenet:https://github.com/movidius/ncappzoo/tree/master/tensorflow/facenet
角蜂鸟官方的说法是模型转换通用于NCSDK V1的,V2似乎有些问题。反正生态圈子慢慢建嘛。目前给的DEMO
虽然不多,但是都是很用心的设计,基本自己玩是够用了。
还是那句话,写些为纯新手而准备的文。
Code如下:
import cv2, sys
sys.path.append('../../api/')
import hsapi as hsWEBCAM = False # Set to True if use Webcamnet = hs.HS('FaceNet', zoom = True, verbose = 2)
if WEBCAM: video_capture = cv2.VideoCapture(0)try:while True:if WEBCAM: _, img = video_capture.read()else: img = None# Get image descriptorresult = net.run(img)key = cv2.waitKey(5)if key == 255:key = -1prob = net.record(result, key, saveFilename='../misc/record.dat', numBin = 5)if prob is not None:cv2.putText(result[0], '%d' % (prob.argmax() + 1), (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0,255,0), 7)cv2.putText(result[0], '%d' % (prob.argmax() + 1), (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0,255,255), 3)if key != -1 and chr(key).isdigit():cv2.putText(result[0], 'Rec: %d' % int(chr(key)), (30,50), cv2.FONT_HERSHEY_SIMPLEX, 1.5, (0,0,255), 5)cv2.rectangle(result[0], (0,0), result[0].shape[1::-1], (0,0,255), 25)cv2.imshow("Scene Recorder_FaceNet", result[0])cv2.waitKey(1)
finally:net.quit()
眼熟吧,其实就是换了个模型。第一次上手么,就先玩玩吧。numBin是默认的5,一个自己,两组二次元妹子好了。
一组撞脸,名侦探柯南里的小兰和和叶
第二组撞头发,分别是柯南里的灰原哀和超电磁炮里的御坂美琴
值得一提的是,因为都是纸片人小姐姐,所以每张照片拍了一帧就够了。每个人物采样8张
按R以后就会自动的生产模型并且开始识别 虽然样本数量很少但是都是能够正确的识别的。
P.S背景白纸上的涂鸦是玩你画我猜例程时留下的。。。蜜汁画风见谅了,不过对于机器来说,倒是方便他识别。
后来因为打算做智能桌面助手,见到我开灯,开电脑,用情景记录器监测我有没有在摸鱼,带个VFD屏幕报时间,电脑CPU信息之类的。所以在剑三里测试了一下复杂背景多角度情况的检测,毕竟是3D的游戏,人物建模也还算不错,效果如下:
总结一下这时的经验,录脸的时候,男生把头发压一压,女生把头发扎一扎,脸占比大一点,不然会出现看到脑袋就认成你的尴尬情况(毕竟基本家里都是黑头发)