皮带跑偏检测算法的几种实现方式与难点解析

一、背景

皮带是矿山生产中重要的输送设备,由于设备、环境等原因,皮带易发生跑偏,给企业带来经济损失与安全隐患。现有的皮带跑偏检测方法主要分为人工巡检法与机器视觉检测法。人工巡检存在漏检问题,对于长距离、复杂环境下的皮带跑偏检测并不适用。机器视觉检测法分为边缘检测与目标检测两种方法。

在机器视觉检测方法中,对于前者,利用边缘检测算子提取皮带边缘,然后通过检测边缘与标定区域之间的位置关系判定是否发生皮带跑偏。当光线或皮带物料发生变化时,边缘检测鲁棒性不足。对于后者,利用目标识别算法识别裸露的皮带托辊。根据检测区域内托辊的数量判定是否发生皮带跑偏。由于托辊颜色、形态各异,且受到运行环境因素影响,托辊易被物料覆盖,此外受到暗光因素的影响,存在漏检,引发误报。

因此,在实际工程应用中,现有皮带跑偏检测算法存在较为严重的误报问题。因此,如何提高皮带跑偏检测算法的准确率是工程应用面临的一大难题。

二、难点解析

目前,皮带跑偏检测算法的核心问题为准确率不足,AI机器视觉检测难点主要体现在以下三个方面。

1、光线变化且暗光条件目标特征难以辨别

皮带现场运行环境光线变化复杂,且容易出现暗光。基于目标检测的皮带跑偏检测需实时识别托辊目标。若出现暗光,托辊特征呈现暗黑色,导致轮廓或纹理辨别不清。对此,易造成托辊目标检测的漏报,系统基于某一侧托辊数量降低,误判为皮带跑偏

如上左图,暗光导致的皮带右侧托辊纹理等特征辨别不清;如上右图,光线问题导致皮带右侧托辊只有一小部分漏出形状为三角形,可用特征较少,容易造成检测目标的漏报。

2、粉尘或环境造成检测目标遮挡

皮带运行工况复杂,输送物料多呈现颗粒状或粉状。若在下料口,物料卸至皮带容易出现粉尘,从而遮挡检测目标。此外,现场皮带托辊处存在人为引入的异物易造成托辊的遮挡。因此,粉尘或异物遮挡易造成托辊检测目标的漏报。

如上左图,粉尘造成皮带遮挡,难以辨别托辊特征;如上右图,皮带下方两个托辊中间引入了木板异物,造成了左侧托辊的遮挡。可识别的特征较少,容易出现托辊漏报,引起皮带偏离检测误报。

3、远距遮挡造成的小目标难以检测

小目标是皮带检测检测难点之一。在煤矿、金矿等井下作业场景,摄像头安装位置、距离、画质易受到环境因素影响。表现为托辊辨别不清或出现遮挡,在远距离场景,托辊目标较小,可用特征较少,因此,可能出现漏报。

如上左图,画质与距离问题导致皮带右侧托辊目标较小;如上右图,摄像头安装视角导致皮带右侧托辊不可见。对此,系统无法识别托辊,造成目标检测漏报,从而引发皮带跑偏系统的误判。

三、解决方案

1、传统方法边缘检测

传统边缘检测方法使用边缘检测算子计算每个像素点的梯度强度与方向,并通过梯度强度阈值对边缘检测点进行过滤。如下图,原始图经过边缘检测算法得到边缘图,通过选取合适的阈值对非皮带边缘进行过滤。受光线变化以及背景噪声的影响,阈值难以选取。因此,难以获取稳定、高精度的皮带边缘。

2、深度学习目标检测

深度学习目标检测通过检测皮带两侧的托辊个数判断是否发生皮带偏离。当一侧的托辊个数小于阈值时,判定皮带向该侧发生了偏离。由于暗光、遮挡、远距、环境等问题造成托辊不可见或只有少部分特征可见,造成托辊漏检。该方式受外界环境影响大,工程应用中偏离检测鲁棒性不足。

在工程实践中,以上两种方法均不能适应复杂多变生产工况,原因是环境因素易造成边缘检测失稳或托辊漏检。在难点分析中,光线变化、托辊遮挡等复杂条件下均可不同程度辨别皮带边缘特征。因此,从直觉上,皮带边缘特征更具鲁棒性。而传统图像处理方式,在边缘检测上鲁棒性不足。受到车道线检测的启发,将皮带边缘检测转化为车道线检测问题。

3、深度学习边缘检测

通过深度学习识别皮带边缘,并判断与皮带无偏区域的位置关系判定是否皮带偏离。模型的输入为原始图像,输出为皮带边缘像素点。由于皮带边缘所占像素少,为了更好的利用边缘的上下文信息,对边缘在宽度方向上扩充,得到如下右图的二值化图,其中白色实线为需要预测的皮带边缘。

分割模型采用yolov5-instance segmentation,网络结构如下图,在head中输出分割区域与分割区域类别。

偏离判定方法:如下图蓝色区域为皮带偏离无偏区域,红色线为检测到的皮带边缘,红色线与标定区域右侧存在交点,判定为皮带发生偏离。

在工程实践中,本方案提出的皮带偏离检测方法,更具鲁棒性,对环境的敏感性较低,在皮带边缘可辨别的情况下能够模型能够准确稳定检测。适用于室内、室外矿山、砂石厂、煤矿带式输送机皮带跑偏检测。


http://www.ppmy.cn/news/1441858.html

相关文章

java开发之路——用户管理中心_简单初始化

用户管理中心_简单初始化 (一) 初始化项目1. 使用 Ant Design Pro(现成的管理系统) 进行前端初始化2. 后端初始化三种初始化java项目 (二) 遇到的问题【问题1】Ant design pro页面打不开,一直在budiling控制台出现错误error-./src/components/index.ts【问题2】初始…

Mac安装telnet

一、安装Homebrew 1、打开官网:Homebrew — The Missing Package Manager for macOS (or Linux) 2、打开终端输入: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 二、安装Telnet bre…

【MySQL】——用户和权限管理(一)

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

Java上机实验报告(9)

实验 (9) 项目名称:内部类与异常类 一、 实验报告内容一般包括以下几个内容: 实验项目名称 实验9 内部类与异常类实验目的和要求 本实验的目的: 本实验的目的是让学生掌握JAVA中异常处理的作用及常用的异常类&#x…

python3实现整时刻日志文件分离的Handler

文章目录 整时刻日志文件分离的Handler 整时刻日志文件分离的Handler logging 自带的 handlers: RotatingFileHandler:日志文件到达设置的大小阈值后分离TimedRotatingFileHandler:日志文件到达指定的间隔时分离 这些都不满足到达某个整点…

nvm vscode的问题

将原来的node卸载了,改为使用nvm版本控制工具来管理node版本,结果将nvm及环境变量都配置好之后,并且在终端cmd中node -v 等命令正常显示,在vscode中启动vue项目就会报这个错误。 查阅了好多资料,有改变环境变量的、有…

【论文阅读】EgoPCA: A New Framework for Egocentric Hand-Object Interaction

论文主要贡献 提出一种新的框架:Ego-HOI recognition by Probing, Curation and Adaption (EgoPCA)。构建了全面的预训练集,平衡的测试集,以及一个包含了微调策略的baseline。 在Ego-HOI达到了SOTA,并且建立了有效的机制方法。 …

【紫光同创盘古PGX-Lite 7K教程】——(盘古PGX-Lite 7K开发板/PGC7KD-6IMBG256第七章)数字钟实验例程

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 适用于板卡型号: 紫光同创PGC7KD-6IMBG256开发平台(盘古PGX-Lite 7K) 仅需一根Ty…

Axure实现tab页面切换功能

1. 实现效果 2. 实现原理 创建两个标签,并实现点击时选中状态点击时,设置面板状态 3. 实现步骤 3.1 实现可切换的标签 在页面上拖拽两个矩形作为两个tab标签,并命名 tab1 和 tab2 设置每个矩形的边框显示,只显示下边框即可 …

【2024中高级向】22道前端面试题附答案

