亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于神經(jīng)網(wǎng)絡(luò)的計算方法及裝置與流程

文檔序號:11063738閱讀:326來源:國知局
基于神經(jīng)網(wǎng)絡(luò)的計算方法及裝置與制造工藝

本發(fā)明涉及圖像處理領(lǐng)域,更具體地涉及一種基于神經(jīng)網(wǎng)絡(luò)的計算方法及裝置。



背景技術(shù):

神經(jīng)網(wǎng)絡(luò)(Neural Networks,NNs)也稱為人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANNs)或連接模型(Connection Model),是一種模仿動物神經(jīng)網(wǎng)絡(luò)行為特征,進行分布式并行信息處理的算法數(shù)學模型。神經(jīng)網(wǎng)絡(luò)依靠系統(tǒng)的復雜程度,通過調(diào)整內(nèi)部大量計算節(jié)點之間相互連接的關(guān)系,從而達到處理信息的目的。

神經(jīng)網(wǎng)絡(luò)在語音識別、文字識別、以及圖像視頻識別等許多領(lǐng)域中已經(jīng)有了廣泛而成功的應(yīng)用。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)采用雙精度或單精度浮點數(shù)乘/加計算作為基本計算單元,然而,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)的算法架構(gòu)會導致大計算量需求、高內(nèi)存(或顯存)占用、以及高帶寬要求等問題,對硬件的要求較高。



技術(shù)實現(xiàn)要素:

考慮到上述問題而提出了本發(fā)明。本發(fā)明提供了一種基于神經(jīng)網(wǎng)絡(luò)的計算方法,對硬件的要求較低。

根據(jù)本發(fā)明的第一方面,提供了一種基于神經(jīng)網(wǎng)絡(luò)的計算方法,包括:

接收原始圖像;

提取所述原始圖像的特征張量;

基于訓練好的定點神經(jīng)網(wǎng)絡(luò)對所述特征張量進行處理,以產(chǎn)生圖像熱力圖。

示例性地,所述訓練好的定點神經(jīng)網(wǎng)絡(luò)通過如下方法訓練得到:

對初始神經(jīng)網(wǎng)絡(luò)進行至少一次浮點訓練,并將所述浮點訓練之后的神經(jīng)網(wǎng)絡(luò)的參數(shù)定點化;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)不滿足訓練指標,則將所述初始神經(jīng)網(wǎng)絡(luò)替換為所述定點化后的神經(jīng)網(wǎng)絡(luò)并重復執(zhí)行上述步驟;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)滿足所述訓練指標,則將所述定點化后的神經(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é)點執(zhí)行以下操作:

對輸入數(shù)據(jù)進行卷積操作;

將所述卷積操作的卷積輸出二值化。

示例性地,所述將所述卷積操作的卷積輸出二值化,包括:

使用非線性函數(shù)將所述卷積輸出映射為[-0.5,0.5]閉區(qū)間之內(nèi)的數(shù);

對所述映射后的數(shù)進行舍入操作,以實現(xiàn)中間表示的二值化。

示例性地,所述對所述映射后的數(shù)進行舍入操作包括:

使用公式Y(jié)=floor(y+1)-0.5對所述映射后的數(shù)進行舍入操作,

其中,y表示所述映射后的數(shù),Y表示二值化后的中間表示,floor表示向下取整。

示例性地,所述對輸入數(shù)據(jù)進行卷積操作,包括:

通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作,

其中,xor為按位異或操作,bitcount計算一個二值串中1的個數(shù)并返回,M為二值卷積的結(jié)果,W為權(quán)重矩陣,A為激活量輸入。

示例性地,所述訓練指標為測試集的測試函數(shù)最小化。

示例性地,所述方法由位于攝像頭內(nèi)的包括FPGA的SoC實現(xiàn)。

根據(jù)本發(fā)明的第二方面,提供了一種基于神經(jīng)網(wǎng)絡(luò)的計算裝置,包括:

接收模塊,用于接收原始圖像;

特征提取模塊,用于提取所述原始圖像的特征張量;

熱力圖產(chǎn)生模塊,用于基于已經(jīng)訓練好的定點神經(jīng)網(wǎng)絡(luò)對所述特征張量進行處理,以產(chǎn)生圖像熱力圖。

