以AI进行无人机巡检河川地貌分析

openlab_4276841a 更新于 1年前

作者:僑光科技大學 助理教授 陈纪翰

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

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



要执行此技术,在执行模型布署及推论时会面对二个主要问题:1. 在无人机飞行途中执行识别必须至少能达到实时执行的推论速度;2. 在河川附近不会有电源配置,需自行携带电瓶,因此电力消耗也是一项重要议题。

本文以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 m****r/>


硬件介绍与搭建环境
iEi TANK-XM811工业电脑

TANK-XM811 是威强电工业计算机IEI专为严苛环境以及AI边缘运算所打造的工业电脑[3],主打三个特色:

· 搭载Intel Core 第12或13代处理器(最高至 4.8 GHz, 16-core, 35W TDP)。
· 弹性扩充 PCIe,支持扩充GPU、NVMe SSD,并且可使用IEI的eChassis模块拓展所需要的运算卡。
· 高强度外壳设计、无风扇冷却系统、12V~28V 输入电压、-20°C ~ +60°C 操作温度。



Intel® Arc™ Pro A40 显示芯片

Intel ArcPro A40是Intel推出专为专业用户所推出的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]是 Intel 官方特别为GPU提供的执行环境,其将执行GPU、iGPU所需的环境都包在Docker中,并提供OpenVINO Jupyter notebook,在此环境中可以直接使用 GPU、iGPU甚至协作进行模型推论,搭配OpenVINO Jupyter notebook中编号 109- throughput-tricks.ipynb中模型优化的教学,用户可轻松在此环境中将模型推论速度大幅提升,使用此资源库做为开发基底,可让开发者省去很多摸索时间,并且大幅提升模型推论速度。

安装方式如下:

1.1 建立工作目录
cd ~
mkdir workspace
cd workspace

1.2. 建立虚拟环境

conda create -n intel-eiv python=3.10
conda activate intel-eiv

1.3. 安装git和下载所需档案

sudo apt -y install git
git clone https://github.com/intel/edge-insights-vision.git">https://github.com/intel/edge-insights-vision.git

1.4. 安装依赖

cd edge-insights-vision
pip install -r requirements.txt


1.5. 安装EIV

python3 eiv_install.py

1.6. 直到出现Success代表安装成功
1.7. 检查驱动是否安***r/>

clinfo | grep 'Driver Version'

1.8. 安装notebook的依赖

cd ~/openvino_notebooks
pip install -r requirements.txt

1.9. 开启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 边缘运算的应用开发者而言无非一大福音。

参考文献与资源网址:

https://github.com/ultralytics/yolov5/tree/master
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.
IEI TANK-XM811 High-Performance 12th Generation Intel® Core™ Processor Fanless Embedded Computer
Exclusive review: Intel Arc Pro A40 / A50 : Exclusive review: Intel Arc Pro A40 / A50 - AEC Magazine
Ubuntu 23.04 : Ubuntu 23.04 (Lunar Lobster)
Edge Insights for Vision (EIV): https://github.com/intel/edge-insights-vision

0个评论