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

本文涉及的产品
简介: Severless编程模式很好的满足了业务的快速搭建、快速发展以及快速迭代的要求,对于中小企业以及创业公司,成本也是一个重要的考量。用户开发server端服务,常常面临开发效率,运维成本高,机器资源弹性伸缩等痛点,而使用Serverless架构可以很好的解决上述问题。

前言

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

Item Serverless 传统方式搭建服务
维护成本 维护成本低,无需管理服务器等基础设施,只需编写代码并上传,程序员从底层设备维护中解放出来,只考虑实际业务逻辑即可。 维护成本高,自行维护服务器,需要处理服务器宕机、服务器扩容等一系列底层琐碎的事情
可用性 可用性高,函数计算为用户准备弹性、可靠的计算资源,具有根据流量自动scale特性,对有明显波峰波谷的运用效果奇佳 服务器故障会对应用服务产生严重影响
费用 按需付费,只为实际使用的计算资源付费,代码未运行则不产生费用 需要支付服务器的费用,代码运行与否都要收费

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

效果

image

30分钟快速搭建门店智能监控视频分析运用架构图

image

  • 日志中有图片的数据信息,通过触发器推送到函数计算
  • 函数计算解析出日志中的图片数据,将图片上传到oss
  • 函数计算调用IMM服务,获取上一步解析出来的图片的人脸以及分组信息
  • 函数计算将上一步的人脸以及分组信息存储到OTS
  • 用户通过api网关调用函数计算,函数计算从OTS读取信息,并将处理后的信息返回给用户

后续操作及相关资源概览图

image

具体步骤

1. 获取云账号

  • 1.1 每位观众入场都会得到一个云账户
  • 1.2 获得账号ID和Accesskeys

  • 1.3 下载文章最后的package附件

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

2. 开通表格存储并创建对应的project和table

2.1. 登录阿里云官网-表格存储 ,并点击服务开通

t1.png
t2.png

2.2. 创建表格存储实例

  • 2.2.1 登陆表格存储控制台
  • 2.2.2 在控制台上创建实例,在华东2创建实例(比如名字叫szworkshop), 注意:在这里我们已经预先为您创建好了对应的实例是table,请在华东2查找sz-instance开头的实例,点击进去查看有没有face_detailface_cache这两张表,如果没有,请按照下面的截图操作自己创建,最后把自己表格存储的实例名字记录下来。
    image
  • 2.2.3 进入实例,创建两个table,比如名字叫 face_detailface_cache
    主键情况如下:
face_detail:  [ 
('faceSetId', 'STRING'), 
('timestamp', 'INTEGER'),
('faceId', 'STRING')
]
face_cache:  [ 
('faceId', 'STRING')
]

截图如下图所示:
image
image
image

也可以利用package 附件的脚本create_tbl.py,修改代码中的ak, python create_tbl.py 实现创建table face_detailface_cache

3. 开通对象存储oss服务

3.1. 登录阿里云官网-对象存储 ,并点击立即开通

3.2. 进入对象存储-控制台 ,在华东2创建一个公共读的bucket,并把自己bucket名字记录下来, 如下图:

image

4. 开通日志服务

4.1. 进入日志服务,点击立即购买按钮

sls_open.png
sls_create_service.png

4.2. 在华东2创建log project和logstore,在这里我们已经给您创建好了logproject和logstore(fc_log, fc_trigger_log), logstore video1, video2需要用户自己创建

其中video1video2 : 两个摄像头采集的图像数据会分别写到这个两个logstore
fc_log 用于记录后面的函数计算中函数的输出日志
fc_trigger-log 用于记录日志触发器触发情况

比如创建 一个名叫video2 logstore操作如下:
image

最后效果如下:
image

5. 开通智能媒体管理

5.1 进入智能媒体管理,点击立即开通按钮

5.2 进入智能媒体管理控制台,创建一个project szworkshop

注意:我们会给您创建好智能媒体管理的project和FaceSetId,在线查看

image
image

5.3 在project szworkshop下面创建FaceSet

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

 python imm_op.py CFS
{u'Status': u'Running', u'Photos': 0, u'RequestId': u'7BF48069-07D5-4675-8BF6-3EB8EE23F4C5', u'ModifyTime': u'2018-03-20 20:29:43.021911969 +0800 CST', u'SetId': u'FACE-0b1fe58b-58b5-44a5-9492-ea6d72918b83', u'CreateTime': u'2018-03-20 20:29:43.021911969 +0800 CST'}

6. 开通API网关

6.1 进入API网关产品页,点击立即开通

7. 开通函数计算

7.1. 新建函数计算service服务

  • 7.1.1 进入函数服务管理控制台
  • 7.1.2 创建service, 选择华东2,步骤如下图中的1,2,3,4; 比如创建名叫ls-workshop的service(名字自定义)
    image

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

7.2. 在上一步创建的service服务下创建函数

  • 7.2.1 创建函数log_etl, 具体操作如下面截图所示:

    image

选择空白模板,runtime为python3
image
image
点击本地上传,上传附件中的log_etl.zip,上传成功后,修改函数入口为log_etl.handler,然后点击下一步
image
image
创建成功后如图所示:
image
进入代码编辑界面,修改对应的配置,然后点击保存按钮:
image

  • 7.2.2 给函数log_etl创建LOG trigger, 点击触发器按钮进行编辑,其中时间间隔设置为10s,我们这里创建两个触发器,分别为trigger-1trigger-2, 具体如下图所示:

    image

