《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于深度學習的圖像分類搜索系統(tǒng)
基于深度學習的圖像分類搜索系統(tǒng)
2019年電子技術應用第12期
張 璘,,楊豐墑
廈門理工學院 光電與通信工程學院,,福建 廈門361024
摘要: 圖像分類是根據(jù)圖像的信息將不同類別的圖像區(qū)分開來,,是計算機視覺中重要的基本問題,,也是圖像檢測,、圖像分割,、物體跟蹤,、行為分析等其他高層視覺任務的基礎,。深度學習是機器學習研究中的一個新的領域,,其動機在于建立、模擬人腦進行分析學習的神經網(wǎng)絡,,它模仿人腦的機制來解釋數(shù)據(jù),,例如圖像、聲音和文本。該系統(tǒng)基于Caffe深度學習框架,,首先對數(shù)據(jù)集進行訓練分析構建深度學習網(wǎng)絡,,提取數(shù)據(jù)集圖像特征信息,得到數(shù)據(jù)對應的分類模型,,然后以bvlc-imagenet訓練集模型為基礎,,對目標圖像進行擴展應用,實現(xiàn)“以圖搜圖”Web應用,。
中圖分類號: TN919.8,;TP389.1
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190639
中文引用格式: 張璘,楊豐墑. 基于深度學習的圖像分類搜索系統(tǒng)[J].電子技術應用,,2019,,45(12):51-55.
英文引用格式: Zhang Lin,Yang Fengshang. Image classification search system based on deep learning method[J]. Application of Electronic Technique,,2019,,45(12):51-55.
Image classification search system based on deep learning method
Zhang Lin,Yang Fengshang
School of Opto-Electronic and Communication Engineering,,Xiamen University of Technology,,Xiamen 361024,China
Abstract: Image classification is to distinguish different types of images based on image information. It is an important basic issue in computer vision, and is also the fundamental for image detection, image segmentation, object tracking and behavior analysis. Deep learning is a new field in machine learning research. Its motivation is to simulate the neural network of the human brain for analytical learning. Like the human brain, deep learning can interpret the data of images, sounds and texts. The system is based on the Caffe deep learning framework. Firstly, the data set is trained and analyzed, and a model based on deep learning network is built to obtain the image feature information and corresponding data classification. Then the target image is expanded based on the bvlc-imagenet training set model. And finally,,"search an image with an image" Web application is achieved.
Key words : image classification,;depth learning;Caffe framework,;convolution neural network

0 引言

    Caffe(Convolutional Architecture for Fast Feature Embedding)是由伯克利大學的賈楊清等人開發(fā)的一個開源的深度學習框架[1],,采用高效的C++語言實現(xiàn),并內置有Python和MATLAB接口,,以供開發(fā)人員開發(fā)和部署以深度學習為核心算法的應用,。本文從基本的深度學習概念出發(fā),以mnist手寫識別數(shù)據(jù)集為基礎,,通過Caffe框架設計的LeNet卷積網(wǎng)絡對數(shù)據(jù)集進行訓練分析,,提取目標圖像特征信息,訓練出一個模型進行測試以及網(wǎng)絡結構的圖解[2],。為了更好地展示深度學習的應用效果,,使用bvlc_reference_caffenet.caffemodel來作為基本模型進行圖片識別分類,實現(xiàn)了一個簡單的“以圖搜圖”Web應用,。

1 深度學習的介紹

    深度學習的概念由HINTON G E等人于2006年提出[3],,基于深度置信網(wǎng)絡(DBN)提出非監(jiān)督貪心逐層訓練算法,多非線性層級系統(tǒng)有效解決了深度學習在訓練過程中的過擬合問題,,通過在圖像層次稀疏表示中引入圖像顯著信息,,加強了圖像特征的語義信息,得到圖像顯著特征表達。

1.1 卷積過程

    對于一維信號,,卷積定義為:

rgzn3-gs1-2.gif

其中,,f表示Mr×Nc的二維圖像矩陣,g表示Nr×Nc的二維圖像矩陣,,卷積結果y的大小為(Mr+Nr-1)×(Mc+Nc-1),,即0≤m<Mr+Nr-1,0≤n<Mc+Nc-1,。以具體圖像處理為例,,卷積過程其實還是基于一個固定的矩陣,將另外一個矩陣一格一格掃過去得到數(shù)值的和,,如圖1所示,。

