天天看点

30分钟快速搭建门店智能监控视频分析

欢迎大家来到无服务器(Serverless)编程的阿里云clouder lab实验课参与学习。

现在市场竞争激烈,在对业务创新周期要求越来越短,业务爆发越来越快的情况下,Severless编程模式很好的满足了业务的快速搭建、快速发展以及快速迭代的要求,对于中小企业以及创业公司,成本也是一个重要的考量。用户开发server端服务,常常面临开发效率,运维成本高,机器资源弹性伸缩等痛点,而使用Serverless架构可以很好的解决上述问题。下面是传统架构和Serverless架构的对比:

Item

Serverless

传统方式搭建服务

维护成本

维护成本低,无需管理服务器等基础设施,只需编写代码并上传,程序员从底层设备维护中解放出来,只考虑实际业务逻辑即可。

维护成本高,自行维护服务器,需要处理服务器宕机、服务器扩容等一系列底层琐碎的事情

可用性

可用性高,函数计算为用户准备弹性、可靠的计算资源,具有根据流量自动scale特性,对有明显波峰波谷的运用效果奇佳

服务器故障会对应用服务产生严重影响

费用

按需付费,只为实际使用的计算资源付费,代码未运行则不产生费用

需要支付服务器的费用,代码运行与否都要收费

为了让大家深刻体验serverless的优势,本教程通过对几款云产品的实际上手操作,来与大家分享如何通过函数计算粘合其他云产品技术来快速搭建门店智能监控视频分析运用

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

日志中有图片的数据信息,通过触发器推送到函数计算

函数计算解析出日志中的图片数据,将图片上传到oss

函数计算调用IMM服务,获取上一步解析出来的图片的人脸以及分组信息

函数计算将上一步的人脸以及分组信息存储到OTS

用户通过api网关调用函数计算,函数计算从OTS读取信息,并将处理后的信息返回给用户

30分钟快速搭建门店智能监控视频分析

<a></a>

1.1 每位观众入场都会得到一个云账户

1.2 获得账号ID和Accesskeys

1.3 下载文章最后的<code>package</code>附件

注意: 本教程所有的服务均在华东2(上海)region进行,下面每一步创建的阿里云资源的名字(阿里云AccessKeyId、AccessKeySecret,OTS的instance名字和表格名字,OSS的bucket名字,IMM的project名字和FaceSetId)都需要记录下来,后面代码会用到
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

2.2.2 在控制台上创建实例,在<code>华东2</code>创建实例(比如名字叫szworkshop), 注意:在这里我们已经预先为您创建好了对应的实例是table,请在<code>华东2</code>查找<code>sz-instance</code>开头的实例,点击进去查看有没有<code>face_detail</code> 和 <code>face_cache</code>这两张表,如果没有,请按照下面的截图操作自己创建,最后把自己表格存储的实例名字记录下来。

30分钟快速搭建门店智能监控视频分析

2.2.3 进入实例,创建两个table,比如名字叫 <code>face_detail</code> 和 <code>face_cache</code>

主键情况如下:

截图如下图所示:

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
也可以利用package 附件的脚本create_tbl.py,修改代码中的ak, <code>python create_tbl.py</code> 实现创建table <code>face_detail</code> 和 <code>face_cache</code>
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
其中<code>video1</code> 和 <code>video2</code> : 两个摄像头采集的图像数据会分别写到这个两个logstore <code>fc_log</code> 用于记录后面的函数计算中函数的输出日志 <code>fc_trigger-log</code> 用于记录日志触发器触发情况

比如创建 一个名叫<code>video2</code> logstore操作如下:

30分钟快速搭建门店智能监控视频分析

最后效果如下:

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

利用<code>package</code> 附件的脚本imm_op.py,修改对应的ak和imm project值 <code>python imm_op.py CFS</code> 就会成功创建一个FaceSet, 记住返回值中的FaceSetId, 如下面的<code>FACE-0b1fe58b-58b5-44a5-9492-ea6d72918b83</code>

7.1.2 创建service, 选择<code>华东2</code>,步骤如下图中的1,2,3,4; 比如创建名叫<code>ls-workshop</code>的service(名字自定义)