以下是问题总览:不会的点击右侧目录对应的问题即可跳转到答案 webpack 中 chunkHash 与 contentHash 区别;写过 webpack 的 loader 和 plugin 么;webpack 处理 image 是用哪个 loader,限制成 image 大小的是哪个?webp…

L2-052 吉利矩阵

所有元素为非负整数,且各行各列的元素和都等于 7 的 33 方阵称为“吉利矩阵”,因为这样的矩阵一共有 666 种。 本题就请你统计一下,把 7 换成任何一个 [2,9] 区间内的正整数 L,把矩阵阶数换成任何一个 [2,4] 区间内的正整数 N&…

MySQL数据库总结

作者:爱塔居-CSDN博客 专栏:数据库 目录 前言 一、数据库操作 1.1 创建数据库 1.2 显示当前数据库 1.3 使用数据库 1.4 删除数据库 二、表的操作 2.1 查看表结构 2.2 创建表 2.3 删除表 三、表的增删改查操作(CRUD) 3.1 新增 3.…

opencv图片绘制图形-------c++

绘制图形 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>bool opencvTool::drawPolygon(std::string image_p, std::vector<cv::Point> points) {cv::Mat ima cv::imread(image_p.c_str()); // 读取图像&#xf…

Linux下基于Electron的ZeroTier客户端GUI

Linux下基于Electron的ZeroTier客户端GUI 起因 在使用Zerotier组网的时候&#xff0c;我发现官方客户端GUI只有Windows版本和MacOS版本的&#xff0c;在Linux下加入网络等操作依然要靠命令实现&#xff0c;因此我干脆自己动手写了个GUI&#xff0c;其原理还是通过调用命令实现…

springboot+Vue实现分页

文章目录 一、后端二、前端 今天开发的有一个场景就是需要从远程ssh服务器上加载一个文件展示到前端&#xff0c;但是一次性拉过来有几万条数据&#xff0c;一下载加载整个文件会导致前端非常非常的卡&#xff0c;于是要使用分页解决&#xff0c;我之前看过的有mybatis的分页查…

【信号处理】基于CNN自编码器的心电信号异常检测识别(tensorflow)

关于 本项目主要实现卷积自编码器对于异常心电ECG信号的检测和识别&#xff0c;属于无监督学习中的生理信号检测的典型方法之一。 工具 方法实现 读取心电信号 normal_df pd.read_csv("/heartbeat/ptbdb_normal.csv").iloc[:, :-1] anomaly_df pd.read_csv(&quo…

Spring Boot 的文件配置

SpringBoot的配置文件,有三种格式 1.properties 2.yaml 3.yml(yaml的简写) 这里主要介绍1和3格式的。 在项目中,同时存在properties和yml配置文件, properties的优先级更高 同时存在时,两个文件都生效 如果两个文件中,都包含同一个配置,以properties为主。 properties的配置…

Python爬虫--Ajax异步抓取腾讯视频评论

在某些网站 &#xff0c;当我们滑下去的时候才会显示出后面的内容 就像淘宝一样&#xff0c;滑下去才逐渐显示其他商品 这个就是采用 Ajax 做的 然后我们现在就是要编写这样的爬虫。 规律分析&#xff1a; 这个时候就要用到我们的 Fiddler 了 我们需要分析加载评论的规律 …

PotatoPie 4.0 实验教程(21) —— FPGA实现摄像头图像二值化(RGB2Gray2Bin)

PotatoPie 4.0开发板教程目录&#xff08;2024/04/21&#xff09; 为什么要进行图像的二值化&#xff1f; 当我们处理图像时&#xff0c;常常需要将其转换为二值图像。这是因为在很多应用中&#xff0c;我们只对图像中的某些特定部分感兴趣&#xff0c;而不需要考虑所有像素的…

引入线程的贪吃蛇风骚走位

1.在main函数中分别引入线程t1 和线程 t2 一个线程用来刷新界面&#xff0c;一个线程用来改变方向 2.刷新界面函数&#xff0c;无限次刷新 3. 也是无限循环while(1) 定义key 从键盘获取输入方向&#xff0c;赋值给dir; 4.在初始化函数中确定蛇向有行走为方向 5.从改变方向的函数…