rgzn3-t1.gif

    如果輸入的圖像是6×6的一組矩陣,其前3×3格的數(shù)據(jù)經過權值weight的加權求和后可以得到429,,得到第一個卷積后的數(shù)據(jù);輸入矩陣每次運算向后移動一小格,,并與權值weight進行加權求和,,掃完整個數(shù)據(jù)可以得到一個4×4的數(shù)據(jù),卷積的結果是維數(shù)降低了,,如圖2所示,。

rgzn3-t2.gif

1.2 卷積核

    卷積核為圖1中3×3矩陣的數(shù)量,因為有時要提取的特征非常多且廣泛,,所以需要用更多不同的矩陣來掃(多掃幾遍),,那么矩陣的個數(shù)就是卷積核個數(shù)。

    輸出的矩陣公式為:

     rgzn3-gs3.gif

    當使用n個不同權重的矩陣卷積6×6矩陣時,,可以將6×6的一個矩陣轉變成n個4×4的矩陣,,即6×6-->n×4×4的矩陣。

1.3 池化(pooling)

    池化與卷積非常相似,,簡單來說就是下采樣,,都是使用一個矩陣與另一個矩陣的加權和得到最后的數(shù)據(jù)。池化與卷積最大的不同是卷積重復使用一個數(shù)據(jù),,而池化是每個數(shù)據(jù)只加權求和使用一次,。當原來的矩陣是m×m、采樣窗口是n×n時,,卷積能夠取得(m-n+1)×(m-n+1)的矩陣結果,,而池化在不重復使用數(shù)據(jù)加權求和的情況下,一共只能采樣(m/n)×(m/n)的結果矩陣,。之所以這么做,,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),所以為了降低數(shù)據(jù)維度,,就進行下采樣,。之所以能這么做,是因為即使減少了許多數(shù)據(jù),,特征的統(tǒng)計屬性仍能夠描述圖像,,而且由于降低了數(shù)據(jù)維度,有效地避免了過擬合[4-5],。池化的過程如圖3所示,,原始圖片大小是12×12 維度,對其進行下采樣,,采樣窗口為10×10,,通過池化將其下采樣成為一個2×2大小的特征圖。

rgzn3-t3.gif

1.4 訓練流程

    訓練的主要流程是訓練卷積神經網(wǎng)絡(CNN)的某一個卷積層時,,實際上是在訓練一系列的濾波器(filter),。簡單來說,訓練CNN在相當意義上是在訓練每一個卷積層的濾波器,,讓這些濾波器組對特定的模式特征有較高的激活,,從而達到CNN網(wǎng)絡的分類/檢測等目的[6]。因此,,在相當程度上,,構建卷積神經網(wǎng)絡的任務就在于構建這些濾波器,也就是改變?yōu)V波器矩陣的值,,即改變權值weight,,用來識別特定的特征[7]。這個過程叫做訓練,,圖4是深度學習訓練流程圖,。

rgzn3-t4.gif

    其中weight權值即圖4中的W0、W1,、W2,,其值由初始權值隨著學習訓練的過程由損失函數(shù)來控制和調整,從而達到學習的目的,。

2 LeNet卷積網(wǎng)絡的mnist手寫識別模型

2.1 訓練過程

    由LECUN Y等人于1998年提出的LeNet網(wǎng)絡[8]是最早的卷積神經網(wǎng)絡之一,,它在手寫數(shù)字的識別問題中取得成功。本文使用的mnist圖片數(shù)據(jù)來源于官網(wǎng)http://yann.lecun.com/exdb/mnist/,,數(shù)據(jù)分成了訓練集(60 000張共10類)和測試集(共10 000張10類),,每個類別放在一個單獨的文件夾里,并將所有的圖片都生成txt列表清單(train.txt和test.txt)[9],。

    環(huán)境說明:采用VMware Workstation14下的Linux(Ubuntu16.04)操作系統(tǒng)系統(tǒng),,Python環(huán)境:Anaconda2.7,,Caffe 以及Caffe所需要的Opencv(3.4)支持。環(huán)境搭建如圖5所示,。

