社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitHub 这个 AI 黑科技,我打 99.99 分!!!

GitHubDaily • 3 年前 • 217 次点击  
公众号关注 “GitHubDaily”
设为 “星标”,每天带你逛 GitHub!


背景介绍

近 70 年来,我国交通基础设施极速发展。根据 2018 年末国家统计局发布的最新数据,中国高铁总里程已突破 3 万公里,营业总里程达到 14.6 万公里,覆盖了大约 99% 的 20 万人口以上的城市,居世界首位。

中国高铁极大的方便了全国人民的工作及生活,铁路也因此在我国有 “国民经济大动脉” 之称。而铁路安全,作为关系到国家和人民生命财产的大事,一直受到国家和铁道部的高度重视。

要想将铁路运输中的各种治安事故降到最低,就需要铁路管理中心的巡线员、检修员对铁路路基、路轨、岔道、信号灯、铁路桥梁等基本路况进行全面巡查。

传统的铁路巡检,一般会由专门的巡检队伍 24 小时不间断的在万里轨道上进行巡视。巡检人员常年风吹日晒、跋山涉水,除了工作环境非常艰苦,还存在因巡检人员身体状况不稳定、判定标准不唯一等因素,造成巡查质量无法保证。

近些年,将无人机、机器人等搭载智能视觉识别系统的智能设备投放到自动化巡检的相关技术越来越成熟,逐渐成为铁路管理单位积极推动的首选方案。

智能化铁路缺陷检测系统在搭建落地过程中,面临诸多困难:

1. 缺陷种类多,形状、出现位置、面积等均不规则,且极其细微,传统算法准确率低。

2. 单张图片检测速度要求高,终端部署硬件性能及成本需要权衡考虑。

3. 每类缺陷数据样本少,模型训练基础素材有限。

基于飞桨自研算法 PP-YOLO 的解决方案

目标检测技术作为计算机视觉的主要方向之一,应用非常广泛。除了可以直接进行目标检测,同时也是人脸检测,行人检测,文字检测、关键点检测、实例分割等复杂应用的基础技术。

而说到目标检测算法,就不得不提 YOLO 系列。YOLO 作为单阶段模型的代表之一,相较于更早提出的两阶段目标检测算法,不仅拥有更快的预测速度;对于背景图像(非物体)中的部分被包含在候选框的情况误检率更低,还拥有更好的算法通用性。以上这些特性,都使 YOLO 系列模型成为工业目标检测场景首选的算法。

PP-YOLO 是飞桨团队在 YOLOv3 的基础上又做了一系列深度优化。通过添加尽量不引入额外计算量的 trick 来提升 YOLOv3 模型的精度,最终在 COCO 数据集上达到了 45.9% 的精度;同时在 V100 单卡上达到了 72.9 FPS;在开启 TensorRT 下,FP16 的推理速度达到 155.6FPS。这使得 PP-YOLO 在精度和速度上达到了最佳平衡,全面超越原生 YOLOv4 模型,成为产业界最佳的目标检测模型

在铁轨缺陷检测场景下,使用 PP-YOLO 对铁轨进行缺陷检测,检测的精度和速度均达到了比较好的效果。

在一张 Tesla-V100 的显卡上进行训练,输入尺寸为 608*608,获得了 99.13 的 mAP,在 trt_fp16 中实现了 1.86ms / 帧的检测速度。精度和速度双双满足实际的生产需求。

方案详细解读

为了兼顾 YOLOv3 模型的精度和预测速度,打造精度速度高性价比的工业实用模型,PP-YOLO 使用了精度速度更优的带可变形卷积的 ResNet50vd 模型(ResNet50vd-DCN),预测速度提升 20%,精度也有小量提升。

在此基础上,加入 Coord Conv 和 SPP 等运算量很小,但能有效提升特征提取效率的 trick。

另外,还引入了基于 IoU 优化检测框定位精度的 IoU Loss,IoU Aware 等方法。这些方法基本不引入额外的计算,但能有效地提高输出预测框的定位精度,有效解决 YOLOv3 模型定位精度不高的问题。

在预测框后处理上,引入 Grid Sensitive 使得预测框学习和解码更加稳定,同时 Matrix NMS 能更加快速有效地完成预测框的非极大值抑制,更高效的保留高质量的预测框,滤除低质量的预测框。