示例性地,還包括訓練模塊,用于:

對初始神經(jīng)網(wǎng)絡(luò)進行至少一次浮點訓練,并將所述浮點訓練之后的神經(jīng)網(wǎng)絡(luò)的參數(shù)定點化;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)不滿足訓練指標,則將所述初始神經(jīng)網(wǎng)絡(luò)替換為所述定點化后的神經(jīng)網(wǎng)絡(luò)并重復執(zhí)行上述步驟;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)滿足所述訓練指標,則將所述定點化后的神經(jīng)網(wǎng)絡(luò)作為所述訓練好的定點神經(jīng)網(wǎng)絡(luò)。

示例性地,所述訓練好的定點神經(jīng)網(wǎng)絡(luò)為二值神經(jīng)網(wǎng)絡(luò),所述熱力圖產(chǎn)生模塊包括卷積操作子模塊和二值化子模塊,

對于所述二值神經(jīng)網(wǎng)絡(luò)中的每一個計算節(jié)點:

所述卷積操作子模塊,用于對輸入數(shù)據(jù)進行卷積操作;

所述二值化子模塊,用于將所述卷積操作的卷積輸出二值化。

示例性地,所述二值化子模塊包括映射子單元和舍入子單元:

所述映射子單元,用于使用非線性函數(shù)將所述卷積輸出映射為[-0.5,0.5]閉區(qū)間之內(nèi)的數(shù);

所述舍入子單元,用于對所述映射后的數(shù)進行舍入操作,以實現(xiàn)中間表示的二值化。

示例性地,所述舍入子單元,具體用于:

使用公式Y(jié)=floor(y+1)-0.5對所述映射后的數(shù)進行舍入操作,

其中,y表示所述映射后的數(shù),Y表示二值化后的中間表示,floor表示向下取整。

示例性地,所述卷積操作子模塊,具體用于:

通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作,

其中,xor為按位異或操作,bitcount計算一個二值串中1的個數(shù)并返回,M為二值卷積的結(jié)果,W為權(quán)重矩陣,A為激活量輸入。

示例性地,所述訓練指標為測試集的測試函數(shù)最小化。

示例性地,所述裝置為位于攝像頭內(nèi)的包括FPGA的SoC。

第二方面所述的該裝置能夠用于實現(xiàn)前述第一方面的基于神經(jīng)網(wǎng)絡(luò)的計算方法。

根據(jù)本發(fā)明的第三方面,提供了一種計算機芯片,該計算機芯片包括處理器和存儲器。所述存儲器存儲有指令代碼,所述處理器用于執(zhí)行所述指令代碼,且當所述處理器執(zhí)行指令代碼時,能夠?qū)崿F(xiàn)前述第一方面所述的基于神經(jīng)網(wǎng)絡(luò)的計算方法。

本發(fā)明實施例的采用定點化方法實現(xiàn)神經(jīng)網(wǎng)絡(luò)的計算的方法,由于采用了定點計算,計算量小,占用資源少,從而對硬件的要求較低,可以在FPGA上運行。

附圖說明

通過結(jié)合附圖對本發(fā)明實施例進行更詳細的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。附圖用來提供對本發(fā)明實施例的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中,相同的參考標號通常代表相同部件或步驟。

圖1是本發(fā)明實施例的電子設(shè)備的一個示意性框圖;

圖2是本發(fā)明實施例的基于神經(jīng)網(wǎng)絡(luò)的計算方法的一個示意性流程圖;

圖3是本發(fā)明實施例的得到訓練好的神經(jīng)網(wǎng)絡(luò)的方法的一個示意性流程圖;

圖4是本發(fā)明實施例的FPGA與其他裝置的連接關(guān)系的一個示意圖;

圖5是本發(fā)明實施例的基于神經(jīng)網(wǎng)絡(luò)的計算裝置的一個示意性框圖;

圖6是本發(fā)明實施例的基于神經(jīng)網(wǎng)絡(luò)的計算裝置的另一個示意性框圖。

具體實施方式

