项目背景

动车组车载接触网运行状态检测装置(3C)是指在运营动车组上安装的车载接触网运行状态检测装置。其随动车组运行,全天候等速在线检测监测接触网、弓网匹配运行状态,检测监测接触网⼏何参数、红外图像、可见光图像等结果,并将结果用于指导接触网维修。

受到接触网张力、机械震动、天气、设备运行寿命等因素影响,接触网运营过程中易出现典型缺陷,如有鸟害、接触网吊弦断裂、接触网吊弦脱落、接触网吊弦松弛、异物缠绕等,虽然该类缺陷在短时间内不能直接造成严重病害结果,但积累后可能引发接触网塌网等重大事故,从而造成列车停运。同时列车运行过程中,由于受到接触网参数改变、异物等因素影响,可造成击打、击毁受电弓的重大事故,使用常规方法很难短时间定位事故详情。该类事故的监测虽不能预防当前事故发生,但捕捉事故后,能对后续列车的运行提供准确的运营指导,大幅度降低事故影响面及经济损失。

本项目基于3C可见光图像,研究如何落地一套车载实时智能识别系统,能够监控接触网检测、受电弓监测中的部分高危缺陷。

为了观测并捕捉接触网部件缺失、松脱、异物及受电弓异常等影响行车安全事件的情况,3C设备需要具有全天候、开放环境、实时性的运行特点,因此需要边云一体化的车地协同方案,以解决户外场景复杂、数据量庞大、实时分析的困难。但因车载硬件资源有限车载设备功率限定等因素,均不利于车载实时分析。因此本项目通过⼈⼯智能手段,依托有限车载运算资源进一步在保持检测指标的基础上压榨计算时间、增加检测内容,实现边采集图像数据,边实时分析图像缺陷的边缘智能感知功能,弥补了3C数据分析量大、分析及时性不足问题,使得接触网相关重要缺陷能够在运营车运行过程中被及时发现与上报,为供电检测的智能化提供有效手段。

项目介绍

接触网检测

数据准备及预处理:数据类别:包含鸟害、吊弦断、吊弦脱、异物四类。数据数量:共计约1万张图像。数据划分:采用分层采样分割数据集,每个类别在训练集、验证集、测试集中的比例尽可能接近6:2:2。预处理注意事项:1. 数据集目标较细,而户外环境经常出现逆光情况,因此对数据增强中的亮度调节要把握尺度;2. 针对部分图像resize后失真导致目标对象歧义的缺陷,需要保持图像的原始比例;3. 若服务器产生CPU瓶颈,可以在reader.yml中使用DecodeCache代替Decode,以释放部分CPU压力。

模型训练及评估

针对车载边缘检测场景,本项目选用了基于飞桨目标检测套件PaddleDetection 的PP-PicoDet系列模型进行实验。

1.调整超参数后,执行命令进行多卡训练,同时开启VisualDL及训练时评价。

1.    export CUDA_VISIBLE_DEVICES=0,1,2,3
2.    python -m paddle.distributed.launch --gpus 0,1,2,3  tools/train.py
3.    -c /xsw/train/model/C3/picodet/picodet_s_416.yml
4.    --use_vdl=true
5.    --vdl_log_dir=/xsw/train/model/C3/picodet/vdl_dir_picodet_s_416/scalar
6.    --eval

2.观测VisualDL训练状态。

1.    visualdl --logdir \\10.2.3.25\shareXSW\train\model\C3\picodet\vdl_dir_picodet_s_416\scalar --port=8041

3.基于最佳模型,计算验证集、测试集单类AP。

1.    python tools/eval.py -c /xsw/train/model/C3/picodet/picodet_s_416.yml
2.    -o weights=/xsw/train/model/C3/picodet/output/picodet_s_416/picodet_s_416/best_model
3.    --classwise

4.验证集评价结果,如下表所示。

5.测试集评价结果如下表所示。

模型部署

因既有设备还需承担数据采集、几何参数测量计算等任务,可利用CPU资源有限。根据经济因素、运维因素及功率限定的考量,我们利用了空闲的集成显卡,采用基于OpenVINO的部署方式。该方式具备较低的推理时长及较低的CPU占用,为剩余业务留出空间。

模型导出可参照:PaddleDetection

模型导出为ONNX格式教程:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/deploy/EXPORT_ONNX_MODEL.md

1. 导出飞桨部署模型:

