受到接触网张力、机械震动、天气、设备运行寿命等因素影响,接触网运营过程中易出现典型缺陷,如有鸟害、接触网吊弦断裂、接触网吊弦脱落、接触网吊弦松弛、异物缠绕等,虽然该类缺陷在短时间内不能直接造成严重病害结果,但积累后可能引发接触网塌网等重大事故,从而造成列车停运。同时列车运行过程中,由于受到接触网参数改变、异物等因素影响,可造成击打、击毁受电弓的重大事故,使用常规方法很难短时间定位事故详情。该类事故的监测虽不能预防当前事故发生,但捕捉事故后,能对后续列车的运行提供准确的运营指导,大幅度降低事故影响面及经济损失。
本项目基于3C可见光图像,研究如何落地一套车载实时智能识别系统,能够监控接触网检测、受电弓监测中的部分高危缺陷。
项目介绍
接触网检测
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
项目选用picodet_lcnet_416模型,指标较原有自定义模型提升2%,推理速度加速53%,为进⼀步业务算法实施提供了可能性。
受电弓监测
数据类别:内部数据集设计包含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.py
2COCO_SIGMAS = ...
3#ppdet/modeling/keypoint_utils.py def oks_iou(...):
4...
5sigmas = ...
6...
7
8# 库中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.yml
3--use_vdl=true
4--vdl_log_dir=/xsw/train/model/C3_BowPt/hrnet/vdl_dir_hrnet_dark_hrnet/scalar
5--eval
6
7#观测
8visualdl --logdir \\10.2.3.25\shareXSW\train\model\C3_BowPt\hrnet\vdl_dir_hrnet_dark_hrnet\scalar --port
9=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
项目效果
接触网检测结果可视化
受电弓监测结果可视化
总体效果
欢迎关注PaddleDetection:https://github.com/PaddlePaddle/PaddleDetection
相关推荐
觉得内容不错的话,点个“在看”呗
受到接触网张力、机械震动、天气、设备运行寿命等因素影响,接触网运营过程中易出现典型缺陷,如有鸟害、接触网吊弦断裂、接触网吊弦脱落、接触网吊弦松弛、异物缠绕等,虽然该类缺陷在短时间内不能直接造成严重病害结果,但积累后可能引发接触网塌网等重大事故,从而造成列车停运。同时列车运行过程中,由于受到接触网参数改变、异物等因素影响,可造成击打、击毁受电弓的重大事故,使用常规方法很难短时间定位事故详情。该类事故的监测虽不能预防当前事故发生,但捕捉事故后,能对后续列车的运行提供准确的运营指导,大幅度降低事故影响面及经济损失。
本项目基于3C可见光图像,研究如何落地一套车载实时智能识别系统,能够监控接触网检测、受电弓监测中的部分高危缺陷。
项目介绍
接触网检测
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
项目选用picodet_lcnet_416模型,指标较原有自定义模型提升2%,推理速度加速53%,为进⼀步业务算法实施提供了可能性。
受电弓监测
数据类别:内部数据集设计包含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.py
2COCO_SIGMAS = ...
3#ppdet/modeling/keypoint_utils.py def oks_iou(...):
4...
5sigmas = ...
6...
7
8# 库中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.yml
3--use_vdl=true
4--vdl_log_dir=/xsw/train/model/C3_BowPt/hrnet/vdl_dir_hrnet_dark_hrnet/scalar
5--eval
6
7#观测
8visualdl --logdir \\10.2.3.25\shareXSW\train\model\C3_BowPt\hrnet\vdl_dir_hrnet_dark_hrnet\scalar --port
9=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
项目效果
接触网检测结果可视化
受电弓监测结果可视化
总体效果
欢迎关注PaddleDetection:https://github.com/PaddlePaddle/PaddleDetection
相关推荐
觉得内容不错的话,点个“在看”呗