风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图
風機槳葉故障診斷(四)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 正負樣本準備——從圖像中隨機扣圖
 
? ? ?在之前的工作中,我們已經訓練了一個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的灰度圖像。
? ? ? ?今天篩選樣本做了不少枯燥的體力活動,肩膀都疼了。不過好的樣本選取是機器學習系統的基石,希望這些天的努力不會白費!
 
 
總結
以上是生活随笔為你收集整理的风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 安装qt5.9.5 windows环境
- 下一篇: 关于CString