1.    python tools/export_model.py -c /xsw/train/model/C3/picodet/picodet_s_416.yml
2.    -o weights=/xsw/train/model/C3/picodet/output/picodet_s_416/picodet_s_416/best_model.params
3.    TestReader.inputs_def.image_shape=[3,416,416]
4.    --output_dir /xsw/train/model/C3/picodet/inference_model

2.导出PaddleDetection模型为ONNX:

1paddle2onnx --model_dir /xsw/train/model/C3/picodet/inference_model/picodet_s_416
2--model_filename model.pdmodel
3--params_filename model.pdiparams
4--opset_version 11
5--save_file /xsw/train/model/C3/picodet/picodet_s_416.onnx

3. 基于OpencvDNN模块使用ONNX模型:这里需要说明,OpenCV的DNN模块针对集成显卡推理具备基于OpenCV和基于IntelNGRAPH的两种后端,相应的使用方法不同可能造成巨幅的推理时长变化。

1)基于OpenCV后端该模块可直接读取ONNX模型,但网络中的OperationsSets支持有限,更多OperationsSets需要自定义。

既有OperationsSets支持参考:Thesupportedlayershttps://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV自定义Operations Sets参考: tutorial_dnn_custom_layershttps://docs.opencv.org/4.x/dc/db1/tutorial_dnn_custom_layers.html

2)基于IntelNGRAPH后端该模块可直接读取ONNX模型及IR模型。a、读取ONNX模型将在线通过NGRAPH优化后运行,支持OperationsSets相对较多,使用简便;b、读取IR模型是最佳的方式,经实验其能最大化减少推理时长,但其需要优先安装OpenVINO,并利用其将ONNX模型优化为IR模型,但因集成显卡驱动因素影响其尽量适用于Intel四代CPU之后的硬件设备;

既有OperationsSets支持参考:AvailableOperationsSetshttps://docs.openvino.ai/latest/openvino_docs_ops_opset7.html#doxid-openvino-docs-ops-opset7

IR模型转换参考: ConvertaPaddlePaddleModeltoONNXandOpenVINOIRhttps://docs.openvino.ai/latest/notebooks/103-paddle-onnx-to-openvino-classification-with-output.html2. 数据后处理参考:PicoDetPostProcesshttps://github.com/PaddlePaddle/PaddleDetection/blob/develop/deploy/cpp/src/picodet_postprocess.cc3. 推理时间如下表所示。GPU:Intel HD Graphics 530CPU:Intel(R) Core(TM) i7-6700 CPU @3.40GHz 3.41GHzVPU:Movidius MyriadX

项目选用picodet_lcnet_416模型,指标较原有自定义模型提升2%,推理速度加速53%,为进⼀步业务算法实施提供了可能性。

受电弓监测

针对车载边缘检测场景,本项目选用了基于PaddleDetection的keypoint模型实验。

数据准备及预处理

数据类别:内部数据集设计包含10个受电弓关键点;数据数量:共计约2千张图像;

数据划分:采用分层采样分割数据集,使得每个类别训练集:验证集尽可能接近8:2。

模型训练及评估

不同于通用的行人姿态检测,本项目姿态检测为受电弓,数据集目标对象将发生迁移。基于关键点的自定义数据集训练,因目标关键点数量和关键点含义的变化,需要修改几处内容:

1.因关键点数量及目标对象的变化,需要修改部分源码及配置:

1.    # *.yml 训练配置,仅列举因目标对象和关键点数量变化的关键参数
2.    num_joints: &num_joints 10
3.    train_height: &train_height 288
4.    train_width: &train_width 384
5.    #输出热⼒图尺⼨(宽,高)
6.    hmsize: &hmsize [96, 72]
7.    #左右关键点经图像翻转时对应关系
8.    flip_perm: &flip_perm [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]

2.当前PaddleDetection中的关键的检测评价指标是基于coco OKS的,其OKS中的kpt_oks_sigmas参数来源于coco关键点数据集。因自定义关键点数据集的关键点数量、标注内容变化,需要修改相应的kpt_oks_sigmas适配自定义数据集。(kpt_oks_sigmas含义为每个关键点各自的数据集标准差,COCO上是对同⼀个目标的5000次不同标注产生的标准差。其值越大,说明在整个数据集中对这个点的标注一致性越差; 值越小,说明整个数据集中对这个点的标注一致性越好。如coco数据集中:{鼻子:0.026,眼睛:0.025,耳朵:0.035,肩膀:0.079,手肘:0.072,手腕:0.062,臀部:0.107,膝盖:0.087,脚踝:0.089})

 1#ppdet/metrics/metrics.py2COCO_SIGMAS = ...3#ppdet/modeling/keypoint_utils.py def oks_iou(...):4...5sigmas = ...6...78# 库中pycocotools的cocoeval.py class Params:9...
