5个课时,落地AI应用!
欢迎大家来到AidLux零基础边缘端智慧安防训练营~
本节课为训练营的第二节,内容框架如下:
1 AI项目开发及AidLux的特点
2 手机版本AidLux软件安装
3 电脑版AidLux投影测试
4 AidLux系统AI案例测试
5 AidLux软件设置默认后台运行
6 AidLux&VScode编程调试方式
7 安装本地版的Python和Opencv
8 PC端读取图片&视频操作
9 PC端远程调试AidLux
10 PC端调试AidLux读取图片&视频
先来梳理一下AI项目开发的整体流程:
由上图可知,在实际项目中,一般先由数据工程师对于数据标注,再由算法工程师进行算法训练。
比如对于人体框进行标注,由算法工程师训练人体检测模型。
要用到不同的算法设备上,再由嵌入式工程师进行算法适配和视频结构化平台的开发。
针对不同的图像进行算法处理,得到结构化的数据信息。
比如在Nvidia边缘设备使用,将人体检测模型在设备上适配,并开发视频结构化平台,对视频流进行检测处理,得到人体检测框的Box信息。
再将算法处理后的数据,对接到系统软件工程师,进行业务平台业务功能的处理。
比如将人体检测的检测框信息,对接给数据中台上,设置一些业务功能,例如越界识别等。
最后对接到客户系统中,并交给运维工程师进行现场落地部署。
比如将越界人员的信息,对接到客户大屏上,进行展示。
很多算法岗的同学会比较了解这里的数据处理和算法开发,因为平时工作中都是使用Python来进行开发的。
而在模型移植、视频结构化部分,目前市面上采用的基本都是C++方式。
不过本次训练营使用AidLux平台,让模型移植也采用Python的方式。
各位开发者可以基于一台安卓手机、平板,或AidBox边缘设备进行开发,并且实现开发落地无缝衔接。
目前可以先学习使用AidLux软件,后期有机会可以尝试使用边缘设备进行开发。
那么为什么AidLux可以进行Python版本的AI模型开发和移植呢?
AidLux是基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIoT应用开发平台。
用比较简单的方式理解:我们平时编写训练模型,测试模型时常用的是Linux/window系统。
而实际应用到现场的时候,通常会以几种形态:GPU服务器、嵌入式设备(比如Android手机、人脸识别闸机等)、边缘设备。
GPU服务器好理解,而Android嵌入式设备的底层芯片,通常是ARM架构。
Linux底层也是ARM架构,并且Android又是基于Linux内核开发的操作系统,两者可以共享Linux内核。
这就产生了从底层开发一套应用系统的方式,在此基础上同时带来原生Android和原生Linux使用体验。
因此基于ARM芯片,开发了具备融合架构属性的AidLux平台。
基于ARM芯片,比如高通骁龙的855芯片和865芯片,也开发出了具备7TOPS和15TOPS算力的AidBox边缘设备。
使用这些设备平台开发和在Linux上开发都是通用的,即Linux上开发的Python代码,可以在安卓手机AidLux平台、AidBox边缘设备上无缝使用。
为什么能够做到无缝使用呢?
常规方式下,应用在手机Android时,需要将PC上编写的代码,封装成Android SO库(C++);
经过测试后,封装JNI调用SO库,最终在Android上使用Java调用JNI,最终再进行测试发布。
这样的流程需要一系列的工作人员参与,比如C++、Java、Python的工程师,但是大多数算法人员可能会更偏向于使用Python。
而AidLux将其中的整个开发流程全部打通,通过该平台,可以将PC端编写的代码快速应用到Android系统上。
有了Android和Linux双系统开发的基础,就可以做很多的事情了,AI算法应用就是比较典型的一种。
不过这里就涉及到了芯片对于AI算法的优化加速的能力。
AidLux一方面内置了多种深度学习框架,便于快速开发,另一方面对于多种算子也进行了优化加速,很多算法的性能,也都能达到实时使用。
目前使用AidLux主要有两种方式:
(1)边缘设备的方式:
阿加犀用高通芯片的S855和S865制作了两款搭载AidLux的边缘设备,一款提供7T算力,一款提供15T算力。
(2)手机/平板设备的方式
没有边缘设备的情况下,也可以使用App版本的AidLux,尝试边缘设备的所有功能。
目前AidLux基本已对市面上所有的芯片都进行了适配,在手机上运行算法模型,也可以体验优化的效果。
可以安卓手机搜索AidLux安装,也可以在官网down。
打开手机或平板上的AidLux APP,第一次进入的时候,APP自带的系统会进行初始化。
初始化完成后,进入系统登录页面。
这一步最好可以用手机注册一下,也可以直接点击“我已阅读并同意”,跳过登录。
进入主页面后,可以点击左上角的红色圆点,将说明页面关闭。
在统一局域网下,可以通过IP的方式,直接映射到电脑上操作。
点击页面最上方的Cloud_ip,会出现远程映射的地址。
打开电脑浏览器地址,输入相应ip后,会出现登录页面。
默认密码:aidlux。
输入后即可进入主页面,可以看到内容和手机端是一样的。
为了让大家在手机上尝试AI方面的应用,AidLux中有很多的AI案例可以直接运行,点击桌面下方菜单栏的examples。
里面有很多应用,可以随意点击运行,比如点击第一个人脸关键点的应用。
此时电脑桌面上AidLux的操作和手机版本AidLux的操作同步,从电脑端下载源代码后,手机上也同步下载了。
下载达到100%,人脸关键点的源码即下载成功。
当界面出现“Installed successfully”时,表示所有的代码已经下载成功。
回到刚刚的examples的页面,再点击“FaceMesh”人脸关键点的应用,可以看到代码的编辑页面,在页面中可以直接编辑代码。
如果想要运行代码,直接点击图片中Run的按钮,再点击Run Now。
启动运行会发现,电脑上AidLux运行的画面和手机版本的画面同步。
大家可以运行多个AI应用案例进行参考,本次训练营后面的越界识别功能也是基于Aidlux的系统来运行的,可以直接使用Python运行很多AI案例。
如果在手机上运行AidLux时将其缩小切换到微信,会发现PC端AidLux桌面上的操作也被终止了。
主要原因在于,手机上默认AidLux软件缩小时终止一切连接。为了便于后面的编程操作,需要将AidLux设置成后台可运行的操作。
tips:这里列举了多款手机设置的方式,大家可以点击进入参照相应教程进行设置:
(1)小米手机和平板设置教程:
小米手机和平板 后台运行AidLux- AidLux开发者社区
(2)OPPO手机与平板设置教程:
OPPO手机与平板 后台运行Aidlux- AidLux开发者社区
(3)vivo手机与平板设置教程:
vivo手机与平板 后台运行AidLux- AidLux开发者社区
(4)华为鸿蒙/HarmonyOS 2.0设置教程:
鸿蒙/HarmonyOS 2.0 后台运行AidLux- AidLux开发者社区
(5)华为鸿蒙/HarmonyOS 3.0设置教程:
https://community.aidlux.com/postDetail/827
如果其中遇到任何的问题,也可以交流反馈,AidLux的工作人员会帮忙查看。
我们通常在编写代码时,会对着代码进行一步步调试,解决其中可能存在的Bug。
但是在examples的编程环境AidCode中,下面的信息窗口显示报错时,针对每一行代码不太好用Debug的方式一步步调试。
因此需要下载一个编程软件,便于后面的代码调试。
通常工作中我们常用Pycharm和Vscode两款编程软件,此处先演示VScode方式。
点击官网https://code.visualstudio.com/,选择Download按钮进行下载,演示用的是Window电脑,跳到了匹配的默认项。
打开Vscode的压缩包,按照指引进行安装。
打开编程页面,即可看到Vscoe的主页面。
有了编程软件,我们还需安装Python。
选择左面菜单栏的Extensions,输入python,选择Install下载,当“Installing”变成“Installed”时,表示Python下载成功。
点击Vscode左上角的“File->Open Folder”,打开第二节课的Lesson2_codes文件夹。
Lesson2的课程中还会用到Opencv,所以我们先安装一下Opencv库。
选择“Terminal”中的“New Terminal”。
在终端页面输入:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple,
即可快速下载安装成功。
有了编程工具、Python和Opencv,我们先来测试一下在PC端读取图片和视频的操作。
选择read_image_PC.py文件,选择菜单栏上的Run,“Start Debugging”是可以按照断点一步步调试的模式,而"Run Without Debugging"则是直接运行代码的模式。
随便选择哪一种模式运行后,可以看到显示的美女图片。
再来测试一下读取视频的操作,那么为什么要测试读取图片和读取视频呢?
因为在AidLux中的操作,和在PC端上的代码操作有所不同,大家后面也可以对比下。
选择video_capture_PC.py,代码里面采用了跳帧读取的操作,即这里的参
数,每隔5帧,再显示一帧。
因为在实际的项目落地中,视频每秒一般有25帧,但并不需要每一帧都进行处理,所以可以执行跳帧操作,数字越大, 跳帧越快。
当PC端的python和Opencv测试成功了,我们再使用VScode远程连接安卓版本的AidLux,尝试在AidLux环境下实时调试代码。
首先将代码上传到AidLux系统中,通过Cloud_ip的IP地址,在电脑上打开AidLux桌面版。并打开文件浏览器,进入Home文件夹。
选择右上角的“Upload”,将lesson2_code文件夹中的代码上传到Home文件夹下。
在Home文件夹下就有了一个lesson2_code的文件夹,我们再通过远程连接的方式,使用VScode调试其代码。
点击VScode左侧的“Extensions”,输入“Remote”,针对跳出的Remote SSH,点击安装。
安装好后,在左侧栏可以看到一个电脑连接的图标,即Remote Explorer。
点击"Remote Explorer",进行远程连接的页面,点击左下角的“Open a Remote Window”,再选择“Open SSH Configuration file”。
针对跳出的弹窗,再选择第一个config。
输入连接信息,需要注意的是,这里的HostName填写你自己的AidLux里面Cloud_ip的地址。
Host AidLux # 服务器别名
HostName 192.168.0.4 # 填写远程服务器的IP或者Host
Port 9022 # 填写访问远程服务器的端口号
User root # 填写登陆远程服务器的用户的名字
保存后,在左侧会生成一个SSH服务器,鼠标放上后,会跳出一个“Connect to Host in New Window”。
然后会跳转到连接的页面,选择“Linux”。
选择“Continue”,再输入密码,aidlux。
当左下角跳出SSH AidLux时,表示已经连接成功。
选择左上角的File,点击Open Filer,即可跳出AidLux里面的路径。
将路径输入的信息,修改成”/home/lesson2_codes“,点击OK。
跳出的窗口中,再输入密码”aidlux“,即可打开我们已经上传的lesson2_code文件夹。
AidLux中读取图片,在显示图片的地方,不能采用cv2.imshow的方式,需要修改成cvs图形控件模块。
比如打开read_image_Aidlux.py文件,运行后,在手机端的AidLux上可以看到读取的显示图片。
打开video_capture_Aidlux.py,在读取视频和显示图像的地方,采用cvs的方式,读取运行后,就可以在手机上看到显示的视频效果。
到了这里,第二节课的内容就结束了。
本节课我们使用了AidLux,并通过PC端和VScode的方式,进行了最基础的读取图片和读取视频的测试。
下节课我们会采用Yolov5的方式,训练一个目标检测检测模型,并且移植部署到AidLux端。
大家可以进行AidLux AI开发者交流,有AidLux工程师和江大白等众多AI行业专家给予技术指导以及进行交流互动。
训练营所需的数据集、资料包,都可以在里面获取呦~