|
本帖最后由 keeneyes 于 2018-1-16 09:33 编辑
手头有一个淘宝的摄像头,不到百元的货,当时随便买的,还有树莓派,一天突然想做个人脸识别,摄像头对着门口,回家时一句“Welcom back”,幸(ge)福(bi)满满。
于是搜索之,发现本论坛有很多大神的资料,如本地的Dlib,百度的,微软的。
经过一定的分析,Dlib依靠本地性能,树莓派识别在5秒左右,5秒后才“Welcom back”怎么提高幸(ge)福(bi)度?微软方案没试,怕网络不稳定,直接选用百度的云识别服务
整个识别过程最长3秒,最少1.几秒就搞定,还是很高效的,树莓派无人移动时CPU占用2%左右,识别时CPU占用少于15%
考虑到树莓派是我的家庭网络中心,需要负担的不只一个任务,所以太忙的活我树莓派不干,把活分出去,看摄像头有个功能当画面有移动时,自动上传图片到FTP服务器,试了一下,居然少于1秒就能上传,于是定下这么一个流程:
摄像头检测到画面有移动——摄像头上传图片到树莓派指定FTP路径下——树莓派每0.5秒检查下路径是否有文件,如果有进行30秒识别流程——树莓派每0.5秒获取摄像头现场图片(百度QPS是2)——如果检测到人员,则进行TTS播报。
下面开始请细则(最近比较忙,说要搞定离家场景,一直没搞,先发个进门识别吧,如果哪位有成员离家判断的方案,欢迎讨论),另外最近太忙,很多没时间写文字,直接给链接,见谅。
准备工作:
1:注册百度开发者账号并创建一个包括人脸识别的百度应用:
http://ai.baidu.com/docs#/Begin/top
注:整个过程免费,提供每秒最高2次,每天无限量的调用,够用了。
2:注册需要识别的人脸,参考本论坛文章:
https://bbs.hassbian.com/thread-791-1-1.html
摄像头配置:实验中发现淘宝不知牌子摄像头不支持rstp,支持的是HTTP,于是谷歌浏览器开发模式,发现了他有一个好接口,获取实现画面图片,JPG格式,还能直接发给百度!而且具备报警上传文件功能
于是配置摄像头:
当然之前需要把树莓派设置成FTP服务器,网上教程很多,我就不放了(懒。。。。)
树莓派配置:
1:安装MQTT,用于记录人员在家信息(论坛有自己找,又懒。。。。。)
2:安装百度API:
http://ai.baidu.com/docs#/Face-Python-SDK/top
或执行pip install baidu-aip(注意:后面脚本用的是pthon2.7,所以这里需要安装在PY2.7下,如python2.7 setup.py install
3:把附件中的文件复制过去,执行python2.7 camrea.py
脚本主要功能介绍:
camrea_jpg_url = ("http://%s:%s/snapshot.cgi?loginuse=%s&loginpas=%s" % (camrea_ip,camrea_port,camrea_user,camrea_password))——这个就是摄像头获取实时JPG的接口
while True:
#如果存在上传的图片,进行30秒的监控流程
if os.listdir(work_path) and flag_begin == "ON":
client_baidu = AipFace(APP_ID, API_KEY, SECRET_KEY)
fin=0
for i in range(0,60):
if fin==1:
break
#对摄像头进行截图
f = urllib2.urlopen(camrea_jpg_url)
camrea_data = f.read()
re = client_baidu.identifyUser(groupId, camrea_data);————直接把读到的数据向百度人脸识别接口送
rejson = json.dumps(re,ensure_ascii=False)
rejson =json.loads(rejson)
#判断返回是否有人
if rejson.has_key('result_num'):
print "YES"
for result in rejson["result"]:
#判断人员的相似度
if result["scores"][0] > similarity:————如果相似值大于设定数(80)则认为是同一人
who = result["uid"]————记录下人员,过会通过MQTT传输。
fin = 1
else:
print "I dont know you"
else:
print "nobody"
time.sleep(0.5)
4:设置脚本为开机启动
HA配置部分
1:设置百度TTS:https://bbs.hassbian.com/thread-809-1-1.html
2:设置MQTT
3:配置configuration.yaml:
4:配置automations.yaml:
OK,收工,离家场景没搞定,年后忙完再接着吧。
|
评分
-
查看全部评分
|