10def setKpParams(self):
11...
12self.kpt_oks_sigmas = ...
13...

3.如果希望可视化关键点骨架结果,也需要修改相应源码:

1.    #ppdet/utils/visualizer.py
2.    EDGES= ...

4. 调整超参数后,执行训练并开启visualDL及训练时评价。

 1#训练2python tools/train.py -c /xsw/train/model/C3_BowPt/hrnet/dark_hrnet.yml3--use_vdl=true4--vdl_log_dir=/xsw/train/model/C3_BowPt/hrnet/vdl_dir_hrnet_dark_hrnet/scalar5--eval67#观测8visualdl --logdir  \\10.2.3.25\shareXSW\train\model\C3_BowPt\hrnet\vdl_dir_hrnet_dark_hrnet\scalar  --port9=8041
10
11#评价
12python tools/eval.py -c /xsw/train/model/C3_BowPt/hrnet/dark_hrnet.yml
13-o Global.checkpoints=/xsw/train/model/C3_BowPt/hrnet/output/dark_hrnet_w32/best_model.pdparams

5.使用模型推理未标注数据测试。

1.    python tools/infer.py -c /xsw/train/model/C3_BowPt/hrnet/dark_hrnet.yml
2.    -o weights=/xsw/train/model/C3_BowPt/hrnet/output/dark_hrnet/best_model.pdparams
3.    --infer_dir=/xsw/train/data/C3_BowPt_cut/poc/val/images
4.    --draw_threshold=0.2
5.    --save_txt=True
6.    --output_dir=/xsw/train/model/C3_BowPt/hrnet/output/infer_dark_hrnet

6.验证集评价结果。

模型部署

1.导出飞桨部署模型。

1.    python tools/export_model.py -c /xsw/train/model/C3_BowPt/hrnet/dark_hrnet.yml
2.    -o weights=/xsw/train/model/C3_BowPt/hrnet/output/dark_hrnet/best_model.pdparams
3.    --output_dir /xsw/train/model/C3_BowPt/hrnet/inference_model

2.导出PaddleDetection模型为ONNX。

1.    paddle2onnx --model_dir /xsw/train/model/C3_BowPt/hrnet/inference_model/dark_hrnet
2.    --model_filename model.pdmodel
3.    --params_filename model.pdiparams
4.    --opset_version 11
5.    --save_file /xsw/train/model/C3_BowPt/hrnet/dark_hrnet.onnx

3. 推理时间如下表所示。GPU:IntelHDGraphics530CPU:Intel(R)Core(TM)i7-6700CPU@3.40GHz3.41GHz

项目效果

接触网检测结果可视化

鸟害

吊弦脱

吊弦断

异物

受电弓监测结果可视化

总体效果

截止目前新版算法已扩展部署动车30辆、机车16辆,单月累积巡线超过170万KM,检出上述类型缺陷超过3000个。

欢迎关注PaddleDetection:https://github.com/PaddlePaddle