rgzn3-t5.gif

2.2 測試結果

    本文使用mnist官方提供的測試集對訓練好的模型進行訓練,,每類數(shù)字有1 000張共10個分類10 000張圖片,判斷正確結果較多,,因此這里跳過了判斷正確結果的輸出,,圖6依次為0~9的測試出錯結果:頭頂標記為模型對圖片預測分類的結果。

rgzn3-t6.gif

    從測試的結果可以看出:

    (1)測試大概10 000張圖片,,共用時不到10 s(僅使用CPU運算,,且不同性能計算機用時差異較大,僅作參考),,其中判斷錯誤數(shù)量為80張左右,,正確率大概有99.2%,每張的測試時間不到1 ms,。

    (2)分析輸出的錯誤圖像判斷結果,,可知有些錯誤原因是手寫字跡潦草、部分較為模糊,、手寫有歧義(即使人為判斷也無法準確斷定數(shù)字具體分類),。

    (3)部分的測試結果在人眼識別過程中沒有太大的問題,在字跡方面也算可以清晰顯示出數(shù)字的具體信息,,而此模型卻給出了一個錯誤的結果。這些識別結果只顯示了概率最大的分類,,可能在識別的部分特征過于相似,,導致并不能得到最好的分類結果,這應該屬于深度學習的訓練缺陷的一部分,,原因是由于訓練集的質量和數(shù)量決定的,。

3 圖片識別的一個簡單應用:以圖搜圖

    百度上線了其最新的搜索功能——“識圖”,該功能基于相似圖片識別技術,,讓用戶通過上傳本地圖片或者輸入圖片的URL地址后,,根據(jù)圖像特征進行分析,進而從互聯(lián)網(wǎng)中搜索出與此相似的圖片資源及信息內容,。根據(jù)前面的深度學習圖片分類的學習結果,,設計出一款類似百度“識圖”的應用。

3.1 總體設計思路

    使用Web前端獲取用戶所上傳(POST)的圖片文件或者URL,,服務器接收到用戶圖片后調用bvlc模型進行處理,,載入模型識別出圖片分類信息,后臺根據(jù)這個分類信息使用requests爬蟲庫搜索Bing上相似的圖片,,獲取到相關的圖片鏈接并傳給前端瀏覽器,,瀏覽器根據(jù)所給的圖片鏈接進行訪問請求,,并顯示在用戶瀏覽界面中,從而達到以圖搜圖的功能,。處理流程圖如圖7所示,。

rgzn3-t7.gif

3.2 模型框架說明

    后臺服務器Django:Django是一個開放源代碼的Web應用框架,由Python寫成,,較適合中等規(guī)模的Web項目,,本圖片搜索系統(tǒng)是基于Django搭建并部署Web應用。

    Web前端框架Bootstrap:Bootstrap是當前比較流行的前端框架,,起源于推特,,提供了簡潔的層疊樣式表和HTML規(guī)則,以及更為完善的人性化網(wǎng)站風格,。根據(jù)此框架能夠較好較快地搭建前端Web UI界面,,且很符合該圖片展示模塊的風格。

    搜索分類依據(jù)bvlc模型:該模型由Caffe團隊使用imagenet圖片集迭代訓練30多萬次而成,,共有1 000種的分類,,是一個可應用級別的model。此次分析圖片的具體分類就是通過這個模型得到分類的關鍵字,。

3.3 搜圖流程

    前端界面:這里提供了兩種圖片的上傳方式,,即圖片的本地文件以及圖片的URL地址,選擇上傳一張小貓圖片,,如圖8所示,。

rgzn3-t8.gif

    后臺分類:后臺將圖片載入bvlc模型進行運算,如圖9展示的是第一個卷積層的卷積核與進行第一次卷積后的圖片,。

rgzn3-t9.gif

    最終后臺經過分析特征得到圖片分類的概率分布圖,,如下結果最可能的分類為283,再通過查找label文件得到283類為label:n02123394 Persian cat,,如圖10所示,。