為了使得本發(fā)明的目的、技術(shù)方案和優(yōu)點更為明顯,下面將參照附圖詳細描述根據(jù)本發(fā)明的示例實施例。顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是本發(fā)明的全部實施例,應(yīng)理解,本發(fā)明不受這里描述的示例實施例的限制?;诒景l(fā)明中描述的本發(fā)明實施例,本領(lǐng)域技術(shù)人員在沒有付出創(chuàng)造性勞動的情況下所得到的所有其它實施例都應(yīng)落入本發(fā)明的保護范圍之內(nèi)。

傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)的一般算法架構(gòu)如下:(1)將輸入圖片提取成張量的形式,傳入已經(jīng)訓練好的浮點計算神經(jīng)網(wǎng)絡(luò)。(2)浮點計算神經(jīng)網(wǎng)絡(luò)中的每一個計算節(jié)點,通過以浮點乘加為基礎(chǔ)單元的卷積操作,并將浮點計算結(jié)果傳送至下一層計算節(jié)點。(3)經(jīng)過多層的計算節(jié)點運算后,最終神經(jīng)網(wǎng)絡(luò)的輸出層產(chǎn)生圖像分割熱力圖(heatmap),然后在其基礎(chǔ)上對原圖進行相關(guān)標注。然而,這樣的架構(gòu)往往導致大計算量需求、高內(nèi)存(或顯存)占用、以及高帶寬要求等問題,從而對硬件的要求較高。由于現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)平臺的計算、存儲能力和帶寬都非常有限,因此傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)很難在FPGA平臺上運行。

本發(fā)明實施例提出了一種采用定點化方法實現(xiàn)神經(jīng)網(wǎng)絡(luò)的計算的方法,由于采用了定點計算,計算量小,占用資源少,從而對硬件的要求較低,可以在攝像頭內(nèi)的包括FPGA的片上系統(tǒng)(system-on-a-chip,SoC)上運行。

本發(fā)明實施例可以應(yīng)用于電子設(shè)備,圖1所示為本發(fā)明實施例的電子設(shè)備的一個示意性框圖。圖1所示的電子設(shè)備10包括一個或多個處理器102、一個或多個存儲裝置104、輸入裝置106、輸出裝置108、圖像傳感器110以及一個或多個非圖像傳感器114,這些組件通過總線系統(tǒng)112和/或其它形式互連。應(yīng)當注意,圖1所示的電子設(shè)備10的組件和結(jié)構(gòu)只是示例性的,而非限制性的,根據(jù)需要,所述電子設(shè)備也可以具有其他組件和結(jié)構(gòu)。

所述處理器102可以包括中央處理單元(Central Processing Unit,CPU)1021和/或圖像處理單元(Graphics Processing Unit,GPU)1022,或者包括具有數(shù)據(jù)處理能力和/或指令執(zhí)行能力的其它形式的處理單元,并且可以控制所述電子設(shè)備10中的其它組件以執(zhí)行期望的功能。

所述存儲裝置104可以包括一個或多個計算機程序產(chǎn)品,所述計算機程序產(chǎn)品可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器1041和/或非易失性存儲器1042。所述易失性存儲器1041例如可以包括隨機存取存儲器(Random Access Memory,RAM)和/或高速緩沖存儲器(cache)等。所述非易失性存儲器1042例如可以包括只讀存儲器(Read-Only Memory,ROM)、硬盤、閃存等。在所述計算機可讀存儲介質(zhì)上可以存儲一個或多個計算機程序指令,處理器102可以運行所述程序指令,以實現(xiàn)各種期望的功能。在所述計算機可讀存儲介質(zhì)中還可以存儲各種應(yīng)用程序和各種數(shù)據(jù),例如所述應(yīng)用程序使用和/或產(chǎn)生的各種數(shù)據(jù)等。

所述輸入裝置106可以是用戶用來輸入指令的裝置,并且可以包括鍵盤、鼠標、麥克風和觸摸屏等中的一個或多個。

所述輸出裝置108可以向外部(例如用戶)輸出各種信息(例如圖像或聲音),并且可以包括顯示器、揚聲器等中的一個或多個。

所述圖像傳感器110可以拍攝用戶期望的圖像(例如照片、視頻等),并且將所拍攝的圖像存儲在所述存儲裝置104中以供其它組件使用。

