点击蓝字
关注我们,让开发变得更有趣
以下文章来源于英特尔物联网,作者:僑光科技大學 助理教授 陈纪翰
由于工业科技快速发展,环境议题一直备受讨论与重视;近几年,由于边缘运算、AI、硬件加速与无人机等技术趋于成熟,公民营机构——尤以公部门为首——开始思考是否能借助科技的力量来进行环境工程,本文即以 AI 对象分割技术作为技术基础,配合台中市环保局河川扬尘防治计划进行河床地貌影像分割。
所谓河川扬尘,是指河床上的沙尘、泥土或微小颗粒物在风力作用下被扬起并悬浮在空气中,好发期甚至可能造成 PM 2.5 大幅上升,因此政府相关局处会计划每年以无人机进行河道巡检,配合人力挑选出大面积砂源分布位置,进行防砂网或配置水线等防治措施,本项目即将此改由 AI 识别并标定出大面积砂源位置。
要执行此技术,在执行模型布署及推论时会面对二个主要问题:
01
在无人机飞行途中执行识别必须至少能达到实时执行的推论速度;
02
在河川附近不会有电源配置,需自行携带电瓶,因此电力消耗也是一项重要议题。
本文以 Yolo v5 x[1] 模型为例,进行对象分割(Segmentation),以 STCN[2] 模型进行影像汇整,并于搭载 Intel® Arc™ Pro A40 GPU 的 iEi TANK-XM811 工业电脑上进行现地布署,测试结果每帧(640 x 640)推论时间平均 64 ms (官方公布 CPU 执行数据为 1579 ms) ,达到可实时执行的规格,而 Intel® Arc™ Pro A40 GPU 的峰值功率为 50w,优于目前一般市面上的 GPU 卡。
官方公布的 YOLOv5-seg 执行数据,其中 5x 以 onnx 在 CPU 执行的速度为每帧 1579 ms,我们经过 OpenVINO™ 优化加上 GPU 加速后实测数据到达每帧 64 ms。
硬件介绍与搭建环境
“
iEi TANK-XM811 工业电脑
TANK-XM811 是威强电工业计算机 IEI 专为严苛环境以及 AI 边缘运算所打造的工业电脑[3],主打三个特色:
01
搭载英特尔® 酷睿™ 第 12 或 13 代处理器(最高至 4.8 GHz, 16-core, 35W TDP)。
02
弹性扩充 PCIe,支持扩充 GPU、NVMe SSD,并且可使用 IEI 的 eChassis 模块拓展所需要的运算卡。
03
高强度外壳设计、无风扇冷却系统、12V~28V 输入电压、-20°C ~ +60°C 操作温度。
“
Intel® Arc™ Pro A40 显示芯片
Intel® Arc™ Pro A40 是英特尔推出专为专业用户所推出的 GPU [4] ,内置光线追踪硬件、显示芯片加速和机器学习功能,具有 6 GB GDDR6 的 VRAM,4 个 mini-DP 2.0,可支持 2 个 8K60Hz 或是 4 个 4K60Hz 的屏幕。具有小巧的体积以及 50w TDP,可让其轻松装进小体积的工业电脑。
安装系统、驱动、设置环境
以及安装 OpenVINO™ 环境
“
推荐安装 Ubuntu 23.04 Desktop
笔者起初安装 Ubuntu 22.04 LTS 后,频繁发生 Kernel 冻结的问题,官方推荐改用 Ubuntu 23.04[5],系统内已经内建 Intel® Arc™ Pro A40 等驱动,且执行状况稳定,因此推荐直接安装 Ubuntu 23.04,可以省去许多麻烦。
“
安装 Intel Edge Insights for Vision (EIV)
EIV[6] 是英特尔官方特别为 GPU 提供的执行环境,其将执行 GPU、iGPU 所需的环境都包在 Docker 中,并提供 OpenVINO™ Jupyter notebook,在此环境中可以直接使用 GPU、iGPU 甚至协作进行模型推论,搭配 OpenVINO™ Jupyter notebook 中编号 109- throughput-tricks.ipynb 中模型优化的教学,用户可轻松在此环境中将模型推论速度大幅提升,使用此资源库做为开发基底,可让开发者省去很多摸索时间,并且大幅提升模型推论速度。
安装方式如下:
#建立工作目录
cd ~
mkdir workspace
cd workspace
左滑查看更多
#建立虚拟环境
conda create -n intel-eiv python=3.10
conda activate intel-eiv
左滑查看更多
#安装 git 和下载所需档案
sudo apt -y install git
git clone https://github.com/intel/edge-insights-vision.git">https://github.com/intel/edge-insights-vision.git
左滑查看更多
# 安装依赖
cd edge-insights-vision
pip install -r requirements.txt
左滑查看更多
# 安装 EIV
python3 eiv_install.py
左滑查看更多
#直到出现 Success 代表安装成功
#检查驱动是否安装
clinfo | grep 'Driver Version'
左滑查看更多
#安装 notebook 的依赖
cd ~/openvino_notebooks
pip install -r requirements.txt
左滑查看更多
#开启 notebook
cd ~/workspace/edge-insights-vision
chmod +x launch_notebooks.sh
./launch_notebooks.sh
左滑查看更多
“
执行 OpenVINO™ 范例模型
当我们在 edge-insights-vision 文件夹底下执行 lauch_notebooks.sh 后,便会开启 Jupyter Notebook 核心,复制并贴上以下网址在浏览器即可打开 Notebook。
想要快速试一下硬件的执行速度,我们可以直接运行 Notebook 中的 108-gpu-device.ipynb,其范例模型选用 ssdlite_mobilenet_v2,这是一个轻量化且适合边缘装置执行的模型,而这个项目除了可以马上测试执行速度以外,也演示了使用 OpenVINO™ 需使用到的最重要基本技能,包含转 IR 格式、导入模型、编译模型、选择量化(FP32、FP16 或 INT8)以及 Latency / Through put 的优化都有带到,即便是初学者,详读此篇案例之后应该都能对 OpenVINO™ 有相当的熟悉程度。
此段代码说明了用 GPU 执行,并且针对 troughput 进行优化
而我们这套硬件运行后如下图显示,使用 GPU 执行速度来到 551FPS。
可以看到使用 Intel® Arc™ Pro A40 的 FPS 与 CPU 有显著差异。
河川地貌分析模型推论实测结果
接下来测试本项目河川地貌分析模型的推论过程,幸运的是,目前 yolo v5 [1] 已经支持直接引入 IR 格式的模型进行推论,因此我们只要准备好 IR 格式模型即可直接执行。
segment/predict.py 内的说明文档,说明了只需将 IR 格式的文件存放在文件夹中(文件夹命名需以_openvino_model 做结尾),并在执行时指定此文件夹即可进行推论。
首先,准备好已经训练好的 h5 或 pt 文件,若想要直接测试硬件效能的用户也可以直接下载官方提供的权重档,并且利用官方提供的 export.py 文件转换为 onnx 格式。
在 Readme 文档中有帮助如何利用 export.py 将 pt 文件转换为 onnx 文件。
接下来就可以回到 EIV 项目中提供的编号 102 pytorch_onnx_to_openvino.ipynb,将此 onnx 文件转为 IR 格式。
此部分代码说明如何转出 IR 格式的文件,其中 onnx_path 要指定上一步骤转出的 onnx 文件,compress_to_fp16 若设定为 True,则会以单精度 fp16 进行量化,未设定则为双精度 fp32。
接下来就需要稍微注意一下了,得到 IR 文件之后,由于 segmentation 需要在模型推论后执行后处理,因此,我们不在 ipynb 里面进行,而是回到 YOLO v5 项目中,然而,请留意, 由于GPU环境整个包在 docker 中,因此,建议直接在 EIV 启动界面中点击 Terminal,将路径指到 YOLO v5 项目,使用其中的 segment/predict.py 执行推论。
请在 EIV 项目的启动接口中点击 Ternimal,再将路径 cd 至 yolo v5 工程内运行 segmen/predict.py 。
然后就可以看到推论结果,我们这边输入 640×640 每帧平均花费 64 ms ,若跟官方公布的数据比较,官方每帧1579 ms,超过 1 秒,这样的速度无法用在无人机飞行的应用上,而我们使用 GPU 加速后,即便是segmentation 中最大的模型,也可以有至少 15 fps 的速度,此应用于悬翼式无人机的应用上已经绰绰有余。
另外,如果读者想要设定使用 CPU、GPU或IGPU,此部分代码写在 YOLO v5 项目中model/segment/commom.py 中 399 行的位置,device_name 可以用来指定执行设备,另外也可以参考108-gpu-device.ipynb文件,补入{“PERFORMANCE_HINT”:“THROUGHPUT”} ,模型便会以 throughput 进行优化,最后我们来看看一下推论成果(拍摄地点为台中市大安溪近出海口处):
YOLO v5 seg x 的推论结果,黄色是植被覆盖,红色是砾石,褐色是河川。
由于 YOLO 是以单帧为基础进行推论,因此我们进一步利用 STCN 进行时序关联上的优化,推论精准度提升相当多,影片中绿色是植披覆盖,红色是河川,黄色是砾石,蓝色是砂源,紫色是含水砂源。
结论
无人机配合 AI 视觉的技术在环境工程的应用十分广泛,然而,执行速度、功耗与模型精准度之间的取舍一直是个难题,但由于半导体技术以及材料加工的进步,让现在的工业电脑只需 35~65w 就可得到强悍的处理性能,本次搭载的 Intel® Arc™ Pro A40,只有 50w TDP 的功率以及小巧的体积。
本项目中多亏了加速设备,使得模型推论速度可以达到实时推论并且在户外使用,加上官方支持也趋于成熟,从模型开发完毕后到完成布署几乎只需几个步骤就可以完成,此对于急需 AI 边缘运算的应用开发者而言无非一大福音。
参考文献与资源网址:
[1] https://github.com/ultralytics/yolov5/tree/master
[2] Cheng, Ho Kei, Yu-Wing Tai, and Chi-Keung Tang. “Rethinking space-time networks with improved memory coverage for efficient video object segmentation.” Advances in Neural Information Processing Systems 34 (2021): 11781-11794.
[3] https://www.ieiworld.com/tw/product/model.php?II=886
[4] Exclusive review: Intel Arc Pro A40 / A50 :
https://aecmag.com/workstations/exclusive-review-intel-arc-pro-a40-a50-gpus-graphics-cad-bim/
[5] Ubuntu 23.04 :
https://releases.ubuntu.com/lunar/
[6] Edge Insights for Vision (EIV):
https://github.com/intel/edge-insights-vision
OpenVINO™
--END--
你也许想了解(点击蓝字查看)⬇️➡️ 开发者实战 | 介绍OpenVINO™ 2023.1:在边缘端赋能生成式AI➡️ 基于 ChatGLM2 和 OpenVINO™ 打造中文聊天助手➡️ 基于 Llama2 和 OpenVINO™ 打造聊天机器人➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能➡️ 5周年更新 | OpenVINO™ 2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型➡️ 开发者实战系列资源包来啦!➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️ 还不知道如何用OpenVINO™作画?点击了解教程。➡️ 几行代码轻松实现对于PaddleOCR的实时推理,快来get!➡️ 使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理
扫描下方二维码立即体验
OpenVINO™ 工具套件 2023.1
点击 阅读原文 立即体验OpenVINO 2023.1
文章这么精彩,你有没有“在看”?