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

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

由于工业科技快速发展,环境议题一直备受讨论与重视;近几年,由于边缘运算、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 ms。

硬件介绍与搭建环境

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 A40Intel推出专为专业用户所推出的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,在此环境中可以直接使用 GPUiGPU甚至协作进行模型推论,搭配OpenVINO Jupyter notebook中编号 109- throughput-tricks.ipynb中模型优化的教学,用户可轻松在此环境中将模型推论速度大幅提升,使用此资源库做为开发基底,可让开发者省去很多摸索时间,并且大幅提升模型推论速度。

安装方式如下:

  1. 1. 建立工作目录

1
2
3

cd ~
mkdir workspace
cd workspace

  1. 2. 建立虚拟环境

1
2

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

  1. 3. 安装git和下载所需档案

1
2

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. 安装依赖

1
2

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

  1. 5. 安装EIV

1

python3 eiv_install.py

  1. 6. 直到出现Success代表安装成功
  2. 7. 检查驱动是否安装

1

clinfo | grep 'Driver Version'

  1. 8. 安装notebook的依赖

1
2

cd ~/openvino_notebooks
pip install -r requirements.txt

  1. 9. 开启notebook

1
2
3

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 格式、导入模型、编译模型、选择量化(FP32FP16或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 的速度,此应用于悬翼式无人机的应用上已经绰绰有余。

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

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

000:42

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

猜你喜欢

转载自blog.csdn.net/gc5r8w07u/article/details/134435049