风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图
风机桨叶故障诊断(四)
正负样本准备——从图像中随机扣图
在之前的工作中,我们已经训练了一个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的灰度图像。
今天筛选样本做了不少枯燥的体力活动,肩膀都疼了。不过好的样本选取是机器学习系统的基石,希望这些天的努力不会白费!
风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图相关推荐
- 风机桨叶故障诊断(一) 样本的获取
风机桨叶故障诊断(一) 样本的获取 今天团队接了个新项目,做一个风机桨叶故障诊断系统.虽然马上就是准备考研的关键期了,可是一想到这是我学习了机器学习后遇到的第一个实际项目,我觉得参与进来,也 ...
- 风机桨叶故障诊断(六) 利用自编码器进行特征学习
风机桨叶故障诊断(六) 利用自编码器进行特征学习 在之前的工作中,我已经初步构建了三层的BP神经网络,并已经从样本集的选取,模型的选择(隐含层神经元个数),和输出层神经元阈值选择这几个方面对桨叶的识别 ...
- 风机桨叶故障诊断(三) 识别桨叶——初步构建BP神经网络
风机桨叶故障诊断(三) 识别桨叶--初步构建BP神经网络 新的一天,希望有好的运气.今天开始着手系统的第一个模块,从一幅图像中寻找到桨叶所在的位置.第一直觉我们的识别任务属于难度比较大,干扰因素多的 ...
- 风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试
风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试 我们已经为训练一个更为稳健的神经网络做好了样本的准备工作,那么我们开始下一步的工作吧! 我们已经有了样本集,目前我筛选出来了247个正样本,652个 ...
- 风机桨叶故障诊断(二) 获取图像几何主方向
风机桨叶故障诊断(二) 获取图像几何主方向 昨天,我将视频资源按帧抽取并筛选得到了可以用来提取样本的图像库.今天还是进行项目的准备工作.当我们拿到一张图片,我们的软件要做的大致可以分为三个步骤:从原图 ...
- 风机桨叶故障诊断(七) 滑动窗与非极大值抑制NMS
风机桨叶故障诊断(七)滑动窗与非极大值一直NMS 到目前为止,我已经利用自编码神经网络提取特征后训练得到了BP神经网络(参见:点击打开链接),且在测试样本集上表现不错.下面我们就要应用到实际中来检验算 ...
- AUTOSAR从入门到精通100讲(四十一)-动态架构设计中的时序图
Part1时序图简介 1时序图定义 描述了对象之间以及对象与参与者实例之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图; 2时序图描述的事物 时序图描述系统中类和类之间 ...
- 正负样本不均衡的解决办法
转载自:http://blog.csdn.net/lujiandong1/article/details/52658675 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时, ...
- 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】
评价二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线等.但这些指标或多或少只能反映模型在某一方面的性能.相比而言,ROC曲线则有很多优点,经常作为评估二值分类器 ...
最新文章
- libgdx和android界面结合,Android游戏引擎libgdx使用教程5:常用UI类与舞台
- java代码_Java:java五行代码实现Excel的快速导出
- python命名空间特性_Python命名空间与作用域
- mysql可视化一月多少钱_最便宜mysql可视化
- python学爬虫还是人工_本人初二生,学习Python爬虫,要不要继续深入学习啊?
- Javascript中===和==的区别
- Nginx服务器中的Socket切分,需要的朋友可以参考下
- python的shutil模块是内置的_python内置模块~shutil
- python pywin32模块详解_python模块win32com用法详解
- firefox 无法启动
- 《Web前端开发技术》笔记
- No matching provisioning profile found: Your build settings specify a provisioning profile with the
- 印度新德里城建_印度语言本地化社区在新德里举行会议
- 12-Java 继承抽象类代码块(详解~)
- 【项目一】医疗实战-传智健康
- FC金手指代码大全·持续更新-亲测可用-FC 经典游戏完整可用的金手指大全---持续更新,偶尔玩玩经典回味无穷,小时候不能通关的现在通通通关一遍
- 使用udp协议实现服务器端程序时,uIP中UDP协议实现的改进
- uniapp H5、app、小程序不同端之间跳转
- 移轴镜头摄影计算机作业模板,梦寐以求的移轴效果,被我用50mm定焦镜头实现了,简单易学出效果...
- IP数据报的分片和组装过程