當注意,圖1所示的電子設(shè)備10的組件和結(jié)構(gòu)只是示例性的,盡管圖1示出的電子設(shè)備20包括多個不同的裝置,但是根據(jù)需要,其中的一些裝置可以不是必須的,其中的一些裝置的數(shù)量可以更多等等,本發(fā)明對此不限定。

圖2是本發(fā)明實施例的基于神經(jīng)網(wǎng)絡(luò)的計算方法的一個示意性流程圖,圖2所示的方法包括:

S101,接收原始圖像。

具體地,可以接收由攝像頭所采集的原始圖像。示例性地,該原始圖像也可以稱為輸入圖像。

S102,提取所述原始圖像的特征張量。

具體地,可以將原始圖像提取成張量的形式從而得到原始圖像的特征張量。

S103,基于訓練好的定點神經(jīng)網(wǎng)絡(luò)對所述特征張量進行處理,以產(chǎn)生圖像熱力圖。

示例性地,在S103中,訓練好的定點神經(jīng)網(wǎng)絡(luò)中的每一個計算節(jié)點執(zhí)行:(a)對輸入數(shù)據(jù)進行卷積操作;(b)將所述卷積操作的卷積輸出定點化。其中,在(a)中進行的卷積操作可以為一次或多次,本發(fā)明對此不限定。

示例性地,訓練好的定點神經(jīng)網(wǎng)絡(luò)可以為二值神經(jīng)網(wǎng)絡(luò)。

那么,在S103中,二值神經(jīng)網(wǎng)絡(luò)中的每一個計算節(jié)點執(zhí)行以下操作:(a1)對輸入數(shù)據(jù)進行卷積操作;(b1)將所述卷積操作的卷積輸出二值化。其中,在(a1)中進行的卷積操作可以為一次或多次,本發(fā)明對此不限定。

由于卷積可以被視為權(quán)重矩陣W的乘法,因此可以采用bitcount函數(shù)用位運算進行矩陣乘中最耗時的內(nèi)積操作。也就是說,上述(a1)可以包括通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作。

示例性地,上述(a1)可以包括二值卷積操作,所述二值卷積操作通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作。

其中,bitcount函數(shù)用于計算一個二值串中1的個數(shù)并返回。xor表示異或操作,即xor為按位異或操作。M為二值卷積的結(jié)果,W為權(quán)重矩陣,A為激活量(activation)輸入??梢?,該公式M=bitcount(W xor A)與內(nèi)積等價。

示例性地,上述(b1)可以包括:使用非線性函數(shù)將所述卷積輸出映射為[-0.5,0.5]閉區(qū)間之內(nèi)的數(shù);對所述映射后的數(shù)進行舍入操作,以實現(xiàn)中間表示的二值化。

非線性函數(shù)可以為y=Tanh(x)×0.5。其中,x表示卷積輸出,y表示映射后的數(shù)??衫斫?,非線性函數(shù)也可以為其他的函數(shù)形式,本發(fā)明對此不限定。

示例性地,所述對所述映射后的數(shù)進行舍入操作可以包括:使用公式Y(jié)=floor(y+1)-0.5對所述映射后的數(shù)進行舍入操作。其中,y表示所述映射后的數(shù),Y表示二值化后的中間表示,floor表示向下取整函數(shù)。floor有時候也寫做Floor,其功能是“向下取整”,或者說“向下舍入”,floor(y)表示取不大于y的最大整數(shù)。

應(yīng)理解,本發(fā)明實施例中,小寫字母表示的x和y一般為浮點數(shù),大寫字母表示的Y為定點數(shù),具體地,Y=0或1。

由此可見,上述的(a1)操作可以通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作;上述的(b1)操作可以使用非線性函數(shù)將卷積輸出映射為[-0.5,0.5]閉區(qū)間之內(nèi)的數(shù)并對映射后的數(shù)進行舍入操作。

在二值神經(jīng)網(wǎng)絡(luò)中,參數(shù)僅取值0或1,且中間表示也僅取值0或1。二值網(wǎng)絡(luò)是對原有網(wǎng)絡(luò)的近似,其所有操作在計算機中可快速實現(xiàn),從而能減少所占用的存儲空間,降低對計算資源的需求。

示例性地,S103中的訓練好的定點神經(jīng)網(wǎng)絡(luò)可以是通過如下方法訓練得到的:

對初始神經(jīng)網(wǎng)絡(luò)進行至少一次浮點訓練,并將所述浮點訓練之后的神經(jīng)網(wǎng)絡(luò)的參數(shù)定點化;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)不滿足訓練指標,則將所述初始神經(jīng)網(wǎng)絡(luò)替換為所述定點化后的神經(jīng)網(wǎng)絡(luò)并重復執(zhí)行上述步驟;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)滿足所述訓練指標,則將所述定點化后的神經(jīng)網(wǎng)絡(luò)作為所述訓練好的定點神經(jīng)網(wǎng)絡(luò)。

在本發(fā)明各實施例中,神經(jīng)網(wǎng)絡(luò)的參數(shù)可以包括權(quán)重W、定點化判定閾值、卷積結(jié)果的偏移量等參數(shù),具體根據(jù)實際情況確定,在此并不進行限定。

具體地,該過程可以如圖3所示,包括:

S201,對初始神經(jīng)網(wǎng)絡(luò)進行至少一次浮點訓練。

S202,將所述浮點訓練之后的神經(jīng)網(wǎng)絡(luò)的參數(shù)定點化。

S203,判斷所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)是否滿足訓練指標。

如果S203判斷的結(jié)果為是,則執(zhí)行S205;如果S203判斷的結(jié)果為否,則執(zhí)行S204。

S204,將初始神經(jīng)網(wǎng)絡(luò)替換為定點化后的神經(jīng)網(wǎng)絡(luò)。

具體地,在S204中,將S202得到的定點化后的神經(jīng)網(wǎng)絡(luò)作為S201中的初始神經(jīng)網(wǎng)絡(luò),然后重復執(zhí)行S201和S202。

S205,將所述定點化后的神經(jīng)網(wǎng)絡(luò)作為所述訓練好的定點神經(jīng)網(wǎng)絡(luò)。

這樣,通過如圖3所示的訓練過程,便可以得到訓練好的定點神經(jīng)網(wǎng)絡(luò)。

示例性地,其中的訓練指標為測試集的測試函數(shù)最小化。

本發(fā)明實施例中,浮點訓練的過程可以參見普通神經(jīng)網(wǎng)絡(luò)的訓練過程,即本發(fā)明實施例中的浮點訓練過程與普通神經(jīng)網(wǎng)絡(luò)的訓練過程類似。具體地,可以在測試集的基礎(chǔ)上構(gòu)建訓練集,基于lost函數(shù),通過最速梯度方法或共軛梯度方法等,確定使得測試集最小化的神經(jīng)網(wǎng)絡(luò)參數(shù)。

作為一個實施例,訓練好的定點神經(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ò)的參數(shù)二值化;

如果所述二值化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)不滿足訓練指標,則將所述初始神經(jīng)網(wǎng)絡(luò)替換為所述二值化后的神經(jīng)網(wǎng)絡(luò)并重復執(zhí)行上述步驟;

如果所述二值化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)滿足所述訓練指標,則將所述二值化后的神經(jīng)網(wǎng)絡(luò)作為所述訓練好的二值神經(jīng)網(wǎng)絡(luò)。

也就是說,在對二值神經(jīng)網(wǎng)絡(luò)訓練過程中,可以包括:在經(jīng)過一輪訓練之后,將訓練之后的參數(shù)進行二值化,然后再進行下一輪訓練。其中一輪訓練包括至少一次浮點訓練。這樣,可以將訓練過程的中間結(jié)果實現(xiàn)二值化,從而能夠減小所占用的存儲空間。

示例性地,訓練過程中可以使用獨熱編碼(one-hot encoding)的真實值。例如訓練任務(wù)為5分類,若某一個像素屬于第四類,則可將該像素的分類在五個頻道(channel)上表示為00010。

另外,可以將有K個值的目標熱力圖拆分為K個二值的熱力圖。其中,K個值的目標熱力圖是預先進行人工標識的熱力圖,且人工標注的K個值可以為浮點數(shù)。