30分钟快速搭建门店智能监控视频分析

在上图中点开高级配置,配置日志项目和日志仓库(这个之前已经创建好了,也可以现在创建),其中第3步的同意授权(授权函数具有访问OTS,OSS,LOG,IMM 的权利)会跳转到如下页面:

30分钟快速搭建门店智能监控视频分析

点击<code>同意授权</code>:

30分钟快速搭建门店智能监控视频分析

点击确定:

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

选择空白模板,runtime为<code>python3</code>

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

点击本地上传,上传附件中的log_etl.zip,上传成功后,修改函数入口为<code>log_etl.handler</code>,然后点击<code>下一步</code>

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

创建成功后如图所示:

30分钟快速搭建门店智能监控视频分析

进入代码编辑界面,修改对应的配置,然后点击<code>保存</code>按钮:

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

在这里一个函数可以对应两个触发器

30分钟快速搭建门店智能监控视频分析

创建完两个触发器后:

30分钟快速搭建门店智能监控视频分析
<a href="https://help.aliyun.com/document_detail/60291.html?spm=5176.173847.906745.12.KrpsWz">日志触发器具体详情</a> 触发器名称:触发器的名称只能包含字母,数字、下划线和中划线,不能以数字、中划线开头,且长度范围为1~256字节。 Project名称:日志服务Project名称。 Logstore名称:日志服务Logstore名称(数据源)。本触发器会定时从该Logstore订阅数据到函数服务进行自定义加工,该参数在ETL Job创建后不允许修改。 触发器日志:日志服务会定时触发函数服务的的函数执行,在触发过程中发生的异常、函数执行统计信息会记录到该 Logstore, 您可以为这个Logstore创建索引以备查看。 触发间隔:日志服务触发函数运行的间隔,定义日志服务触发函数执行的间隔,例如每60秒将logstore的每个shard最近60秒数据位置读出作为函数event调用函数执行,在函数内有用户逻辑读取shard数据做计算。如果logstore的shard流量较大(超过1MB/s或者更高),建议缩短函数的触发间隔,使得每次函数运行所处理的数据量是合理大小。 重试次数:日志服务根据触发间隔每次触发函数执行时,如果遇到错误(例如权限不足、网络失败、函数执行异常返回等),该参数定义本次触发所允许的最大重试次数。对于本次触发,如果超过最大重试次数仍无法成功的,需要等到下一次触发间隔到来时,由日志服务再次触发函数执行。重试对业务造成的影响,因具体的函数代码实现逻辑而异。 函数配置:日志服务将该配置内容作为函数event一部分传入函数,如何使用该函数由函数自定义逻辑决定。每一种函数实现所要求的函数配置可能是不同的,绝大部分默认提供的函数模板也需要参考说明填写您的参数。默认不传入任何参数时请填写:{}。
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

上传代码<code>get_show_info.zip</code>,创建函数<code>get_show_info</code>,函数入口为<code>get_show_info.handler</code>, 截图如下:

30分钟快速搭建门店智能监控视频分析

创建成功后,也需要修改下代码中对应的配置的值:

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

填写api网关的请求path,后面对<code>二级域名/请求路径</code>的http请求就是对函数的访问

30分钟快速搭建门店智能监控视频分析

填写api对应的函数信息

30分钟快速搭建门店智能监控视频分析

填写api网关的返回值示例

30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析
30分钟快速搭建门店智能监控视频分析

验证发布是否成功可以用如下命令(修改成自己的二级域名/请求路径):

本教程中是<code>http://972ea82cf5334ee8adc7e318efa45455-cn-shanghai.alicloudapi.com/get_show_info</code>)替换掉前端展示页面中的url(<code>package</code> 附件下client/js 目录里面的index.js), 之后打开本地页面,就可以愉快地看监控详情了。

30分钟快速搭建门店智能监控视频分析

利用函数计算可以快速搭建serverless运用,结合oss,ots,imm和api网关可以丰富server的功能,免服务器,免运维,成本低,不用担心流量,只需要函数就可以实现,你值的拥有!

下来