rgzn3-t10.gif

    也可以查看前5個最有可能的分類結果:

    [(0.99606931,′n02123394 Persian cat′),,

    (0.0019333176,,′n02127052 lynx,catamount′),,

    (0.0013805312,,′n02123159 tiger cat′),

    (0.00041564793,,′n02123045 tabby,,tabby cat′),

    (8.5782471e-05,,′n02124075 Egyptian cat′)]

    更多圖片搜索的實現(xiàn):得到關鍵字后,,通過requests爬蟲庫爬取Bing圖片(https://cn.bing.com/images),,對網(wǎng)頁HTML源碼進行分析,因此得到了一個API接口:https://cn.bing.com/images/async?q={%s}&mmasync=1,。

    該接口提供一個搜索關鍵詞的參數(shù)代替URL中的%s,,因而得到想要的圖片數(shù)據(jù),再使用xpath:’//*[@id="mmComponent_images_1"]/ul/li/div/div/div/div[1]/ul/li[2]/text()’,,從而提取到想要的圖片地址以及圖片源信息,。獲得圖片的URL信息后,后臺系統(tǒng)會整理好數(shù)據(jù)以JSON方式傳送給瀏覽器,,瀏覽器便可依據(jù)此地址展示給用戶更多的相似圖片,。

    前端圖片展示頁面:第一張圖片為搜索的原圖以及其分類的信息,其他圖片為向用戶提供的更多相似圖片的結果,,并且有查看大圖(view)和下載功能(download),,如圖11所示。

rgzn3-t11.gif

4 結論

    圖片識別分類系統(tǒng)在應用級別的構建需要大量圖片作為訓練的基礎,,不斷迭代學習才能得到一個較好的模型,。本文使用的模型為Caffe官方提供的bvlc_reference_caffenet.caffemodel,使用的訓練集imagenet數(shù)據(jù)集是一個強大的模型,。但若以人工智能應用部署在計算機視覺領域上還遠遠不夠,,仍需要更多的大數(shù)據(jù)作為基礎。同時,,即使有這樣一個強大模型在實際應用中,,還需要動態(tài)一步步地修正和完善其模型與參數(shù)配置,這點現(xiàn)在的Caffe還無法很好地給出解決方案,。本文最終的圖片搜索應用功能依賴于識別的分類結果,,本質上還是為以分類關鍵詞搜圖作為結果,若是相同分類的不同圖片,,搜到的結果可能相似度過高,不夠智能化,??蓞⒖嫉慕鉀Q方案是使用多個訓練模型分析所選圖片的各方面信息,如色調,、風格,、其他分類等綜合結果,再加以搜索會更加智能化,,但同時對訓練的數(shù)據(jù)集和訓練網(wǎng)絡的學習效率會有更高的要求,。

參考文獻

[1] Jia Yangqing,SHELHAMER E,,DONAHUE J,,et al.Caffe:convolutional architecture for fast feature embedding[C].ACM International Conference on Multimedia ACM,,2014:675-678.

[2] 王茜,張海仙.深度學習框架Caffe在圖像分類中的應用[J].現(xiàn)代計算機(專業(yè)版),,2016(5):72-75,,80.

[3] HINTON G E,OSINDERO S,,THE Y W.A fast learning algorithm for deep belief nets[J].Neural Computation,,2006,18(7):1527-1554.

[4] 魏正.基于Caffe平臺深度學習的人臉識別研究與實現(xiàn)[D].西安:西安電子科技大學,,2015.

[5] 許少尉,,陳思宇.基于深度學習的圖像分類方法[J].電子技術應用,2018,,44(6):116-119.

[6] 張順,,龔怡宏,王進軍.深度卷積神經網(wǎng)絡的發(fā)展及其在計算機視覺領域的應用[J].計算機學報,,2017,,42(3):453-462.

[7] 孫志軍,薛磊,,許陽明,,等.深度學習研究綜述[J].計算機應用研究,2012,,29(8):2806-2810.

[8] LECUN Y,,BOTTOU L,BENGIO Y,,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,,1998,86(11):2278-2324.

[9] 黃睿,,陸許明,,鄔依林.基于Ten-sorFlow深度學習手寫體數(shù)字識別及應用[J].電子技術應用,2018,,44(10):6-10.



作者信息:

張  璘,,楊豐墑

(廈門理工學院 光電與通信工程學院,福建 廈門361024)

此內容為AET網(wǎng)站原創(chuàng),,未經授權禁止轉載,。