在训练过程中,PP-YOLO 模型使用 DropBlock 这种更适用于目标检测的 dropout 方法来减小过拟合,同时使用 EMA(指数滑动平均)的训练方法,即使用梯度历史加权平均值来平滑掉难样本或者误差样本带来的梯度抖动,让训练过程更加平滑稳定。

通过上述策略对 YOLOv3 模型进行深度优化,PP-YOLO 模型在精度和速度上都大幅优于 YOLOv3 模型,甚至优于更新的 YOLOv4 模型。因此 PP-YOLO 可以说是一个非常适用于工业项目的高性价比实用性模型。

更多关于 PP-YOLO 模型的介绍和文档,可见

https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/PP-YOLO/README_cn.md

针对铁轨缺陷检测这一场景,PPYOLO 的能力得到了很好的发挥,具体如下所述。

1. 更高的定位精度 -- 引入 IoU Aware 等方法

PP-YOLO 的一个特点就是定位精度高。采用了 IoU Loss,IoU Aware,Matrix NMS 等提升定位精度的方法,将训练好的模型在验证集上进行验证时,预测框和真实框基本重合。

因此,在实际的测试过程中,不仅很精准地将缺陷识别出来,而且预测框的位置十分贴近缺陷,可以利用预测库的长度和宽度实现缺陷的拟合。不仅利用 PP-YOLO 实现了缺陷的定位,也给缺陷的定量分析提供了依据。

从图中可以看出,预测框紧贴缺陷。最终根据实际的缺陷像素和预测框的大小进行拟合,以预测框的内切椭圆面积计算缺陷的大小。

2. 更多尺度范围的检测 -- 融合 SPP

Yolov3 引入了多尺度检测,兼容了对大小目标的识别。但是工业场景的缺陷往往非常小,只有几十个像素。PP-YOLO 在 YOLOv3 的基础上融合了 SPP,进一步提升模型对不同尺度的特征提取能力,更好的应用于缺陷检测。

下图中的缺陷,大的缺陷将近 40mm,而小缺陷只有 2mm。

如何实现大小缺陷均可被检测出,PP-YOLO 交出了满意的答卷。

3. 使用数据增强策略提升样本丰富度

产业中缺陷数据样本少,是产业普遍面临的困难。而数据增强策略是最常见、最容易实现的缓解数据样本少问题的方法。

在本项目中使用镜像转置、模糊处理、亮度变化、图像合成等多种手段进行数据增强。

4. 在 Window 上实现高性能部署

最终模型部署系统为 Windows10 系统,计算设备为 1080ti。

整体解决方案思路是利用 C# 调用 C++dll 的方式:

  • C# UI 界面从工业相机直接获取二进制流传文件传给 C++ 的 dll;

  • C++ 将二进制流文件转成 Mat 数组,进而实现预测;

  • 预测的结果列表返回给 C#,C# 将结果画在图上。

利用 Paddle-Tensor-RT 高性能 C++ 预测库,实现了高效率部署。

最终实现单帧预测最快速度为 1.38ms。

除了在 Windows 上的部署,PP-YOLO 根据不同的硬件平台提供了多种部署方式。例如:

  • Nvidia-Jetson 设备部署

  • Android/Ios/ 树莓派部署

  • 英特尔设备上通过 OpenVINO 实现加速部署

至此 PaddleDetection 的 PP-YOLO 就顺利部署在快速行驶的铁轨检测车上。此方案可以精准、实时地检测铁轨的缺陷,保障铁路及乘客的安全。

搭载 PP-YOLO 检测算法的自动铁轨检测车,极大的减少了铁轨检测人员长时间风吹日晒;同时,免去了检测人员为了避开车辆行驶的正常时段,不得不黑白颠倒作业的艰辛,为铁路行业智能化升级又贡献了一股力量。

参考链接

如果您想详细了解更多 PaddleDetection 的相关内容,请参阅以下文档。

PaddleDetection 项目地址:

GitHub:https://github.com/paddlepaddle/paddledetection

Gitee:https://gitee.com/paddlepaddle/PaddleDetection

PP-YOLO 模型的介绍和文档:

https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/PP-YOLO/README_cn.md

如果使用过程有问题,可加入 PaddleDetection 微信群,与更多深度学习大佬交流:

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99100
 
217 次点击