示例性地,可以使用非線性函數(shù)將上一層卷積層的輸出映射為[-0.5,0.5]閉區(qū)間之內(nèi)的數(shù);對所述映射后的數(shù)進行舍入操作,以實現(xiàn)中間表示的二值化。

非線性函數(shù)可以為y=Tanh(x)×0.5。其中,x表示上一層卷積層的輸出,y表示映射后的數(shù)。可理解,非線性函數(shù)也可以為其他的函數(shù)形式,本發(fā)明對此不限定。

所述對所述映射后的數(shù)進行舍入操作可以包括:使用公式Y(jié)=floor(y+1)-0.5對所述映射后的數(shù)進行舍入操作。其中,y表示所述映射后的數(shù),Y表示二值化后的中間表示,floor表示向下取整。

由于卷積可以被視為矩陣W的乘法,因此可以采用bitcount函數(shù)用位運算進行矩陣乘中最耗時的內(nèi)積操作。示例性地,可以通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作。其中,xor為按位異或操作,bitcount計算一個二值串中1的個數(shù)并返回,M為二值卷積的結(jié)果,W為權(quán)重矩陣,A為激活量輸入。

可理解,圖3所示的訓練的方法可以是在S101之前執(zhí)行的。另外,可選地,在S103之后,還可以包括:利用所述圖像熱力圖對所述原始圖像進行標注。舉例來說,可以對所述原始圖像進行二值標注。例如,可以根據(jù)S103得到的圖像熱力圖,將原始圖像中的活體區(qū)域顯示為1,其他非活體區(qū)域顯示為0。

相比于之前最耗時的32位浮點卷積操作,本發(fā)明實施例的方法只在二值中間表示和二值參數(shù)間進行,理論上來講,本發(fā)明實施例的方法可以獲得32倍運算速度的提升,并能節(jié)省32倍的中間表示的存儲空間。

示例性地,本發(fā)明實施例的方法可以由位于攝像頭內(nèi)的包括FPGA的片上系統(tǒng)(System-on-a-chip,SoC)實現(xiàn)。具體地,本發(fā)明實施例的采用定點化方法實現(xiàn)神經(jīng)網(wǎng)絡(luò)的計算的方法,由于采用了二值計算,計算量小,占用資源少,從而對硬件的要求較低,因此可以在FPGA上運行。攝像頭所采集的信息可以直接輸入到FPGA而非CPU,將二值神經(jīng)網(wǎng)絡(luò)運行在該FPGA上,由FPGA與CPU進行交互,這樣可以提升圖像處理速度。與直接用CPU處理圖像相比,性能有數(shù)倍的提升。

如圖4所示,F(xiàn)PGA可以從攝像頭獲取輸入圖像,并基于二值神經(jīng)網(wǎng)絡(luò)對該輸入圖像進行處理。之后,F(xiàn)PGA可以將處理結(jié)果進行輸出,或者可以將處理結(jié)果存儲在雙倍速率同步動態(tài)隨機存儲器(Double Data Rate,DDR)中,或者可以與CPU進行通信。

本發(fā)明實施例中,由于可以將中間結(jié)果實現(xiàn)二值化,因此占用較小的存儲空間,可以允許FPGA與DDR或者FPGA與CPU間的高速通信。

圖5是本發(fā)明實施例的基于神經(jīng)網(wǎng)絡(luò)的計算裝置的一個示意性框圖。圖5所示的裝置50包括接收模塊501、特征提取模塊502和熱力圖產(chǎn)生模塊503。

接收模塊501,用于接收原始圖像;

特征提取模塊502,用于提取所述原始圖像的特征張量;

熱力圖產(chǎn)生模塊503,用于基于已經(jīng)訓練好的定點神經(jīng)網(wǎng)絡(luò)對所述特征張量進行處理,以產(chǎn)生圖像熱力圖。

示例性地,如圖6所示,還包括訓練模塊504,用于:

對初始神經(jīng)網(wǎng)絡(luò)進行至少一次浮點訓練,并將所述浮點訓練之后的神經(jīng)網(wǎng)絡(luò)的參數(shù)定點化;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)不滿足訓練指標,則將所述初始神經(jīng)網(wǎng)絡(luò)替換為所述定點化后的神經(jīng)網(wǎng)絡(luò)并重復執(zhí)行上述步驟;

