风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图

风机桨叶故障诊断(四

                                            正负样本准备——从图像中随机扣图


     在之前的工作中,我们已经训练了一个400×25×2的三层BP神经网络,通过这个基础的神经网络进行了误差分析,对我们的问题有了更深刻的认识。现在我们要开始不断完善我们的预测算法。

      在一个机器学习系统中,样本选取的好坏至关重要。不是有这么个著名论断嘛,“It's not who has the best algorithm that wins.It's who has the most data.”所以我们完善算法的第一步,就是完善我们的样本。在项目的最初我们就获取了可以用来提取所需样本的图像库,筛选掉不合适的图像后大概有2000张。我们的下一步,就是从这里面选取我们的样本(上一篇文章中我是手动截取的少量样本,这具有主观性,且样本数量也不够)。

     所以现在我们要从图像库中重新筛选样本,为了让所选的正、负样本能够具有代表性,尽量包含所有可能出现的情况,我们应该在图像中在随机位置,截取出随机大小的图。经过对于实际问题的分析,我选取扣图的随机大小范围限定在250-400之间,位置随机选定,只要所截取的整幅图像不超越原图的边界即可。然后选定在每幅图像中随机截取出20张图作为待处理的样本。

     在所选的文件夹中对所有图像进行随机位置随机大小扣图的matlab实现如下:

function [  ] = BuildLotOfExample(  )
%随机抓取生成大量样本for i=1:25:5176%读取图像image_toRead_name=strcat('F:\风机桨叶故障诊断项目\视频2截图\',num2str(i));image_toRead_name=strcat(image_toRead_name,'.jpg');if exist(image_toRead_name,'file')%读取图像OriImage=imread(image_toRead_name);grayImage=rgb2gray(OriImage);[rows,cols]=size(grayImage);%由原始图像,每幅图扣出20张随机大小,随机位置的图像,再进行筛选%随机扣图的大小,边长250-400之间sizeArray=round(rand(1,20)*150+250);for x=1:length(sizeArray)%得到本次抠图边长length_of_size=sizeArray(x);rowIndex=round(rand()*(rows-length_of_size-1)+1);colIndex=round(rand()*(cols-length_of_size-1)+1);tempImage=grayImage(rowIndex:rowIndex+length_of_size,colIndex:colIndex+length_of_size);%保存图像image_toSave_name=strcat('F:\风机桨叶故障诊断项目\随机抽取样本\',num2str(i+1));image_toSave_name=strcat(image_toSave_name,'_');image_toSave_name=strcat(image_toSave_name,num2str(x));image_toSave_name=strcat(image_toSave_name,'.jpg');imwrite(tempImage,image_toSave_name);endendendend
       在运行完上面代码后的工作就是比较枯燥的了,在所有截取出的图像中认真筛选出正样本和负样本,并剔除出少量可能对算法产生较大干扰的图像。在漫长的工作之后,我们的正负样本集就得到了,最后我将它们进行归一化,变成了25×25的灰度图像。

       今天筛选样本做了不少枯燥的体力活动,肩膀都疼了。不过好的样本选取是机器学习系统的基石,希望这些天的努力不会白费!



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试

风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试 我们已经为训练一个更为稳健的神经网络做好了样本的准备工作,那么我们开始下一步的工作吧! 我们已经有了样本集,目前我筛选出来了247个正样本,652个负样本…

风机桨叶故障诊断(六) 利用自编码器进行特征学习

风机桨叶故障诊断(六) 利用自编码器进行特征学习 在之前的工作中,我已经初步构建了三层的BP神经网络,并已经从样本集的选取,模型的选择(隐含层神经元个数),和输出层神经元阈值选择这…

风机桨叶故障诊断(七) 滑动窗与非极大值抑制NMS

风机桨叶故障诊断(七)滑动窗与非极大值一直NMS 到目前为止,我已经利用自编码神经网络提取特征后训练得到了BP神经网络(参见:点击打开链接),且在测试样本集上表现不错。下面我们就要应用到实际中…

Distinctive Image Features from Scale-Invariant Keypoints-SIFT算法译文

本文全篇转载自如下博客,感谢博主的无私分享 http://www.cnblogs.com/cuteshongshong/archive/2012/05/25/2506374.html ------------------------------------------------------------------------------------------------------ 从尺度不变的关键点选择可区分的…

将图像绘制成3维立体散点图

matlab源代码: Iimread(F:\绝缘子识别\绝缘子红外test图片\test (50).jpg); Irgb2gray(I); [wd,len]size(I); interval10; %设置绘制散点图的间隔,全部绘出会很卡 x[]; y[]; z[]; numfloor((len-1)/interval)1;%计算在当前间隔下图像的每一行…

二叉树的非递归遍历|前中后序遍历

二叉树的非递归遍历 文章目录 二叉树的非递归遍历前序遍历-栈层序遍历-队列中序遍历-栈后序遍历-栈 前序遍历-栈 首先我们应该创建一个Stack 用来存放节点,首先我们想要打印根节点的数据,此时Stack里面的内容为空,所以我们优先将头结点加入S…

C#灰度图转伪彩色图

/// <summary>/// 伪彩色图像构造器/// </summary>public class PseudoColorImageBuilder{/// <summary>/// 铁红色带映射表/// 每一行代表一个彩色分类&#xff0c;存放顺序是RGB/// </summary>public static byte[,] ironTable new byte[128, 3] {{…

砥志研思SVM(二) 拉格朗日乘子法与KKT条件

[1]最优化问题中的对偶性理论 [2]拉格朗日乘子法(上) [3]拉格朗日乘子法(下)

VS2015上配置opencv2.4.11

VS2015上配置opencv2.4.11版方法总结 最近给电脑重装了系统&#xff0c;需要的软件各种装。今天阅读了很多网上的博客&#xff0c;几经波折完成了opencv的配置。配置opencv与其他函数包或者软件相比算是麻烦的了&#xff0c;可能出现的问题也是五花八门&#xff0c;所以针对我的…

热传导方程的差分格式原理与matlab实现

function [ ] ParabolicEquation( h,k ) %求解抛物型方程中的一种&#xff1a;热传导方程 %h:x轴步长 %k:t轴步长rk/(h*h);%网格比 Mxfloor(1.0/h)1;%网格在x轴上的节点个数&#xff08;算上0&#xff09; Ntfloor(1.0/k)1;%网格在t轴上的节点个数&#xff08;算上0&#xff…

如何开发一个扫雷小游戏?

如何用C#开发一个扫雷小游戏&#xff1f; 十分自豪的说&#xff0c;计算机编程就是变魔术&#xff0c;每一个coder都是一个魔术师。 初学C#的时候&#xff0c;我相信很多人都和我一样&#xff0c;学会了基本语法&#xff0c;掌握了基本的数据结构&#xff0c;也见过了不少微软…

在emIDE中创建STM32项目

&#xfeff;emIDE是一个开源的嵌入式集成开发环境&#xff0c;基于Code::Blocks开发&#xff0c;能够支持多个平台和多个厂家的嵌入式硬件&#xff0c;继承了Code::Blocks的优点。 下载emIDE并安装&#xff0c;也可选择绿色版。若需要调试则需安装J-Link GDB Server。 1、打…

“Hello,Github!——如何配置并上传一个已有项目到Git上

“Hello&#xff0c;Github!"——如何配置并上传一个已有项目到Git上注意&#xff01;前言十分简短&#xff01;如今&#xff0c;Github已经成为了管理软件开发以及发现别人优秀代码的首选方法。所以还在等什么&#xff01;快点跟上脚步&#xff01;今天初次注册了Github账…

使用EmBitz开发STM32项目开发环境配置

&#xfeff;&#xfeff; 一、EmBitz软件获取与安装 1、EmBitz软件的获取 EmBitz原名Em::Blocks&#xff0c;是基于Code::Blocks开发的&#xff0c;面向嵌入式的C/C集成开发环境。支持J-Link和ST-Link调试器。使用J-Link仿真器时需安装J-Link GDB Server。 EmBitz下载地址&…