【支线】输电杆塔识别-YOLO v5在Aidlux的部署

目录

  • 0.前言
  • 1.模型训练
    • 1.1 任务描述
    • 1.2 输电杆塔数据集采集
    • 1.3 输电杆塔数据集标注
    • 1.4 数据增强
    • 1.5 折腾
    • 1.6 训练
    • 1.7 测试
  • 2.NX部署
    • 2.1 软硬件
    • 2.2 Tensor RT 优化推理
    • 2.3 ROS Topic发送
  • 3.Aidlux部署
    • 3.1 介绍
    • 3.2 环境配置

0.前言

项目是之前做的,使用Windows训练,并使用Deep stream部署在Nvidia Jetson Xavier NX上,最近接触Aidlux,将这个项目移植过来。

1.模型训练

1.1 任务描述

任务是估算一个输电杆塔的旋转角度,我这里把不同角度的输电杆塔作为不同的标签,转化为图像识别问题。

1.2 输电杆塔数据集采集

采集数据集用的是一个输电杆塔的塑料模型,这种模型网上很多,一般是铁路沙盘会用到。

我没买电动的旋转台,就自己打印了一张纸,划分了一下刻度,然后旋转纸采集数据。为了保证数据多样性,采集的时候后面放了个显示器放电视剧,更换背景。

我大概采集了12个标签一共一千多张。

1.3 输电杆塔数据集标注

标注采用的是labelme软件,标注的结果是json格式,写个python脚本转成txt的。把图片和txt分成数据集和训练集存放,大致比例是8:2。

【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第1张图片

1.4 数据增强

YOLO v5 自带数据增强,这里注意我们是要判断角度,就不能使用镜像反转这种增强方法。同时,因为采集的时候塔的大小、位置都比较单一,因此缩放、平移这种增强就要多做。

1.5 折腾

YOLO自带了几个不一样的激活函数、IOU损失函数、NMS之类的,可以换一换,默认的就挺好用。

还有一种东西叫超参数进化,类似于自动调参,这东西极其消耗算力,我这一张2080ti要跑一个多月,想想算了。

1.6 训练

我这个数据集小,一共就训练了80轮,再多就容易过拟合了。训练的时候看好了损失函数,要是损失函数好久不下降了就要担心过拟合了。

1.7 测试

测试了一下没啥问题,复杂背景也识别的不错。

【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第2张图片

2.NX部署

2.1 软硬件

Jetson Xavier NX,配合Deep stream。默认系统一般是不带Deep stream的,需要自己用SDKmanager安装一下。这个安装比较麻烦,容易踩坑。

在这里推荐Github的CDR(cv-deepsream-robot)项目,在jetson上很好用。

2.2 Tensor RT 优化推理

这个不多说了,教程很多。注意的是,优化推理的时候从FP32到FP16是可以直接量化的,但是到INT8精度损失太大了,需要做一个校准,校准需要很多数据集,我这里做出来效果不好,用的是FP16。

FP32 大概是83fps,FP16是130fps。

2.3 ROS Topic发送

这里感谢CDR的ROS代码和XTDrone的Gazebo无人机环境。

3.Aidlux部署

3.1 介绍

Aidlux的个人版可以直接在小米应用商店安装,如果应用商店没有也可以直接参考Aidlux官方文档

https://aidlux.com/docs

安装之后会有一个权限设置过程,按照APP提示一步步操作即可。
【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第3张图片
安装好的Aidlux自带了几个例程,可以直接运行。
【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第4张图片

Aidlux支持局域网访问,点击桌面上的Cloud_ip即可获得一串网址,在局域网内任意浏览器输入即可打开远程开发界面。

【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第5张图片

3.2 环境配置

在Adilux的应用商店直接一键安装conda。
【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第6张图片
之后把电脑上的YOLO工程文件夹直接复制到Adlux的home文件夹下。

或者也可以直接git YOLO源码

git clone https://github.com/ultralytics/yolov5.git

有一些环境需要安装,一般来说他报错什么直接pip install就行,但是cv2不行,需要安装指定版本。

sudo pip3 install --no-cache-dir opencv-contrib-python==3.4.17.61

pip install torchvision

pip install pandas

pip install Pillow

pip install pyyaml

pip install tqdm

pip install matplotlib

pip install seaborn

之后运行detect.py,即可看到检测结果。这里检测的是本机的图片

【支线】输电杆塔识别-YOLO v5在Aidlux的部署_第7张图片

你可能感兴趣的:(深度学习,python,人工智能)