如果所述定點化后的神經(jīng)網(wǎng)絡(luò)的參數(shù)滿足所述訓練指標,則將所述定點化后的神經(jīng)網(wǎng)絡(luò)作為所述訓練好的定點神經(jīng)網(wǎng)絡(luò)。

示例性地,所述訓練好的定點神經(jīng)網(wǎng)絡(luò)為二值神經(jīng)網(wǎng)絡(luò)。如圖6所示,所述熱力圖產(chǎn)生模塊503包括卷積操作子模塊5031和二值化子模塊5032,

對于所述二值神經(jīng)網(wǎng)絡(luò)中的每一個計算節(jié)點:

所述卷積操作子模塊5031,用于對輸入數(shù)據(jù)進行卷積操作;

所述二值化子模塊5032,用于將所述卷積操作的卷積輸出二值化。

示例性地,所述二值化子模塊5032包括映射子單元和舍入子單元。所述映射子單元,用于使用非線性函數(shù)將所述卷積輸出映射為[-0.5,0.5]閉區(qū)間之內(nèi)的數(shù)。所述舍入子單元,用于對所述映射后的數(shù)進行舍入操作,以實現(xiàn)中間表示的二值化。

示例性地,所述舍入子單元,具體用于:使用公式Y(jié)=floor(y+1)-0.5對所述映射后的數(shù)進行舍入操作。其中,y表示所述映射后的數(shù),Y表示二值化后的中間表示,floor表示向下取整。

示例性地,所述卷積操作子模塊5031,具體用于:通過公式M=bitcount(W xor A)實現(xiàn)矩陣W與矩陣A之間的內(nèi)積操作。其中,xor為按位異或操作,bitcount計算一個二值串中1的個數(shù)并返回,M為二值卷積的結(jié)果,W為權(quán)重矩陣,A為激活量輸入。

示例性地,所述訓練指標為測試集的測試函數(shù)最小化。

示例性地,所述裝置為位于攝像頭內(nèi)的包括FPGA的SoC。

圖5和圖6所示的裝置50能夠用于實現(xiàn)前述圖2和圖3所示的基于神經(jīng)網(wǎng)絡(luò)的計算方法。

另外,本發(fā)明實施例還提供了另一種基于神經(jīng)網(wǎng)絡(luò)的計算裝置,該裝置可以包括處理器和存儲器,其中,存儲器用于存儲指令代碼,處理器執(zhí)行該指令代碼時,可以實現(xiàn)前述圖2和圖3所示的基于神經(jīng)網(wǎng)絡(luò)的計算方法。

另外,本發(fā)明實施例還提供了一種電子設(shè)備,該電子設(shè)備可以包括圖5或圖6所示的裝置50。

本發(fā)明實施例的采用定點化方法實現(xiàn)神經(jīng)網(wǎng)絡(luò)的計算的方法,由于采用了定點計算,計算量小,占用資源少,從而對硬件的要求較低,可以在FPGA上運行。

盡管這里已經(jīng)參考附圖描述了示例實施例,應(yīng)理解上述示例實施例僅僅是示例性的,并且不意圖將本發(fā)明的范圍限制于此。本領(lǐng)域普通技術(shù)人員可以在其中進行各種改變和修改,而不偏離本發(fā)明的范圍和精神。所有這些改變和修改意在被包括在所附權(quán)利要求所要求的本發(fā)明的范圍之內(nèi)。

本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個設(shè)備,或一些特征可以忽略,或不執(zhí)行。

在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。

類似地,應(yīng)當理解,為了精簡本發(fā)明并幫助理解各個發(fā)明方面中的一個或多個,在對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該本發(fā)明的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如相應(yīng)的權(quán)利要求書所反映的那樣,其發(fā)明點在于可以用少于某個公開的單個實施例的所有特征的特征來解決相應(yīng)的技術(shù)問題。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。

本領(lǐng)域的技術(shù)人員可以理解,除了特征之間相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。

本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的物品分析設(shè)備中的一些模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。

應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

以上所述,僅為本發(fā)明的具體實施方式或?qū)唧w實施方式的說明,本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1