基於卷積神經網絡的以圖搜圖算法實現


                                                基於卷積神經網絡的以圖搜圖算法實現

       如果用這個名稱去搜索論文,一定有不少。為什么了,因為從原理上來看,卷積神經網絡就非常適合找圖片的相似的地方。想想看,許多大牛、小牛、微牛的文章都是說如何從mnist中、從CIFA10中、從CIFA100中去找到相似的圖片。那么,反過來想一想,如果那么復雜的數據卷積神經網絡都能夠去處理,那么對於這種相對來說,比較簡單的“以圖搜圖”的需求,應該更容易來解決。這里的神經網絡解決這個問題,還是嘗試得到一種較為通用的問題解決方法。
        零、數據集的創建
        基於之前的一些項目,我創建這樣的數據集: 
        訓練數據:
        
        
       
       測試數據
       
      
      我認為,在本項目中."花紋"這個特征是比較重要的。因為顏色不是重點。在訓練的時候,因為圖像是可以被選擇的,傾向於采用比較小的,能夠完全展示一個單元的圖像來做訓練;在測試的時候,沒有具體要求。
       以前對手寫體采用的投影的方法,在解決這個問題的時候不適合,因為這些圖像沒有體現出突出的投影差異;而如果采用"哈希感知"的方法,也是不適合的。因為這些圖像中可能存在重復的單元。、
       如果采取之前對手寫體的識別方法,結果如下
    交叉訓練,特征維度 5 ,神網層數 80
平均正確率 0. 250000,最低正確率 0.000000

交叉訓練,特征維度 5,神網層數 100
平均正確率 0. 221591,最低正確率 0.000000

交叉訓練,特征維度 5,神網層數 120
平均正確率 0. 267045,最低正確率 0.000000

交叉訓練,特征維度 5,神網層數 140
平均正確率 0. 204545,最低正確率 0.000000

交叉訓練,特征維度 5,神網層數 160
平均正確率 0. 159091,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 20
平均正確率 0. 306818,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 40
平均正確率 0. 323864,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 60
平均正確率 0. 306818,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 80
平均正確率 0. 295455,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 100
平均正確率 0. 278409,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 120
平均正確率 0. 267045,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 140
平均正確率 0. 193182,最低正確率 0.000000

交叉訓練,特征維度 10,神網層數 160
平均正確率 0. 227273,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 20
平均正確率 0. 363636,最低正確率 0. 125000

交叉訓練,特征維度 15,神網層數 40
平均正確率 0. 289773,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 60
平均正確率 0. 267045,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 80
平均正確率 0. 284091,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 100
平均正確率 0. 244318,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 120
平均正確率 0. 232955,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 140
平均正確率 0. 284091,最低正確率 0.000000

交叉訓練,特征維度 15,神網層數 160
平均正確率 0. 221591,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 20
平均正確率 0. 289773,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 40
平均正確率 0. 278409,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 60
平均正確率 0. 289773,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 80
平均正確率 0. 232955,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 100
平均正確率 0. 329545,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 120
平均正確率 0. 267045,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 140
平均正確率 0. 232955,最低正確率 0.000000

交叉訓練,特征維度 20,神網層數 160
平均正確率 0. 238636,最低正確率 0.000000
這個結果是非常的爛了,其原因和前面我提到的應該是喲關系的。
因此,只有gaobor或者類似nns的這種方法,才可能去解決問題。
        一、利用mlp和gabor特征來解決問題;(gabor是否更好了?這里前面給出的就是對比結果)
         在圖像處理中,gabor函數是一個用於邊緣提出的線性濾波器。其頻率和方向非常類似人的視覺系統。因此非常適合紋理表達和分離。在空間域中,一個二維gabor濾波器是一個由正弦平面波調制的高斯核函數。
       生物實驗發現gabor濾波器能夠很好地近似單細胞的感受野函數等。
        一般來說,gabor濾波的方法是:不同紋理一般具有不同的中心頻率和帶寬,根據這些頻率和帶寬可以設計一組gabor濾波器對紋理圖像進行過濾,每個gabor濾波器只允許於其頻率相應的紋理順利通過,。從各個濾波器的輸出結果中分析和提出紋理特征,用於之后的分類和分割任務。
         具體步驟:
         1、將輸入的圖像分為3*3和4*4
         2、建立gabor濾波器組,選擇4個尺度、6個方向,共24個濾波器;
         那么具體的過程,目前的代碼是無法完成的。
        gabor特征只有對於對於實際生活中出現的圖像,有比較好的原子區分能力,得到類似cnns的這種結構。
        這里比較關鍵的一個問題就是“什么事gabor特征,那個數值是需要最后來使用的”。中間我做出了一些解決的方法,效果是有的,但是不是非常好。
        二、訓練卷積神經網絡來解決問題;
 
        三、小結和反思
        為什么要寫這樣的一篇文章。因為經過一段時間關於神經網絡和卷積神經網絡的學習之后,我一直在尋找神經網絡的實際應用。相比較於之前研究學習過的其它技術,卷積神經網絡具有以下特點:
        1、原理比較復雜;
        2、工具比較難找;
        3、參數調整比較復雜;
        4、調試需要大量時間,因為一次訓練就需要大量資源。
        這幾點就決定了卷積神經網絡的研究需要較多的時間,所以學習也花了很長的時間。那么在使用這個方面,也是只能跑一跑mnist和CIFA10之類的東西。如果想要最終利用於驗證碼識別的話,還有較長一段路需要來走。這個中間,我就需要有一個自己的項目來填補空白。
        這里我選擇的是“以圖搜圖”的需求。這個需求在現實中,也是比較常見的。之前的思路也只能是類似於手寫體識別一樣,通過采集投影特征,進行距離運算等。現在,因為對卷積神經網絡的初步研究,我認識到了,對於這樣的圖像來說,哪些特征是最重要的、哪種訓練方法是最可行的。
        所以我將這個“自我項目”分為兩個部分,一個部分是用gabor+mlp來實現,一個部分是用卷積神經網絡來實現。對待於前者,無論是gabor還是mlp都已經有代碼積累;而卷積神經網絡,目前還沒有比較系統的解決方法,並且是否選擇lanet5的實現?這些都需要驗證!我認為,通過這個自我項目,能夠把對神經網絡的理解和應用向前推進一大步!
        我計划利用一周的時間將這些完成,如果這些都完成之后,就應該反思積累,哪些是影響整體項目的關鍵節點,是數據集的建立?是數據結構的細節?還是訓練?最后顯示的界面如何來做?把這些做好,理清產學研之間的關系,為未來增加效益!
        此外,神經網絡的程序往往都比較復雜,如何將這種程序也好,需要對能夠允許的代碼的充分理解和應用。
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM