『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 183076|回复: 563

[进阶教程] IPCAM摄像头+树莓派+百度人脸识别+百度TTS 打造免费人脸识别

  [复制链接]

1

主题

32

帖子

344

积分

论坛技术达人

积分
344
金钱
312
HASS币
0
发表于 2018-1-15 21:00:06 | 显示全部楼层 |阅读模式
本帖最后由 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,收工,离家场景没搞定,年后忙完再接着吧。




2018-01-15_200238.png
2018-01-15_200447.png

摄像头FTP设置

摄像头FTP设置
2018-01-15_200751.png

camrea.py

2.45 KB, 下载次数: 123

评分

参与人数 2金钱 +40 收起 理由
lidicn + 20 分享是一种美德!
+ 20 膜拜大神!

查看全部评分

回复

使用道具 举报

0

主题

73

帖子

417

积分

中级会员

Rank: 3Rank: 3

积分
417
金钱
344
HASS币
0
发表于 2018-1-15 21:08:29 | 显示全部楼层
沙发,收藏备用,谢谢分享
回复

使用道具 举报

2

主题

65

帖子

385

积分

论坛分享达人

积分
385
金钱
320
HASS币
0
发表于 2018-1-15 21:11:51 | 显示全部楼层
高。逼格满满的,我也打算搞这个,不知道赛扬J1900 做本地识别需要几秒?
回复

使用道具 举报

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

发表于 2018-1-15 21:18:47 | 显示全部楼层
火钳刘明
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-1-15 21:20:56 | 显示全部楼层
本帖最后由 neroxps 于 2018-1-15 21:25 编辑

厉害,先看看再说,利用摄像头的触发上传的确是个不错的选择。但是这样必须人特意将脸对着门才行吧?
Nero
回复

使用道具 举报

2

主题

129

帖子

1924

积分

金牌会员

Rank: 6Rank: 6

积分
1924
金钱
1794
HASS币
0
发表于 2018-1-15 21:38:08 | 显示全部楼层
好东西,学习了
回复

使用道具 举报

1

主题

32

帖子

344

积分

论坛技术达人

积分
344
金钱
312
HASS币
0
 楼主| 发表于 2018-1-15 21:50:19 | 显示全部楼层
neroxps 发表于 2018-1-15 21:20
厉害,先看看再说,利用摄像头的触发上传的确是个不错的选择。但是这样必须人特意将脸对着门才行吧?
...

不用,我手头这个摄像头只要有图像变化就会上传,然后我在程序中开启30秒,第秒2次的识别,如果识别到人脸,则TTS,如果30秒内没识别到人脸,就认为是误触发,其它还可以实现不是数据库的人,就报警的。
回复

使用道具 举报

27

主题

387

帖子

3249

积分

元老级技术达人

积分
3249
金钱
2842
HASS币
40

教程狂人

发表于 2018-1-15 23:11:11 | 显示全部楼层
厲害了
來學習學習
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2018-1-15 23:26:24 | 显示全部楼层
隐形的大神,赞赞赞!发现论坛里,这不知名杂牌摄像头出镜率很高啊
回复

使用道具 举报

0

主题

195

帖子

1027

积分

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
832
HASS币
0
发表于 2018-1-15 23:32:25 | 显示全部楼层

好东西,学习了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 22:38 , Processed in 2.624905 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表