專利名稱:計算處理裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種適用于例如圖案識別裝置、圖案識別系統(tǒng)、分層濾波計算處理裝 置等、并且實現(xiàn)網(wǎng)絡(luò)計算的計算處理裝置及方法。
背景技術(shù):
作為在圖案識別系統(tǒng)、預(yù)測系統(tǒng)以及控制系統(tǒng)等中的應(yīng)用,利用神經(jīng)網(wǎng)絡(luò)的信號 處理裝置被普遍使用。一般而言,經(jīng)常將神經(jīng)網(wǎng)絡(luò)實現(xiàn)為運行于微處理器上的軟件,并且將 神經(jīng)網(wǎng)絡(luò)作為應(yīng)用軟件提供給個人計算機、工作站等。圖2是示出使用普通分層耦合神經(jīng)網(wǎng)絡(luò)(hierarchically coupled neuralnetwork)的圖像處理裝置的結(jié)構(gòu)的示例的示意性框圖。附圖標記21代表作為檢測 對象的數(shù)據(jù),例如光柵掃描圖像數(shù)據(jù)。附圖標記22代表從圖像數(shù)據(jù)21中檢測預(yù)定物體的 計算單元,在所例示的示例中其由三層神經(jīng)網(wǎng)絡(luò)構(gòu)成。附圖標記23代表與計算結(jié)果對應(yīng)的 輸出數(shù)據(jù)面。計算單元22在掃描并參照圖像數(shù)據(jù)21中的預(yù)定圖像區(qū)域24的同時執(zhí)行處 理,由此檢測圖像中存在的檢測對象。輸出數(shù)據(jù)面23是與作為檢測對象的圖像數(shù)據(jù)21大 小相同的數(shù)據(jù)面。輸出數(shù)據(jù)面23按掃描順序存儲計算單元22的檢測輸出,計算單元22在 掃描圖像數(shù)據(jù)21的所有區(qū)域的同時處理這些區(qū)域。由于計算單元22在檢測到對象的位置 處輸出大的值,因此其能夠通過掃描輸出數(shù)據(jù)面23來識別對象在圖像面中的位置。在計算單元22中,附圖標記25、26和27代表神經(jīng)網(wǎng)絡(luò)的層,并且在各個層中存在 預(yù)定數(shù)量的神經(jīng)元28。第1層25具有與參照圖像的像素數(shù)量相等數(shù)量的神經(jīng)元(節(jié)點)28。 各個神經(jīng)元通過預(yù)定加權(quán)系數(shù)前饋耦合。圖3是示出一個神經(jīng)元28的結(jié)構(gòu)的示例的框圖。參考符號in_l到in_n代表輸 入值,在第2層以及后續(xù)層中這些輸入值是前一層神經(jīng)元的輸出值。累積加法器32將輸入 值和通過學(xué)習(xí)而獲得的系數(shù)到的積累積相加。非線性轉(zhuǎn)換處理單元33使用邏輯 函數(shù)或雙曲正切函數(shù)(tanh函數(shù))等對來自累積加法器32的累積和進行非線性轉(zhuǎn)換,并輸 出該轉(zhuǎn)換結(jié)果作為檢測結(jié)果“out”。假定使用通常已知的諸如反向傳播算法等的學(xué)習(xí)算法, 針對要檢測的各個對象確定分層神經(jīng)網(wǎng)絡(luò)中的各個神經(jīng)元所需的加權(quán)系數(shù)到w_n。為了實現(xiàn)嵌入式設(shè)備等中的這種分層耦合神經(jīng)網(wǎng)絡(luò)的高性能和低成本的目的,提 出了使用模擬硬件或數(shù)字硬件的實現(xiàn)方法。日本特許第2679730號說明書(特許文獻1)公開了一種分層結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的 構(gòu)造,其使用作為時分復(fù)用的單層模擬神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)多層結(jié)構(gòu)。此外,日本特開平 3-55658號公報(特許文獻2)公開了一種使用數(shù)字硬件的實現(xiàn)方法。另一方面,已知一種使用被稱為卷積神經(jīng)網(wǎng)絡(luò)(Convolutional NeuralNetworks) 的神經(jīng)網(wǎng)絡(luò)的計算方法,被作為實現(xiàn)防止識別對象變化的穩(wěn)健性的圖案識別的方法。在下 文中,將卷積神經(jīng)網(wǎng)絡(luò)簡稱為“CNN”。例如,日本特開平10-021406號公報(特許文獻3)和 日本特開2002-358500號公報(特許文獻4)提出了將CNN計算應(yīng)用到圖像中的對象識別 或檢測的示例。
圖4是示出作為簡單CNN的示例的邏輯網(wǎng)絡(luò)結(jié)構(gòu)的框圖。圖4示出了三層CNN的 示例,其中第1層406的特征數(shù)是3,第2層410的特征數(shù)是2,第3層411的特征數(shù)是1。 附圖標記401代表與光柵掃描圖像數(shù)據(jù)對應(yīng)的圖像數(shù)據(jù)。附圖標記403a至403c代表第1 層406的特征面。特征面是表示在使用預(yù)定特征提取濾波器(卷積計算的累積和及非線性 處理)掃描前一層數(shù)據(jù)時通過計算而獲得的結(jié)果的圖像數(shù)據(jù)面。由于特征面由光柵掃描圖 像數(shù)據(jù)的檢測結(jié)果定義,所以用平面來表示特征面。通過對應(yīng)的特征提取濾波器由圖像數(shù) 據(jù)401來生成特征面403a到403c。例如,通過典型對應(yīng)于卷積核404a到404c的二維卷積 濾波計算以及對計算結(jié)果的非線性轉(zhuǎn)換,來生成特征面403a到403c。注意,附圖標記402 代表卷積計算所需的參照圖像區(qū)域。例如,具有11X11的核大小(水平方向上的長度和垂直方向上的高度)的卷積濾 波計算通過如下給出的積和計算來處理數(shù)據(jù)
<formula>formula see original document page 5</formula>
其中,input (χ, y)坐標(x,y)處的參照像素值output (χ, y)坐標(χ,y)處的計算結(jié)果weight (column, row)坐標(x+column, y+row)處的力口權(quán)系數(shù)columnSize = ILrowSize = 11 濾波器核(filter kernl)大小(濾波器抽頭的
數(shù)量)。卷積核404a到404c分別具有不同的系數(shù)。此外,依特征面而定,卷積核404a到 404c具有不同的大小。CNN計算通過在針對各個像素掃描多個濾波核時重復(fù)積和計算,并且對最終的積 和結(jié)果進行非線性轉(zhuǎn)換來生成特征面。在計算特征面403a時,由于與前一層的耦合數(shù)是1, 因此使用一個卷積核404a。另一方面,在計算特征面407a和407b中的各個時,由于與前一 層的耦合數(shù)是3,因此,累積相加三個卷積濾波器409a到409c或者409d到409f的計算結(jié) 果。也就是說,通過對卷積濾波器409a到409c的輸出進行累積相加并最終對和執(zhí)行非線 性轉(zhuǎn)換處理,能夠生成特征面407a。注意,卷積核409a到409f分別具有不同的濾波系數(shù)。如圖4所示,卷積核409a 到409c以及卷積核409d到409f分別具有不同的核大小。卷積濾波器的累積相加及非線 性轉(zhuǎn)換處理的基本結(jié)構(gòu)與圖3所示的神經(jīng)元的基本結(jié)構(gòu)相同。也就是說,卷積核的系數(shù)對 應(yīng)于加權(quán)系數(shù)w_l到《_11。當(dāng)與前面層的多個特征面(例如特征面407a、407b和408)進行 耦合時,累積加法器32對多個卷積核的計算結(jié)果進行累積。也就是說,耦合的總數(shù)對應(yīng)于 卷積核大小X前一層的特征數(shù)。圖5A到圖5C是用于說明CNN計算中的圖形檢測處理的圖。附圖標記51a到51c 代表例示了第1層406的特征提取對象的卷積核,學(xué)習(xí)這些卷積核以分別提取水平邊緣和 傾斜邊緣。附圖標記52a和52b代表由第2層410基于第1層的多個特征提取結(jié)果和它們 的空間分配關(guān)系而提取的圖形。附圖標記53代表要最終提取的圖形。由第3層411基于 第2層410的多個第2層特征提取結(jié)果以及它們的空間分配關(guān)系來提取圖形53。假定通過使用諸如感知器學(xué)習(xí)、反向傳播學(xué)習(xí)等的普通方法進行學(xué)習(xí),而針對各個特征預(yù)先確定了 卷積核的濾波系數(shù)。在物體檢測、識別等中,通常使用大小為10X10或更大的濾波核。一 般來說,各個特征的卷積核大小不同。這樣,通過在針對各個特征提取保持各個圖像面的結(jié)果的同時對層進行分層耦 合,CNN計算能夠基于原始特征和它們的空間分配關(guān)系實現(xiàn)穩(wěn)健性的圖案檢測。如使用圖2所描述的,在使用普通的分層神經(jīng)網(wǎng)絡(luò)的、用于檢測圖像中的物體的 裝置中,作為計算處理所需的存儲器大小,除了輸入和輸出圖像緩沖器以外,用于保持各個 神經(jīng)元輸出的緩沖存儲器足以滿足要求。也就是說,如果提供了具有與神經(jīng)元數(shù)一樣多的 預(yù)定位數(shù)的存儲器,則能夠執(zhí)行期望的計算處理。另一方面,在CNN計算的情況下,由于基于前一層的多個特征提取結(jié)果的空間分 配來進行特征提取,因此,在相鄰的層之間需要預(yù)定大小的數(shù)據(jù)緩沖器。例如,在圖4所示 的CNN計算結(jié)構(gòu)示例的情況下,除了輸入和輸出圖像緩沖器以外,需要準備圖像大小X5個 特征面緩沖存儲器(特征面403a到403c以及特征面407a和407b)。鑒于此,處理所需的 存儲器大小變得比普通的分層神經(jīng)網(wǎng)絡(luò)大。特許文獻3和4中描述的方法也是通過圖像面保持特征提取結(jié)果的方法,并且處 理所需的存儲器大小比使用普通的分層神經(jīng)網(wǎng)絡(luò)的方法大。結(jié)果,尤其是在硬件實現(xiàn)的情況下,需要在LSI中準備大小較大的RAM(隨機存儲 存儲器),這導(dǎo)致電路規(guī)模增大。即使在軟件實現(xiàn)的情況下,當(dāng)在嵌入式設(shè)備中進行實施時, 由于系統(tǒng)所需的存儲器大小增大,導(dǎo)致成本也同樣增加。也就是說,能夠用于計算的存儲器 大小是系統(tǒng)可以花費的成本所規(guī)定的有限值。另一方面,使用對輸入數(shù)據(jù)進行分區(qū)并輸入所分割的數(shù)據(jù)的方法,作為避免存儲 器大小增大的方法。然而,當(dāng)要分層處理對寬的參照區(qū)域進行的計算時,由于待分割輸入的 數(shù)據(jù)需要在寬的范圍上彼此交疊,因此處理對象區(qū)域增大,由此降低了處理效率和處理速度。
發(fā)明內(nèi)容
提出本發(fā)明來解決這些問題,并且本發(fā)明的目的在于使用有限的存儲器大小,高 效地實現(xiàn)由經(jīng)由網(wǎng)絡(luò)結(jié)構(gòu)連接的多個處理節(jié)點執(zhí)行的諸如CNN計算等的計算處理。根據(jù)本發(fā)明的一個方面,提供了一種用于通過網(wǎng)絡(luò)執(zhí)行網(wǎng)絡(luò)計算的計算處理裝 置,所述網(wǎng)絡(luò)通過連接多個邏輯處理節(jié)點構(gòu)成,所述計算處理裝置包括計算單元,用于基 于所述網(wǎng)絡(luò)的結(jié)構(gòu),針對為存儲器分配用于緩沖器的存儲區(qū)域的多種緩沖器分配方法來計 算所述用于緩沖器的存儲區(qū)域的存儲器大小,所述緩沖器用于保持所述多個處理節(jié)點的計 算結(jié)果數(shù)據(jù);選擇單元,用于基于所述計算單元計算出的所述存儲器大小來選擇多種緩沖 器分配方法中的一種;以及執(zhí)行單元,用于控制各個處理節(jié)點以使用由所述選擇單元選擇 的所述緩沖器分配方法分配的所述緩沖器,來執(zhí)行所述網(wǎng)絡(luò)計算中的計算。此外,根據(jù)本發(fā)明的另一方面,提供了一種用于通過網(wǎng)絡(luò)執(zhí)行網(wǎng)絡(luò)計算的計算處 理方法,所述網(wǎng)絡(luò)通過連接多個邏輯處理節(jié)點構(gòu)成,所述計算處理方法包括計算步驟,基 于所述網(wǎng)絡(luò)的結(jié)構(gòu),針對為存儲器分配用于緩沖器的存儲區(qū)域的多種緩沖器分配方法來計 算用于所述緩沖器的存儲區(qū)域的存儲器大小,所述緩沖器用于保持所述多個處理節(jié)點的計算結(jié)果數(shù)據(jù);選擇步驟,基于在所述計算步驟中計算出的所述存儲器大小選擇多種緩沖器 分配方法中的一種;以及執(zhí)行步驟,控制各個處理節(jié)點以使用由在所述選擇步驟中選擇的 所述緩沖器分配方法分配的所述緩沖器,來執(zhí)行所述網(wǎng)絡(luò)計算中的計算。從以下參照附圖對示例性實施例的描述中,本發(fā)明的其他特征將變得清楚。
圖1是用于說明根據(jù)第一實施例的分層計算處理裝置的配置的框圖;
圖2是用于說明分層耦合神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)的示例的框圖;圖3是示出神經(jīng)元的結(jié)構(gòu)的框圖;圖4是用于說明CNN的網(wǎng)絡(luò)結(jié)構(gòu)的示例的圖;圖5A到圖5C是用于說明CNN的特征提取的示例的圖;圖6是用于說明根據(jù)本實施例的使用分層計算處理的圖像處理裝置的結(jié)構(gòu)的框 圖;圖7是用于說明根據(jù)本實施例的CNN的網(wǎng)絡(luò)結(jié)構(gòu)的圖;圖8A和圖8B是用于說明根據(jù)第一實施例的圖像處理裝置的操作的流程圖;圖9是示出網(wǎng)絡(luò)結(jié)構(gòu)信息表的數(shù)據(jù)結(jié)構(gòu)的示例的圖;圖IOA和圖IOB是示出順序信息表的數(shù)據(jù)結(jié)構(gòu)的示例的圖;圖IlA和圖IlB是示出與存儲器分配相關(guān)的示例的圖;圖12是用于說明計算單元101的配置的示例的框圖;圖13A到圖13D是用于說明環(huán)形緩沖器的示例的圖;圖14是用于說明處理節(jié)點的邏輯連接結(jié)構(gòu)的圖;圖15是用于說明參照數(shù)據(jù)組的讀取處理的圖;圖16是用于說明存儲器訪問控制單元103的配置的框圖;圖17是用于說明CNN計算單元的操作時序的圖;圖18是用于說明根據(jù)第二實施例的CNN的網(wǎng)絡(luò)結(jié)構(gòu)的圖;圖19是用于說明根據(jù)第二實施例的計算處理裝置的配置的框圖;圖20是用于說明根據(jù)第二實施例的環(huán)形緩沖器設(shè)置單元與環(huán)形大小設(shè)置單元之 間的關(guān)系的圖;圖21是用于說明根據(jù)第二實施例的計算處理裝置的配置的框圖;圖22A和圖22B是例示計算單元101針對各行執(zhí)行處理的狀態(tài)的說明圖;圖23是示出基于帶緩沖器方法的中間緩沖器分配狀態(tài)的示例的圖;圖24是示出基于頁緩沖器方法的中間緩沖器分配狀態(tài)的示例的圖;圖25A到圖25F是示出根據(jù)實施例的分割處理的示例的圖;圖26是用于說明中間緩沖器分配方法的選擇處理的流程圖;以及圖27是用于說明CNN計算處理的流程圖。
具體實施例方式現(xiàn)在,參照附圖詳細說明本發(fā)明的示例性實施例。<第一實施例>
圖6是示出根據(jù)第一實施例的包括分層計算處理電路的圖案檢測裝置的配置的 示例的框圖。該裝置是具有檢測圖像數(shù)據(jù)中的特定物體(圖像圖案)的功能的圖像處理裝 置。參照圖6,附圖標記61代表圖像輸入單元,其包括光學(xué)系統(tǒng)和諸如CCD(電荷耦合器件) 或CMOS (互補金屬氧化物半導(dǎo)體)傳感器等的光電轉(zhuǎn)換設(shè)備。此外,圖像輸入單元61包括 用于控制光電轉(zhuǎn)換設(shè)備的驅(qū)動電路、AD轉(zhuǎn)換器、用于控制各種圖像校正的信號處理電路、幀 緩沖器等。附圖標記62代表預(yù)處理單元,其執(zhí)行高效地執(zhí)行檢測處理所需的各種預(yù)處理。 更具體地說,預(yù)處理單元62通過硬件處理諸如顏色轉(zhuǎn)換處理、對比度校正處理等的圖像數(shù) 據(jù)轉(zhuǎn)換。附圖標記63代表CNN處理單元,其包括根據(jù)本實施例的分層計算處理電路,并且 用作特征檢測處理單元。注意,稍后將參照圖1描述CNN處理單元63的詳情。附圖標記66 代表DMAC(直接存儲訪問控制器),其控制圖像總線64上的各個處理單元之間的數(shù)據(jù)傳輸 以及圖像總線64上的設(shè)備與CPU總線67上的RAM 70之間的數(shù)據(jù)傳輸。附圖標記65代表 橋,其提供圖像總線64與CPU總線67之間的橋接功能。附圖標記68代表CPU,其控制該裝 置的整體操作。附圖標記69代表R0M(只讀存儲器),其存儲指定CPU 68的操作的指令以 及各種計算所需的參數(shù)數(shù)據(jù)。例如,ROM 69存儲CNN處理單元63的操作所需的加權(quán)系數(shù)、 網(wǎng)絡(luò)耦合信息、順序信息等。附圖標記70代表CPU 68的操作所需的存儲器(RAM:隨機存 取存儲器)。RAM 70包括具有相對大容量的存儲器,例如DRAM (動態(tài)RAM)等。CPU 68可以 經(jīng)由橋65訪問圖像總線64上的各種處理單元。通過將圖像總線64和CPU總線67分離, 能夠同時并行執(zhí)行通過硬件實現(xiàn)的諸如圖像輸入單元61、預(yù)處理單元62以及CNN處理單元 63等的各個處理單元的操作和CPU 68的操作。
包括圖6中的分層計算處理電路的圖案檢測裝置用于進行如圖14所示的例如卷 積神經(jīng)網(wǎng)絡(luò)(下文中簡稱為CNN)的分層計算。在圖14中,處理節(jié)點表示執(zhí)行用于由卷積 計算的對象圖像和卷積核獲得卷積計算結(jié)果的處理的塊。注意,為方便起見,圖14例示第 0處理節(jié)點。通常來說,第0處理節(jié)點不執(zhí)行任何處理,其向第1到第3處理節(jié)點輸入輸入 圖像。例如,圖14中的第4處理節(jié)點通過將分別具有不同系數(shù)的卷積核應(yīng)用到來自第1到 第3處理節(jié)點的輸出,來執(zhí)行卷積計算。第4處理節(jié)點將這些卷積計算結(jié)果相加,并且對和 進行非線性轉(zhuǎn)換,由此獲得其計算結(jié)果。當(dāng)將圖14所示的CNN應(yīng)用到CNN處理單元63時,通過在各個處理節(jié)點中分時使用 計算處理單元,來執(zhí)行各個處理節(jié)點規(guī)定的計算。例如,按如下所述執(zhí)行CNN計算首先執(zhí) 行第1處理節(jié)點規(guī)定的計算,然后執(zhí)行第2處理節(jié)點規(guī)定的計算,依此類推。也就是說,存 在構(gòu)成CNN的多個處理節(jié)點,這些處理節(jié)點構(gòu)成邏輯網(wǎng)絡(luò),而只有一個物理計算處理單元, 其執(zhí)行處理節(jié)點規(guī)定的計算。圖1是用于說明CNN處理單元63的詳情的框圖。參照圖1,附圖標記101代表計 算單元,其對預(yù)定數(shù)據(jù)組執(zhí)行卷積計算和非線性處理。圖12示出了計算單元101的示例。 參照圖12,附圖標記1201代表乘法器,其將與核選擇信號同步輸入的輸入數(shù)據(jù)和由系數(shù)選 擇單元1204根據(jù)核選擇信號從加權(quán)系數(shù)存儲單元1205選擇并輸出的加權(quán)系數(shù)相乘。附圖 標記1202代表累積加法器,其將在預(yù)定時間段內(nèi)乘法器1201的輸出進行累積相加。附圖 標記1203代表非線性轉(zhuǎn)換處理單元,其使用邏輯函數(shù)或tanh函數(shù)對累積相加結(jié)果進行非 線性轉(zhuǎn)換。由例如針對各個輸入值列舉預(yù)定函數(shù)值的函數(shù)表來實現(xiàn)非線性轉(zhuǎn)換。附圖標記 1205代表加權(quán)系數(shù)存儲單元,其存儲與檢測對象和處理節(jié)點對應(yīng)的多個加權(quán)系數(shù)數(shù)據(jù)。加權(quán)系數(shù)存儲單元1205由例如RAM等構(gòu)成。附圖標記1204代表系數(shù)選擇單元,其根據(jù)由網(wǎng) 絡(luò)結(jié)構(gòu)管理單元108指定的核選擇信號,從存儲單元中依次讀出對應(yīng)的加權(quán)系數(shù)。返回參照圖1,附圖標記102代表工作存儲器(下文中簡稱為存儲器),其存儲輸 入圖像、中間層的特征提取結(jié)果、最終檢測結(jié)果等。本實施例使用能夠進行高速隨機存取的 SRAM(靜態(tài)RAM)作為存儲器102,以加速卷積計算。附圖標記103代表存儲器訪問控制單元,其針對存儲器102控制訪問和地址的生 成并執(zhí)行讀/寫信號控制、數(shù)據(jù)總線的方向控制等。存儲器訪問控制單元103根據(jù)從環(huán)形 緩沖器設(shè)置單元104-1到104-n的輸出訪問存儲器102。附圖標記104-1到104-n代表多個環(huán)形緩沖器設(shè)置單元,其用于使各個處理節(jié)點 能夠分別使用存儲器102作為環(huán)形緩沖器。下文中將環(huán)形緩沖器設(shè)置單元104-1到104-n 中的任意一個描述為環(huán)形緩沖器設(shè)置單元104。為CNN計算的每個邏輯處理節(jié)點準備一個 環(huán)形緩沖器設(shè)置單元104。環(huán)形緩沖器設(shè)置單元104包括用于指定環(huán)形緩沖器的大小的環(huán) 形大小設(shè)置單元106、用于保持環(huán)形緩沖器的操作狀態(tài)的環(huán)形計數(shù)器105以及用于確定存 儲器102上的物理地址的偏移地址設(shè)置單元107。由選擇器1121和1122選擇環(huán)形緩沖器 設(shè)置單元104的輸出,并將該輸出提供給存儲器訪問控制單元103。通過該配置,與構(gòu)成網(wǎng) 絡(luò)的多個處理節(jié)點相對應(yīng)地,對存儲器102分配用于保持計算結(jié)果數(shù)據(jù)的中間緩沖器所用 的存儲區(qū)域。稍后將描述細節(jié)部分。附圖標記108代表網(wǎng)絡(luò)結(jié)構(gòu)管理單元,其對各操作進行控制以實現(xiàn)使用一個計算 單元101的邏輯分層網(wǎng)絡(luò)處理。網(wǎng)絡(luò)結(jié)構(gòu)信息設(shè)置單元110將指定邏輯分層耦合關(guān)系的結(jié) 構(gòu)信息作為表數(shù)據(jù)(下文中稱為結(jié)構(gòu)信息表)保持。結(jié)構(gòu)信息表由寄存器或RAM構(gòu)成。網(wǎng) 絡(luò)結(jié)構(gòu)管理單元108根據(jù)該結(jié)構(gòu)信息表依次控制存儲器訪問控制單元103和計算單元101 的操作,由此實現(xiàn)以預(yù)定單位計算(稍后描述)為基礎(chǔ)的分層網(wǎng)絡(luò)的計算處理。順序控制單元109根據(jù)順序信息設(shè)置單元111中存儲的順序信息,來控制各個處 理節(jié)點的單位計算的執(zhí)行順序。在本實施例中,將用于獲得一行單位的輸出的計算處理定 義為預(yù)定計算處理單位(單位計算)。也就是說,通過在針對各行切換邏輯處理節(jié)點時分 時地執(zhí)行處理,來執(zhí)行分層網(wǎng)絡(luò)計算。由RAM等構(gòu)成順序信息設(shè)置單元111,其保持順序信 肩、ο附圖標記113代表CPU總線訪問控制單元,其是CPU 68訪問CNN處理單元63中 的各種寄存器和存儲器所需的總線接口。CPU 68能夠經(jīng)由該接口寫入各種設(shè)置數(shù)據(jù)·環(huán)形大小設(shè)置單元106中的緩沖器大??;·網(wǎng)絡(luò)結(jié)構(gòu)信息設(shè)置單元100中的結(jié)構(gòu)信息表;
·順序信息設(shè)置單元111中的順序信息;·計算單元101的加權(quán)系數(shù)存儲單元1205中的加權(quán)系數(shù)數(shù)據(jù);等等。下面將參照圖22A和圖22B描述本實施例中的預(yù)定單位計算。如上所述,本實施 例中的預(yù)定單位計算是使用計算單元101針對各行執(zhí)行的卷積計算處理。然而,為了簡便, 圖22A和圖22B示出了一個處理節(jié)點以計算輸出圖像(或者輸入到網(wǎng)絡(luò)中的圖像)作為計 算對象圖像來執(zhí)行卷積計算的情況,并且還省略了非線性轉(zhuǎn)換。參照圖22A,附圖標記2201代表計算對象圖像(參照圖像)。計算對象圖像2201 中所示的一個最小格表示作為按照光柵掃描順序表示的輸入圖像或前一層的處理節(jié)點中的計算結(jié)果圖像的計算對象圖像的像素(1即此0^),1:水平位置,7:垂直位置)。附圖標 記2202代表計算結(jié)果圖像。計算結(jié)果圖像2202中所示的一個最小格表示按照光柵掃描順 序的計算結(jié)果像素(output (χ, y),χ 水平位置,y 垂直位置)。計算對象圖像2201中由粗框圍起的區(qū)域2203表示在位置output (6,7)處對卷積 計算進行處理時的參照圖像區(qū)域。區(qū)域2203表示在水平方向上以“11”、在垂直方向上以 “13”限定卷積核大小的情況。計算結(jié)果圖像2202中由粗框圍起的區(qū)域2204表示對計算對象圖像2201執(zhí)行單 位計算(水平方向上一行的計算)時獲得的結(jié)果區(qū)域。注意,區(qū)域2204中的交叉陰影區(qū)域 2206表示根據(jù)卷積核大小生成的周圍區(qū)域(未進行任何計算的區(qū)域)中的像素。也就是 說,通過將區(qū)域2203向左移動一個像素,來定義要進行位置output (5,7)處的計算的參照 圖像區(qū)域。但是,由于該區(qū)域從計算對象圖像2201 (參照區(qū)域)伸出,因此一部分參照像素 不可用。注意,在分層處理中如何處理(刪除、嵌入缺省值等)這些周圍區(qū)域(無效區(qū)域) 不是本發(fā)明的實質(zhì)問題。在該情況下,例如,假定嵌入了缺省值。注意,區(qū)域2204以上的行 同樣也變成了無效區(qū)域。從圖22A可以看出,在執(zhí)行一行的單位計算時,至少需要區(qū)域2205作為計算對象 圖像2201的必要區(qū)域。在圖22A中以陰影區(qū)域顯示區(qū)域2205,區(qū)域2205需要具有與計算 對象圖像2201的水平大小相同的水平大小以及與卷積核的垂直大小相同的垂直大小。為 了便于說明,將該區(qū)域稱為單位計算對象圖像區(qū)域2205??梢酝ㄟ^在移動單位計算圖像對 象區(qū)域2205時執(zhí)行由區(qū)域2204表示的單位計算,來對計算對象圖像2201的整個區(qū)域進行 卷積計算。例如,圖22B示出了對向下移動了一個像素的單位計算對象圖像區(qū)域執(zhí)行單位 計算的情況。此時,能否執(zhí)行某一單位計算,取決于前一層的處理節(jié)點能否對該單位計算的 單位計算對象圖像區(qū)域2205'的像素數(shù)據(jù)進行計算并輸出計算結(jié)果。當(dāng)然,在使用多個參 照圖像作為計算中的輸入的處理節(jié)點的情況下,需要輸出所有參照圖像的單位計算對象圖 像區(qū)域的像素數(shù)據(jù)。圖7是用于說明在將本實施例應(yīng)用到使用圖4說明的CNN網(wǎng)絡(luò)時進行的操作的示 例的圖。參照圖7,附圖標記701代表輸入層,向其輸入具有預(yù)定大小的檢測對象圖像數(shù) 據(jù)。附圖標記706、710和711分別代表第1、第2和第3層。附圖標記702代表卷積核704a 到704c進行的計算所需的參照圖像區(qū)域。附圖標記703a到703c代表存儲第1層706的 計算輸出的存儲區(qū)域。也就是說,存儲區(qū)域703a到703c分別存儲卷積核704a到704c相 對于輸入層701的輸入面進行的卷積計算和非線性轉(zhuǎn)換的結(jié)果。作為第1層的計算結(jié)果的 特征面是各自具有與輸入層701的大小相同的大小的數(shù)據(jù)面。然而,特征面被存儲在用作 具有預(yù)定高度的環(huán)形緩沖器的存儲區(qū)域703a和703b中。這些環(huán)形緩沖器是寬度與輸入圖 像的寬度相同并且針對各行循環(huán)的帶緩沖器。圖13A到圖13F是例示本實施例的環(huán)形緩沖器的操作的說明圖。為了便于說明, 假定環(huán)形緩沖器的高度(循環(huán)數(shù))是6。此外,下面將描述在以光柵掃描順序輸入輸入圖像 1300的8行的圖像數(shù)據(jù)作為Ll到L8時、如何在6行的環(huán)形緩沖器中保持并參照這些圖像 數(shù)據(jù)的情況。附加在環(huán)形緩沖器中的環(huán)形計數(shù)器的值在“0”到“5”之間循環(huán)。環(huán)形計數(shù)器的初始值是“5”,并且在輸入一行數(shù)據(jù)時遞增1。然而,在所取的值與環(huán)形緩沖器的循環(huán)數(shù)相同的情況下,環(huán)形計數(shù)器的計數(shù)器值返回到“O”。例如,由于該環(huán)形緩沖器的循環(huán)數(shù)是“6”,因 此,計數(shù)器值在“ 5 ”之后返回到“ O ”。附圖標記1301代表從輸入圖像1300的第1行開始的六行數(shù)據(jù)Ll到L6全部加載 到環(huán)形緩沖器的狀態(tài),并且環(huán)形計數(shù)器值為“5”。在存儲下一行時,使環(huán)形計數(shù)器遞增以返 回到“0”,并且將行L7加載到環(huán)形緩沖器的第1行(row)中。也就是說,環(huán)形計數(shù)器的值表 示環(huán)形計數(shù)器中存儲最新行的行(0基準)。圖13C中的附圖標記1302代表該狀態(tài)。在狀態(tài)1302中,能夠從環(huán)形緩沖器參照帶L2到L7,并且其起始行是環(huán)形計數(shù)器的 值+1的行。此外,在存儲下一行L8時,在第2行位置加載行L8,如狀態(tài)1303所示,并且環(huán) 形計數(shù)器的值變?yōu)椤?”。在該情況下,從圖13D可以看出,能夠參照行L3到L8,并且起始行 也是環(huán)形計數(shù)器的值+1的行。如果環(huán)形緩沖器的循環(huán)數(shù)與輸入圖像數(shù)據(jù)的行數(shù)相匹配,則在對一頁進行處理期 間,決不會重寫前一行。也就是說,環(huán)形緩沖器不僅可以用作帶緩沖器還可以用作頁緩沖器。各個處理節(jié)點的環(huán)形緩沖器的最小需要高度(循環(huán)數(shù))與在下一層的處理節(jié)點執(zhí) 行單位計算處理時使用的單位計算對象圖像區(qū)域(圖22A中的區(qū)域2205)的最小需要高度 相匹配。也就是說,可以基于連接在該處理節(jié)點之后的所有處理節(jié)點的卷積核的大小,來確 定各個環(huán)形緩沖器的高度(循環(huán)數(shù))。例如,在圖7中,在存儲區(qū)域703a的情況下,將卷積核709a和709d的單位計算對 象圖像區(qū)域的高度的較大值,確定為存儲區(qū)域703a的環(huán)形緩沖器的最小需要高度。當(dāng)以這 種方式確定高度時,能夠使用存儲在由存儲區(qū)域703a形成的環(huán)形緩沖器中的像素數(shù)據(jù),來 執(zhí)行卷積核709a和709d兩者的卷積計算。類似地,可以分別基于卷積核709b和709e的 核大小以及卷積核709c和709f的核大小,來確定存儲區(qū)域703b和703c的最小需要高度。 此外,可以由卷積核712a和712b的單位計算對象圖像區(qū)域的高度,來確定存儲區(qū)域707a 和707b的最小需要高度。注意,在這種情況下確定用于下一層的計算的最小需要高度。因此,如果有其他需 求,則可以使用具有更大高度的環(huán)形緩沖器。例如,在圖7中,存儲區(qū)域703a、703b、707a和 707b將由核大小規(guī)定的用于下一層計算的最小需要高度作為環(huán)形緩沖器高度。但是,存儲 區(qū)域703c除了用于下一層計算以外,還存儲CPU 68在檢查處理中使用的特征檢測數(shù)據(jù)。因 此,對存儲區(qū)域703c分配大小與輸入圖像數(shù)據(jù)相同的頁緩沖器。也就是說,CPU 68不僅可 以參照最后層的特征數(shù)據(jù)713,還可以參照存儲在存儲區(qū)域703c中的第1層的特征數(shù)據(jù)來 檢查檢測對象圖像的存在。以這種方式,當(dāng)使用本實施例的CNN處理單元時,可以根據(jù)網(wǎng)絡(luò)耦合狀態(tài)和期望 目的,對具有最佳大小的緩沖器(存儲區(qū)域703a、703b、703C、707a和707b)分配中間層的 特征面。在圖7所示的本實施例的CNN計算處理中,將用于保持中間處理節(jié)點的計算結(jié)果 的存儲區(qū)域703a、703b、707a和707b定義為帶緩沖器。在將中間處理節(jié)點的輸出緩沖器 (中間緩沖器)定義為帶緩沖器的情況下,與使用圖4描述的傳統(tǒng)CNN計算處理相比,減小 了存儲器使用大小。但是,依網(wǎng)絡(luò)結(jié)構(gòu)和計算順序而定,定義為帶緩沖器的中間緩沖器不總是使總的存儲器使用大小最小化。下面將說明這種情況。圖23是示出在對包括N層的CNN分配帶緩沖器作為中間緩沖器時的示例的圖。在 圖23中,各個圓圈表示邏輯處理節(jié)點,附在各個圓圈的右邊的矩形表示分配給該處理節(jié)點 的緩沖器。在圖23中,對作為輸入圖像的第0層的處理節(jié)點和作為輸出層的第N層的處理 節(jié)點分配用于一頁的幀緩沖器(頁緩沖器),并對其余的中間層的節(jié)點分配帶緩沖器。在本 說明書中,將各個中間層的輸出結(jié)果保持緩沖器特別稱為中間緩沖器。附在一部分圓圈中 的各圓圈的左邊的正方形例示了該處理節(jié)點的卷積核。然而,為了避免使圖復(fù)雜,僅僅例示 了一部分卷積核。第0層的節(jié)點是輸入層,并且如上所述,為了方便而分配了處理節(jié)點。但是,該節(jié) 點實際上不執(zhí)行計算處理,并且僅表示輸入圖像數(shù)據(jù)被存儲在輸入緩沖存儲器中的狀態(tài)。分配給最后層(第N層)的緩沖器是輸出緩沖器,并且在本示例中,對兩個處理節(jié) 點分配大小與輸入圖像大小相同的緩沖器。當(dāng)然,僅需要根據(jù)例如CPU 68實現(xiàn)的、使用該 CNN的計算結(jié)果的后處理單元的方便性,來確定這些輸出緩沖器的大小,而不考慮卷積計算 的方便性。例如,如果要執(zhí)行用于由最終輸出結(jié)果計算某一范圍的重心并確定在該坐標位 置處存在檢測對象的后處理,則各個輸出緩沖器的大小足以用于僅保持計算重心所需的范 圍的計算結(jié)果。在圖23的CNN中,將中間緩沖器(第1到第N_1層的輸出緩沖器)作為與圖7中 描述的帶緩沖器相同的帶緩沖器而進行分配。各個帶緩沖器的寬度與輸入圖像寬度相同, 并且高度被設(shè)置為要連接的下一層的處理節(jié)點(與上層處理節(jié)點鄰接)的卷積核大小指定 的最小需要高度。注意,為了簡便,不將中間層的結(jié)果用于后處理。當(dāng)以這種方式將所有的中間緩沖器作為帶緩沖器分配時,通過在切換處理節(jié)點時 依次針對各行執(zhí)行計算處理,來獲得CNN的整體處理順序。假定例如第1層的第1處理節(jié) 點的帶緩沖器的高度是“5”。當(dāng)完成針對5行的計算處理并且存儲了這些處理的結(jié)果時,參 照該處理節(jié)點的計算結(jié)果的第2層的各處理節(jié)點可以執(zhí)行一行的單位計算處理。相反地, 除非第2層的各個處理節(jié)點的處理完成,否則不能丟棄帶緩沖器中5行中的即使一個輸出。 鑒于此,由于沒有新計算結(jié)果的存儲位置,因此第1層的第1處理節(jié)點不能執(zhí)行下一單位計 算。這樣,在需要第1處理節(jié)點的計算結(jié)果的第2層的所有處理節(jié)點的單位計算處理完成 時,第1層的第1處理節(jié)點才能夠開始下一行的單位計算處理。因此,由于在整個CNN中,處理是逐行進行的,因此需要所有的中間緩沖器基本上 同時存在。設(shè)N:總層數(shù)(除了輸入層),1 = 1,2,…,N-1 層號變量(中間層),各層的特征數(shù),f = = 1,…,F(xiàn)!特征號(關(guān)注層的關(guān)注特征),f = fl_1:前一層的特征號,IX,IY:輸入圖像大小(水平方向,垂直方向),ffx(l, f, f),ffY(l, f, f)核大小(水平方向,垂直方向),By(1, f)帶緩沖器高度,以及SB:帶中間緩沖器需要大小,可以通過下式計算將所有的中間緩沖器作為具有最小需要大小的帶緩沖器分配時所需的總大小Sb By (/,/) = max(WY (l +1,fM,/^l < / < iV-1,1 < fM < Fm )
N-I F1…(2)Sb =I ^YYjByilf)
/-1 /=1在上述計算中,通過下述方式計算網(wǎng)絡(luò)計算所需的存儲器大小·將構(gòu)成網(wǎng)絡(luò)計算的所有處理節(jié)點中的各個所需的中間緩沖器的大小,設(shè)置為連 接在該處理節(jié)點之后的各個處理節(jié)點所需的數(shù)據(jù)大小,并且 將這些中間緩沖器的大小相加。另一方面,圖24示出了在針對網(wǎng)絡(luò)結(jié)構(gòu)與圖23所示的網(wǎng)絡(luò)結(jié)構(gòu)相同的CNN將頁 緩沖器用作中間緩沖器時的示例。與圖23中一樣,獨立于網(wǎng)絡(luò)結(jié)構(gòu)和計算順序來指定輸入 層和輸出層的緩沖器,并且在圖24中還分配了頁緩沖器。在圖24中,對第1到第N-I層的處理節(jié)點分配大小與輸入圖像大小相同的頁緩沖 器。但是,不需要這些頁緩沖器都同時存在。關(guān)注第1層的各個節(jié)點,僅參照第0層即輸入圖像來執(zhí)行這些節(jié)點的各個中的計 算處理。在本實施例中,由于輸入圖像數(shù)據(jù)全都存儲在存儲器中,因此在需要時,各個節(jié)點 都能夠參照所需范圍內(nèi)的數(shù)據(jù)。由于準備用于一頁的緩沖器作為針對各個節(jié)點的輸出存儲 緩沖器,因此與帶緩沖器中不同,不用考慮行的重寫而可以在任意時間存儲計算結(jié)果。關(guān)注第2層的各個處理節(jié)點,這些節(jié)點參照第1層的處理結(jié)果。因此,在第1層的 各個處理節(jié)點完成針對一頁的處理之后,由于與輸入圖像中一樣將所需的參照數(shù)據(jù)保持為 頁數(shù)據(jù),因此在需要時可以參照所需的范圍。這同樣適用于后續(xù)層?;旧?,當(dāng)完成前一層 的處理并且存儲了一頁的參照數(shù)據(jù)時,關(guān)注層的節(jié)點可以開始處理。相反地,在執(zhí)行計算處理時各個層的處理節(jié)點不需要前一層之前層的處理結(jié)果。 也就是說,當(dāng)某一處理節(jié)點開始計算處理時,如果完成了前一層的所有處理節(jié)點對一頁的 計算,則可以釋放該前一層之前的層的處理節(jié)點的中間緩沖器。因此,當(dāng)各個處理節(jié)點針對各行依次執(zhí)行計算處理時,首先只有屬于第1層的處 理節(jié)點依次執(zhí)行單位計算。在第1層的所有處理節(jié)點完成針對一頁的計算處理之后,第2 層的處理節(jié)點開始單位計算處理。依次針對下一層重復(fù)該處理。當(dāng)以這種方式設(shè)計單位計 算處理順序時,如果在一段時期僅在兩個連續(xù)層中存在中間緩沖器,則可以執(zhí)行一直到最 后層的計算。更一般地說,·在生成屬于一層的所有處理節(jié)點的輸出之后,控制屬于下一層的處理節(jié)點的計 算處理開始,并且 在生成屬于第N層的所有處理節(jié)點的輸出之后,釋放由屬于第N-I層的所有處理 節(jié)點使用的中間緩沖器區(qū)域,并且可以將該中間緩沖器域分配為屬于第N+1層及后續(xù)層的 處理節(jié)點的中間緩沖器區(qū)域。每次完成一層的計算處理時,將該層之前的層的頁緩沖器重新用作下一層的中間 緩沖器,由此縮小總的中間緩沖器需要大小。下文中將該方法稱作頁緩沖器方法。設(shè)Sp 頁中間緩沖器需要大小,可以通過下式計算在將中間緩沖器構(gòu)造為頁緩沖 器時(在采用頁緩沖器方法時)的總的需要大小
Sp = (IxX Ιγ) X (F1, F1+11 1 ^ 1 ^ N-l) ...(3)該計算針對網(wǎng)絡(luò)結(jié)構(gòu)中的所有由兩個連續(xù)層組成的組,來計算由屬于每個組的所 有處理節(jié)點生成的計算結(jié)果數(shù)據(jù)的總大小,并使用所計算的總大小中最大的一個作為所需存儲器大小。
從等式(2)和(3)可以看出,帶中間緩沖器需要大小Sb和頁中間緩沖器需要大小 Sp中哪個更小取決于CNN網(wǎng)絡(luò)中的各邏輯處理節(jié)點的連接結(jié)構(gòu)以及各個節(jié)點的卷積核大 小。通常來說,當(dāng)網(wǎng)絡(luò)的層數(shù)少并且核大小也小時,基于帶緩沖器方法的分配有利。但是, 當(dāng)層數(shù)多并且屬于各層的處理節(jié)點數(shù)量相對少時,基于頁緩沖器方法的分配有利。通常,作為系統(tǒng)來說,可以用作中間緩沖器的存儲器的上限大小是常數(shù)。設(shè)M為該 條件大小。特別地,在像本實施例中的專用圖案檢測裝置中,不總是將分配給中間緩沖器的 存儲器大小設(shè)置得盡量小,如果其等于或小于可分配大小M,就不會引起任何問題。如上所述,在帶緩沖器方法和頁緩沖器方法中,單位計算處理順序不同。特別地, 在頁緩沖器方法中,一個處理節(jié)點可以連續(xù)執(zhí)行針對一頁的單位計算。使用該順序,可以根 據(jù)實施而省略關(guān)于切換處理節(jié)點的開銷,并且與帶緩沖器分配方法相比,可以稍微縮短總 的計算時間。因此,當(dāng)Sp和Sb都等于或小于M時,優(yōu)選使用頁緩沖器方法來代替選擇更小 的。如圖IlA和圖IlB所示,在頁緩沖器分配方法的情況下,最后輸出層的輸出緩沖器 可以與其他中間緩沖器共享區(qū)域。因此,使用下面的等式(4)來代替等式(3)Sp' = (IxX IY) Xmax (F1, F1+11 1 ^ 1 ^ N) ...(4)設(shè)M'為不僅是對中間緩沖器而且是對最后輸出層可分配的大小,M'由下式表 示M' = M+(IxX IY) XFn ...(5)更具體地說,可以通過使用等式(4)來代替等式(3)并且將其與M'進行比較,來 確定是否可以使用基于頁緩沖器方法的分配。也就是說,在頁緩沖器方法的情況下,可以增 大實際可分配的大小。以這種方式,能夠進一步提高存儲器使用效率。下面將參照圖8A、圖8B、圖26和圖27中示出的流程圖詳細描述本實施例的分層 網(wǎng)絡(luò)中的計算處理操作。圖8A和圖8B是示出CPU 68執(zhí)行的一系列檢測處理操作的流程 圖。在執(zhí)行預(yù)定的設(shè)置處理等之后,CPU 68基于軟件執(zhí)行的處理將諸如圖像輸入單元61、 CNN處理單元63等的硬件處理電路單元驅(qū)動。在步驟S801中,在檢測處理開始之前,CPU 68執(zhí)行變量、寄存器等的各種初始化 處理。各個處理單元響應(yīng)于來自CPU 68的初始化指令而對內(nèi)部寄存器、存儲器等進行初始 化。此外,在該步驟中,CPU 68執(zhí)行將整個輸入圖像大小區(qū)域設(shè)置為處理區(qū)域的初始化。在 該處理以及隨后的處理中,CPU 68可以經(jīng)由橋65和圖像總線64訪問CNN處理單元63和其 他硬件電路單元,并且可以經(jīng)由CPU總線訪問控制單元113在預(yù)定的寄存器和存儲器中設(shè) 置數(shù)據(jù)。在該初始化處理中,CPU 68將本圖案檢測裝置支持的所有檢測對象的所有處理節(jié) 點的卷積核的系數(shù)數(shù)據(jù),加載到計算單元101中的加權(quán)系數(shù)存儲單元1205(圖12)中。本 圖案檢測裝置通過替換卷積核的加權(quán)系數(shù)、順序信息、網(wǎng)絡(luò)結(jié)構(gòu)信息等能夠支持使用同一 硬件的各種檢測對象,并且在該步驟中加載針對這些對象的核設(shè)置。在步驟S802中,CPU 68接受用戶選擇的檢測對象。在該步驟中,用戶從本圖案檢測裝置支持的所有檢測對象中選擇要從圖像中檢測的期望檢測對象。在確定了檢測對象之后,在步驟S803中CPU 68在網(wǎng)絡(luò)結(jié)構(gòu)管理單元108的網(wǎng)絡(luò) 結(jié)構(gòu)信息設(shè)置單元110中設(shè)置網(wǎng)絡(luò)結(jié)構(gòu)信息。網(wǎng)絡(luò)結(jié)構(gòu)信息是指定網(wǎng)絡(luò)的耦合關(guān)系的表, 并且由寄存器文件或RAM等構(gòu)成。網(wǎng)絡(luò)結(jié)構(gòu)信息還根據(jù)檢測對象以及加權(quán)系數(shù)而采用不同 的值。圖9是示出網(wǎng)絡(luò)結(jié)構(gòu)信息的示例的表,并且示出了圖14所示的CNN的結(jié)構(gòu)信息。 參照圖9,“對象處理節(jié)點”對應(yīng)于圖14所示的網(wǎng)絡(luò)的第0到第8邏輯處理節(jié)點。注意,邏 輯處理節(jié)點是通過分時使用計算單元101實現(xiàn)的邏輯計算處理的單位。注意,第0處理節(jié) 點是與輸入圖像數(shù)據(jù)面對應(yīng)的處理節(jié)點,雖然為了方便將其描述為第0處理節(jié)點,但是其 實際上不執(zhí)行任何計算?!班徑拥南聦犹幚砉?jié)點的數(shù)量”表示當(dāng)關(guān)注處理節(jié)點執(zhí)行計算時所需的下層中的 連接數(shù)量。例如,第4處理節(jié)點連接下層中的三個節(jié)點。網(wǎng)絡(luò)結(jié)構(gòu)管理單元108根據(jù)鄰接 的下層處理節(jié)點數(shù)量控制存儲訪問和計算?!班徑拥南聦犹幚砉?jié)點”是指定當(dāng)關(guān)注處理節(jié)點執(zhí)行計算時所需的下層處理節(jié)點 的信息。例如,第4處理節(jié)點連接至第1、第2和第3處理節(jié)點。也就是說,在執(zhí)行第4處理 節(jié)點的計算時,使用第1到第3處理節(jié)點的計算結(jié)果作為參照數(shù)據(jù)?!坝嬎泐愋汀笔潜硎疽獔?zhí)行的計算的類型的信息,并且在CNN計算的情況下,根據(jù)計 算類型選擇加權(quán)系數(shù)。也就是說,在計算單元101具有圖12所示的配置的情況下,“計算類 型”中描述的計算類型編號對應(yīng)于用于選擇系數(shù)的“核選擇信號”。在CNN處理的情況下, 各個處理節(jié)點使用根據(jù)“核選擇信號”選擇的不同加權(quán)系數(shù)執(zhí)行卷積計算?!皡⒄諗?shù)據(jù)寬度”對應(yīng)于與“計算類型”相對應(yīng)的卷積核的寬度,并且“參照數(shù)據(jù)高 度”對應(yīng)于卷積核的高度。“處理開始行”表示關(guān)注處理節(jié)點能夠進行有效的計算輸出的圖像位置。如上文中 所述,由于卷積計算是在核大小范圍內(nèi)對周圍像素進行卷積的計算,因此當(dāng)核參照范圍伸 出到參照圖像數(shù)據(jù)的有效范圍之外時,該范圍變?yōu)椴荒塬@得有效計算結(jié)果的區(qū)域。在水平 方向上,圖22A的區(qū)域2206對應(yīng)于落在有效范圍之外的區(qū)域(無效區(qū)域)。類似地,在垂 直方向上也存在無效區(qū)域。這種區(qū)域取決于處理節(jié)點的核大小,并且通過層進行累積。在 本實施例的圖案檢測裝置的CNN中,由于針對各行執(zhí)行處理,因此優(yōu)選跳過針對無效區(qū)域 的行的計算,以加速整個處理。也就是說,由于“處理開始行”之前的行形成該處理節(jié)點中 的計算無效區(qū)域,因此可以跳過針對該區(qū)域的處理。在本連接中,輸入圖像的第1行的編號 從“0”開始。同樣地,除了開始行之外,還存在結(jié)束行,結(jié)束行具有通過從輸入圖像的行數(shù) IY減去“處理開始行”然后再從差中減去“ 1,,而獲得的行編號。在本實施例中,各個處理節(jié)點計算允許針對輸入圖像進行計算的最大范圍??梢?從由最后使用計算結(jié)果的處理節(jié)點要使用的計算范圍開始向之前的層依次往回計算計算 范圍。在這種情況下,當(dāng)也將結(jié)束行作為信息提供時,進行更高效的計算。在步驟S804中,CPU 68選擇中間緩沖器分配方法。圖26是示出本處理的詳情的 流程圖。在中間緩沖器分配方法選擇處理中,在步驟S2601中CPU 68獲取預(yù)先設(shè)置的輸入 處理圖像大小Ix和IY。在步驟S2602中,CPU 68計算中間緩沖器可用的大小M。該大小M 取從工作存儲器102的可用大小中減去輸入圖像緩沖器大小、輸出緩沖器大小以及其他各種處理所需的大小而獲得的值。在步驟S2603中,CPU 68計算當(dāng)使用頁緩沖器方法分配中間緩沖器時所需的大小 SP??梢允褂蒙鲜龅仁?3)計算該大小SP。在步驟S2604中,CPU 68確認是否SP < M。如 果SP < M,則在步驟S2605中CPU 68選擇頁緩沖器方法作為當(dāng)前的中間緩沖器分配方法, 由此結(jié)束該處理。注意,如上所述,可以代替SP和M而使用SP'和M'作為要使用的值,由 此增大選擇頁緩沖器方法的可能性。另一方面,如果11> SP,則處理從步驟S2604進入到步驟S2606。在步驟S2606中, CPU 68計算當(dāng)使用帶緩沖器方法分配中間緩沖器時所需的中間緩沖器大小SB。可以通過 上述等式(2)計算該大小。在步驟S2607中,CPU 68確認是否SB ( M。如果SB ( M,則在 步驟S2608中CPU 68選擇帶緩沖器方法作為當(dāng)前的中間緩沖器分配方法,由此結(jié)束該處 理。以這種方式,根據(jù)本實施例,從多種緩沖器分配方法中選擇使得所需緩沖器的總計大小 等于或小于中間緩沖器可用的存儲器大小(等于或小于M)的緩沖器分配方法。如果都大于M,則在多種緩沖器分配方法中,沒有使得所需緩沖器的總計大 小等于或小于中間緩沖器可用的存儲器大小(等于或小于M)的緩沖器分配方法。因此,在 該狀態(tài)下本圖案檢測裝置不能執(zhí)行計算處理。在這種情況下,在步驟S2609中,CPU 68重 新設(shè)置通過將原始輸入圖像大小分割為2個部分而獲得的大小作為新的處理圖像大小。如 圖25A到圖25F所示,考慮核開銷而執(zhí)行該分割處理。圖25A示出了原始輸入圖像,并且粗 框表示最后層中的累積核區(qū)域2501。注意,累積核區(qū)域是當(dāng)通過依次往回追溯鄰接的下層 處理節(jié)點以使最后層處理節(jié)點的參照范圍有效、而到達輸入圖像時的參照范圍。下面將說明如下情況,其中原始輸入圖像被分割為左右兩個區(qū)域,如圖25B和圖 25C中虛線所示。為了使左邊虛線區(qū)域和右邊虛線區(qū)域有效,在考慮到累積核區(qū)域2501的 情況下,需要輸入直到陰影區(qū)域的數(shù)據(jù)。因此,獲得考慮了開銷的兩個分割區(qū)域,如圖25D和圖25E所示。也就是說,通過 將累積核區(qū)域2501的1/2 (在奇數(shù)值的情況下截尾取整)的寬度添加到圖25A所示的輸入 圖像大小的簡單分割為兩部分的區(qū)域中,而獲得這些區(qū)域。通過將分割計算結(jié)果的兩個虛 線框內(nèi)的區(qū)域進行合成,如圖25F所示,可以獲得與通過將CNN計算應(yīng)用到原始輸入圖像而 獲得的計算結(jié)果相等的計算結(jié)果。注意,也可以將如上所述對輸入數(shù)據(jù)進行分割和處理的 方法稱作區(qū)塊(tile)處理。在本實施例中,優(yōu)選執(zhí)行圖25A到圖25F所示的水平分割處理。這是因為垂直分割 處理能夠縮小頁方法的中間緩沖器使用大小,而帶方法的中間緩沖器使用大小保持不變。 在水平分割中,縮小了兩種方法的臨時總計使用大小。由于由累積核區(qū)域的大小確定可分 割的大小(需要等于或大于該區(qū)域的大小),因此如果不再允許水平分割處理,則執(zhí)行垂直 分割處理。在本處理中,每次分割時初始值“1”的分割計數(shù)器遞增,并且與分割方向一起被 存儲。在步驟S2610中,CPU 68確認分割后的大小大于累積核大小,并再次重復(fù)從步驟 S2601開始的處理。在即使如上所述使用垂直分割處理之后、分割后的大小也非期望地變 得小于累積核大小的情況下,該CNN計算裝置不能執(zhí)行該檢測處理。因此,處理進入到步驟 S2611, CPU 68確定不可能進行處理。由于基于所有處理節(jié)點的核大小和可分配中間緩沖 器大小最大值確定這種不可能性,因此通常采用不引起該狀況的結(jié)構(gòu)。
16
返回參照圖8A和圖8B,在步驟S805中,CPU 68檢查是否在步驟S804中的選擇處理中確定了不可能進行處理。如果確定了不可能進行處理,則處理從步驟S805跳到步驟 S819以執(zhí)行結(jié)束檢查處理(稍后描述)。但是,通常采用不引起這種狀況的結(jié)構(gòu)。在步驟S806中,CPU 68檢查在步驟S804中的選擇處理中選擇的方法是否是頁緩沖器方法。如果選擇了頁緩沖器方法,則處理進入到步驟S807中的頁緩沖器方法的順序設(shè) 置處理以及步驟S808中的頁緩沖器方法的中間緩沖器設(shè)置處理。另一方面,如果選擇了帶 緩沖器方法,則處理進入到步驟S809中的帶緩沖器方法的順序設(shè)置處理以及步驟S810中 的帶緩沖器方法的中間緩沖器設(shè)置處理。在步驟S807中的頁緩沖器方法的順序設(shè)置處理或步驟S809中的帶緩沖器方法的 順序設(shè)置處理中,CPU 68在順序控制單元109的順序信息設(shè)置單元111中設(shè)置順序信息。 順序信息是規(guī)定要分時處理的各個計算處理單位(本實施例中的各行)的順序操作的表信 息,并且被保持在RAM等中。注意,順序信息被存儲在RAM 70中,并且CPU 68將順序信息 寫入到CNN處理單元63。圖IOA和圖IOB示出了順序信息表的示例。圖IOA示出了當(dāng)通過帶緩沖器方法執(zhí) 行圖14所示的CNN網(wǎng)絡(luò)的處理時的順序。圖IOB示出了當(dāng)通過頁緩沖器方法執(zhí)行圖14所 示的CNN網(wǎng)絡(luò)的處理時的順序?!绊樞蚓幪枴笔潜硎踞槍Ω餍械奶幚眄樞虻木幪?,并且由于 數(shù)字對應(yīng)于表的排列索引(array Index),因此需要實際保持數(shù)字。“處理節(jié)點編號”表示 圖14中的處理節(jié)點編號,即對應(yīng)于順序編號的邏輯執(zhí)行處理節(jié)點。也就是說,在順序編號 “1”的情況下,對第1處理節(jié)點執(zhí)行計算處理,而在順序編號“2”的情況下,執(zhí)行第2處理節(jié) 點的行單位計算處理?!疤幚硇小北硎就ㄟ^關(guān)注順序編號的處理要從關(guān)注處理節(jié)點輸出的行 的位置。各個處理節(jié)點的處理行從使用圖9描述的“處理開始行”依次開始,并且在每次完 成一行處理時遞增。因此,可以與本實施例不同,將當(dāng)前處理行存儲在寄存器等中而不用規(guī) 定與表中的順序編號相對應(yīng)的編號。圖IOA示出了在帶緩沖器方法的情況下的順序信息表的示例,并且每次完成一行 單位處理時切換處理節(jié)點。例如,一直到順序編號“21”,執(zhí)行處理節(jié)點編號“1”到“3”的計 算,并且在順序編號“22”開始處理節(jié)點編號“4”的處理。這是因為直到順序編號“21”為 止,已經(jīng)計算了處理節(jié)點編號“4”的一行的計算處理所需的參照圖像。以這種方式,在帶緩 沖器方法中,由于從準備要計算的處理節(jié)點迅速依次執(zhí)行行單位計算,因此能夠針對各行 依次釋放要參照的緩沖器。結(jié)果,中間緩沖器可以構(gòu)造成具有最小需要循環(huán)數(shù)的環(huán)形緩沖器。圖IOB示出了在頁緩沖器方法的情況下的順序信息表的示例。連續(xù)執(zhí)行特定處理 節(jié)點的單位計算,并且在針對整個有效區(qū)域完成該特定處理節(jié)點的計算之后,開始下一處 理節(jié)點的計算。這樣,在圖9和圖14所示的CNN網(wǎng)絡(luò)中,當(dāng)完成例如處理節(jié)點編號“4”和 “5”的整個有效區(qū)域的計算之后,能夠避免對處理節(jié)點編號“1”到“3”的輸出分配中間緩沖 器區(qū)域的必要。因此,在直到最后層的計算完成之前的時刻,能夠釋放這些緩沖器區(qū)域并且 能夠?qū)⑦@些緩沖器區(qū)域分配用于處理節(jié)點編號“7”、“8”和“9”的輸出。在步驟S808中的基于頁緩沖器方法的中間緩沖器設(shè)置處理或在步驟S810中的基 于帶緩沖器方法的中間緩沖器設(shè)置處理中,為各個處理節(jié)點分配所需的中間緩沖器區(qū)域。 通過在與邏輯處理節(jié)點數(shù)量相同的寄存器組(環(huán)形緩沖器設(shè)置單元104-1到104-n)中設(shè)置值來實現(xiàn)該處理。在圖14和圖9所示的網(wǎng)絡(luò)結(jié)構(gòu)的情況下,需要在8個環(huán)形緩沖器設(shè)置 單元104-1到104-8中設(shè)置預(yù)定值。在各個環(huán)形大小設(shè)置單元106中,設(shè)置對應(yīng)的邏輯處理節(jié)點的環(huán)形緩沖器的高度 (環(huán)形計數(shù)器的循環(huán)數(shù))。在帶緩沖器方法的情況下,該循環(huán)數(shù)與參照關(guān)注處理節(jié)點的輸出 的下一層的處理節(jié)點(鄰接的上層處理節(jié)點)的卷積核的最大高度相對應(yīng)。另一方面,在 頁緩沖器方法的情況下,環(huán)形大小設(shè)置單元106中設(shè)置的環(huán)形緩沖器的高度與輸入圖像的 行數(shù)(或者各個處理節(jié)點的有效區(qū)域行數(shù))相等,并且使用該環(huán)形緩沖器而實際上不用使 其循環(huán)。在各個偏移地址設(shè)置單元107中,設(shè)置對應(yīng)的處理節(jié)點的環(huán)形緩沖器開始地址。
圖IlA和圖IlB是示出在實現(xiàn)圖14所示的網(wǎng)絡(luò)時處理節(jié)點、偏移地址和環(huán)形緩沖 器高度之間的關(guān)系的示例的存儲器映射(memory map)。圖IlA示出了帶緩沖器方法的情況 下的存儲器映射,圖IlB示出了頁緩沖器方法的情況下的存儲器映射。ADRx (χ 0到8)對 應(yīng)于偏移地址,BHx (X:0到3)對應(yīng)于環(huán)形緩沖器的高度(循環(huán)數(shù))。IX表示輸入圖像數(shù)據(jù) 的寬度。在圖IlA和圖IlB中,用于第0處理節(jié)點的區(qū)域是用于保持輸入圖像數(shù)據(jù)的頁緩 沖器區(qū)域。也就是說,BHO等于輸入圖像數(shù)據(jù)的高度Ιγ。在本實施例中,在BHl中設(shè)置下一 層(第2層)的第4處理節(jié)點和第5處理節(jié)點的核大小中的較大的一個,即圖9中的結(jié)構(gòu) 信息表中的9行的大小。同樣地,在ΒΗ2中設(shè)置13行的大小,在ΒΗ3中設(shè)置17行的大小。 另一方面,在頁緩沖器方法的情況下,將所有區(qū)域的高度設(shè)置為ΒΗ0,并且某些區(qū)域被多個 處理節(jié)點使用。在本實施例中,存儲器102被分割成預(yù)定區(qū)域,并且各個區(qū)域用作具有不同 大小的環(huán)形緩沖器或幀緩沖器。通過上述各種設(shè)置處理,確定要在步驟S814(稍后描述)中執(zhí)行的CNN計算處理 中的網(wǎng)絡(luò)計算處理的執(zhí)行順序。也就是說,根據(jù)所選擇的中間緩沖器分配方法(上述示例 中的帶緩沖器方法和頁緩沖器方法中的一種),來確定網(wǎng)絡(luò)計算處理中的處理節(jié)點的執(zhí)行 順序。在完成上述各種處理時,從步驟S811開始,CPU 68依次向圖像輸入單元61、預(yù)處理 單元62和CNN處理單元63發(fā)出處理開始指令。在步驟S811中,從CPU 68接收到處理開始指令的圖像輸入單元61獲取1幀的圖 像數(shù)據(jù),并將其存儲在內(nèi)部緩沖器(未示出)中。在完成圖像數(shù)據(jù)的存儲之后,圖像輸入單 元61對CPU 68生成圖像獲取結(jié)束中斷。在檢測到該中斷時,CPU 68啟動DMAC 66以向預(yù) 處理單元62的內(nèi)部存儲器(未示出)傳輸所獲取的圖像數(shù)據(jù)。在完成圖像數(shù)據(jù)的傳輸時, 預(yù)處理單元62開始預(yù)處理。預(yù)處理單元62根據(jù)例如預(yù)先指定的對比度校正信息來校正圖 像數(shù)據(jù)的對比度。在完成校正處理時,預(yù)處理單元62對CPU 68生成中斷。在檢測到中斷 時,CPU 68再次啟動DMAC 66以將預(yù)處理單元62校正過的圖像數(shù)據(jù)傳輸?shù)紺NN處理單元 63中的存儲器102的輸入圖像緩沖器(對應(yīng)于圖IlA和圖IlB中的第0處理節(jié)點區(qū)域)。在步驟S812中,CPU 68設(shè)置分割處理計數(shù)器。在當(dāng)執(zhí)行上述步驟S804中的中間 緩沖器分配方法的選擇處理時、指定要分割輸入圖像(處理圖像)的情況下,該計數(shù)器取大 于1的值。在不進行分割的情況下,計數(shù)器設(shè)置為1。在步驟S813中,CPU 68將不進行分 割的情況下的整個圖像區(qū)域或進行分割的情況下的第一處理區(qū)域(例如圖25D和圖25E中 的任意一者)設(shè)置為處理區(qū)域。在步驟S814中,CPU 68將計算開始觸發(fā)器發(fā)送給CNN處理單元63,由此開始檢測 處理。下面將參照圖27的流程圖描述CNN處理單元63中的硬件處理。
在步驟S2701中,順序控制單元109確定處理節(jié)點。順序控制單元109通過從針 對各行單位計算的上端條目(upper entry)開始跟蹤上述順序信息設(shè)置單元111中描述的 順序信息表,確定每輪處理的處理節(jié)點。在圖IOA所示的示例的情況下,順序控制單元109 選擇第一輪順序的處理編號“1”。順序控制單元109具有對順序輪數(shù)進行計數(shù)的順序計數(shù) 器,并且針對各個順序單位(在該情況下為針對行單位的處理)將順序計數(shù)器累加。該計 數(shù)器具有初始值“1”,并且能夠用作圖IOA的順序信息表的“Index(索引)”。也就是說,順 序控制單元109使用順序計數(shù)器作為地址,參照順序信息表(圖10A)來確定要處理的處理 節(jié)點。在步驟S2702中,從存儲器102中讀出處理節(jié)點的計算所需的參照數(shù)據(jù)。更具體 地說,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108根據(jù)從順序控制單元109輸出的順序指令信息,來選擇與參照 數(shù)據(jù)對應(yīng)的環(huán)形緩沖器設(shè)置單元104。也就是說,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108選擇環(huán)形緩沖器設(shè) 置單元104-1到104-n中的一個。例如,如果在步驟S2701中選擇了第1處理節(jié)點,則順序 控制單元109根據(jù)圖9所示的網(wǎng)絡(luò)結(jié)構(gòu)信息表的內(nèi)容確定“連接節(jié)點數(shù)量=1”、“連接源處 理節(jié)點=第0處理節(jié)點”以及“計算類型=1”。網(wǎng)絡(luò)結(jié)構(gòu)管理單元108根據(jù)該網(wǎng)絡(luò)結(jié)構(gòu)信 息表的內(nèi)容向選擇器1121和1122輸出節(jié)點選擇信號,以選擇與要參照的環(huán)形緩沖器對應(yīng) 的環(huán)形緩沖器設(shè)置單元的輸出。例如,由于第一輪順序的對象處理節(jié)點是第1處理節(jié)點,因 此,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108輸出與作為第1處理節(jié)點的鄰接下層節(jié)點的第0處理節(jié)點對應(yīng) 的選擇信號。存儲器訪問控制單元103根據(jù)所選擇的環(huán)形緩沖器設(shè)置單元的信息(在這種 情況下,為與第0處理節(jié)點對應(yīng)的環(huán)形計數(shù)器值和偏移地址值),生成要讀出的存儲器的開 始地址。圖16是用于說明存儲器訪問控制單元103的內(nèi)部配置的框圖。圖15是用于說明 存儲器訪問控制單元103的參照數(shù)據(jù)讀出操作的圖。參照圖15,附圖標記1501代表帶緩沖器方法中的環(huán)形緩沖器;附圖標記1502代 表與要計算的卷積核的參照窗口相對應(yīng)的大?。徊⑶腋綀D標記1503代表用于說明卷積核 的加權(quán)系數(shù)陣列組的狀態(tài)的表。下面將說明卷積核大小為6X6的情形。在加權(quán)系數(shù)陣列 組1503中,WOO到W05表示第1行的數(shù)據(jù)排列的加權(quán)系數(shù)陣列,WlO到W15表示第2行的數(shù) 據(jù)排列的加權(quán)系數(shù)陣列,并且類似地列出了針對各個數(shù)據(jù)排列的加權(quán)系數(shù)陣列。在執(zhí)行卷 積計算時,執(zhí)行系數(shù)值和對應(yīng)位置處的參照數(shù)據(jù)的積和計算處理?!皩挾取北硎咎卣髅娴膶挾?即,在本實施例的情況下,其對應(yīng)于輸入圖像數(shù)據(jù)的寬 度Ix),并且L3到L8表示特征面的第3行到第8行的行數(shù)據(jù)。Al到A6表示對應(yīng)行的開始 存儲器地址。在存儲器訪問控制單元103中,控制器1601根據(jù)從網(wǎng)絡(luò)結(jié)構(gòu)管理單元108輸出的 操作控制信號,對各個處理單元和存儲器生成命令信號(讀/寫控制信號)。附圖標記1602 代表列計數(shù)器,其表示等于在當(dāng)前計算中使用的核大小的參照窗口 1502(圖15中的虛線框 表示的范圍)在數(shù)據(jù)緩沖器中的位置(水平位置)。加法器1603將地址轉(zhuǎn)換器1605生成 的行開始地址Al到A6和列計數(shù)器1602以及窗口計數(shù)器1607(稍后描述)的計數(shù)器值相 力口,由此生成訪問環(huán)形緩沖器中的各行中數(shù)據(jù)所需的存儲器地址。附圖標記1607代表窗口 計數(shù)器,其是用于針對參照范圍的各行讀出在水平方向上連續(xù)的參照像素的參照窗口寬度 (對應(yīng)于核寬度)計數(shù)器。在對與參照窗口寬度對應(yīng)的像素進行計數(shù)時,窗口計數(shù)器1607被重置為“0”。注意,在每次改變計算類型時,根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)管理單元108保持的網(wǎng)絡(luò)結(jié)構(gòu) 信息(圖9)的內(nèi)容,來設(shè)置列計數(shù)器1602和窗口計數(shù)器1607。更具體地說,存儲器地址取通過將地址轉(zhuǎn)換器1605生成的行開始地址、指定參照 窗口的列位置的列計數(shù)器1602的計數(shù)器值以及來自用于指定參照窗口內(nèi)的像素位置的窗 口計數(shù)器1607的輸出相加而獲得的值。存儲器訪問控制單元103將以這種方式生成的存 儲器地址依次輸出到存儲器102。例如,地址轉(zhuǎn)換器1605從偏移地址設(shè)置單元107接收分配給各個處理節(jié)點的偏移 地址,并且從環(huán)形計數(shù)器105接收最后行計數(shù)器值。地址轉(zhuǎn)換器1605依次輸出核高度的緩 沖器中的各行的開始地址A1到A6,以使由最后行計數(shù)器值表示的行作為垂直方向上的最 后位置。注意,在圖15所示的帶緩沖器方法的情況下,最后行計數(shù)器值與環(huán)形計數(shù)器值相 匹配,并且表示最新行在環(huán)形緩沖器中的存儲位置。通過從最后行計數(shù)器值往回計算,從存 儲L3的行的開始地址(即圖15的示例中的A3)起,按照A4、A5、A6、A1和A2的順序依次輸 出地址。盡管未示出,但是在頁緩沖器方法的情況下,針對各順序,將通過把核高度(參照 數(shù)據(jù)高度)的1/2(截尾取整)加到圖10A和圖10B所示的處理行編號中而獲得的值,用作 最后行計數(shù)器值。注意,在針對一行來輸入數(shù)據(jù)時,環(huán)形計數(shù)器遞增,并且地址轉(zhuǎn)換器1605 從環(huán)形計數(shù)器接收最后行計數(shù)器值。因此,在每次對核寬度進行計數(shù)時,地址轉(zhuǎn)換器1605 生成下一行的開始地址。雙向控制器1604是對存儲器數(shù)據(jù)總線執(zhí)行雙向控制的緩沖器,并且根據(jù)從控制 器1601輸出的控制信號對數(shù)據(jù)總線進行雙向控制。附圖標記1606代表臨時保持卷積計算 所需的參照數(shù)據(jù)的高速緩沖存儲器(下面將稱作參照數(shù)據(jù)高速緩存)。基于上述地址轉(zhuǎn)換 結(jié)果獲得的參照窗口內(nèi)的參照數(shù)據(jù)被存儲在參照數(shù)據(jù)高速緩存1606中??刂破?601通過 在更新窗口計數(shù)器1607時控制參照數(shù)據(jù)高度緩存1606來將在列方向上連續(xù)的參照數(shù)據(jù)進 行高速緩存。根據(jù)地址轉(zhuǎn)換器1605輸出的開始地址的輸出順序,參照數(shù)據(jù)高速緩存1606 按照原始正常行的順序存儲數(shù)據(jù)。如上所述當(dāng)完成存儲器訪問控制單元103進行的從存儲器102到高速緩存中的參 照數(shù)據(jù)組的讀出處理時,處理進入步驟S2703。在步驟S2703中,計算單元101開始卷積計 算處理。網(wǎng)絡(luò)結(jié)構(gòu)管理單元108根據(jù)記錄在結(jié)構(gòu)信息表中的“計算類型”信息(對應(yīng)于核 選擇信號)指定計算單元101的加權(quán)系數(shù),并驅(qū)動計算單元101。計算單元101的乘法器 1201讀出存儲在存儲器訪問控制單元103的參照數(shù)據(jù)高速緩存1606中的參照數(shù)據(jù),并使用 計算類型信息指定的加權(quán)系數(shù)執(zhí)行卷積計算處理。在步驟S2704中,計算單元101的累積 加法器1202對卷積計算處理的計算結(jié)果進行累積相加。在步驟S2705中檢查是否針對所有連接源處理節(jié)點的參照數(shù)據(jù)執(zhí)行了卷積計算 處理。如果仍然存在要執(zhí)行卷積計算的參照數(shù)據(jù),則處理返回到步驟S2702。例如,在圖9所 示的示例中,當(dāng)處理對象節(jié)點是第4處理節(jié)點時,連接源節(jié)點的數(shù)量是“3”。在這種情況下, 依次執(zhí)行針對第1、第2和第3處理節(jié)點的結(jié)果的卷積計算處理,并且由累積加法器1202對 計算結(jié)果進行累積和保持。針對各個處理節(jié)點的參照數(shù)據(jù)的讀出操作和計算順序與上述方 法中的相同。也就是說,存儲器訪問控制單元103根據(jù)諸如針對各個處理節(jié)點而異的環(huán)形 計數(shù)器值、偏移地址值等的信息,將所需的參照數(shù)據(jù)組從存儲器102讀出到參照數(shù)據(jù)高速 緩存1606中。然后,計算單元101針對高速緩存數(shù)據(jù)執(zhí)行卷積計算。
在完成針對所有連接源節(jié)點的計算時,處理從步驟S2705進入到步驟S2706。在步 驟S2706中,非線性處理單元1203對累積加法器1202的輸出進行非線性轉(zhuǎn)換。在步驟S2707中,CNN處理單元63將計算單元101獲得的非線性轉(zhuǎn)換結(jié)果存儲到 存儲器102中。更具體地說,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108選擇與自身處理節(jié)點相關(guān)聯(lián)的環(huán)形緩 沖器設(shè)置單元104。例如,在計算第1處理節(jié)點時,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108選擇與第1處理 節(jié)點對應(yīng)的環(huán)形緩沖器設(shè)置單元104。存儲器訪問控制單元103生成存儲器地址,以使由指 定的環(huán)形緩沖器設(shè)置單元104的環(huán)形計數(shù)器105表示的行的下一行作為開始地址。即使在 頁緩沖器方法中,環(huán)形計數(shù)器也總是表示最新存儲的行號。注意,控制器1601在寫操作時 對窗口計數(shù)器1607進行初始化。存儲器訪問控制單元103在所生成的開始地址處寫入計 算結(jié)果。在完成寫處理時,存儲器訪問控制單元103使列計數(shù)器1602的值遞增1。當(dāng)每次 寫入一個計算結(jié)果時,使列計數(shù)器1602遞增。因此,在下一處理時,讀出偏移了 1列(1像 素)的區(qū)域的參照數(shù)據(jù)組。圖17是例示上述與網(wǎng)絡(luò)結(jié)構(gòu)管理單元108、存儲器訪問控制單元103和計算單元 101對應(yīng)的計算狀態(tài)的時序圖。上端部分示出了網(wǎng)絡(luò)結(jié)構(gòu)管理單元108的操作,并且存儲 器訪問控制單元103和計算單元101根據(jù)來自網(wǎng)絡(luò)結(jié)構(gòu)管理單元108的指令執(zhí)行它們的處理。如上所述,在步驟S2701中,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108根據(jù)來自順序控制單元109的 順序控制指令信息選擇處理節(jié)點(1701 選擇處理節(jié)點)。網(wǎng)絡(luò)結(jié)構(gòu)管理單元108參照網(wǎng)絡(luò) 結(jié)構(gòu)信息表來設(shè)置連接節(jié)點數(shù)量(1702 設(shè)置連接數(shù)量)。接著,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108將 與所選擇的參照節(jié)點相關(guān)聯(lián)的信息(環(huán)形計數(shù)器值、偏移地址值等)通知給存儲器訪問控 制單元103,并指示單元103讀出參照數(shù)據(jù)(1703 選擇參照節(jié)點1)。存儲器訪問控制單元 103使用所通知的環(huán)形計數(shù)器值和偏移地址值從存儲器102讀出參照數(shù)據(jù),并將其高速緩 存在參照數(shù)據(jù)高速緩存1606中(1704 生成開始行地址,1705 獲取開始行數(shù)據(jù))。在存儲 器訪問控制單元103完成參照數(shù)據(jù)讀出操作時,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108指示計算單元101 開始計算。計算單元101將高速緩存在參照數(shù)據(jù)高速緩存1606中的參照數(shù)據(jù)讀出,并執(zhí)行 卷積計算處理(1706 讀出高速緩存數(shù)據(jù),1707 卷積計算處理)。在計算單元101完成卷積 計算處理時,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108針對下一參照節(jié)點重復(fù)相同的處理(1709 選擇參照節(jié) 點2,1710 生成下一行的地址,1711 獲取下一行數(shù)據(jù),1712 讀出高速緩存數(shù)據(jù),1713 卷 積計算處理)。在完成對所有參照節(jié)點的卷積計算時,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108控制計算單元 101執(zhí)行非線性轉(zhuǎn)換處理(1714 非線性轉(zhuǎn)換),以獲得特征面上一個像素的計算結(jié)果。為 了將該計算結(jié)果存儲在存儲器102中,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108將與處理節(jié)點相關(guān)聯(lián)的信息 (環(huán)形計數(shù)器值、偏移地址值等)通知給存儲器訪問控制單元103,并指示單元103寫入計 算結(jié)果。存儲器訪問控制單元103使用所通知的環(huán)形計數(shù)器值和偏移地址值將針對1行的 計算結(jié)果寫入到存儲器102中(1715 選擇處理節(jié)點,1716 生成開始行地址,1717 存儲計 算結(jié)果)。然后,存儲器訪問控制單元103使列計數(shù)器1602遞增(1718 更新列窗口)。在通過重復(fù)上述處理而完成針對1行的處理(S2708)之后,處理從步驟S2708進 入到步驟S2709。在步驟S2709中,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108使對應(yīng)于處理期間的計算節(jié)點的 環(huán)形緩沖器設(shè)置單元104的環(huán)形計數(shù)器105遞增。在每次完成針對1行的處理時更新環(huán)形 計數(shù)器105。注意,當(dāng)環(huán)形計數(shù)器105的計數(shù)值變?yōu)榈扔诃h(huán)形大小設(shè)置單元106的值時,將環(huán)形計數(shù)器105重置為0。也就是說,參照環(huán)形大小來循環(huán)環(huán)形計數(shù)器105的計數(shù)值。但 是,在頁緩沖器方法的情況下,由于環(huán)形大小設(shè)置單元106的值等于輸入圖像大小高度,因 此實際上不將環(huán)形計數(shù)器重置為0。以這種方式,通過針對各個邏輯處理節(jié)點而根據(jù)環(huán)形計 數(shù)器105的操作來處理對存儲器102的訪問,能夠?qū)⒋鎯ζ?02上的預(yù)定區(qū)域獨立地用作 具有不同大小(循環(huán)數(shù))的多個環(huán)形緩沖器。也就是說,將圖11A和圖11B所示的存儲器 映射的區(qū)域分別用作環(huán)形緩沖器。在步驟S2710中CNN處理單元63檢查是否完成了所有處理節(jié)點的計算。在這種 情況下,檢查是否完成了順序信息表(圖10A或圖10B)中描述的最后順序。注意,順序控 制單元109可以通過將順序計數(shù)器(未示出)與預(yù)先設(shè)置的順序數(shù)進行比較來檢查是否完 成。作為另一種選擇,順序控制單元109可以通過檢測附加在表的最后的預(yù)定“終止”數(shù)據(jù) 來檢查是否完成。如果計算還沒完成,則處理從步驟S2710返回到步驟S2701。CNN處理單 元63更新順序計數(shù)器,并參照與計數(shù)值對應(yīng)的表獲取要處理的下一處理節(jié)點編號。在確 定了處理節(jié)點之后,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108根據(jù)順序指令信息開始針對下一處理節(jié)點的處 理。在處理不同的處理節(jié)點時,只有與環(huán)形緩沖器和計算相關(guān)聯(lián)的各種參數(shù)是不同的,并且 重復(fù)與上述處理相同的操作。注意,如圖10A或圖10B所示,在從下層開始依次將特征數(shù)據(jù)存儲到環(huán)形緩沖器中 時進行計算處理。但是,帶緩沖器方法和頁緩沖器方法中的處理順序不同。通過重復(fù)步驟S2701到步驟S2710中的處理,在針對各行執(zhí)行分時處理時執(zhí)行基 于預(yù)定CNN網(wǎng)絡(luò)的各特征面的計算。在所有順序完成時,在步驟S2711中,CNN處理單元63 對CPU 68生成中斷。返回參照圖8A和圖8B,在檢測到中斷時,CPU 68確定步驟S814中的CNN計算處 理完成,并執(zhí)行步驟S815中的輸出圖像的獲取處理。在該處理中,CPU 68啟動DMAC 66以 將所需的計算結(jié)果從CNN處理單元63傳輸?shù)絉AM 70。在本實施例中,采用最后層的第8處 理節(jié)點的輸出結(jié)果。注意,如果步驟S812中設(shè)置的分割處理計數(shù)器大于“1”(在對輸入圖 像進行分割并處理時),將數(shù)據(jù)傳輸?shù)絉AM 70上保證的輸出數(shù)據(jù)存儲區(qū)域中的、與在步驟 S804中確定的區(qū)域?qū)?yīng)的位置。在步驟S816中,CPU 68使分割計數(shù)器遞減。在步驟S817中,CPU 68重復(fù)從步驟 S813開始的一系列處理,直到分割計數(shù)器變?yōu)?為止。結(jié)果,最終將與輸入圖像的一幀對應(yīng) 的CNN計算結(jié)果存儲在RAM 70中。在將計算結(jié)果存儲在RAM 70中之后,在步驟S818中CPU 68執(zhí)行檢查處理。在該 檢查處理中,CPU 68使用作為存儲在RAM 70中的最后層處理節(jié)點的輸出的特征數(shù)據(jù),來檢 查對象的檢測狀態(tài)。例如,執(zhí)行使用例如通過預(yù)定閾值對特征數(shù)據(jù)進行二值化并獲取重心 的方法來檢測對象的有/無的檢查處理。這樣,完成對于輸入圖像的一個檢測對象的檢測處理。如果不執(zhí)行針對下一輸入 圖像的處理或檢測對象改變之后的處理,則該處理結(jié)束(步驟S819)。另一方面,如果檢測 對象改變,則處理從步驟S820返回到步驟S802以重新設(shè)置各種參數(shù)。通過重復(fù)上述處理, 分別更新對應(yīng)于檢測對象的加權(quán)系數(shù)、網(wǎng)絡(luò)結(jié)構(gòu)信息和順序信息。此外,根據(jù)這些新的加權(quán) 系數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)信息,來重新設(shè)置環(huán)形緩沖器設(shè)置單元104的環(huán)形計數(shù)器。結(jié)果,邏輯處理 節(jié)點根據(jù)執(zhí)行處理時的檢測對象,將存儲器102映射為具有不同大小的環(huán)形計數(shù)器。
另一方面,如果在步驟S820中檢測對象未改變,則處理進入到步驟S821。在步驟 S821和S822中,CPU 68對環(huán)形緩沖器設(shè)置單元104-1到104_n的環(huán)形計數(shù)器105、順序控 制單元109的內(nèi)部計數(shù)器等進行初始化。處理返回到步驟S811以重新開始從獲取圖像數(shù) 據(jù)開始的處理。也就是說,CPU 68針對下一幀圖像執(zhí)行相同的檢測處理。如上所述,根據(jù)第一實施例,與邏輯處理節(jié)點相對應(yīng)地設(shè)置用于控制環(huán)形緩沖器 的環(huán)形緩沖器設(shè)置單元104,并且根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)和期望的目的設(shè)置環(huán)形緩沖器的大小(循 環(huán)數(shù))。在該配置中,能夠基于網(wǎng)絡(luò)結(jié)構(gòu)選擇多個中間緩沖器分配方法(頁緩沖器方法、帶 緩沖器方法)中的優(yōu)選方法。通過該配置,能夠使用同一硬件來處理諸如卷積神經(jīng)網(wǎng)絡(luò)等 的多種分層計算處理。此外,由于對多個中間緩沖器分配方法設(shè)置了優(yōu)先順序,因此,能夠 選擇在相同條件下能夠進行更高速計算的方法。當(dāng)所有中間緩沖器分配方法均不能使大小 落在預(yù)定范圍之內(nèi)時,通過分割輸入圖像來執(zhí)行區(qū)塊處理,由此處理更多類型的分層計算?!吹诙嵤├翟诘谝粚嵤├?,對能夠針對所有邏輯處理節(jié)點設(shè)置環(huán)形緩沖器大小的配置進行 了說明。但是,本發(fā)明不限于此。例如,可以采用針對各層設(shè)置環(huán)形緩沖器大小的配置。第 二實施例將說明這種配置。圖19示出了在針對各層規(guī)定環(huán)形緩沖器大小時的CNN處理單元63的配置。圖18 示出了由圖19所示的CNN處理單元63實現(xiàn)的CNN網(wǎng)絡(luò)的結(jié)構(gòu)的示例。圖18示出了環(huán)形 緩沖器僅針對各層具有不同大小的狀態(tài)。也就是說,用于存儲第1層1806的計算結(jié)果的存 儲區(qū)域1803a到1803c以及用于存儲第2層1810的計算結(jié)果的存儲區(qū)域1807a和1807b 分別由具有相同大小的環(huán)形緩沖器構(gòu)成。從圖18中可以看出,存儲區(qū)域1803c的緩沖器大 小與圖7不同。下面將說明與第一實施例的不同之處。第二實施例的CNN處理單元63具有針對 各個邏輯處理節(jié)點的環(huán)形緩沖器設(shè)置單元194-1到194-n。在下文中,將環(huán)形緩沖器設(shè)置單 元194-1到194-n中的任意一個描述為環(huán)形緩沖器設(shè)置單元194。各個環(huán)形緩沖器設(shè)置單 元194包括與第一實施例中的環(huán)形計數(shù)器105和偏移地址設(shè)置單元107對應(yīng)的環(huán)形計數(shù)器 1951和偏移地址設(shè)置單元1971。但是,第二實施例的環(huán)形緩沖器設(shè)置單元194不具有第一 實施例的環(huán)形大小設(shè)置單元104的環(huán)形大小設(shè)置單元106。相反,根據(jù)第二實施例的CNN處 理單元63包括針對分層網(wǎng)絡(luò)計算的各邏輯層的環(huán)形大小設(shè)置單元。在圖19的示例中,CNN 處理單元63包括兩個環(huán)形大小設(shè)置單元1961a和1961b以處理層數(shù)達到3的計算。環(huán)形大小設(shè)置單元1961a和1961b分別連接到多個環(huán)形緩沖器設(shè)置單元194_1到 194-n。在本示例中,環(huán)形大小設(shè)置單元1961a連接到與第1層1806的處理節(jié)點對應(yīng)的多 個環(huán)形緩沖器設(shè)置單元194。環(huán)形大小設(shè)置單元1961b連接到與第2層1810的處理節(jié)點對 應(yīng)的多個環(huán)形緩沖器設(shè)置單元194。也就是說,將環(huán)形緩沖器設(shè)置單元194-1到194-n與環(huán) 形大小設(shè)置單元1961a和1961b對應(yīng)地進行分組。圖20示出了環(huán)形大小設(shè)置單元1961a和1961b與環(huán)形緩沖器設(shè)置單元194之間 的關(guān)系。作為用于控制第1層1806的環(huán)形緩沖器的環(huán)形緩沖器設(shè)置單元194,選擇與環(huán)形 大小設(shè)置單元1961a連接的那些環(huán)形緩沖器設(shè)置單元。另一方面,作為用于控制第2層的 環(huán)形緩沖器的環(huán)形緩沖器設(shè)置單元194,選擇與環(huán)形大小設(shè)置單元1961b連接的那些環(huán)形 緩沖器設(shè)置單元。在計算期間,根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)管理單元108保持的管理表信息,來選擇與處理節(jié)點對應(yīng)的環(huán)形緩沖器設(shè)置單元194。下面使用與處理順序相關(guān)聯(lián)的圖8A和圖8B說明與第一實施例的不同之處。在第 二實施例中,在步驟S808和S810中,針對各層進行環(huán)形大小設(shè)置單元1961a和1961b中的 設(shè)置。從針對各層分組的環(huán)形緩沖器設(shè)置單元中選擇對應(yīng)于要構(gòu)造的網(wǎng)絡(luò)的環(huán)形緩沖器設(shè) 置單元194,并且在所選擇的環(huán)形緩沖器設(shè)置單元中設(shè)置偏移地址。在圖18的網(wǎng)絡(luò)結(jié)構(gòu)中, 分別在環(huán)形大小設(shè)置單元1961a和1961b中設(shè)置與第1層和第2層的環(huán)形緩沖器高度相對 應(yīng)的值。在頁緩沖器方法的情況下,該值與輸入圖像的大小相同(步驟S808)。在帶緩沖器 方法的情況下,該值是下一層的處理節(jié)點的卷積核的最大高度。由于后面的處理與第一實施例中的處理相同,因此省略了對其重復(fù)說明。在處理 圖18所示的網(wǎng)絡(luò)時,網(wǎng)絡(luò)結(jié)構(gòu)管理單元108在基于上述設(shè)置選擇與預(yù)定邏輯處理節(jié)點相對 應(yīng)的環(huán)形緩沖器設(shè)置單元194時使處理前進,由此執(zhí)行與第一實施例中一樣的針對各行的處理。如上所述,根據(jù)第二實施例,由于不是針對各環(huán)形緩沖器設(shè)置單元提供環(huán)形大小 設(shè)置單元,而是針對各層提供環(huán)形大小設(shè)置單元,因此能夠減少構(gòu)成環(huán)形大小設(shè)置單元的 寄存器的數(shù)量?!吹谌龑嵤├翟诘谝缓偷诙嵤├拿枋鲋?,通過硬件實現(xiàn)CNN處理單元63。但是,本發(fā)明還適 用于軟件實現(xiàn)CNN處理單元63。圖21示出了在軟件實現(xiàn)的情況下的配置。在圖21所示的 配置中,從圖6所示的配置中移除了 CNN處理單元63,但是增加了作為可隨機存取的高速存 儲器的RAM 2101。下面將描述不同之處。在從預(yù)處理單元62接收到完成中斷時,CPU 68啟動DMAC 66以將存儲在預(yù)處理 單元62的內(nèi)部存儲器中的校正后的圖像數(shù)據(jù)傳輸?shù)絉AM2101。CPU 68通過軟件來對存儲 在RAM 2101中的圖像數(shù)據(jù)執(zhí)行步驟S2701到S2710中的處理。在這種情況下,CPU 68使 用RAM 2101作為CNN計算處理的操作所需的工作存儲器。也就是說,CPU 68在RAM 2101 上構(gòu)造圖11A或圖11B所示的存儲器映射,并使用與處理節(jié)點對應(yīng)的存儲區(qū)域作為環(huán)形緩 沖器。當(dāng)然,可以像在硬件配置中一樣,通過從帶緩沖器方法和頁緩沖器方法中選擇一種分 配方法來使用環(huán)形緩沖器。注意,將第一實施例的CNN處理單元63中包含的環(huán)形緩沖器設(shè)置單元104等定義 為軟件中的變量,并且在實際中將其分配在RAM 70上。根據(jù)上述第三實施例,與以硬件實現(xiàn)CNN處理單元63的情況一樣,能夠減少處理 所需的緩沖存儲器的數(shù)量。在圖21所示的配置中,可以使用更小的存儲器大小實現(xiàn)RAM 2101。此外,這同樣適用于將RAM 70用作工作存儲器而不準備任何RAM 2101的情況?!雌渌麑嵤├翟谏鲜鰧嵤├?,對使用環(huán)形計數(shù)器針對各行來對存儲器102的預(yù)定連續(xù)區(qū)域進 行循環(huán)時使用存儲器102的預(yù)定連續(xù)區(qū)域的方法進行了說明。但是,本發(fā)明不限于這種特 定存儲器使用方法。例如,可以使用在參照與環(huán)形計數(shù)器對應(yīng)的存儲地址表來針對各預(yù)定 處理單位分配不連續(xù)區(qū)域時執(zhí)行處理的方法。也就是說,在本發(fā)明中指定的環(huán)形緩沖器不 限于狹義的環(huán)形緩沖器或循環(huán)緩沖器。在上述實施例中,說明了根據(jù)順序信息表的內(nèi)容來針對各行分時處理邏輯處理節(jié)點的情況。然而,可以應(yīng)用其他方法。例如,可以使用根據(jù)讀緩沖器和寫緩沖器的使用狀態(tài) 適當(dāng)?shù)匕才乓獔?zhí)行的處理節(jié)點的方法。特別地,當(dāng)選擇頁分配方法時,可以采用將處理單位 自身從行單位切換到頁單位的實現(xiàn)方法。上述實施例介紹了相比帶緩沖器方法來說優(yōu)先選擇頁緩沖器方法的示例。當(dāng)然, 優(yōu)先順序不限于此。例如,當(dāng)關(guān)注直到輸出計算結(jié)果組數(shù)據(jù)的第1行之前的等待時間時,可 以優(yōu)先使用帶緩沖器方法。例如,當(dāng)在輸出所有計算結(jié)果之前中止計算時,這種選擇是有利 的。當(dāng)優(yōu)先使用帶緩沖器方法時,可以用圖26的步驟S2606到S2608中的處理替代步驟 S2603到S2605中的處理。中間緩沖器分配方法不限于上述方法,可以使用其他緩沖器分配方法,或者可以 同時使用多種方法。也就是說, 準備多種將用于保持各個處理節(jié)點的計算結(jié)果數(shù)據(jù)的中間緩沖器分配給這些處 理節(jié)點的緩沖器分配方法, 基于網(wǎng)絡(luò)計算的結(jié)構(gòu)計算與這些緩沖器分配方法相關(guān)聯(lián)的網(wǎng)絡(luò)計算所需的存儲 器大小,并且 基于所計算出的存儲器大小選擇多種緩沖器分配方法中的一種。當(dāng)存在多種使計算出的所需存儲器大小變?yōu)榈扔诨蛐∮诳捎糜诖鎯ζ?02的中 間緩沖器的分配的存儲器大小的緩沖器分配方法時,根據(jù)預(yù)定的優(yōu)先順序選擇要使用的緩 沖器分配方法。當(dāng)不存使計算出的所需存儲器大小變?yōu)榈扔诨蛐∮诳捎糜诜峙涞拇鎯ζ鞔?小的緩沖器分配方法時,如上所述對輸入數(shù)據(jù)進行分割和處理。在上述實施例中,以與輸入層相同的分辨率保持特征提取結(jié)果。然而,本發(fā)明可以 同樣應(yīng)用于對輸入面二次抽樣特征面的情況。在上述實施例中,說明了針對作為最有效的處理單位的各行執(zhí)行順序控制的情 況。然而,本發(fā)明不限于這種特定處理單位。例如,本發(fā)明可以應(yīng)用于本領(lǐng)域技術(shù)人員已知 的針對不多于1行的各單位或針對各塊執(zhí)行順序控制的情況。上述實施例說明了對卷積神經(jīng)網(wǎng)絡(luò)計算的應(yīng)用。然而,本發(fā)明不限于這種特定應(yīng) 用。本發(fā)明可以應(yīng)用于需要預(yù)定參照區(qū)域的各種分層計算處理。此外,本發(fā)明不限于二維計算。在上述實施例中,對將各環(huán)形緩沖器設(shè)置單元104-1到104-n設(shè)置為寄存器的情 況進行了說明。然而,環(huán)形緩沖器設(shè)置單元可以作為存儲器被其他參數(shù)存儲器和工作存儲 器102共享。在這種情況下,能夠更有效地使用電路資源。也就是說,可以實現(xiàn)更靈活的網(wǎng) 絡(luò)結(jié)構(gòu)。在上述實施例中,對將所有二維參照數(shù)據(jù)高速緩存在參照數(shù)據(jù)高速緩存1606中 然后啟動計算單元101的情況進行了說明。然而,本發(fā)明不限于此。例如,在卷積計算等的 情況下,可以控制計算單元101以使其針對參照窗口中的各行而被驅(qū)動。在這種情況下,在 響應(yīng)于窗口計數(shù)器1607的遞減而完成連續(xù)列方向上的參照數(shù)據(jù)的讀出處理時,在下一行 的參照數(shù)據(jù)讀出處理開始之前驅(qū)動計算單元101。計算單元101針對讀出的數(shù)據(jù)執(zhí)行卷積 計算。當(dāng)完成計算時,開始下一行的參照數(shù)據(jù)讀出處理。重復(fù)上述處理。在這種情況下,由 于參照數(shù)據(jù)高速緩存大小足以等于參照數(shù)據(jù)寬度大小,因此可以使用更小的高速緩存大小 實現(xiàn)分層計算。
在第二實施例中,說明了針對各層提供環(huán)形大小設(shè)置單元1961a和1961b的情況。作為替代,可以使用針對各層提供環(huán)形緩沖器設(shè)置單元104(或194)的結(jié)構(gòu)。在這種情況 下,控制各環(huán)形計數(shù)器以針對各個分層處理單位進行更新。盡管限制了邏輯處理節(jié)點的操 作順序(需要使用針對層單位的順序),但是能夠進一步縮小電路規(guī)模。在上述實施例中,說明了環(huán)形大小設(shè)置單元可以任意設(shè)置環(huán)形緩沖器大小(當(dāng)環(huán) 形緩沖器包括寄存器或RAM時)的情況。然而可以在所有或部分環(huán)形大小設(shè)置單元中將環(huán) 形緩沖器大小設(shè)置為固定值。詳細描述各實施例。本發(fā)明可以采用以例如系統(tǒng)、裝置、方法、程序、存儲介質(zhì)等的 形式的實施例。更具體地說,本發(fā)明可以應(yīng)用于由多個設(shè)備構(gòu)成的系統(tǒng)或由單個設(shè)備構(gòu)成 的裝置。注意,本發(fā)明包括如下情況通過將軟件程序直接或遠程地提供給系統(tǒng)或裝置,然 后該系統(tǒng)或裝置的計算機讀出并執(zhí)行所提供的程序代碼來實現(xiàn)實施例的上述功能。在這種 情況下要提供的程序是與實施例中所例示的各個流程圖相對應(yīng)的程序。因此,安裝在計算機中的、用于使用計算機實現(xiàn)本發(fā)明的功能處理的程序代碼本 身實現(xiàn)了本發(fā)明。換句話說,本發(fā)明包括用于實現(xiàn)本發(fā)明的功能處理的計算機程序本身。在這種情況下,不特別限制程序的形式,可以使用目標代碼、解釋器執(zhí)行的程序、 要提供給OS的腳本數(shù)據(jù)等,只要他們具有程序的功能即可。作為用于提供計算機程序的計算機可讀存儲介質(zhì),可以使用下面的介質(zhì)。例如, 可以使用軟@盤、硬盤、光盤、磁光盤、MO、CD-ROM、CD-R、CD-RW、磁帶、非易失性存儲卡、ROM、 DVD (DVD-ROM、DVD-R)等。作為另一種程序提供方法,用戶使用客戶端計算機上的瀏覽器建立與因特網(wǎng)上的 主頁的鏈接,并且將本發(fā)明的計算機程序從主頁下載到諸如硬盤等的記錄介質(zhì)上。在這種 情況下,要下載的程序可以是包括自動安裝功能的壓縮文件。此外,可以將形成本發(fā)明的程 序的程序代碼分割為可以從不同的主頁下載的多個文件。換句話說,本發(fā)明包括使多個用 戶通過計算機下載實現(xiàn)本發(fā)明的功能處理所需的程序文件的www服務(wù)器。此外,可以將存儲本發(fā)明的加密程序的諸如CD-ROM等的存儲介質(zhì)送交給用戶。在 這種情況下,允許滿足預(yù)定條件的用戶經(jīng)由因特網(wǎng)從主頁下載用于對加密程序進行解密的 密鑰信息。用戶使用下載的密鑰信息執(zhí)行加密的程序,以將程序安裝在計算機上。當(dāng)計算機執(zhí)行讀出的程序時能夠?qū)崿F(xiàn)上述實施例的功能。此外,可以基于程序的 指令與運行在計算機上的OS等協(xié)作來實現(xiàn)上述實施例的功能。在這種情況下,OS等執(zhí)行 實現(xiàn)上述實施例的功能的部分或全部的實際處理。此外,當(dāng)將從存儲介質(zhì)讀出的程序?qū)懭氲桨惭b在插入到計算機中或連接到計算機 的功能擴展板或功能擴展單元的存儲器中時,可以實現(xiàn)上述實施例的部分或全部功能。在 這種情況下,在將程序?qū)懭氲焦δ軘U展板或功能擴展單元之后,安裝在功能擴展板或功能 擴展單元中的CPU基于程序的指令執(zhí)行部分或全部的實際處理。根據(jù)本發(fā)明,能夠使用有限的存儲器大小高效地實現(xiàn)經(jīng)由網(wǎng)絡(luò)結(jié)構(gòu)連接的多個處 理節(jié)點執(zhí)行的諸如CNN計算等的計算處理。能夠使用有限的存儲器大小最優(yōu)地處理通過連 接計算單元的網(wǎng)絡(luò)類型計算器利用中間計算結(jié)果進行的計算處理。也就是說,能夠使用具 有相同配置的硬件實現(xiàn)多種網(wǎng)絡(luò)類型計算處理。
雖然參照示例性實施例對本發(fā)明進行了說明,但是應(yīng)當(dāng)理解,本發(fā)明不限于所公開的示例性實施例。所附權(quán)利要求的范圍符合最寬的解釋,以使其涵蓋所有這種變形、等同 結(jié)構(gòu)和功能。本申請要求2007年9月26日提交的日本專利申請2007-250063號的優(yōu)先權(quán),其 全部內(nèi)容通過引用并入于此。
權(quán)利要求
一種用于通過網(wǎng)絡(luò)執(zhí)行網(wǎng)絡(luò)計算的計算處理裝置,所述網(wǎng)絡(luò)通過連接多個邏輯處理節(jié)點構(gòu)成,所述計算處理裝置包括計算單元,用于基于所述網(wǎng)絡(luò)的結(jié)構(gòu),針對為存儲器分配用于緩沖器的存儲區(qū)域的多種緩沖器分配方法來計算用于所述緩沖器的存儲區(qū)域的存儲器大小,所述緩沖器用于保持所述多個處理節(jié)點的計算結(jié)果數(shù)據(jù);選擇單元,用于基于所述計算單元計算出的所述存儲器大小選擇所述多種緩沖器分配方法中的一種;以及執(zhí)行單元,用于控制各個處理節(jié)點以使用通過所述選擇單元選擇的所述緩沖器分配方法分配的緩沖器,來執(zhí)行所述網(wǎng)絡(luò)計算中的計算。
2.根據(jù)權(quán)利要求1所述的計算處理裝置,其中,所述網(wǎng)絡(luò)是通過分層連接多個邏輯處 理節(jié)點構(gòu)成的分層網(wǎng)絡(luò)。
3.根據(jù)權(quán)利要求1或2所述的計算處理裝置,該計算處理裝置還包括獲取單元,用于獲取能分配作為所述緩沖器的存儲器大小,其中,所述選擇單元從所述多種緩沖器分配方法中,選擇使得所述計算單元計算出的 所述存儲器大小不大于所述獲取單元獲取到的所述存儲器大小的緩沖器分配方法。
4.根據(jù)權(quán)利要求3所述的計算處理裝置,其中,當(dāng)存在多種使得所述計算單元計算出 的所述存儲器大小不大于所述獲取單元獲取到的所述存儲器大小的緩沖器分配方法時,所 述選擇單元基于預(yù)定的優(yōu)先順序選擇這些緩沖器分配方法中的一種。
5.根據(jù)權(quán)利要求3或4所述的計算處理裝置,該計算處理裝置還包括分割單元,用于在不存在使得所述計算單元計算出的所述存儲器大小不大于所述獲取 單元獲取到的所述存儲器大小的緩沖器分配方法時,對輸入數(shù)據(jù)進行分割,其中,所述選擇單元針對分割后的輸入數(shù)據(jù)中的各個,選擇要在所述網(wǎng)絡(luò)計算中使用 的緩沖器分配方法。
6.根據(jù)權(quán)利要求1所述的計算處理裝置,其中,所述多種緩沖器分配方法包括帶緩沖器方法,其為一個處理節(jié)點分配用于保持部分計算結(jié)果數(shù)據(jù)的緩沖器;以及頁緩沖器方法,其為一個處理節(jié)點分配用于保持針對輸入數(shù)據(jù)的全部計算結(jié)果數(shù)據(jù)的 緩沖器。
7.根據(jù)權(quán)利要求6所述的計算處理裝置,其中,所述計算單元通過將執(zhí)行所述網(wǎng)絡(luò)計 算的所有處理節(jié)點的各個緩沖器的大小設(shè)置為連接在關(guān)注處理節(jié)點之后的處理節(jié)點所需 的數(shù)據(jù)大小、并且將所述緩沖器的大小相加,來計算在使用所述帶緩沖器方法時所述網(wǎng)絡(luò) 計算所需的存儲器大小。
8.根據(jù)權(quán)利要求6或7所述的計算處理裝置,其中,所述計算單元針對分別包括所述網(wǎng) 絡(luò)的結(jié)構(gòu)中包含的兩個鄰接層的各對,計算當(dāng)屬于兩層的所有處理節(jié)點保持針對所述輸入 數(shù)據(jù)的全部計算結(jié)果數(shù)據(jù)時所需的緩沖器的總計大小,并將所述總計大小中最大的大小設(shè) 置為當(dāng)使用所述頁緩沖器方法時所述網(wǎng)絡(luò)計算所需的存儲器大小。
9.根據(jù)權(quán)利要求6至8中的任意一項所述的計算處理裝置,其中,當(dāng)選擇所述帶緩沖器 方法時,所述執(zhí)行單元控制所述多個處理節(jié)點中的各個以執(zhí)行預(yù)定的處理單位,并且所述執(zhí)行單元控制分配給所述多個處理節(jié)點的所述緩沖器,作為通過以與所述處理單 位的計算結(jié)果的大小對應(yīng)的存儲區(qū)域為單位進行循環(huán)而寫入計算結(jié)果的環(huán)形緩沖器。
10.根據(jù)權(quán)利要求6至9中的任意一項所述的計算處理裝置,其中,當(dāng)選擇所述頁緩沖 器方法時,所述執(zhí)行單元在生成屬于一層的所有處理節(jié)點的輸出之后,控制屬于下一層的 處理節(jié)點以開始計算處理,并且所述執(zhí)行單元在生成屬于第N層的所有處理節(jié)點的輸出之后釋放由屬于第N-I層的所 有處理節(jié)點使用的緩沖器區(qū)域,并且將所釋放的緩沖器區(qū)域分配為屬于第N+1層及后續(xù)層 的處理節(jié)點的緩沖器區(qū)域。
11.根據(jù)權(quán)利要求1至10中的任意一項所述的計算處理裝置,其中,所述處理節(jié)點要執(zhí) 行的計算是卷積計算,并且所述網(wǎng)絡(luò)構(gòu)成卷積神經(jīng)網(wǎng)絡(luò)。
12.一種用于通過網(wǎng)絡(luò)執(zhí)行網(wǎng)絡(luò)計算的計算處理方法,所述網(wǎng)絡(luò)通過連接多個邏輯處 理節(jié)點構(gòu)成,所述計算處理方法包括計算步驟,基于所述網(wǎng)絡(luò)的結(jié)構(gòu),針對為存儲器分配用于緩沖器的存儲區(qū)域的多種緩 沖器分配方法來計算所述用于緩沖器的存儲區(qū)域的存儲器大小,所述緩沖器用于保持所述 多個處理節(jié)點的計算結(jié)果數(shù)據(jù);選擇步驟,基于在所述計算步驟中計算出的所述存儲器大小,選擇所述多種緩沖器分 配方法中的一種;以及執(zhí)行步驟,控制各個處理節(jié)點以使用通過在所述選擇步驟中選擇的所述緩沖器分配方 法分配的緩沖器,執(zhí)行所述網(wǎng)絡(luò)計算中的計算。
13.一種使計算機執(zhí)行根據(jù)權(quán)利要求12的計算處理方法的計算機程序。
14.一種計算機可讀存儲介質(zhì),其存儲用于使計算機執(zhí)行根據(jù)權(quán)利要求12的計算處理 方法的計算機程序。
全文摘要
一種計算處理裝置,其通過分層網(wǎng)絡(luò)執(zhí)行網(wǎng)絡(luò)計算,所述分層網(wǎng)絡(luò)通過連接對輸入數(shù)據(jù)執(zhí)行計算以生成計算結(jié)果數(shù)據(jù)的多個邏輯處理節(jié)點構(gòu)成,該計算處理裝置結(jié)合分配用于保持與構(gòu)成網(wǎng)絡(luò)的多個處理節(jié)點對應(yīng)的計算結(jié)果數(shù)據(jù)的中間緩沖器所用的存儲區(qū)域的多種緩沖器分配方法,而基于網(wǎng)絡(luò)計算的結(jié)構(gòu)來計算網(wǎng)絡(luò)計算所需的緩沖器的存儲器大小,并且使用通過基于所計算出的存儲器大小而選擇的所述緩沖器分配方法分配的緩沖器、按照與所述緩沖器分配方法對應(yīng)的執(zhí)行順序執(zhí)行網(wǎng)絡(luò)計算。
文檔編號G06N3/063GK101809597SQ20088010836
公開日2010年8月18日 申請日期2008年9月12日 優(yōu)先權(quán)日2007年9月26日
發(fā)明者伊藤嘉則, 加藤政美, 山本貴久 申請人:佳能株式會社