image
image
image

在这里一个函数可以对应两个触发器
image
创建完两个触发器后:
image

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

  • 7.2.3 设置函数的event和调试

    函数log_etl是日志触发调用的,日志传递给函数的event的格式具体详情, 一个例子如下(把下面的projectName改成自己的):

{
  "parameter": {
  },
  "source": {
      "endpoint": "http://cn-shanghai-intranet.log.aliyuncs.com",
      "projectName": "1907026218698990",
      "logstoreName": "video1",
      "shardId": 1,
      "beginCursor": "MTUyMTQ0NDc0OTI3NTM3MTE5NA==",
      "endCursor": "MTUyMTQ0NDc0OTI3NTM3MTE5NA=="
  },
  "jobName": "ec0ebbf8f549e8a7e77888797d69084003830c63",
  "taskId": "06bf8cc1-3d0c-4625-9205-2c191e32ee72",
  "cursorTime": 1521643153
}

image
image
image

  • 7.2.4 创建函数get_show_info, 具体操作如6.2.1所示

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

image

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

7.3 给函数get_show_info配置api网关

按照下面的截图操作进行,如果想了解更多api网关结合函数计算具体详情可以参考以函数计算作为 API 网关后端服务

  • 7.3.1 创建api分组

    image

  • 7.3.2 在api分组内创建api

    image

image
image
填写api网关的请求path,后面对二级域名/请求路径的http请求就是对函数的访问
image
填写api对应的函数信息
image
填写api网关的返回值示例

{
    "isBase64Encoded":true|false,
    "statusCode":httpStatusCode,
    "headers":{response headers},
    "body":"..."
}

image

  • 7.3.3 对api进行调试和发布

  • 7.3.3.1 对api进行调试

    image

image

  • 7.3.3.2 对api进行发布

    image

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

curl -v "http://972ea82cf5334ee8adc7e318efa45455-cn-shanghai.alicloudapi.com/get_show_info"

7.3.4 将6.3.3获得的api网关的url

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

image

总结

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

下来

目录
相关文章
|
计算机视觉
《DeepStream 大规模智能视频分析系统》电子版地址
DeepStream: 大规模智能视频分析系统
68 0
《DeepStream 大规模智能视频分析系统》电子版地址
|
机器学习/深度学习 传感器 人工智能
智能视频分析如何改变零售商店
零售格局正在发生前所未有的变化。仔细观察零售商使用IVA驱动的人工智能的不同方式,可以深入了解智能零售的运作方式。
282 0
智能视频分析如何改变零售商店
|
传感器 人工智能 监控
AI 智能视频分析在零售业中的应用
在现代世界中,零售业正在迅速增加人工智能在所有可能的工作流程中的应用。因此,通过应用分析来利用机会无疑可以改善零售行业中的各种运营。
935 0
AI 智能视频分析在零售业中的应用
|
存储 编解码 人工智能
智能视频监控
线下监控视频通过摄像头实时上传到阿里云。通过视频监控平台做转码存储为数据源文件,即可通过智能视觉产品做AI智能分析。
智能视频监控
|
监控 Linux C++
【树莓派+.NET MF打造视频监控智能车】遥控篇
以前用.NET MicroFramework系统做过一些智能车控制,但是功能相对简单。这次有了树莓派的加入,增加了Sony PS2遥控器、视频监控和机械手,便变得很有意思了。
834 0
【树莓派+.NET MF打造视频监控智能车】控制篇(.NET MF)
一般情况下一个驱动器可以驱动两路马达,而驱动一个马达一般需要两路信号,通过控制两路PWM的输出,来控制马达的转速和方向。我们这款小车选用的是一个带光电隔离,高功率的一个驱动器,一路马达,需要三路IO控制,其中2路是控制方向,一路输出PWM控制小车的转速。
661 0
|
Linux C++ 监控
【树莓派+.NET MF打造视频监控智能车】控制篇(树莓派)
对已经具备一定Linux基础的人来说,树莓派学习起来应该非常简单自然。在他们眼中,树莓派就是一个简易版的,卡通版的Linux而已。但是对我这样一个早已习惯微软技术生态系统的人或者初学者来说,要实现一个简单程序的编写、编译到运行,还是不太容易的。
1397 0
|
存储 人工智能 监控
一周集成行业智能监控应用,阿里云发布智能视频监控平台
在4月22-25日于上海举办的2019联通合作伙伴大会上,阿里云首次对外发布了智能视频监控平台,同时向参会的数千名伙伴及业界人士演示了一分钟视频监控上云系统,阐述了阿里云智能视频监控平台助力传统监控领域上云的优势和方法。
5365 0
|
监控 Linux 数据安全/隐私保护
【树莓派+.NET MF打造视频监控智能车】控制篇(树莓派)
对已经具备一定Linux基础的人来说,树莓派学习起来应该非常简单自然。在他们眼中,树莓派就是一个简易版的,卡通版的Linux而已。
1070 0
|
5月前
|
数据采集 监控 网络协议
linux系统中利用QT实现视频监控的基本方法
linux系统中利用QT实现视频监控的基本方法
151 0

热门文章

最新文章

相关产品

  • 函数计算
  • 云工作流
  • Serverless 应用引擎