智慧城市之无人机低空巡检
📓 项目简介
智慧城市是人工智能、大数据、物联网等前沿技术组合应用的综合体,随着人工智能的不断发展,智慧城市项目逐步从概念PPT走向落地。深度学习视觉模型赋予了智慧城市更多的可能,如目标检测模型可以帮助相关部门掌握城市的交通路况、治安情况、环境卫生、动植物保护等信息,语义分割模型可以帮助相关部门了解土地利用情况,快速甄别违规用地等情况,辅助城市规划管理决策。无人机技术的加入,从低空大面积感知城市实况,再通过人工智能模型实时处理数据,大大提高了城市管理能力和智慧城市的智能化程度,可以减少大量巡检人力器械等资源的投入。本项目在英特尔NUC的硬件上,使用原生OpenVINO作为推理引擎,同时部署基于飞桨PaddlePaddle框架训练的目标检测和语义分割两个模型,实现无人机图像实时高性能并行推理计算。
👀 项目预览
⚙️ 运行设备和环境
- 英特尔NUC8i5BEH 或 搭载Intel i5以上CPU的笔记本或主机
- Python 3.8.10
- OpenVINO 2022.3
- 大疆无人机
- 无线路由器
✏️ 技术架构
本项目主要利用大疆无人机APP内置的RTMP推流直播功能实现实时图传,英特尔NUC和无人机之间使用路由器组成本地局域网能最大限度降低图传延时,在NUC上架设Nginx服务接收图像,并通过OpenVINO引擎对图像进行预处理并使用OpenVINO的AsyncInferQueue()异步接口分别输入PP-YOLO tiny和PP-LiteSeg模型推理,最后将结果渲染到前端界面。
📖 源码文件说明
OVInferEngine.py
基于OpenVINO的核心推理类,包括SegModel和DetModel两个类,分别完成语义分割和目标检测任务。此外,OpenVINO的预处理、多线程、异步推理、性能优先等方法实现也在此代码文件中实现。
main.py
程序主文件,主要是前端渲染的代码,同时包含了OpenVINO异步推理后的后处理部分代码。
main_ui.py & main_rc.py
QT前端代码,由QT Designer导出生成。
./inference
包含语义分割和目标检测两个飞桨PaddlePaddle推理模型,其中,语义分割模型为PP-LiteSeg,目标检测模型为PP-YOLO。
💡 使用方法
1⃣️ 克隆仓库代码
git clone https://openi.pcl.ac.cn/xiejiehang/UAV-Monitor-OpenVINO.git
2⃣️ 安装必要依赖
cd UAV-Monitor-OpenVINO
pip install -r requirements.txt
3⃣️ 运行主程序
python main.py
4⃣️ 填写路径和参数
操作区路径和参数说明如下:
-
路径信息:可以是本地的mp4文件,也可以是大疆无人机rtmp直播推流地址
❗️如果使用无人机直播推流,强烈建议在本地推理设备搭建Nginx服务,用路由器把无人机、推理设备组成局域网,降低推流延迟。
-
目标检测结果置信度阈值:float类型,取值范围[0,1],一般而言数值越低检测到的地物目标越多,但也有误检测的风险。
-
帧率:int类型,取值范围[1, +∞),根据推理设备的性能设置,设备性能越好,数值越小。