飞桨助力动车3C车载智能识别,为动车组运行保驾护航相关推荐

  1. 飞桨助力南京邮电大学智能芯片测试团队斩获“互联网+”大赛全国银奖

    高校顶级双创赛事,百国千校千万人参与 第八届中国国际"互联网+"大学生创新创业大赛由教育部等十二部委与重庆市人民政府共同主办.重庆大学承办.自4月份报名启动以来,共有来自国内外11 ...

  2. 飞桨助力航天宏图PIE-Engine地球科学引擎构建

    本文已有外发版本,详情请戳链接: 飞桨助力航天宏图PIE-Engine地球科学引擎构建 本系列根据WAVE SUMMIT 2022深度学习开发者峰会「遥感分论坛」论坛嘉宾分享整理.本文整理自航天宏图信 ...

  3. 基于PaddleSeg的眼底血管分割——使用飞桨助力医学影像分析

    基于PaddleSeg的眼底血管分割--使用飞桨助力医学影像分析 一.项目背景 研究表明,各类眼科疾病以及心脑血管疾病会对视网膜血管造成形变.出血等不同程度的影响.随着生活水平的提高,这类疾病的发病率 ...

  4. 百度BML飞桨训练营(五)商品种类识别

    百度BML&飞桨训练营(五)商品种类识别 文章相关内容资料已经取得百度BML允许,仅用与交流学习,请不要用于商业传播. 这一期继续来手把手教学如何进行视觉上对商品饮料分类. 下载商品识别模板( ...

  5. 百度BML飞桨训练营(十一)paddle-OCR车牌识别

    百度BML&飞桨训练营(十一)paddle-OCR车牌识别 第一步:配置Notebook 1.创建Notebook任务,点击配置 开发语言:Python3.7 AI框架:PaddlePaddl ...

  6. 飞桨助力智能车竞赛升级,免费赠送EB开发板!

    第十六届智能汽车竞赛-百度人工智能创意赛道已经开启! 比赛虽好,但同学们苦核心开发硬件久矣! 百度飞桨作为大赛的赞助商之一,为了更好的支持参加「百度人工智能创意赛道」的同学们.百度飞桨与鲸鱼机器人将为 ...

  7. 以赛促学,飞桨助力大学生智能车竞赛升级

      第十六届智能汽车竞赛-百度人工智能创意赛道已经开启!   比赛虽好,但同学们苦核心开发硬件久矣!   百度飞桨作为大赛的赞助商之一,为了更好的支持参加「百度人工智能创意赛道」的同学们.百度飞桨与鲸 ...

  8. 百度飞桨助力高校培养AI大模型人才,2023年飞桨产学合作项目申报启动

    7月7日,教育部产学合作协同育人项目公布项目指南通过的企业名单,百度被列入2023年(5月)批次名单:其中百度飞桨与文心大模型项目40个,包含教学内容和课程体系改革.实践条件和实践基地建设.师资培训项 ...

  9. 政务智能办体验升级、乳腺癌创新药加速研发,飞桨和文心大模型驱动应用智能涌现...

    4月27日,百度"飞桨中国行"落地上海,围绕"如何运用深度学习平台+大模型技术打造壁垒快速破局"主题,飞桨携手区域企业.高校院所.硬件厂商.开发者等生态伙伴共话 ...

最新文章

  1. 零基础如何选择适合的Java培训课程
  2. 全球首个塑料ARM芯片登上Nature,成本仅同类硅芯片1/10
  3. python处理pdf提取指定数据_python从PDF中提取数据的示例
  4. 【资源分享】CS起源 V34.4044(经典版本)
  5. [vue] 你了解什么是函数式组件吗?
  6. ubuntu18.04管理redis
  7. 基于顺序存储结构的图书信息表的旧图书的出库(C++)
  8. 为什么科学家这么痴迷于研究僵尸?
  9. Linux常用基本命令及应用技巧1
  10. 从前端到全栈-基础能力-js-异步编程
  11. 大家来讨论怎么写概要设计
  12. Nginx配置SSL支持htpps访问
  13. 我的工作随手记(一)
  14. 简易社团管理系统(jsp+servlet+三件套+未完成)
  15. 隔离式DC-DC转换器:把直流电压转换成高频方波电压,由变压器升压或降压后,再经过整流滤波变为直流电压或者电流。
  16. 怎么下载网页上的视频
  17. 正极前驱体生产废水除磷
  18. 【我是渠道商】段丛斌:把产品当孩子来呵护,把客户当亲人来对待
  19. testng单元测试-diagnose依赖compet找不到compet的类
  20. PC_@BCD码(8421BCD)@定点数加减法@补码减法公式

热门文章

  1. 大数据的未来是App 而非基础架构
  2. cmp指令 标志寄存器
  3. Cocos Creator JSB [Lv.1] (1)
  4. c语言中read函数的返回值
  5. 全球与中国第一人称视角无人机风镜市场现状及未来发展趋势
  6. 美团,滴滴,塔斯克小厂普通二本实习生面试内容,无广告安心食用
  7. mc服务器玩家无限掉线怎么办,MC联机问题 - 崩溃解答 - MC百科社群 - MC百科|最大的Minecraft中文MOD百科...
  8. 盘点高薪大牌的票房账目 周润发张柏芝惨成毒药
  9. 机械行业在SEM百度竞价中如何推广?
  10. 即构实时音视频多中心调度设计