基於神經網絡的計算方法及裝置與流程
2023-06-13 20:29:01

本發明涉及圖像處理領域,更具體地涉及一種基於神經網絡的計算方法及裝置。
背景技術:
神經網絡(Neural Networks,NNs)也稱為人工神經網絡(Artificial Neural Networks,ANNs)或連接模型(Connection Model),是一種模仿動物神經網絡行為特徵,進行分布式並行信息處理的算法數學模型。神經網絡依靠系統的複雜程度,通過調整內部大量計算節點之間相互連接的關係,從而達到處理信息的目的。
神經網絡在語音識別、文字識別、以及圖像視頻識別等許多領域中已經有了廣泛而成功的應用。傳統的神經網絡採用雙精度或單精度浮點數乘/加計算作為基本計算單元,然而,傳統的神經網絡的算法架構會導致大計算量需求、高內存(或顯存)佔用、以及高帶寬要求等問題,不僅對硬體的要求較高,還會造成成本的增加。
技術實現要素:
考慮到上述問題而提出了本發明。本發明提供了一種基於神經網絡的計算方法,該方法對硬體的要求較低,從而能夠節約成本。
根據本發明的第一方面,提供了一種基於神經網絡的計算方法,包括:
獲取張量形式的原始圖像;
對所述張量形式的原始圖像進行定點計算;
基於所述定點計算的輸出數據,產生圖像熱力圖;以及
基於所述圖像熱力圖對所述原始圖像進行標註。
示例性地,所述對所述張量形式的原始圖像進行定點計算,包括:
所述神經網絡中的每一個計算節點執行以下操作:
對輸入數據進行卷積操作;
對所述卷積操作的卷積輸出進行線性計算;
對所述線性計算的結果進行低位寬定點化;
其中,所述神經網絡中的第一個計算節點的輸入數據為所述張量形式的原始圖像,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的低位寬定點化的結果。
示例性地,所述線性計算為浮點線性計算。
示例性地,所述浮點線性計算表示為:y=k×X+b,
其中,X為定點數,k、b和y為浮點數,X表示所述卷積輸出,y表示所述浮點線性計算的結果,k和b為預先訓練好的浮點參數。
示例性地,所述對所述線性計算的結果進行低位寬定點化,包括:
根據所述浮點線性計算的結果與第一定點判決閾值之間的大小關係,確定所述低位寬定點化的結果,
其中,所述第一定點判決閾值為預先訓練好的浮點參數,且所述第一定點判決閾值大於0。
示例性地,所述線性計算為定點線性計算。
示例性地,所述定點線性計算表示為:Y』=X』+B,
其中,X』=N×X,X、X』、Y』、B和N均為定點數,N為預設的正整數,X表示所述卷積輸出,Y』表示所述定點線性計算的結果,B表示定點位移參數。
示例性地,所述對所述線性計算的結果進行低位寬定點化,包括:
根據所述定點線性計算的結果與第二定點判決閾值之間的大小關係,確定所述低位寬定點化的結果。
示例性地,在所述對所述卷積操作的卷積輸出進行線性計算之前,還包括:
根據預先訓練好的浮點參數,確定所述定點位移參數和所述第二定點判決閾值。
示例性地,所述對輸入數據進行卷積操作,包括:
對所述輸入數據進行以低位寬定點乘加為基礎單元的卷積操作。
示例性地,所述定點計算的輸出數據為所述神經網絡中的最後一個計算節點進行定點計算所得到的低位寬定點化的結果。
根據本發明的第二方面,提供了一種基於神經網絡的計算裝置,包括:
獲取模塊,用於獲取張量形式的原始圖像;
計算模塊,用於對所述張量形式的原始圖像進行定點計算;
熱力圖產生模塊,用於基於所述定點計算的輸出數據,產生圖像熱力圖;以及
圖像標註模塊,用於基於所述圖像熱力圖對所述原始圖像進行標註。
示例性地,所述計算模塊包括卷積子模塊,線性計算子模塊和定點化模塊,
針對所述神經網絡中的每一個計算節點:
所述卷積子模塊,用於對輸入數據進行卷積操作;
所述線性計算子模塊,用於對所述卷積操作的卷積輸出進行線性計算;
所述定點化模塊,用於對所述線性計算的結果進行低位寬定點化;
其中,所述神經網絡中的第一個計算節點的輸入數據為所述張量形式的原始圖像,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的低位寬定點化的結果。
示例性地,所述線性計算為浮點線性計算。
示例性地,所述浮點線性計算表示為:y=k×X+b,
其中,X為定點數,k、b和y為浮點數,X表示所述卷積輸出,y表示所述浮點線性計算的結果,k和b為預先訓練好的浮點參數。
示例性地,所述定點化模塊,用於:
根據所述浮點線性計算的結果與第一定點判決閾值之間的大小關係,確定所述低位寬定點化的結果,
其中,所述第一定點判決閾值為預先訓練好的浮點參數,且所述第一定點判決閾值大於0。
示例性地,所述線性計算為定點線性計算。
示例性地,所述定點線性計算表示為:Y』=X』+B,
其中,X』=N×X,X、X』、Y』、B和N均為定點數,N為預設的正整數,X表示所述卷積輸出,Y』表示所述定點線性計算的結果,B表示定點位移參數。
示例性地,所述定點化子模塊,用於:
根據所述定點線性計算的結果與第二定點判決閾值之間的大小關係,確定所述低位寬定點化的結果。
示例性地,所述線性計算子模塊,還用於:
在對所述卷積操作的卷積輸出進行線性計算之前,根據預先訓練好的浮點參數,確定所述定點位移參數和所述第二定點判決閾值。
示例性地,所述卷積子模塊,用於:
對所述輸入數據進行以低位寬定點乘加為基礎單元的卷積操作。
示例性地,所述定點計算的輸出數據為所述神經網絡中的最後一個計算節點進行定點計算所得到的低位寬定點化的結果。
第二方面所述的該裝置能夠用於實現前述第一方面的基於神經網絡的計算方法。
根據本發明的第三方面,提供了一種計算機晶片,該計算機晶片包括處理器和存儲器。所述存儲器存儲有指令代碼,所述處理器用於執行所述指令代碼,且當所述處理器執行指令代碼時,能夠實現前述第一方面所述的基於神經網絡的計算方法。
本發明實施例提出的採用定點化方法實現神經網絡的計算的方法,由於採用了定點計算,計算量小,佔用資源少,從而對硬體的要求較低。
附圖說明
通過結合附圖對本發明實施例進行更詳細的描述,本發明的上述以及其它目的、特徵和優勢將變得更加明顯。附圖用來提供對本發明實施例的進一步理解,並且構成說明書的一部分,與本發明實施例一起用於解釋本發明,並不構成對本發明的限制。在附圖中,相同的參考標號通常代表相同部件或步驟。
圖1是本發明實施例的電子設備的一個示意性框圖;
圖2是本發明實施例的基於神經網絡的計算方法的一個示意性流程圖;
圖3是本發明實施例的基於神經網絡的計算方法的另一個示意性流程圖;
圖4是本發明實施例的基於神經網絡的計算方法的另一個示意性流程圖;
圖5是本發明實施例的基於神經網絡的計算裝置的一個示意性框圖;
圖6是本發明實施例的基於神經網絡的計算裝置的另一個示意性框圖。
具體實施方式
為了使得本發明的目的、技術方案和優點更為明顯,下面將參照附圖詳細描述根據本發明的示例實施例。顯然,所描述的實施例僅僅是本發明的一部分實施例,而不是本發明的全部實施例,應理解,本發明不受這裡描述的示例實施例的限制。基於本發明中描述的本發明實施例,本領域技術人員在沒有付出創造性勞動的情況下所得到的所有其它實施例都應落入本發明的保護範圍之內。
傳統的神經網絡的一般算法架構如下:(1)將輸入圖片提取成張量的形式,傳入已經訓練好的浮點計算神經網絡。(2)浮點計算神經網絡中的每一個計算節點,通過以浮點乘加為基礎單元的卷積操作,並將浮點計算結果傳送至下一層計算節點。(3)經過多層的計算節點運算後,最終神經網絡的輸出層產生圖像分割熱力圖(heatmap),然後在其基礎上對原圖進行相關標註。然而,這樣的架構往往導致大計算量需求、高內存(或顯存)佔用、以及高帶寬要求等問題,從而對硬體實現大規模神經網絡提出了很高的要求。
本發明實施例提出了一種採用定點化方法實現神經網絡的計算的方法,由於採用了定點計算,計算量小,佔用資源少,從而對硬體的要求較低。
本發明實施例可以應用於電子設備,圖1所示為本發明實施例的電子設備的一個示意性框圖。圖1所示的電子設備10包括一個或多個處理器102、一個或多個存儲裝置104、輸入裝置106、輸出裝置108、圖像傳感器110以及一個或多個非圖像傳感器114,這些組件通過總線系統112和/或其它形式互連。應當注意,圖1所示的電子設備10的組件和結構只是示例性的,而非限制性的,根據需要,所述電子設備也可以具有其他組件和結構。
所述處理器102可以包括中央處理單元(Central Processing Unit,CPU)1021和/或圖像處理單元(Graphics Processing Unit,GPU)1022,或者包括具有數據處理能力和/或指令執行能力的其它形式的處理單元,例如現場可編程門陣列(Field-Programmable Gate Array,FPGA)或進階精簡指令集機器(Advanced RISC(Reduced Instruction Set Computer)Machine,ARM)等,並且處理器102可以控制所述電子設備10中的其它組件以執行期望的功能。
所述存儲裝置104可以包括一個或多個電腦程式產品,所述電腦程式產品可以包括各種形式的計算機可讀存儲介質,例如易失性存儲器1041和/或非易失性存儲器1042。所述易失性存儲器1041例如可以包括隨機存取存儲器(Random Access Memory,RAM)和/或高速緩衝存儲器(cache)等。所述非易失性存儲器1042例如可以包括只讀存儲器(Read-Only Memory,ROM)、硬碟、快閃記憶體等。在所述計算機可讀存儲介質上可以存儲一個或多個電腦程式指令,處理器102可以運行所述程序指令,以實現各種期望的功能。在所述計算機可讀存儲介質中還可以存儲各種應用程式和各種數據,例如所述應用程式使用和/或產生的各種數據等。
所述輸入裝置106可以是用戶用來輸入指令的裝置,並且可以包括鍵盤、滑鼠、麥克風和觸控螢幕等中的一個或多個。
所述輸出裝置108可以向外部(例如用戶)輸出各種信息(例如圖像或聲音),並且可以包括顯示器、揚聲器等中的一個或多個。
所述圖像傳感器110可以拍攝用戶期望的圖像(例如照片、視頻等),並且將所拍攝的圖像存儲在所述存儲裝置104中以供其它組件使用。
當注意,圖1所示的電子設備10的組件和結構只是示例性的,儘管圖1示出的電子設備20包括多個不同的裝置,但是根據需要,其中的一些裝置可以不是必須的,其中的一些裝置的數量可以更多等等,本發明對此不限定。
圖2是本發明實施例的基於神經網絡的計算方法的一個示意性流程圖,圖2所示的方法包括:
S101,獲取張量形式的原始圖像。
具體地,張量形式的原始圖像,可以通過在普通RGB圖像(例如來自光學傳感器的RGB圖像)上提取特徵張量得到。其中,在得到張量形式的原始圖像後,再將該張量形式的原始圖像傳入已經訓練好的定點計算神經網絡進行處理。其中,原始圖像也可以稱為輸入圖像。圖像可以為圖片(例如視頻幀)或連續的視頻。
也就是說,S101是指:已經訓練好的定點計算神經網絡獲取張量形式的原始圖像。
本發明實施例中,已經訓練好的定點計算神經網絡中包括預先訓練好的浮點參數、以及卷積操作所需的參數等。其中,預先訓練好的浮點參數包括後續所涉及的k、b、t0、t1….等。
S102,對所述張量形式的原始圖像進行定點計算。
神經網絡中包括多個(此處指至少兩個)計算節點。
具體地,S102中,所述神經網絡中的每一個計算節點執行以下操作:對輸入數據進行卷積操作;對所述卷積操作的卷積輸出進行線性計算;對所述線性計算的結果進行低位寬定點化。其中,所述神經網絡中的第一個計算節點的輸入數據為所述張量形式的原始圖像,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的低位寬定點化的結果。
也就是說,每一個計算節點均執行:卷積操作、線性計算操作和定點化操作。
這裡,可以將計算節點得到的低位寬定點化的結果稱為該計算節點的輸出數據。從而,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的輸出數據。
神經網絡中的所有計算節點可以包括第一個計算節點(也可以稱為起始計算節點)、中間計算節點和最後一個計算節點。其中,第一個計算節點的輸入數據為所述張量形式的原始圖像的數據。中間計算節點和最後一個計算節點的輸入數據為前一個計算節點的輸出數據。其中,第一個計算節點和中間計算節點將得到的輸出數據給下一個計算節點。
其中,對輸入數據進行卷積操作,可以包括:對輸入數據進行以低位寬定點乘加為基礎單元的卷積操作。這樣,採用定點乘加能夠減小計算量,減少資源佔用,而採用低位寬定點乘加能夠進一步減小計算量,並進一步減少資源佔用。
其中,對所述卷積操作的卷積輸出進行線性計算,包括:對卷積輸出進行浮點線性計算或定點線性計算。
示例性地,以線性計算為浮點線性計算為例,S102中,所述神經網絡中的每一個計算節點執行以下操作:對輸入數據進行卷積操作;對所述卷積操作的卷積輸出進行浮點線性計算;對所述浮點線性計算的結果進行低位寬定點化;將所述低位寬定點化的結果作為輸出數據。其中,所述神經網絡中的第一個計算節點的輸入數據為所述張量形式的原始圖像,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的輸出數據。
其中,對所述卷積操作的卷積輸出進行浮點線性計算,可以包括:根據y=k×X+b計算浮點線性計算的結果。
也就是說,浮點線性計算可以表示為:y=k×X+b。其中,X為定點數,k、b和y為浮點數,X表示所述卷積輸出,y表示所述浮點線性計算的結果,k和b為預先訓練好的浮點參數。也就是說,其中的k和b是已經訓練好的定點計算神經網絡的參數,可以從該訓練好的定點計算神經網絡中已經得到的。由此可見,這樣便可以根據卷積輸出X計算得到浮點線性計算的結果y。
其中,對所述浮點線性計算的結果進行低位寬定點化,可以包括:根據所述浮點線性計算的結果與第一定點判決閾值之間的大小關係,確定所述低位寬定點化的結果。其中,所述第一定點判決閾值為預先訓練好的浮點參數,且所述第一定點判決閾值大於0。其中,與k和b一樣,第一定點判決閾值也是已經訓練好的定點計算神經網絡的參數,可以從該已經訓練好的定點計算神經網絡直接得到。
第一定點判決閾值可以表示為t0、t1、t2、…。第一定點判決閾值的數量可以由定點化的位數進行確定。例如,若定點化至2比特(bit),則第一定點判決閾值的數量為1個,可以表示為t0。
舉例來說,可以將低位寬定點化的結果表示為Y。若定點化至2比特(bit),且第一定點判決閾值可以表示為t0。則確定低位寬定點化的結果Y的方法可以為:
若y滿足y≤-t0,則確定Y=0;若y滿足-t0<y<0,則確定Y=1;若y滿足0≤y<t0,則確定Y=2;若y滿足y≥t0,則確定Y=3。
可理解,若將一個計算節點的低位寬定點化的結果表示為Y,即該計算節點的輸出數據為Y,則Y同時也是下一個計算節點的輸入數據X。
該過程可以示意性地如圖3所示。並且,其中的定點卷積部分可以用定點整數計算模塊來實現;其中的k×X+b部分和定點化部分可以用浮點數計算模塊來實現。
示例性地,以線性計算為定點線性計算為例,S102中,所述神經網絡中的每一個計算節點執行以下操作:對輸入數據進行卷積操作;對所述卷積操作的卷積輸出進行定點線性計算;對所述定點線性計算的結果進行低位寬定點化;將所述低位寬定點化的結果作為輸出數據。其中,所述神經網絡中的第一個計算節點的輸入數據為所述張量形式的原始圖像,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的輸出數據。
其中,對所述卷積操作的卷積輸出進行定點線性計算,可以包括:根據Y』=X』+B計算浮點線性計算的結果。
也就是說,定點線性計算可以表示為:Y』=X』+B。其中,X』=N×X,X、X』、Y』、B和N均為定點數,N為預設的正整數,X表示所述卷積輸出,Y』表示所述定點線性計算的結果,B表示定點位移參數。
其中,對所述定點線性計算的結果進行低位寬定點化,可以包括:根據所述定點線性計算的結果與第二定點判決閾值之間的大小關係,確定所述低位寬定點化的結果。
在該計算過程中所使用的定點位移參數和第二定點判決閾值可以是根據預先訓練好的浮點參數進行確定的。可見,在所述對所述卷積操作的卷積輸出進行定點線性計算之前,還可以包括:根據預先訓練好的浮點參數,確定所述定點位移參數和所述第二定點判決閾值。在一個示例中,通過枚舉法根據預先訓練好的浮點參數確定所述定點位移參數和所述第二定點判決閾值。枚舉法相對於其他方法更加簡單易行,可以節省編程時間。
將預先訓練好的浮點參數表示為k、b、t0、t1、t2、…,其中,各個參數的物理含義如前所述。將定點位移參數表示為B,將第二定點判決閾值表示為T0、T1、…。則可以基於k、b、t0、t1、t2、…,按照一定的算法得到合適的B、T0、T1、T2、…。例如,可以進行枚舉或遍歷等,從而確定合適的B、T0、T1、T2…。
以N=4,且定點化至2比特為例,此時預先訓練好的浮點參數表示為k、b、t0,如下示出了一種通過枚舉法確定B和T0的計算程序:
這樣,便可以得到定點位移參數B和第二定點判決閾值T0、T1…。舉例來說,可以將低位寬定點化的結果表示為Y。若定點化至2比特(bit),且第二定點判決閾值可以表示為T0。則確定低位寬定點化的結果Y的方法可以為:
若Y』滿足Y』≤-T0,則確定Y=0;若Y』滿足-T0<Y』<0,則確定Y=1;若Y』滿足0≤Y』<T0,則確定Y=2;若Y』滿足Y』≥T0,則確定Y=3。
即,若X』+B≤-T0,則確定Y=0;若-T0<X』+B<0,則確定Y=1;若0≤X』+B<T0,則確定Y=2;若X』+B≥T0,則確定Y=3。
可理解,若將一個計算節點的低位寬定點化的結果表示為Y,即該計算節點的輸出數據為Y,則Y同時也是下一個計算節點的輸入數據X。
該過程可以示意性地如圖4所示。並且,其中的定點卷積部分、X』+B部分和定點化部分可以用定點整數計算模塊來實現。可見,該實施例中,只需要通過n個整數參數(即B、T0、T1…),就可以完全通過定點整數計算實現浮點線性計算以及2×n值化和log2(2×n)位寬定點化的功能。由此可以實現整個低位寬神經網絡計算節點均能夠採用定點整數計算模塊來實現。
應注意,本發明實施例中,計算節點的輸出路數(output channel)可以為一路或多路。如果輸出路數為多路,則針對於其中的每一路均執行上述的操作,即多路之間進行並行操作。並且,可以理解,在輸出路數為多路時,採用浮點線性計算比採用定點線性計算所需要佔用的硬體資源要多。
應注意,本發明實施例中大寫字母X、Y、X』、Y』、B、T0、T1…均表示定點數,小寫字母x、y、k、b、t0、t1…均表示浮點數。另外,N和n表示正整數。
S103,基於所述定點計算的輸出數據,產生圖像熱力圖。
其中,定點計算的輸出數據為所述神經網絡中的最後一個計算節點進行定點計算所得到的低位寬定點化的結果。即為所述神經網絡中的最後一個計算節點的輸出數據Y。
具體地,在經過S102中多層計算節點的運算之後,可以根據最後一個計算節點的輸出數據Y,在神經網絡的輸出層產生圖像熱力圖。
S104,基於所述圖像熱力圖對所述原始圖像進行標註。
由此可見,本發明實施例提出了一種對神經網絡的參數、中間表示、以及基本計算單元進行低位寬定點化的方法,該方法對硬體的要求較低。
本發明實施例所示的基於神經網絡的計算方法可以由電子設備的現場可編程門陣列(Field-Programmable Gate Array,FPGA)執行。
圖5是本發明實施例的基於神經網絡的計算裝置的一個示意性框圖。圖5所示的裝置50包括獲取模塊501、計算模塊502、熱力圖產生模塊503和圖像標註模塊504。
獲取模塊501,用於獲取張量形式的原始圖像。
計算模塊502,用於對所述張量形式的原始圖像進行定點計算。
熱力圖產生模塊503,用於基於所述定點計算的輸出數據,產生圖像熱力圖。以及
圖像標註模塊504,用於基於所述圖像熱力圖對所述原始圖像進行標註。
示例性地,如圖6所示,計算模塊包括卷積子模塊5021,線性計算子模塊5022和定點化模塊5023。針對所述神經網絡中的每一個計算節點:卷積子模塊5021,用於對輸入數據進行卷積操作;線性計算子模塊5022,用於對所述卷積操作的卷積輸出進行線性計算;定點化模塊5023,用於對所述線性計算的結果進行低位寬定點化。其中,所述神經網絡中的第一個計算節點的輸入數據為所述張量形式的原始圖像,所述神經網絡中的除所述第一個計算節點之外的其他計算節點的輸入數據為前一個計算節點的低位寬定點化的結果。
可選地,作為一種實現方式,所述線性計算為浮點線性計算。
示例性地,所述浮點線性計算可以表示為:y=k×X+b。其中,X為定點數,k、b和y為浮點數,X表示所述卷積輸出,y表示所述浮點線性計算的結果,k和b為預先訓練好的浮點參數。
示例性地,定點化模塊5023,可以用於:根據所述浮點線性計算的結果與第一定點判決閾值之間的大小關係,確定所述低位寬定點化的結果。其中,所述第一定點判決閾值為預先訓練好的浮點參數,且所述第一定點判決閾值大於0。
可選地,作為另一種實現方式,所述線性計算為定點線性計算。
示例性地,所述定點線性計算可以表示為:Y』=X』+B。其中,X』=N×X,X、X』、Y』、B和N均為定點數,N為預設的正整數,X表示所述卷積輸出,Y』表示所述定點線性計算的結果,B表示定點位移參數。
示例性地,定點化子模塊5023,可以用於:根據所述定點線性計算的結果與第二定點判決閾值之間的大小關係,確定所述低位寬定點化的結果。
示例性地,線性計算子模塊5022,還可以用於:在對所述卷積操作的卷積輸出進行線性計算之前,根據預先訓練好的浮點參數,確定所述定點位移參數和所述第二定點判決閾值。
示例性地,卷積子模塊5021,可以用於:對所述輸入數據進行以低位寬定點乘加為基礎單元的卷積操作。
示例性地,所述定點計算的輸出數據為所述神經網絡中的最後一個計算節點進行定點計算所得到的低位寬定點化的結果。
圖5和圖6所示的裝置50能夠用於實現前述圖2至圖4所示的基於神經網絡的計算方法。示例性地,裝置50可以為FPGA。
另外,本發明實施例還提供了另一種基於神經網絡的計算裝置,該裝置可以包括處理器和存儲器,其中,存儲器用於存儲指令代碼,處理器執行該指令代碼時,可以實現前述圖2至圖4所示的基於神經網絡的計算方法。
另外,本發明實施例還提供了一種電子設備,該電子設備可以包括圖5或圖6所示的裝置50。
本發明實施例提出的採用定點化方法實現神經網絡的計算的方法,即本發明實施例提出了神經網絡定點化方法,該方法由於採用了定點計算,計算量小,佔用資源少,從而對硬體的要求較低。
儘管這裡已經參考附圖描述了示例實施例,應理解上述示例實施例僅僅是示例性的,並且不意圖將本發明的範圍限制於此。本領域普通技術人員可以在其中進行各種改變和修改,而不偏離本發明的範圍和精神。所有這些改變和修改意在被包括在所附權利要求所要求的本發明的範圍之內。
本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、或者計算機軟體和電子硬體的結合來實現。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
在本申請所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現。例如,以上所描述的設備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個設備,或一些特徵可以忽略,或不執行。
在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,並未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本發明並幫助理解各個發明方面中的一個或多個,在對本發明的示例性實施例的描述中,本發明的各個特徵有時被一起分組到單個實施例、圖、或者對其的描述中。然而,並不應將該本發明的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特徵更多的特徵。更確切地說,如相應的權利要求書所反映的那樣,其發明點在於可以用少於某個公開的單個實施例的所有特徵的特徵來解決相應的技術問題。因此,遵循具體實施方式的權利要求書由此明確地併入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。
本領域的技術人員可以理解,除了特徵之間相互排斥之外,可以採用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特徵以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特徵可以由提供相同、等同或相似目的的替代特徵來代替。
此外,本領域的技術人員能夠理解,儘管在此所述的一些實施例包括其它實施例中所包括的某些特徵而不是其它特徵,但是不同實施例的特徵的組合意味著處於本發明的範圍之內並且形成不同的實施例。例如,在權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發明的各個部件實施例可以以硬體實現,或者以在一個或者多個處理器上運行的軟體模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數位訊號處理器(DSP)來實現根據本發明實施例的物品分析設備中的一些模塊的一些或者全部功能。本發明還可以實現為用於執行這裡所描述的方法的一部分或者全部的裝置程序(例如,電腦程式和電腦程式產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從網際網路網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,並且本領域技術人員在不脫離所附權利要求的範圍的情況下可設計出替換實施例。在權利要求中,不應將位於括號之間的任何參考符號構造成對權利要求的限制。單詞「包含」不排除存在未列在權利要求中的元件或步驟。位於元件之前的單詞「一」或「一個」不排除存在多個這樣的元件。本發明可以藉助於包括有若干不同元件的硬體以及藉助於適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬體項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
以上所述,僅為本發明的具體實施方式或對具體實施方式的說明,本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。本發明的保護範圍應以權利要求的保護範圍為準。