AI项目从方案设计到项目落地,不仅需要算法模型的训练,还需要算法模型的转换以及AI视觉系统的应用。本文从整体架构的角度,进行全面的分析的讲解,并以一个人员在离岗识别的案例,进行了拆解,希望对大家有帮助!在智慧城市的泛安防场景中,在离岗识别的应用场景,非常多。比如银行门口一号位的工作人员在离岗分析,保安室的人员分析,工厂场景下某些机器工作时的工作人员状态分析。可以应用的场景很多,不过AI项目的落地,从算法模型的训练,到算法应用的落地,通常会有多个流程。本文的在离岗识别,会手把手带着大家,从算法方案,模型训练,模型转换,AI视觉软件应用的角度,尝试项目落地的整个流程。1 项目系统架构:人员在离岗识别系统
1.1 项目系统架构拆解
1.2 项目关键算法拆解 5 AI应用系统安装:Aidlux及AI视觉中台安装
1.1 项目系统架构拆解
从AI视觉项目落地的角度,针对不同的客户需求,通常有2种方式:针对AI模型的部署服务,客户端可以通过HTTP/REST或GRPC的方式来请求服务。比如输入一张图片/一段视频,输出图片/视频的分析结果,通常这种服务,按次数收费或者按时间段授权。这种形式,业务流程相对是单一的,主要需要考虑的是充分利用GPU算力资源,能够提供稳定的高吞吐量的服务。服务式Service的用户,主要是AI项目落地的技术集成商,交付给用户的主要是AI能力。而应用Application,通常面向的是某个场景的最终用户。因此交付的产品,是一整套包括交互界面在内的应用软件系统。比如可以绘制违规提示框的实时画面,视频流分析管理,某个时段或者满足某种条件的数据分析报表等。这类产品一方面需要提供友好的操作界面供用户查看使用,同时还需要提供对接用户第三方平台的接口,将分析产生的告警结果等信息,推送到用户的业务管理平台。此外,大白的好友,白夜老师也分享过一篇非常干货的AI落地部署文章,《一文看懂AI项目流程及边缘设备开发》,可点击查看。当然AI算法项目,最终应用,通常会跑在各类算法设备上。不过由于不同算法方案的不同,使用的算力也都各不相同,下面会针对人员在离岗识别的不同的方案,做详细的讲解。1.2 项目关键算法拆解
1.2.1 在离岗识别算法原理拆解
在AI视觉项目中,不同的算法功能,通常可以通过不同的算法逻辑来进行实现。方案一主要以监测区域状判断为主,每隔一段时间,计算人体框的位置,和监测区域的相对位置关系。当人体检测框的中心点,在监测区域内时,位置状态等于1。当人体检测框的中心点,在监测区域外时,位置状态等于-1。那么方案一中,当监测的目标区域内,持续一段时间,比如10S中,一直没有人体进入时,这时就可以告警提示。方案一以监测区域为判断标准,而方案二则以人员监测为主。通过人体检测+人体追踪的方式,获取每个人员多帧的track_id,以及每个人体的检测框位置信息。通过对每个人体的检测框和监测区域的位置关系,在监测区域内,位置状态等于1,不在监测区域,位置状态等于-1。从而可以判断得到,每个人体连续的位置状态信息。此外也可以得到不同的人体,在监测区域内停留的时长。而当所有人体,都不在监测区域内时,比如持续一段时间(10S),自动系统告警提示。其实同一个AI算法功能,实现的方案都有很多种方式,所以还是要结合自己场景的需求来进行选择。比如方案一,优点在于简单粗暴,可以跳帧的间隔也比较大,比如可以每秒采集一帧,判断监测区域内,是否存在人体。当10秒采集10帧,都没有检测到人体时,则判定人员已离岗。但缺点在于,没有追踪机制,没办法跟踪连续帧是否是某一个人离开的。而方案二,因为增加了人体追踪的机制,所以更加精细化,因为可以追踪某一个人,是否离开监测区域。比如当监测区域中的一个人,从监测区域马上要离开时,正好有另一个人进入监测区域了,这时采用方案二,就可以监测告警出来,但是方案一,就无法监测出来。当然也存在一定的缺点,因为采用了目标追踪,所以视频跳帧不能太大,比如一秒钟采集5帧,相对第一种而言,算力消耗会更大。1.2.2 目标检测算法
当然我们也发现,前面的两种方案,人体检测是必备的算法模型。不过目标检测的算法有很多种,Yolo系列,PaddleDetection系列,mmdetection系列,大家可以结合自己的需求来进行选择。之前大白写过关于Yolo系列的一些内容,有想深入了解的小伙伴,可以进行查看。链接:https://ke.qq.com/course/3454999?tuin=16348fd5文章:《深入浅出Yolo系列之Yolov4核心基础知识完整讲解》链接:https://zhuanlan.zhihu.com/p/143747206链接:https://ke.qq.com/course/3454999?tuin=16348fd5文章:《深入浅出Yolo系列之Yolov5核心基础知识完整讲解》链接:https://zhuanlan.zhihu.com/p/172121380文章:《深入浅出Yolo之Yolox核心基础完整讲解》链接:https://zhuanlan.zhihu.com/p/397993315随着目标检测的深入发展,目前市面上Yolo的各种创新算法也越来越多,大家都可以结合自身的项目需求,来进行选择。不过后续代码中,大白实战的主要是Yolov5-6.2的版本。此外在AI视觉中台上,还增加了模型迭代替换的功能,所以在后面大家也可以训练替换自己的模型,而这里的算法版本,需要和AI视觉中台上的算法版本一致。这样后期大家有新的场景,泛化性不好的时候,也可以自行迭代,从而体验完整的项目落地过程。1.2.3 Bytetrack目标追踪
在很多的AI项目中,目标检测和目标追踪,都是相辅相成的算法。这里的目标追踪,通常指的多目标跟踪,原理涉及很多,比较复杂,我们这里以简短的方式,让大家了解其中的一些原理。多目标跟踪,即MOT(Multi-Object Tracking),顾名思义,就是在一段视频中同时跟踪多个目标。MOT主要应用场景是安防监控和自动驾驶等,这些场景中我们往往需要对众多目标同时进行追踪。这是仅用目标检测算法或单目标跟踪无法做到的,人们就自然就开始了对多目标跟踪算法的研究。在业内多目标跟踪算法,应用的比较广的发展路径是:sort->deepsort->bytetrack在视频中,每个人体都是在往不同的方向移动的,因此会产生两个方面的信息。比如在10帧连续的图像中,有很多个人体,其中有两个小朋友,一个路人甲和路人乙。在10帧的图像中,比如前三帧的图像,多目标追踪算法会初始化两个track_id。比如路人甲是track_id=1,路人乙是track_id=2。那么在第四帧以后,我们想从图片上的多个人体中,还把路人甲和路人乙两个人找出来。但这时,我们只有之前的3帧两人的轨迹信息,怎么办呢?这时会采用卡尔曼预测的方法,判断两人的运动轨迹,在第四帧图像中可能在哪个位置,预测出可能是两人的预测框。而在第四帧图像中,通过目标检测已经得出很多的人体检测框,这时再采用匈牙利算法,从多个人体的检测框中,匹配找到路人甲和路人乙的框,并赋予两个track_id的值。这就是Sort算法的大致思路,但是其中也会存在一个问题,即两个人遮挡交错的时候,卡尔曼预测就会有问题。因为后续的匹配,都是通过位置信息来构建的,交错的时候,不同人体的位置信息就会有错乱了。因此在Sort的基础上,为了区分出不同的行人,增加人体的外观信息Appearance Information,变成了Deepsort。比如在前面第四帧的图像上,想找到之前track_id人体的信息,就可以通过两个方面来综合匹配:一个是距离,另一个是人体的reid外观特征信息,两者进行加权来匹配,更准一些。但在实际应用中会发现,在遮挡交错比较多的时候,还是会出现track_id交错比较多的情况。不过研究者也发现,在遮挡的时候,人体的检测框信息预测分数会相对较低。例如下方图中,第一张图中的0.8,由于遮挡变成了0.4->0.1。比如下方的红色框,在正常的追踪过程,可能很容易丢失。因此作者将deepsort中的外观特征舍弃掉,通过bytetrack的方式进行多目标追踪。不过这时设置高分和低分框,当预测运动轨迹的框,分数降低时,说明可能产生了遮挡的现象,这时就再多匹配一些。以上就是对于多目标追踪的简单描述,当然其中涉及了大量的逻辑方式,大家感兴趣也可以好好研究下。ByteTrack源论文地址:https://arxiv.org/pdf/2110.06864.pdfByteTrack开源代码地址:https://github.com/ifzhang/ByteTrack当然为了便于大家快速实战尝试,人体检测+人体追踪(Bytetrack)的代码,大白在后续资源中已经准备好,供大家快速下载体验。2 算法原理及下载:代码及数据集资源下载
2.1 项目代码资源:完整代码&数据下载
为了便于大家动手实战,大白将文章中所包含的相关训练及推理代码,相关的脚本及数据集,都进行了梳理。本文人员在离岗识别的相关资源,可以关注下方公众号,回复“在离岗识别”,按照提示进行下载。
2.2 人体检测数据集
前面的方案一,和方案二,我们会发现,都会用到人体检测算法。而这也是由人体检测数据集,训练而成的。目前人体相关的数据集有很多,包含各种公开数据集,以及自有数据集。这里用到的人体数据集,大白放了常用的3000张人体数据集,并且都标注好了相应的xml信息,放在上面2.1的资源中。此外,业内还有一个非常不错的公开数据集Crowdhuman,包含25000张图片,不过标注信息会有一些差异,主要是odgt格式,所以训练时还需要将odbt转换成xml格式。大白之前的训练营中,正好也和大家一起下载训练过,大家感兴趣也可以查看下载转换,点击查看。2.3 人体检测模型训练
关于Yolo训练的详细过程,大白之前写过一篇文章,《深入浅出Yolov5之自有数据集训练超详细教程》。里面包含大白使用Yolov5,训练自有数据集的过程,一步步的整合写出来,通过在实战中学习实践,可以理解的更快。文章链接:https://zhuanlan.zhihu.com/p/463176500大家也可以尝试,下载2.2的人体检测数据集,训练人体检测的Yolov5模型。当然为了便于大家使用,大白在整套代码的privated_models文件夹中,放置了训练好的Yolov5检测模型,大家也可以直接使用。3 PC端代码整合:代码推理测试实践
3.1 代码下载及安装环境
大白代码运行的时候,主要采用Pycharm软件+Conda的方式,如果是比较熟悉的同学,可以直接尝试,如果不太熟悉的同学,可以参考大白另一篇家庭安防告警的文章,点击查看。
当然,代码的运行环境,需要相应的库函数,都放在代码文件夹中的requirements.txt。如果没有安装过,可以打开终端页面,进入代码路径下,输入pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple,即可下载相应的库函数。3.2 图片/视频推理代码
Github上Yolov5的源代码中,图片/视频推理的代码,是汇总在一起的。不过大白觉得不是特别直观,因此也增加了两个代码文件。图片推理的代码,放在代码文件夹中的detect_image.py中。针对图片文件夹中的多张图片,可以进行连续推理显示,快速看到检测效果。视频推理的代码,放在代码文件夹中的detect_video.py中。针对source中的视频文件,可以进行实时推理,后续检测+追踪的代码,也是在此基础上延展开来的。3.4 人体检测+人体追踪代码
不过前面也说过,目标检测通常是项目应用中的前置算法,通常还会和目标追踪结合在一起使用。人体检测+目标追踪的代码,大白也整合好,放在文件夹中的detect_bytetrack_video.py中。为了直观的看到多目标追踪的效果,大白这里将视频修改成另外一个人员比较多的视频,可以看到每个人运动的过程中,都会有一个track_id的信息。3.5 离岗识别1:人体检测方案
前面1.2.1中讲解了人体检测的方案,大白也编写了相应的代码逻辑,放在detect_leave_video.py中。方案一代码的业务逻辑是,视频流每秒采集一帧,针对监测区域分析是否有人体在其中。当人体的位置在监测区域内,位置状态为1,在外面则为-1。当持续10秒钟,没有人体在监测区域时,则自动告警提示。由于每秒取一帧,所以实现的视频效果会感觉有一些卡顿。方案二的代码,即detect_bytetrack_leave_video.py文件,通过人体检测+人体追踪的方式,获取每个人员多帧的track_id,以及每个人体的检测框位置信息。人员的检测框在监测区域内,位置状态等于1,不在监测区域,位置状态等于-1。从而可以判断得到,每个人体连续的位置状态信息,当持续一段时间(比如10秒),所有人体的位置信息都是-1时,则自动告警。由于在目标检测的基础上,增加了目标追踪的算法。所以跳帧设置为5,由于每秒原始视频流有25帧,所以每秒还能处理5帧。和上面方案一相比,因为帧率更多,所以效果视频看起来更连续平滑一些。以上是两套方案的验证,不过在AI项目中,PC端验证完之后,最终一般还会通过AI视觉软件的形式来进行应用。
下面再从AI项目落地的角度,针对人员在离岗识别的角度,进行落地实践。4 AI模型部署:AI算法模型迁移转换
4.1 多设备模型部署方式
不过AI视觉项目最终落地,通常会采用相应的算力设备,比如英伟达、算能、高通、瑞芯微等。不同的算力设备,通常都有相应格式的算法模型格式,比如英伟达是Tensorrt,算能是bmodel格式。而算法模型训练,通常也会采用多种训练框架,比如Pytorch、Tensorflow、OpenMMLab等。因此在第四章,大白会带着大家将训练的Yolov5算法模型,转换成相应格式的模型文件。由于本文最终AI算法会跑在手机的AidLux上,从而调用不同手机芯片的算力,而AidLux主要支持的格式有tflite、dlc等。所以我们先将Yolov5的pt模型转换成Onnx格式,然后再从Onnx格式转换成tflite格式。4.2 Pt格式转换成ONNX格式
Yolov5的Pt格式的转换,可以采用代码文件中的export.py,进行转换。修改相应weights,include等信息,直接运行即可,在pt文件相应的文件夹中,可以看到多了一个tflite文件。不过运行的时候,如果没安装onnx的同学,可能报onnx安装的错误。解决方式,直接conda install onnx 或者pip install onnx。再次运行export.py后,在private_models文件夹中,可以看到转换后的onnx文件。4.3 ONNX格式转换Tflite格式
4.2利用export.py的代码,将pt格式转换成onnx格式。而将onnx文件转换成后面用到的tflite格式,我们可以使用阿加犀的一款基于Web端的可交互的AI模型部署优化平台(AI Model Optimizer (简称AIMO) )。AIMO能够将其他主流框架模型格式转换成tflite、ONNX、DLC等多种模型格式。旨在帮助用户能够在边缘端芯片上快速迁移、部署和运行各种机器学习模型。目前AIMO已经集成了各种模型转换工具,简化了转换流程,方便用户零代码、低成本的完成模型转换。目前AIMO软件,针对模型转换过程,提供了网页版服务,可以用开源模型体验一下。AIMO网站链接:https://aimo.aidlux.com/首先打开AIMO的网站页面,可以看到主要由四步组成。选择下方的TensorflowLite,将Onnx转换成tflite格式,再点击下一步。下载的是一个压缩文件夹,再进行解压缩后,可以得到PersonOD_Yolov5s_74K_fp32.tflite的文件。5 AI应用系统安装:AidLux及AI视觉中台下载安装
AI项目落地过程中,通常会针对不同的场景,采用不同的算力设备。一般来说,算力设备通常有三种形态:端侧嵌入式设备、边缘设备、GPU服务器。比如手机、人脸识别闸机等,内部都有一个AI算力芯片,可以进行一些简单轻量级的AI算法模型处理。可以处理人脸识别、OCR识别等算法应用,不过处理的视频流路数,一般只针对设备上的一路视频流,进行智能分析。② AI边缘设备:而当分析的视频流路数变多,比如针对10路摄像头采用各类算法进行分析,这时通常会采用边缘设备的方式。不过因为AI边缘设备的芯片算力有限,所以一般一个边缘设备,只能处理十几路,或者几十路路视频流任务,当然这里处理的数量不同,和使用的不同算法有关系。有的算法功能,消耗的算力比较小,比如安全帽检测,一秒检测处理一帧就可以了。当然有的算法功能,消耗的算力比较多,比如越界识别,因为涉及到单位时间内的动作,需要一秒至少处理3帧,所以算力需求量更大。这里我们需要特别注意。③ GPU服务器:这里所说的GPU服务器主要分成两种,一种是我们常用的GPU训练服务器。另一种是专门用于推理的GPU服务器。两者的底层架构不同,在项目推理应用时,我们主要用的还是推理GPU服务器。比如智慧交通场景常常有数千路摄像头,园区场景常常有数百路摄像头。这时如果再用每几十路视频,用一个边缘设备的方式,现场机房里面,可能需要采用几十台、甚至上百台边缘设备。因此这种情况下,通常采用GPU服务器的方案。让每台服务器可以负责上百路摄像头的分析。本文为了让大家体验完整的AI项目落地过程,在安卓手机的基础上,借用手机的算力,从而体验AI系统以及AI视觉中台的下载安装。而其中会用到两款软件,Aidlux软件,以及华勤AI视觉中台软件。5.1 Aidlux软件简介
AIdlux是由阿加犀公司开发,基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIOT应用开发平台。用比较简单的方式理解,我们平时编写训练模型,测试模型的时候,常用的是Linux/window系统。而实际应用到现场的时候,通常会以几种形态:GPU服务器、嵌入式设备(比如Android手机、人脸识别闸机等)、边缘设备。GPU服务器我们好理解,而Android嵌入式设备的底层芯片,通常是ARM架构。而Linux底层也是ARM架构,并且Android又是基于Linux内核开发的操作系统,两者可以共享Linux内核。因此就产生了从底层开发一套应用系统的方式,在此基础上同时带来原生Android和原生Linux使用体验。因此基于ARM芯片,阿加犀开发了Aidlux平台,可以在安卓手机上直接下载Aidlux使用。而后面用到的华勤AI视觉软件中台是在Linux的系统下开发的,但是在初期体验AI视觉软件的时候,可以在手机算力的基础上,快速运行体验测试。所以大家需要先准备一台安卓手机,开始下载相应的Aidlux软件。5.2 Aidlux软件下载&安装
打开安卓手机的应用商城,搜索Aidlux即可下载安装。打开手机版本的Aidlux软件APP,第一次进入的时候,APP自带的系统会进行初始化。初始化好后,进入系统登录页面,这一步最好可以用手机注册一下,当然也可以直接点击“我已阅读并同意”,然后点击跳过登录。进入主页面后,可以点击左上角的红色叉号,将说明页面关闭。5.3 Aidlux手机映射到PC电脑
当然如果后面在手机上编程操作,还是有点麻烦,因此可以通过IP的方式,直接映射到电脑上操作。首先将手机和电脑的ip放置在同一个网段内,比如连接同一个wifi信号,或者手机开设热点,电脑连接到手机的热点上。再点击手机页面最上方的Cloud_ip,可以看到会显示相应的ip数字信息。比如这里大白是192.168.0.13:8000,打开电脑浏览器地址,输入相应的ip。密码默认是aidlux,输入后即可进入主页面,可以看到其中的内容和手机端是一样的。5.4 Aidlux软件设置后台运行
当然,有的小伙伴在运行Aidlux的时候,免不了要缩小,切换到其他的APP上。但当将手机版本的Aidlux缩小时,你会发现PC端Aidlux桌面上的操作就被终止了。这时主要的原因在于,手机上默认Aidlux软件缩小时,终止一切连接,为了便于后面的编程操作,我们将Aidlux设置成后台可运行的操作。这里列举了多款手机设置的方式,大家可以参照相应的设置教程:https://community.aidlux.com/postDetail/832https://community.aidlux.com/postDetail/834https://community.aidlux.com/postDetail/835(4)华为鸿蒙/HarmonyOS 2.0设置教程:https://community.aidlux.com/postDetail/828(5)华为鸿蒙/HarmonyOS 3.0设置教程:https://community.aidlux.com/postDetail/827大家可以针对每个人的手机可以进行尝试,如果遇到AIdlux相关的任何问题,也可以在公众号后台,回复“在离岗识别”,加入AidLux适配交流群,一起沟通讨论。5.5 AI视觉软件中台简介
华勤AI视觉软件,是由华勤技术,大白这边的AI视觉团队开发的。定位AI开发应用全流程工具软件平台,集算法模型训练训练、算法功能开发、算法功能应用为主的一站式AI应用解决方案平台。本次AI项目应用,为了让大家快速体验AI视觉项目的应用落地,大白也将AI算法功能应用平台,在Aidlux的基础上,内置到手机中,让大家可以快速体验整套的AI项目落地流程。当然实际项目应用的时候,可以采用边缘设备和GPU服务器。5.6 AI视觉软件中台下载及安装
下载完Aidlux软件,我们再下载一下AI视觉软件中台。应用列表拉到最下方,可以看到aid-IVS的应用图标,如果没有的话,点击上方刷新的图标,进行刷新,点击下载安装。由于AI视觉软件比较大,大家可以稍等10分钟左右,当出现下方的“Installed Successfully”时,即表示下载成功。进入zhongtai文件夹下,输入“./start.sh”,启动AI视觉软件。不过有的手机品牌输入时,会出现“Permission denied”,这时可以给start.sh加上超级权限。输入“sudo chmod +777 start.sh”之后,再输入“./start.sh”,即可正常启动。Aidlux桌面版的ip地址为192.168.0.13:8000。在新的页面上,输入192.168.0.13:8088,即可打开相应的AI技术中台系统的页面。5.7 Aidlux问题综述
可以先通过Aidlux的终端,针对aid-IVS卸载掉,然后再在应用商城重新安装aid-IVS。使用过程中,更多问题的解决方案汇总,可以扫码查看腾讯文档,也可参照上方公众号的方式,加入微信群进行沟通。6 AI视觉软件实战:人员在离岗应用实战
6.1 AI视觉软件登录及使用
大家使用过程上,如果想要时间延期的话,或者有相关的问题,都可以回复“在离岗识别”,查看加入华勤AI视觉软件交流群,一起沟通讨论。点击“扫码激活”,使用微信进行扫码,填写相关的信息后,即可显示相应的账号和密码。一般来说,账号是“TestAdmin”,再点击下页面中的“查看激活状态”,即可正式激活。(1)设备管理:其中包含视频流管理,包含前后摄像头的使用,和rtsp推流。另外由于会将告警事件上报,和业务平台导通,所以还有数据上报的页面。(2)算法管理:这里主要是算法模型的管理,支持用户上传特定版本的算法模型,便于不同场景的算法模型,迭代优化更新。(3)任务管理:主要包含算法功能的设置,和其他厂商固定的算法功能不同,华勤AI算法功能应用平台定位算法管理应用软件,所以在这个模块可以进行算法功能的修改配置。(4)视频监控管理:可以看到设置的功能,通过实时流得到的效果。(6)智能管理:主要是工服识别和人脸识别的图片入库。此外,当前体验的AI算法功能应用中台是V1.0版本,新版本的算法功能开发平台,算法功能应用中台2.0版本,也即将上线。6.2 视频流管理
6.2.1 前/后摄像头视频流
如果没有视频源的情况下,也可以直接选择手机的摄像头作为输入。比如新建了“后摄像头”,如果想查看新建的是否成功,可以点击“实时流”。6.2.2 RTSP视频流
除了手机的前后摄像头,AI视觉中台也可以接入rtsp视频流。当然除了实际的摄像头视频流,还可以将视频文件进行推流的方式,来生成rtsp视频流。进入代码文件stream/EasyDarwin-windows-10文件夹中,双击运行EasyDarwin.exe。跳出一个终端弹窗,可以看到EasyDarwin开始启动。在后面生成rtsp流时,需要推成和本机同一个ip地址下的视频流,因此还要查看一下本机的ip地址。比如大白的window电脑,点击电脑的“开始”菜单,并选择“运行”选项;然后在“运行”框内输入命令“cmd”,在打开的“cmd”命令操作框中,输入命令“ipconfig”。可以看到本机的ip地址是10.104.73.28,大家也需要记录自己的地址。进入代码文件下stream/ffmpeg/ffmpeg/bin下面,输入命令ffmpeg.exe -re -stream_loop -1 -i ./videos/离位识别.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb -rtsp_transport tcp -f rtsp rtsp://10.104.73.28:554/test运行后,在最下方可以看到frame的相关信息,说明已经推流成功。推流成功后,再进入stream/VLC文件夹中,双击运行vlc.exe文件夹。点击左上角媒体->打开网络串流,输入刚刚推流的rtsp流 rtsp://回到AI视觉中台,在“视频源”中再点击“新建”,填入相应的参数。6.3 算法管理
6.3.1 模型管理&算法模型更新
在模型模块中,针对已有的算法模型进行了汇总管理,有相应的名称、路径、类型、Batch、类别标签信息,支持对算法模型进行新增、查看、编辑、删除操作。目前平台默认添加了facemask、cigarette、pose、person、phone、helmet、headshoulder、head、person等9类算法模型,在后面搭建算法模型时,可以组合使用:考虑到不同场景下,为了模型的准确性,用户通常也会采集数据,训练相应的算法模型。比如点击最下方的person,点击右面的“查看”。可以看到,这是一个人体检测的模型文件,标签是“person”,再点击“修改”。因为本文的项目,就是离岗识别的功能,采用的检测模型,主要是人体检测模型,比如前面第四章我们转换好的人体检测算法模型。(1)模型名称:person,在平台中即人体检测模型。(3)支持能力:这里选择了四个功能,即通过人体模型,可以实现的功能数。(4)模型上传:当针对泛场景的检测效果,需要优化迭代更新yolov5检测模型时,可以点击”选择文件“,比如选择前面第四章转换后的算法模型。6.3.2 算法能力
AI视觉中台的算法可应用在智慧城市、安全生产、智慧交通、智慧零售、智慧工厂、智慧园区、智慧水利等多行业场景。其中算法能力页面选取并展示 智慧园区、安全生产、智慧社区、智慧楼宇这四个场景所涉及的算法功能。6.4 任务管理
因为很多的算法功能,通常都是由不同的算法模型,组合搭建,同时搭配算法业务逻辑,就可以实现不同的算法功能。比如AI视觉中台上的功能,也梳理了一个功能清单,可供参考:【腾讯文档】https://docs.qq.com/sheet/DWHFiV0V2cGd6cUVM所以可以通过不同的算法模型组合,开发各类算法功能,点击平台上的“新建”。因为本文主要是“离岗识别”,可以在“任务名称”里面手动输入。而离岗识别中,由于用到了目标追踪算法,所以跳帧输入跳帧数,这里填写“3”,也可相应修改。模型列表中,可以选择模型,这里离岗识别,主要用人体来监测,所以先选择“person”人体检测模型。追踪选择“启用”,追踪阈值可以填写“0.45”,再点击“保存”。可以看到离岗识别功能,已经新建完成。下面还要针对视频流,设置相应的监测区域。针对摄像头中的位置,设置监测区域,点击“刷新截图”,从而获取摄像头画面。因为前面选择了“person”人体检测算法,而在平台中也内置了,由人体组成的一些算法功能。所以在右上角的算法功能中,先选择“在/离岗检测”。在离岗告警的时候,我们想看到告警图片,所以保存图片,我们也设置成“是”。最下面的持续时间,这里大白设置了2,也可以相应调整,表示当离岗2秒钟的时候,会自动告警提示,最后点击“确定”。设置完成后,在功能页面,可以看到相应的“在离岗检测”功能。点击返回“任务管理”,可以看到目前的状态时“关闭”,点击“查看”。选择弹窗下面的“修改”,将状态调整成“启用”,再点击“确定”。可以看到功能开始自动启动,点击“线上状态”,可以看到算法功能启动中。即会视频流加载,算法模型加载等,最终变成“运行中”,即表示已经正常运行。不过需要注意的是,不同的手机由于芯片的不同,算法模型加载也可能会有问题,那么当运行状态出现”模型加载失败“的时候,就需要修改模型运行的方式了,是用DSP,还是GPU或者CPU等。首先打开Aidlux中的终端,进入zhongtai/hq_service/config,修改其中的“config.ini”。在“#设备推理形式”中,系统默认是DSP,即2,其他还有多种模式:-1(在CPU上推理)、0(在GPU上推理)、1(混合模式推理)可以修改成1,0,-1,都一个个进行尝试,看最后哪一个在手机上运行成功。进入终端后,按“i”,进入修改模型,将2修改成1,再按Esc键,按shift+“:”,输入“wq!”节课保存修改的内容。6.4 视频监控管理
运行成功后,进入“视频监控管理”,就可以看到加载成功后的视频画面,其中包含了监测区域以及人体对的框。6.5 告警日志
再点开告警日志,可以看到刚刚告警的一些历史图片,即可实时查看。6.6 智能管理
当然在实际项目中,还会用到比如人脸识别、工服识别的项目需求,而在这类项目中,就要提前录入服装的图片,人脸的图片。所以在“智能管理”里面,可以进行工服、人脸的图片录入,后面再通过项目的方式,教大家设置。6.7 用户信息
当然在“用户信息”中,可以看到当前设备的激活时间。如果需要在AI边缘设备上,延长激活时间或者购买永久权限,都可以联系我们。当然在“联系我们”板块,也可以快速找到相应的工作人员。7 AI项目资源库:更多AI实战项目汇总
以上就是本文在离岗识别的相关内容,主要包含PC端的代码验证,算法模型的转换,AI视觉中台的功能使用。
当然本文的项目,只是展示了”在离岗识别“的项目功能,还有更多的项目算法功能,大白团队也在编写中,大家可以关注下方公众号,回复“在离岗识别”,获取相关的资源链接。
推荐阅读
AIHIA | AI人才创新发展联盟2023年盟友招募
AI融资 | 智能物联网公司阿加犀获得高通5000W融资
注意:人工智能行业,从算法研究、算法适配到项目落地,有很多流程。为了便于大家学习交流,大白创建了一些不同方向的行业交流群。目前主要开设:AI视觉软件应用群、AI训练营开发者群、企业级模型适配群,AI交流群!大家可以根据自己的兴趣爱好,加入对应的微信群,一起交流学习!此外大白和数十名志同道合的AI小伙伴,一起筹备创建了AIHIA人才联盟。联盟网站:www.aihiamgc.com。目前已有200+名盟友,已举办30多场技术主题分享及行业圆桌论坛,以及300多场线上会议,也欢迎大家加入。
大家一起加油!