开发者实战 | 以 AI 进行无人机巡检河川地貌分析

点击蓝字

关注我们,让开发变得更有趣

以下文章来源于英特尔物联网,作者:僑光科技大學 助理教授 陈纪翰


由于工业科技快速发展,环境议题一直备受讨论与重视;近几年,由于边缘运算、AI、硬件加速与无人机等技术趋于成熟,公民营机构——尤以公部门为首——开始思考是否能借助科技的力量来进行环境工程,本文即以 AI 对象分割技术作为技术基础,配合台中市环保局河川扬尘防治计划进行河床地貌影像分割。 

所谓河川扬尘,是指河床上的沙尘、泥土或微小颗粒物在风力作用下被扬起并悬浮在空气中,好发期甚至可能造成 PM 2.5 大幅上升,因此政府相关局处会计划每年以无人机进行河道巡检,配合人力挑选出大面积砂源分布位置,进行防砂网或配置水线等防治措施,本项目即将此改由 AI 识别并标定出大面积砂源位置。

cb58e6830b547020297fd9135a8fd99e.jpeg

要执行此技术,在执行模型布署及推论时会面对二个主要问题:

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 卡。 

1b1e356788cb481c1306b0e9f051f0ea.jpeg

官方公布的 YOLOv5-seg 执行数据,其中 5x 以 onnx 在 CPU 执行的速度为每帧 1579 ms,我们经过 OpenVINO™ 优化加上 GPU 加速后实测数据到达每帧 64 ms。

15d10a8f4458cd1761231a9297f2eb45.png

硬件介绍与搭建环境

962b905fd5836fa5d6432b87135459aa.png

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 操作温度。 

823f906b06865ccdb3c4d7934cce2ded.jpeg

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,可让其轻松装进小体积的工业电脑。 

4bead55fef17a120ee46af13fa4cbf8d.jpeg

966b199224447f1a206a595645ccf7ce.png

安装系统、驱动、设置环境

以及安装 OpenVINO™ 环境

2cfbea159994955c266999887203d7c6.png

推荐安装 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

左滑查看更多

bd6829ba1b0c4ab2c582a76e1d56fd60.jpeg

#直到出现 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。    

f563fe0a4fca30e87ecdf12a17b9443f.jpeg

adfb16d6caa8e1940c94731cb3ea6838.jpeg

想要快速试一下硬件的执行速度,我们可以直接运行 Notebook 中的 108-gpu-device.ipynb,其范例模型选用 ssdlite_mobilenet_v2,这是一个轻量化且适合边缘装置执行的模型,而这个项目除了可以马上测试执行速度以外,也演示了使用 OpenVINO™ 需使用到的最重要基本技能,包含转 IR 格式、导入模型、编译模型、选择量化(FP32、FP16 或 INT8)以及  Latency / Through put 的优化都有带到,即便是初学者,详读此篇案例之后应该都能对 OpenVINO™ 有相当的熟悉程度。

07b845c735095086f5f1488eb4b91c67.jpeg

此段代码说明了用 GPU 执行,并且针对 troughput 进行优化

而我们这套硬件运行后如下图显示,使用 GPU 执行速度来到 551FPS。 

fca007986d8bd2660f1d01383d6c9e17.jpeg

可以看到使用 Intel® Arc™ Pro A40 的 FPS 与 CPU 有显著差异。

3f9d5da855d08e047ccf006232eb8290.png

河川地貌分析模型推论实测结果

7d9b4fd939aac0b0a47f364a6cc4ccf4.png

接下来测试本项目河川地貌分析模型的推论过程,幸运的是,目前 yolo v5 [1] 已经支持直接引入 IR 格式的模型进行推论,因此我们只要准备好 IR 格式模型即可直接执行。

11fdfbc789910e96118310739e9b49fd.jpeg

segment/predict.py  内的说明文档,说明了只需将 IR 格式的文件存放在文件夹中(文件夹命名需以_openvino_model 做结尾),并在执行时指定此文件夹即可进行推论。 

首先,准备好已经训练好的 h5 或 pt 文件,若想要直接测试硬件效能的用户也可以直接下载官方提供的权重档,并且利用官方提供的 export.py 文件转换为 onnx 格式。

4d885293f28a89fd41587bdea9b851e8.jpeg

在 Readme 文档中有帮助如何利用 export.py 将 pt 文件转换为 onnx 文件。

接下来就可以回到 EIV 项目中提供的编号 102 pytorch_onnx_to_openvino.ipynb,将此 onnx 文件转为 IR 格式。 

335f7b1902cafa46cf259a57909cb1e8.jpeg

此部分代码说明如何转出 IR 格式的文件,其中 onnx_path 要指定上一步骤转出的 onnx 文件,compress_to_fp16 若设定为 True,则会以单精度 fp16 进行量化,未设定则为双精度 fp32。 

接下来就需要稍微注意一下了,得到 IR 文件之后,由于 segmentation 需要在模型推论后执行后处理,因此,我们不在 ipynb 里面进行,而是回到 YOLO v5 项目中,然而,请留意, 由于GPU环境整个包在 docker 中,因此,建议直接在 EIV 启动界面中点击 Terminal,将路径指到 YOLO v5 项目,使用其中的 segment/predict.py 执行推论。 

0476f91e7a3b30832f58715522b4982c.jpeg

请在 EIV 项目的启动接口中点击 Ternimal,再将路径 cd 至 yolo v5 工程内运行 segmen/predict.py 。

7469272d897d6dc6d73a8053d64e1a0c.jpeg

然后就可以看到推论结果,我们这边输入 640×640 每帧平均花费 64 ms ,若跟官方公布的数据比较,官方每帧1579 ms,超过 1 秒,这样的速度无法用在无人机飞行的应用上,而我们使用 GPU 加速后,即便是segmentation 中最大的模型,也可以有至少 15 fps 的速度,此应用于悬翼式无人机的应用上已经绰绰有余。

f31a95a015814d0cb14f351b61e74143.jpeg

另外,如果读者想要设定使用 CPU、GPU或IGPU,此部分代码写在 YOLO v5 项目中model/segment/commom.py 中 399 行的位置,device_name 可以用来指定执行设备,另外也可以参考108-gpu-device.ipynb文件,补入{“PERFORMANCE_HINT”:“THROUGHPUT”} ,模型便会以 throughput 进行优化,最后我们来看看一下推论成果(拍摄地点为台中市大安溪近出海口处):

837059210b3bf432622524103ebf40fe.jpeg

YOLO v5 seg x 的推论结果,黄色是植被覆盖,红色是砾石,褐色是河川。 

由于 YOLO 是以单帧为基础进行推论,因此我们进一步利用 STCN 进行时序关联上的优化,推论精准度提升相当多,影片中绿色是植披覆盖,红色是河川,黄色是砾石,蓝色是砂源,紫色是含水砂源。

1e52736577f8a8f18e2d579ab0db22fc.png

结论

f7644d96a04159b2d88d06461b72f278.png

无人机配合 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

1b18737c53c1e3cb2c4b9f0305b286ff.png

文章这么精彩,你有没有“在看”?

猜你喜欢

转载自blog.csdn.net/OpenVINOCC/article/details/134566662