本說明書涉及使用深度神經(jīng)網(wǎng)絡(luò)的圖像處理,例如卷積神經(jīng)網(wǎng)絡(luò)。
卷積神經(jīng)網(wǎng)絡(luò)一般包括兩種神經(jīng)網(wǎng)絡(luò)層,卷積神經(jīng)網(wǎng)絡(luò)層和全連接神經(jīng)網(wǎng)絡(luò)層。卷積神經(jīng)網(wǎng)絡(luò)層具有稀疏的連接性,其中卷積層的每個節(jié)點接收來自更低一層的神經(jīng)網(wǎng)絡(luò)層的節(jié)點子集的輸入。一些卷積神經(jīng)網(wǎng)絡(luò)層具有與層中其它節(jié)點共享權(quán)重的節(jié)點。然而,全連接層中的節(jié)點接收來自更低一層的神經(jīng)網(wǎng)絡(luò)層中的每個節(jié)點的輸入。
技術(shù)實現(xiàn)要素:
大體上,本說明書描述了用于使用深度神經(jīng)網(wǎng)絡(luò)處理圖像的技術(shù)。
本說明書中所描述的主題的特定實施例能夠被實現(xiàn),以便實現(xiàn)以下優(yōu)點中的一個或多個。通過在深度神經(jīng)網(wǎng)絡(luò)中包括子網(wǎng)并且具體包括模塊子網(wǎng),該深度神經(jīng)網(wǎng)絡(luò)能夠更好地執(zhí)行圖像處理任務(wù),例如對象識別或圖像分類。此外,與不包含模塊子網(wǎng)的深度神經(jīng)網(wǎng)絡(luò)相比,包括模塊子網(wǎng)的深度神經(jīng)網(wǎng)絡(luò)能夠更快且更有效率地訓練,同時維持圖像處理任務(wù)的提高的效能。
在附圖以及下面的說明書中闡述了本說明書的主題的一個或多個實施例的細節(jié)。本主題的其它特征、方面、和優(yōu)點將根據(jù)說明書、附圖、和權(quán)利要求書而變得顯而易見。
附圖說明
圖1示出了圖像處理系統(tǒng)的示例圖像。
圖2是根據(jù)輸入圖像來生成輸出的示例過程的流程圖。
圖3是使用模塊子網(wǎng)來處理輸入的示例過程的流程圖。
各個附圖中相似的附圖標記和名稱指示相似的元素。
具體實施方式
圖1示出了示例圖像處理系統(tǒng)100。所述圖像處理系統(tǒng)100為一個系統(tǒng)的示例,該系統(tǒng)被實現(xiàn)為一個或多個位置中的一個或多個計算機上的計算機程序,在其中能夠?qū)崿F(xiàn)下文中描述的系統(tǒng)、組件、和技術(shù)。
圖像處理系統(tǒng)100接收表征輸入圖像的數(shù)據(jù),例如輸入圖像的像素信息或表征該輸入圖像的其它信息。例如,所述圖像處理系統(tǒng)100能夠接收輸入圖像數(shù)據(jù)102。圖像處理系統(tǒng)100使用深度神經(jīng)網(wǎng)絡(luò)150和輸出層152來處理所接收的數(shù)據(jù)以生成該輸入圖像的輸出,例如來自輸入圖像數(shù)據(jù)102的輸出154。
圖像處理系統(tǒng)100能夠被配置為接收輸入圖像數(shù)據(jù)并且基于該輸入圖像來生成任何種類的分值或分類輸出,即能夠被配置為執(zhí)行任何種類的圖像處理任務(wù)。由本系統(tǒng)生成的該分值或分類輸出取決于圖像處理系統(tǒng)已經(jīng)被配置來確認的任務(wù)。例如,對于圖像分類或識別任務(wù)而言,由圖像處理系統(tǒng)100針對給定圖像所生成的輸出可以是對象類別集合中的每一個的分值,其中每個分值表示該圖像包含屬于該類別的對象的圖像的可能性。作為另一示例,對于對象檢測任務(wù)而言,由圖像處理系統(tǒng)100生成的輸出能夠識別輸入圖像中的感興趣對象的位置、大小,或者這兩者。
深度神經(jīng)網(wǎng)絡(luò)150包括多個子網(wǎng)絡(luò)的序列,其從序列中的最低子網(wǎng)到序列中的最高子網(wǎng)來布置,例如包括子網(wǎng)A104、子網(wǎng)B106、和子網(wǎng)C108的序列。深度神經(jīng)網(wǎng)絡(luò)150通過序列中的每個子網(wǎng)處理接收的輸入圖像數(shù)據(jù),以生成輸入圖像的替選表示。一旦深度神經(jīng)網(wǎng)絡(luò)150已生成輸入圖像的替選表示,輸出層152就處理該替選表示以生成輸入圖像的輸出。如上所述,由輸出層152生成的輸出的類型取決于圖像處理系統(tǒng)100已經(jīng)被配置來確認的圖像分類任務(wù)。類似的,被用于根據(jù)該替選表示生成輸出的輸出層152的類型也取決于該任務(wù)。具體的,輸出層152是適合于該任務(wù)的輸出層,即生成對于圖像處理任務(wù)必要的種類的輸出。例如,對于圖像分類任務(wù),該輸出層可以是softmax輸出層,其針對對象類別的集合中的每一個生成相應(yīng)的分值。
序列中的子網(wǎng)包括多個模塊子網(wǎng)以及可選地包括一個或多個其它子網(wǎng),所述其他子網(wǎng)均由一個或多個常規(guī)神經(jīng)網(wǎng)絡(luò)層組成,例如,最大池化層、卷積層、全連接層、正則化層等。
在圖1的示例中,子網(wǎng)B106被描繪為模塊子網(wǎng)。雖然在圖1的示例中僅示出了單個模塊子網(wǎng)絡(luò),但是深度神經(jīng)網(wǎng)路150一般將包括多個模塊子網(wǎng)。模塊子網(wǎng)一般包括直通(pass-through)卷積層,例如直通卷積層106、神經(jīng)網(wǎng)絡(luò)層的一個或多個群組、以及連結(jié)(concatenation)層——如連結(jié)層130。模塊子網(wǎng)B106接收來自序列中在前的子網(wǎng)的輸入,并根據(jù)接收的輸入來生成輸出表示。
連結(jié)層130接收由直通卷積層108生成的輸出和由神經(jīng)網(wǎng)絡(luò)層的群組中的每一個生成的相應(yīng)輸出,并且對接收到的輸出進行連結(jié)以生成單個輸出,其作為子網(wǎng)B106的輸出被提供給模塊序列中的下一個模塊或提供給輸出層152。
模塊子網(wǎng)絡(luò)中的神經(jīng)網(wǎng)絡(luò)層的每個群組包括兩個或更多神經(jīng)網(wǎng)絡(luò)層,其中初始神經(jīng)網(wǎng)絡(luò)層后面跟隨有一個或多個其它神經(jīng)網(wǎng)絡(luò)層。例如,子網(wǎng)B106包括:包括第一卷積層110的一個群組,第一卷積層110后面跟隨有第二卷積層112;包括卷積層114的另一個群組,卷積層114后面跟隨有卷積層116;以及包括最大池化層118的第三群組,最大池化層118后面跟隨有卷積層120。
一般,全連接層中的每個節(jié)點接收來自序列中的更低一層中的每個節(jié)點的輸入,并且根據(jù)該節(jié)點的權(quán)重集合來從接收的輸入產(chǎn)生激活。給定的全連接層中的每個節(jié)點所生成的激活作為輸入來被提供給該序列中更高一個全連接層中的每個節(jié)點,或者如果該全連接層是序列中的最高層,則提供給輸出層152。
與全連接層不同,卷積層一般是稀疏連接的神經(jīng)網(wǎng)絡(luò)層。也就是說,卷積層中的每個節(jié)點接收來自在前的神經(jīng)網(wǎng)絡(luò)層中的節(jié)點中的一部分——即少于全部節(jié)點的輸入,或者如果卷積層是序列中的最低層,則接收對圖像處理系統(tǒng)100的輸入的一部分,并且根據(jù)該輸入來產(chǎn)生激活。一般,卷積層具有節(jié)點,其通過根據(jù)每個節(jié)點的權(quán)重集合對接收的輸入進行卷積來生成激活。在一些情況下,卷積層中的節(jié)點可以被配置成共享權(quán)重。也就是說,該層中的節(jié)點中的一部分可以被約束為總是具有與該層中的其它節(jié)點相同的權(quán)重值。
下面參照圖3來更為詳細地描述使用模塊子網(wǎng)來處理輸入以生成輸出表示。
圖2是用于根據(jù)接收的輸入來生成輸出的示例過程200的流程圖。為了方便,過程200將被描述為由位于一個或多個位置的一個或多個計算機的系統(tǒng)來執(zhí)行。例如,根據(jù)本說明書來適當?shù)鼐幊痰膱D像處理系統(tǒng)——例如圖1中的圖像處理系統(tǒng)100,能夠執(zhí)行過程200。
該系統(tǒng)接收表征輸入圖像的數(shù)據(jù)(步驟202)。
該系統(tǒng)使用包括子網(wǎng)的深度神經(jīng)網(wǎng)絡(luò)——例如圖1的深度神經(jīng)網(wǎng)絡(luò)150來處理數(shù)據(jù),以生成替選表示(步驟204)。深度神經(jīng)網(wǎng)絡(luò)包括子網(wǎng)的序列,其從序列的最低子網(wǎng)到序列的最高子網(wǎng)來布置。該系統(tǒng)通過序列中的子網(wǎng)中國的每一個來處理數(shù)據(jù)以生成替選表示。序列中的子網(wǎng)包括多個模塊子網(wǎng),并且可選地包括一個或多個子網(wǎng),其包括一個或多個常規(guī)神經(jīng)網(wǎng)絡(luò)層——例如最大池化層、卷積層、全連接層、正則化層等。下面參照圖3描述通過模塊子網(wǎng)來處理輸入。
該系統(tǒng)通過輸出層處理替選表示以生成輸入圖像的輸出(步驟206)。一般,由系統(tǒng)生成的輸入取決于系統(tǒng)被配置來執(zhí)行的圖像處理任務(wù)。例如,如果系統(tǒng)被配置來執(zhí)行圖像分類或識別任務(wù),則由輸出層生成的輸出可以是預(yù)定的對象類別集合中的每一個的相應(yīng)分值,其中給定對象類別的分值表示輸入圖像包含屬于該對象類別的對象的圖像的可能性。
圖3是用于使用模塊子網(wǎng)來處理輸入的示例過程300的流程圖。為了方便,過程300將被描述為由位于一個或多個位置中的一個或多個計算機的系統(tǒng)執(zhí)行。例如,根據(jù)本說明書來適當?shù)鼐幊痰膱D像處理系統(tǒng)——例如圖1的圖像處理系統(tǒng)100,能夠執(zhí)行過程300。
該系統(tǒng)接收輸入(步驟302)。具體的,該輸入是在前的輸出表示,即由子網(wǎng)的序列中的在前的子網(wǎng)生成的輸出表示。
該系統(tǒng)通過直通卷積層對該在前的輸出表示進行處理,以生成直通輸入(步驟304)。在一些實施方式中,該直通卷積層是1×1卷積層。一般地,k×k卷積層是使用k×k濾波器的卷積層。也就是說,k×k表示該卷積層所連接的前一層中的區(qū)塊(patch)的大小。在這些實施方式中,該1×1直通卷積層一般被用作維度降低模塊,以降低在前的輸出表示的維度,并去除可能以其他方式限制深度神經(jīng)網(wǎng)絡(luò)的大小的計算瓶頸。在其它實施方式中,該直通卷積層能夠使用不同大小的濾波器,如3×3卷積層或5×5卷積層。
該系統(tǒng)通過一個或多個神經(jīng)網(wǎng)絡(luò)層的群組來處理在前的輸出表示(步驟306)。神經(jīng)網(wǎng)絡(luò)層的每個群組包括后面跟隨有一個或多個附加神經(jīng)網(wǎng)絡(luò)層的初始神經(jīng)網(wǎng)絡(luò)層。通過利用給定群組中的神經(jīng)網(wǎng)絡(luò)層中的每一個來處理在前的輸出表示,該系統(tǒng)利用該群組來處理在前的輸出表示,以生成該群組的群組輸出。
在一些實施方式中,該群組中的一個或多個群組包括后面跟隨有另一卷積層的一個卷積層。例如,一個群組可能包括后面跟隨有3×3卷積層的1×1卷積層。作為另一示例,另一群組可能包括后面跟隨有5×5卷積層的1×1卷積層。如上所述,該1×1卷積層能夠被用作維度降低模塊,以在在前的輸出表示被由1×1卷積層之后的其它卷積層處理之前降低其維度。無論如何,卷積層大小的其它組合也是可能的。
在一些實施方式中,所述群組中的一個或多個群組包括后面跟隨有卷積層的最大池化層。例如,該最大池層可以是后面跟隨有1×1卷積層的3×3卷積層。無論如何,最大池化層大小和卷積層大小的其它組合也是可能的。
系統(tǒng)將直通輸出與群組輸出連結(jié),以生成輸出表示(步驟308)。例如,系統(tǒng)能夠?qū)⒂芍蓖ň矸e層和所述群組生成的向量進行連結(jié)以生成單個向量,即輸出表示。然后,系統(tǒng)能夠?qū)⒃撦敵霰硎咀鳛檩斎胩峁┙o序列中的下一個子網(wǎng)絡(luò)或系統(tǒng)的輸出層。
過程200和300能夠被執(zhí)行以針對圖像生成分類數(shù)據(jù),針對該圖像的所期望分類——即系統(tǒng)針對圖像應(yīng)當生成的輸入是未知的。過程200和300也能夠在訓練圖像集合——即系統(tǒng)針對其應(yīng)當預(yù)測出的輸出是已知的圖像集合中的文檔上執(zhí)行,以便訓練深度神經(jīng)網(wǎng)絡(luò),即為該深度神經(jīng)網(wǎng)絡(luò)中的層——即模塊子網(wǎng)和其它子網(wǎng)中的層的參數(shù)確定經(jīng)訓練的值。具體的,過程200和300能夠在從訓練圖像集合中選擇的圖像上重復(fù)執(zhí)行,以作為反向傳播訓練技術(shù)的一部分,所述反向傳播訓練技術(shù)為深度神經(jīng)網(wǎng)絡(luò)的層的參數(shù)確定經(jīng)訓練的值。
在一些實施方式中,在訓練期間,隨著在深度神經(jīng)網(wǎng)絡(luò)被訓練過之后去除了一個或多個其它訓練子網(wǎng),該深度神經(jīng)網(wǎng)絡(luò)得以增強。每個其它訓練子網(wǎng)(也稱為“邊樓(side tower)”)包括:一個或多個卷積神經(jīng)網(wǎng)絡(luò)層,例如能夠包括平均池化層、全連接層、淺層(dropout layers)等中的一個或多個;以及輸出層,其被配置為生成與系統(tǒng)的輸出層相同的分類。每個其它訓練子網(wǎng)被配置為接收由深度神經(jīng)網(wǎng)絡(luò)的子網(wǎng)中的一個生成的輸出——即與已經(jīng)接收子網(wǎng)輸出的子網(wǎng)絡(luò)并行來接收,并且處理該子網(wǎng)輸出以針對訓練圖片來生成訓練子網(wǎng)輸出。該訓練子網(wǎng)輸出也被用于調(diào)整深度神經(jīng)網(wǎng)絡(luò)中的層的參數(shù)值,以作為反向傳播訓練技術(shù)的一部分。如上所述,一旦深度神經(jīng)網(wǎng)絡(luò)已被訓練,訓練子網(wǎng)就被去除。
本說明書中所描述的主題和功能操作的實施例能夠以數(shù)字電子電路、以有形體現(xiàn)的計算機軟件或固件、以計算機硬件——包括在本說明書中公開的結(jié)構(gòu)及其結(jié)構(gòu)等同物、或者它們中的一個或多個的組合來實現(xiàn)。本說明書中所描述的主題的實施例能夠被實現(xiàn)為一個或多個計算機程序,即計算機程序指令的一個或多個模塊,其被編碼在有形非暫時性程序載體上,以用于由數(shù)據(jù)處理裝置執(zhí)行或控制數(shù)據(jù)處理裝置的操作。替選地或另外地,程序指令能夠被編碼在人工生成的傳播信號上,該信號例如機器生成的電、光、或電磁信號,其被生成以對信息進行編碼以用于傳輸?shù)胶线m的接收器裝置,以用于由數(shù)據(jù)處理裝置執(zhí)行。計算機存儲介質(zhì)能夠是機器可讀存儲設(shè)備、機器可讀存儲基板、隨機或串行存取存儲器設(shè)備、或者它們中的一個或多個的組合。
術(shù)語“數(shù)據(jù)處理裝置”包含用于處理數(shù)據(jù)的各種裝置、設(shè)備、和機器,其包括例如可編程處理器、計算機、或者多個處理器或多個計算機。該裝置能夠包括專用邏輯電路,例如FPGA(現(xiàn)場可編程門陣列)或ASIC(專用集成電路)。除了硬件之外,該裝置還能夠包括創(chuàng)建用于所討論的計算機程序的執(zhí)行環(huán)境的代碼,例如構(gòu)成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng),或它們中的一個或多個的組合的代碼。
計算機程序(其也可被稱為或描述為程序、軟件、軟件應(yīng)用、模塊、軟件模塊、腳本或代碼)能夠以任何形式的編程語言編寫,包括編譯或解釋語言、或者聲明性或過程性語言,并且它能夠以任何形式部署,包括作為獨立程序或作為模塊、組件、子程序、或適合在計算環(huán)境中使用的其它單元。計算機程序可以但不必對應(yīng)于文件系統(tǒng)中的文件。程序能夠被存儲在保持其它程序或數(shù)據(jù)——如存儲在標記語言文檔中的一個或多個腳本——的文件的一部分中、專用于所討論的程序的單個文件中或多個協(xié)同文件——如存儲一個或多個模塊、子程序、或代碼部分的文件中。計算機程序能夠被部署來在一個計算機或在位于一個站點或跨多個地點分布并通過通信網(wǎng)絡(luò)互連的多個站點執(zhí)行。
本說明書中描述的過程和邏輯流程能夠由一個或多個可編程計算機來執(zhí)行,所述計算機執(zhí)行一個或多個計算機程序以通過對輸入數(shù)據(jù)進行操作并生成輸出來執(zhí)行功能。過程和邏輯流程也能夠由專用邏輯電路——例如FPGA(現(xiàn)場可編程門陣列)或ASIC(專用集成電路)執(zhí)行,并且裝置也能夠被實現(xiàn)為專用邏輯電路。
適合于執(zhí)行計算機程序的計算機包括:例如能夠基于通用或?qū)S梦⑻幚砥骰蜻@兩者,或者任何其它種類的中央處理單元。一般地,中央處理單元將從只讀存儲器或隨機存取存儲器或這兩者接收指令和數(shù)據(jù)。計算機的必要元件是用于實施或執(zhí)行指令的中央處理單元以及用于存儲指令和數(shù)據(jù)的一個或多個存儲器設(shè)備。一般地,計算機還將包括用于存儲數(shù)據(jù)的一個或多個大容量存儲設(shè)備——例如磁盤、磁光盤、或光盤,或者可操作地耦合以從其接收數(shù)據(jù)或向其傳輸數(shù)據(jù),或者這兩者。然而,計算機不需要具有這樣的設(shè)備。此外,計算機能夠被嵌入另一設(shè)備中,例如移動電話、個人數(shù)字助理(PDA)、移動音頻或視頻播放器、游戲控制臺、全球定位系統(tǒng)(GPS)接收器、或便攜式存儲設(shè)備——例如通用串行總線(USB)閃存驅(qū)動器,僅舉數(shù)例。
適合于存儲計算機程序指令和數(shù)據(jù)的計算機可讀介質(zhì)包括:所有形式的非易失性存儲器、介質(zhì)及存儲器設(shè)備,包括例如半導體存儲器設(shè)備——例如EPROM、EEPROM和閃存設(shè)備;磁盤——例如內(nèi)部硬盤或可移動磁盤;磁光盤;以及CD ROM和DVD-ROM盤。處理器和存儲器能夠由專用邏輯電路補充或并入其中。
為了提供與用戶的交互,本說明書所描述主題的實施例能夠在具有顯示設(shè)備、鍵盤及指示設(shè)備的計算機上實現(xiàn),所述顯示設(shè)備如CRT(陰極射線管)或LCD(液晶顯示器)監(jiān)視器,其用于向用戶提供顯示信息,所述指示設(shè)備例如鼠標或軌跡球,用戶通過其能夠提供輸入給計算機。其它種類的設(shè)備也能夠被用于提供與用戶的交互;例如,提供給用戶的反饋能夠是任何形式的感官反饋——例如視覺反饋、聽覺反饋、或觸覺反饋;并且來自用戶的輸入能夠以任何形式被接收,包括聲音、語音、或觸覺輸入。此外,計算機能夠通過以下方式與用戶進行交互:向用戶所使用的設(shè)備發(fā)送文檔以及從用戶所使用的設(shè)備接收文檔,例如通過響應(yīng)于從用戶的客戶端設(shè)備上的web瀏覽器接收的請求,將網(wǎng)頁發(fā)送到該web瀏覽器。
本說明書所描述主題的實施例能夠在計算系統(tǒng)中實現(xiàn),該系統(tǒng)包括后端組件——如數(shù)據(jù)服務(wù)器,或包括中間件組件——如應(yīng)用服務(wù)器,或包括前端組件——如具有圖形用戶界面或Web瀏覽器的客戶端計算機——通過該Web瀏覽器用戶能夠與本說明書所描述主題的實施方式進行交互,或者包括一個或多個這樣的后端、中間件、或前端組件的任何組合。該系統(tǒng)的組件能夠通過例如通信網(wǎng)絡(luò)的任何形式或介質(zhì)的數(shù)字數(shù)據(jù)通信來進行互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)和廣域網(wǎng)(“WAN”),如互聯(lián)網(wǎng)。
計算機系統(tǒng)能夠包括客戶端和服務(wù)器。客戶端和服務(wù)器一般彼此處于遠程并且通常通過通信網(wǎng)絡(luò)進行交互。客戶端和服務(wù)器的關(guān)系依靠在相應(yīng)計算機上運行并且彼此具有客戶端-服務(wù)器關(guān)系的計算機程序而產(chǎn)生。
雖然本說明書包含許多具體實施方式細節(jié),但是這些不應(yīng)被解釋為對任何發(fā)明或要求保護的范圍的限制,應(yīng)當被解釋為可以是特定發(fā)明的特定實施例所特有的特征的描述。本說明書中在單獨實施例的場境中所描述的某些特征也能夠在單個實施例中以組合的方式來實現(xiàn)。相反,在單個實施例的場境中描述的各個特征也能夠在多個實施例中單獨地或以任何合適的子組合實現(xiàn)。此外,盡管可能將特征描述為在某些組合中起作用并且甚至最初如此要求保護,但是在一些情況下來自所要求保護的組合的一個或多個特征能夠從組合中被刪去,并且所要求保護的組合可以涉及子組合或子組合的變型。
類似地,雖然在附圖中以特定順序描繪了操作,但是這不應(yīng)被理解為要求這樣的操作以所示的特定順序或連續(xù)順序執(zhí)行,或者需要執(zhí)行所有圖示的操作才能達到期望的結(jié)果。在某些情況下,多任務(wù)和并行處理可能是有利的。此外,上述的實施例中的各個系統(tǒng)模塊和組件的分離不應(yīng)被理解為在所有實施例中都需要這樣的分離,并且應(yīng)當理解,所描述的程序組件和系統(tǒng)通常能夠一起集成在單個軟件產(chǎn)品中或者封裝到多個軟件產(chǎn)品中。
已經(jīng)描述了本主題的特定實施例。其它實施例落入所附權(quán)利要求書的范圍內(nèi)。例如,權(quán)利要求中所記載的操作能夠以不同的順序執(zhí)行并且仍然達到期望的結(jié)果。作為一個示例,附圖中描繪的過程不一定需要所示的特定順序或連續(xù)順序來達到期望的結(jié)果。在某些實施方式中,多任務(wù)和并行處理可能是有利的。