TW201830295A - 卷積神經網路的池化運算裝置及方法 - Google Patents

卷積神經網路的池化運算裝置及方法 Download PDF

Info

Publication number
TW201830295A
TW201830295A TW106104512A TW106104512A TW201830295A TW 201830295 A TW201830295 A TW 201830295A TW 106104512 A TW106104512 A TW 106104512A TW 106104512 A TW106104512 A TW 106104512A TW 201830295 A TW201830295 A TW 201830295A
Authority
TW
Taiwan
Prior art keywords
pooling
result
buffer
data
window
Prior art date
Application number
TW106104512A
Other languages
English (en)
Other versions
TWI607389B (zh
Inventor
李一雷
杜源
杜力
管延城
劉峻誠
Original Assignee
耐能股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 耐能股份有限公司 filed Critical 耐能股份有限公司
Priority to TW106104512A priority Critical patent/TWI607389B/zh
Priority to US15/802,092 priority patent/US10943166B2/en
Application granted granted Critical
Publication of TWI607389B publication Critical patent/TWI607389B/zh
Publication of TW201830295A publication Critical patent/TW201830295A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

一種卷積神經網路的池化運算方法,包括:讀入一池化窗內至少一排的多個新數據;將新數據進行一第一池化運算以產生至少一個排池化結果;將本次排池化結果存於一緩衝器;將緩衝器內的至少一先前排池化結果及本次排池化結果進行一第二池化運算以產生池化窗的一池化結果。

Description

卷積神經網路的池化運算裝置及方法
本發明係關於一種池化運算方法,特別是關於一種執行最大池化運算的裝置及方法。
卷積神經網路(Convolutional Neural Network,CNN)是一種前饋型神經網路,其通常包含多組的卷積層(convolution layer)及池化層(pooling layer)。卷積層能夠提取輸入數據的局部特徵,而池化層可針對輸入數據某個區域上的特定特徵進行最大池化(max pooling)或平均池化(average pooling)運算,以減小參數量及神經網路中的運算,池化運算完的結果可再傳給下一層進行卷積運算,然後再次進行池化運算。然而,傳統上對多個數據進行池化運算時,需等待卷積層的所有數據均完成運算,才會輸入至池化層進行池化運算,故需佔用龐大的讀取頻寬。
因此,如何提供一種池化運算方式,以解決讀取頻寬不足的問題,實為當前重要的課題之一。
有鑑於此,本發明之一目的為提供一種池化運算裝置及方法,可降低輸入數據的讀取頻寬,以增進池化運算的效能。
為達上述目的,本發明提供一種卷積神經網路的池化運算方法,包括:讀入一池化窗內至少一排的多個新數據;將新數據進行一第一池化運算以產生至少一個排池化結果;將本次排池化結果存於一緩衝器;將緩衝器內的至少一先前排池化結果及本次排池化結果進行一第二池化運算以產生池化窗的一池化結果。
在一實施例中,新數據為卷積運算的結果,且新數據在讀入 前未存在於緩衝器。
在一實施例中,緩衝器為一先進先出緩衝器,新數據為池化窗的至少一行(column)的新數據。
在一實施例中,緩衝器的規模大於或等於池化窗的列(row)數。
在一實施例中,池化窗的步幅為S,當存了S個排池化結果在緩衝器後,才進行第二池化運算。
在一實施例中,第一池化運算及第二池化運算為最大池化運算。
為達上述目的,本發明提供一種卷積神經網路的池化運算裝置,包括:一第一階池化單元、一緩衝器以及一第二階池化單元。第一階池化單元配置來讀入一池化窗內至少一排的多個新數據,並將新數據進行一第一池化運算,以產生至少一排池化結果。緩衝器耦接第一階池化單元,並配置來儲存本次排池化結果及至少一先前排池化結果。第二階池化單元配置來將緩衝器內的先前排池化結果及本次排池化結果進行一第二池化運算,以產生池化窗的一池化結果。
在一實施例中,新數據為卷積運算的結果,且新數據在讀入前未存在於緩衝器。
在一實施例中,緩衝器為一先進先出緩衝器,新數據為池化窗的至少一行(column)的新數據。
在一實施例中,緩衝器的規模大於或等於池化窗的列(row)數。
在一實施例中,池化窗的步幅為S,當存了S個排池化結果在緩衝器後,才進行第二池化運算。
在一實施例中,第一池化運算及第二池化運算為最大池化運算。
為達上述目的,本發明提供一種卷積神經網路的池化運算方法,包括:讀入一池化窗內已備好的至少一數據,其中池化窗內涵蓋尚未備好的數據;將已備好的數據進行池化運算,以產生一部分池化結果;當 池化窗內涵蓋尚未備好的數據變為已備好的數據時,將部分池化結果及變為已備好的數據再進行池化運算,以產生一池化結果。
在一實施例中,池化運算為最大池化運算。
為達上述目的,本發明提供一種卷積神經網路的池化運算裝置,可進行前述的方法。
為達上述目的,本發明提供一種池化運算的裝置,包括多個池化單元以及一緩衝器。多個池化單元各包含多個輸入及一輸出。緩衝器在本輪池化運算中從其中一個池化單元的輸出接收一池化運算結果,並將該池化運算結果於次輪池化運算中輸出到另一個池化單元的其中一個輸入。
在一實施例中,其中一個池化單元的其中一個輸入是占位符,另一個池化單元的其中一個輸入是占位符。
在一實施例中,池化單元的輸入係從多個卷積運算結果而來,池化單元依據一池化窗在不同位置進行運算,池化窗的步幅為S,相鄰的池化單元具有S個不重複輸入。
在一實施例中,其中一個池化單元為尾端的池化單元,另一個池化單元為啟端的池化單元。
為達上述目的,本發明提供一種池化運算的方法,包括:在本輪池化運算中,進行多組池化運算;將其中一組池化運算的結果予以暫存;於次輪池化運算中,將暫存的池化運算的結果當作其中另一組池化運算的輸入。
承上所述,本發明的運算裝置及運算方法中,以兩級串接的池化單元進行重疊池化(overlapping pooling)運算,第一階池化單元先將首輪運算的行數據輸出結果存放於先進先出(FIFO)緩衝器,待第一階池化單元輸出下一輪的行數據的池化運算結果後,將取代先進先出緩衝器中至少一個首輪運算的行數據輸出結果,最後再將所有儲存於先進先出緩衝器的池化運算結果一起輸入至第二階池化單元,以進行第二次池化運算,藉此得到最終的池化運算結果。此外,當池化窗中有部分列數據未完成卷積運算時,可先對已完成卷積運算的列數據進行池化運算,並將所得到的 部分池化運算結果儲存於列緩衝單元(row buffer),待池化窗中有新的列數據完成卷積運算時,再將列緩衝單元所儲存的部分池化運算結果及新的列數據一併進行池化運算,以得到最終的池化運算結果。因此,本發明的運算裝置及運算方法僅需使用有限的讀取頻寬,即可對大量數據進行池化運算,故可提升池化運算的效能。
1‧‧‧記憶體
2‧‧‧緩衝裝置
3‧‧‧卷積運算模組
4‧‧‧交錯加總單元
5‧‧‧加總緩衝單元
6‧‧‧係數擷取控制器
7‧‧‧控制單元
11、12、15、52、81~85‧‧‧池化單元
13‧‧‧緩衝器
14‧‧‧列緩衝單元
21‧‧‧記憶體控制單元
51‧‧‧部分加總區塊
71‧‧‧指令解碼器
72‧‧‧數據讀取控制器
A0~A15、D1~D9‧‧‧數據
ADD_IN、RD、WR‧‧‧線路
COMP‧‧‧比較器
DMA‧‧‧直接記憶體存取
EN‧‧‧完成訊號
REG‧‧‧暫存器
圖1為卷積神經網路的示意圖。
圖2為依據本發明一實施例執行重疊池化運算的示意圖。
圖3為依據本發明一實施例的池化運算的運作示意圖。
圖4A及圖4B為依據本發明另一實施例的池化運算的運作示意圖。
圖5為依據本發明一實施例的一卷積運算裝置的功能方塊圖。
圖6為依據本發明一實施例進行最大池化運算的運作示意圖。
圖7為圖6中進行最大池化運算支援範圍的示意圖。
以下將參照相關圖式,說明依據本發明具體實施例的卷積運算裝置及方法,其中相同的元件將以相同的元件符號加以說明,所附圖式僅為說明用途,並非用於侷限本發明。
圖1為卷積類神經網路的示意圖。請參閱圖1所示,卷積神經網路具有多個運算層,例如卷積層、池化層等,卷積層以及池化層的層數可以是多層,各層的輸出可以當作另一層或後續層的輸入,例如第N層卷積層的輸出是第N層池化層的輸入或是其他後續層的輸入,第N層池化層的輸出是第N+1層卷積層的輸入或是其他後續層的輸入,第N層運算層的輸出可以是第N+1層運算層的輸入。
為了提升運算效能,不同層但性質接近的運算可以適當的整合在一起運算,舉例來說,池化層的池化運算是平均持化運算,除法的運算可以整合在次一層運算層中,次一層運算層例如是卷積層,也就是池化層的平均池化的除法是和次一層卷積層的卷積乘法一起運算。另外,池化 層也可以進行移位運算來替代平均計算所需的除法,並將尚未除完的部分整合在次一層運算層中一起計算,也就是池化層的平均池化的除法未能利用移位運算完整替代的部分是和次一層卷積層的卷積乘法一起運算。
圖2為依據本發明一實施例執行重疊池化運算的示意圖。請參閱圖2所示,卷積神經網路的池化運算裝置,包括:池化單元11、12及緩衝器13。緩衝器13可為一先進先出(FIFO)緩衝器,並耦接於池化單元11與池化單元12之間。池化單元11用來讀入一池化窗內至少一排的多個新數據,並將所讀入的新數據進行一第一池化運算,以產生至少一排池化結果。舉例來說,池化單元11可讀入池化窗內的一行新數據或多行新數據,池化單元11亦可讀取池化窗內的一列新數據或多列新數據,以進行第一池化運算。新數據為卷積運算的輸出結果,且通常為具有多行多列的二維數據。
池化單元11可藉由移動池化窗的步幅(stride),以對卷積運算的輸出結果進行重疊池化(overlapping pooling)運算。緩衝器13則用來儲存池化單元11所輸出的池化結果,且緩衝器13的規模需大於或等於池化窗的列(row)數。池化單元12用來將緩衝器13內的前一輪池化結果及本輪池化結果進行一第二池化運算,以產生池化窗的最終池化結果。此外,第一池化運算及第二池化運算可為最大池化運算或平均池化運算,以下實施例將以最大池化運算為例進行說明。
如圖2所示,池化單元11為第一階池化單元,池化單元12為第二階池化單元,緩衝器13耦接於池化單元11與池化單元12之間。池化窗的大小為4×4,其步幅為1,故池化窗於每個運算周期會向右移動一行。於某一個運算周期中,池化單元11先讀入池化窗內的一行數據,以進行第一池化運算,並將第一池化運算的輸出結果儲存於緩衝器13內。於下一個運算周期中,池化窗向右移動一行,池化單元11讀入池化窗中不與前一個運算周期重疊的一行新數據,並將新數據的池化運算結果儲存於緩衝器13內,以取代緩衝器13內的其中一個前一輪的池化結果。
之後,池化單元12讀入緩衝器13內的本輪池化結果及前一輪的池化結果,並本輪池化結果及前一輪的池化結果進行第二池化運算, 以輸出池化窗的最終池化結果。本實施例中,池化窗的步幅為1。當池化窗的步幅為S時,則需待緩衝器13儲存了S個新輸入的池化結果後,才進行第二池化運算。舉例來說,當步幅為2時,緩衝器13儲存了1個新輸入的池化結果後,還不會進行第二池化運算;緩衝器13儲存了第2個新輸入的池化結果後,才進行第二池化運算。也就是每隔S個新輸入的池化結果儲存到緩衝器13之後,才進行第二池化運算。如果緩衝器13每儲存1個新輸入的池化結果需要K的時脈(K例如是大於等於1的整數),則每隔S乘K個新輸入的池化結果儲存到緩衝器13之後,才進行第二池化運算。
圖3為依據本發明一實施例的池化運算的運作示意圖。請參閱圖3所示,當輸入至卷積層的數據中,僅有部分列數據完成卷積運算時,可採用兩階段進行池化運算,即先對已完成卷積運算的列數據進行池化運算,並將池化運算的結果暫存於列緩衝單元,以做為部分池化結果。待卷積層中剩餘的列數據完成卷積運算之後,再根據列緩衝單元內的部分池化結果及新的列數據計算最終的池化結果。
舉例來說,池化單元15的池化窗中僅有第一及第二列數據完成卷積運算,第三列數據則尚未完成卷積運算。池化單元15首先對池化窗中的第一及第二列數據進行第一階段的池化運算,以輸出部分池化結果,並將部分池化結果暫存於列緩衝單元14。當池化窗中的第三列數據也完成卷積運算時,則進行第二階段的池化運算,此時池化單元15將根據列緩衝單元14內的部分池化結果及第三列數據,以計算最終的池化結果。
圖4A及圖4B為依據本發明另一實施例的池化運算的運作示意圖。請參閱圖4A所示,池化運算裝置,包括多個池化單元81~85以及一列緩衝單元。池化單元81~85分別具有多個輸入及一輸出,並對卷積運算的結果進行多次的池化運算。列緩衝單元在每一輪池化運算中從其中一個池化單元的輸出接收一池化運算結果,並將池化運算結果於次輪池化運算中輸出到另一個池化單元的其中一個輸入。在首輪池化運算中,池化運算裝置可進行多組池化運算,並將其中一組池化運算的結果暫存於列緩衝單元。於下一輪池化運算中,再將暫存的池化運算結果當作其中另一組池化運算的輸入。
由於一次從記憶體讀取的數據數量通常是數個位元組,多個池化單元所需的輸入數據數量可能會多於一次能從記憶體讀取的數據數量,藉由列緩衝單元可以避免數據需要從記憶體重複讀取。
舉例來說,於首輪池化運算中,池化單元81~85分別讀入記憶體的第0欄至第3欄的數據A0~A7,池化單元82對數據A0~A2進行池化運算,並將池化運算的輸出結果存放於A2的位址上。池化單元83對數據A2~A4進行池化運算,並將池化運算的輸出結果存放於A4的位址上。池化單元84則對數據A4~A6進行池化運算,並將池化運算的輸出結果存放於A6的位址上。池化單元85則對數據A6~A7及一占位符進行池化運算,並將池化運算的輸出結果暫存於列緩衝單元。於下一輪池化運算中,請參閱圖4B所示,暫存於列緩衝單元的池化運算結果將做為池化單元81的其中一個輸入。暫存於列緩衝單元的池化運算結果和其他當輪的數據A8~A15一起輸入至池化單元81~85。
圖5為依據本發明一實施例的的卷積運算裝置的功能方塊圖。請參閱圖5所示,卷積運算裝置包括一記憶體1、一緩衝裝置2、一卷積運算模組3、一交錯加總單元4、一加總緩衝單元5、一係數擷取控制器6以及一控制單元7。卷積運算裝置可用在卷積神經網路(Convolutional Neural Network,CNN)的應用。
記憶體1儲存待卷積運算的數據或數據,可例如為影像、視頻、音頻、統計、卷積神經網路其中一層的數據等等。以影像數據來說,其例如是像素(pixel)數據;以視頻數據來說,其例如是視頻視框的像素數據或是移動向量、或是視頻中的音訊;以卷積神經網路其中一層的數據來說,其通常是一個二維陣列數據,以影像數據而言,則通常是一個二維陣列的像素數據。另外,在本實施例中,係以記憶體1為一靜態隨機存取記憶體(static random-access memory,SRAM)為例,其除了可儲存待卷積運算的數據或數據之外,也可以儲存卷積運算完成的數據或數據,並且可以具有多層的儲存結構並分別存放待運算與運算完畢的數據,換言之,記憶體1可做為如卷積運算裝置內部的快取記憶體(cache memory)。
實際應用時,全部或大部分的數據可先儲存在其他地方,例 如在另一記憶體中,另一記憶體可選擇如動態隨機存取記憶體(dynamic random access memory,DRAM)或其他種類之記憶體。當卷積運算裝置要進行卷積運算時,再全部或部分地將數據由另一記憶體載入至記憶體1中,然後通過緩衝裝置2將數據輸入至卷積運算模組3來進行卷積運算。若輸入的數據是串流數據,記憶體1隨時會寫入最新的串流數據以供卷積運算。
緩衝裝置2耦接有記憶體1、卷積運算模組3以及部分加總緩衝單元5。並且,緩衝裝置2也與卷積運算裝置的其他元件進行耦接,例如交錯加總單元4以及控制單元7。此外,對於影像數據或視頻的視框數據運算來說,處理的順序是逐行(column)同時讀取多列(row),因此在一個時序(clock)中,緩衝裝置2係從記憶體1輸入同一行不同列上的數據,對此,本實施例的緩衝裝置2係作為一種行緩衝(column buffer)的緩衝裝置。欲進行運算時,緩衝裝置2可先由記憶體1擷取卷積運算模組3所需要運算的數據,並於擷取後將該些數據調整為可順利寫入卷積運算模組3的數據型式。另一方面,由於緩衝裝置2也與加總緩衝單元5耦接,加總緩衝單元5運算完畢後之數據,也將透過緩衝裝置2暫存重新排序(reorder)後再傳送回記憶體1儲存。換言之,緩衝裝置2除了具有行緩衝的功能之外,其還具有類似中繼暫存數據的功能,或者說緩衝裝置2可做為一種具有排序功能的數據暫存器。
值得一提的是,緩衝裝置2還包括一記憶體控制單元21,當緩衝裝置2在進行與記憶體1之間的數據擷取或寫入時可經由記憶體控制單元21控制。另外,由於其與記憶體1之間具有有限的一記憶體存取寬度,或又稱為帶寬或頻寬(bandwidth),卷積運算模組3實際上能進行得卷積運算也與記憶體1的存取寬度有關。換言之,卷積運算模組3的運算效能會受到前述存取寬度而有所限制。因此,如果記憶體1的輸入有頻頸,則卷積運算的效能將受到衝擊而下降。
卷積運算模組3具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留部分的當前數據。緩衝裝置2從記憶體1取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複。卷積運算模組3的卷積單元基於濾波器、保留 的當前數據以及新數據進行次輪卷積運算。交錯加總單元4耦接卷積運算模組3,依據卷積運算的結果產生一特徵輸出結果。加總緩衝單元5耦接交錯加總單元4與緩衝裝置2,暫存特徵輸出結果;其中,當指定範圍的卷積運算完成後,緩衝裝置2從加總緩衝單元5將暫存的全部數據寫入到記憶體1。
係數擷取控制器6耦接卷積運算模組3,而控制單元7則耦接緩衝裝置2。實際應用時,對於卷積運算模組3而言,其所需要的輸入來源除了數據本身以外,還需輸入有濾波器(filter)的係數,始得進行運算。於本實施例中所指即為3×3的卷積單元陣列之係數輸入。係數擷取控制器6可藉由直接記憶體存取DMA(direct memory access)的方式由外部之記憶體,直接輸入濾波器係數。除了耦接卷積運算模組3之外,係數擷取控制器6還可與緩衝裝置2進行連接,以接受來自控制單元7的各種指令,使卷積運算模組3能夠藉由控制單元7控制係數擷取控制器6,進行濾鏡係數的輸入。
控制單元7可包括一指令解碼器71以及一數據讀取控制器72。指令解碼器71係從數據讀取控制器72得到控制指令並將指令解碼,藉以得到目前輸入數據的大小、輸入數據的行數、輸入數據的列數、輸入數據的特徵編號以及輸入數據在記憶體1中的起始位址。另外,指令解碼器71也可從數據讀取控制器72得到有關濾鏡的種類資訊以及輸出特徵的編號,並輸出適當的空置訊號到緩衝裝置2。緩衝裝置2則根據指令解碼後所提供的資訊來運行,也進而控制卷積運算模組3以及加總緩衝單元5的運作,例如數據從記憶體1輸入到緩衝裝置2以及卷積運算模組3的時序、卷積運算模組3的卷積運算的規模、數據從記憶體1到緩衝裝置2的讀取位址、數據從加總緩衝單元5到記憶體1的寫入位址、卷積運算模組3及緩衝裝置2所運作的卷積模式。
另一方面,控制單元7則同樣可藉由直接記憶體存取DMA的方式由外部之記憶體提取所需的控制指令及卷積資訊,指令解碼器71將指令解碼之後,該些控制指令及卷積資訊由緩衝裝置2擷取,指令可包含移動窗的步幅大小、移動窗的位址以及欲提取特徵的影像數據行列數。
加總緩衝單元5耦接交錯加總單元4,加總緩衝單元5包括一部分加總區塊51以及一池化單元52。部分加總區塊51暫存交錯加總單元4輸出的數據。池化單元52對暫存於部分加總區塊51的數據進行池化運算。池化運算為最大值池化或平均池化。
舉例來說,加總緩衝單元5可將經由卷積運算模組3卷積計算結果及交錯加總單元4的輸出特徵結果予以暫存於部分加總區塊51。接著,再透過池化單元52對暫存於部分加總區塊51的數據進行池化(pooling)運算,池化運算可針對輸入數據某個區域上的特定特徵,取其平均值或者取其最大值作為概要特徵提取或統計特徵輸出,此統計特徵相較於先前之特徵而言不僅具有更低的維度,還可改善運算的處理結果。
須說明者,此處的暫存,仍係將輸入數據中的部分運算結果相加(partial sum)後才將其於部分加總區塊51之中暫存,因此稱其為部分加總區塊51與加總緩衝單元5,或者可將其簡稱為PSUM單元與PSUMBUFFER模組。另一方面,本實施例之池化單元52的池化運算,係可採用前述平均池化(average pooling)的計算方式取得統計特徵輸出。待所輸入的數據全部均被卷積運算模組3及交錯加總單元4處理計算完畢後,加總緩衝單元5輸出最終的數據處理結果,並同樣可透過緩衝裝置2將結果回存至記憶體1,或者再透過記憶體1輸出至其他元件。與此同時,卷積運算模組3與交錯加總單元4仍持續地進行數據特徵的取得與運算,以提高卷積運算裝置的處理效能。
卷積運算裝置可包括多個卷積運算模組3,卷積運算模組3的卷積單元以及交錯加總單元4係能夠選擇性地操作在一低規模卷積模式以及一高規模卷積模式。在低規模卷積模式中,交錯加總單元4配置來對卷積運算模組3中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果。在高規模卷積模式中,交錯加總單元4將各卷積單元的各卷積運算的結果交錯加總作為輸出。
圖6為依據本發明一實施例進行最大池化運算的運作示意圖。請參閱圖6所示,同一行(column)的數據同時從卷積運算模組3或是從記憶體1讀出,這些數據可以是影像的畫素數據。這些數據可視最大 池化的種類(例如2×2或3×3)而輸入到對應的最大池化單元。在本實施例中,加總緩衝單元5包括多個池化單元52,各池化單元52包括一組暫存器REG、一比較器COMP以及一輸出開關,比較器COMP具有四個輸入以及一個輸出,這組暫存器REG具有四個暫存器,各暫存器會將儲存的數據分別輸入到比較器COMP,其中三個暫存器會接收及儲存從卷積運算模組3或是從記憶體1讀出的數據,另一個暫存器會接收比較器COMP的輸出,這個暫存器會儲存前次比較器COMP所輸出的最大值。對於三個輸入的數據以及前次比較的最大值,比較器COMP將這些數據比較以輸出最大值。也就是在先前時脈下,比較器COMP輸出的最大值會先暫存在暫存中以供在後續時脈下與其他新輸入的數據進行比較,其他新輸入的數據例如是次一行(next column)的數據或是後續行的數據。池化單元52運算所需的時脈視池化規模而定,通常約需2-3個時脈。池化單元52完成一輪的最大池化運算後,一完成訊號EN將啟用輸出開關以將比較出的最大值輸出,同時暫存器會重設至最小值以供後續的最大池化運算。接著,例如在次一時脈或後續時脈,輸出開關會被禁用,暫存器會接收及儲存從卷積運算模組3或是從記憶體1讀出的數據。在這種架構下,如圖7所示,對於一行有9個數據D1~D9的情況,使用5個比較器COMP1~COMP5就可以進行最大池化運算。
綜上所述,本發明的運算裝置及運算方法中,以兩級串接的池化單元進行重疊池化(overlapping pooling)運算,第一階池化單元先將首輪運算的行數據輸出結果存放於先進先出(FIFO)緩衝器,待第一階池化單元輸出下一輪的行數據的池化運算結果後,將取代先進先出緩衝器中至少一個首輪運算的行數據輸出結果,最後再將所有儲存於先進先出緩衝器的池化運算結果一起輸入至第二階池化單元,以進行第二次池化運算,藉此得到最終的池化運算結果。此外,當池化窗中有部分列數據未完成卷積運算時,可先對已完成卷積運算的列數據進行池化運算,並將所得到的部分池化運算結果儲存於列緩衝單元(row buffer),待池化窗中有新的列數據完成卷積運算時,再將列緩衝單元所儲存的部分池化運算結果及新的列 數據一併進行池化運算,以得到最終的池化運算結果。因此,本發明的運算裝置及運算方法僅需使用有限的讀取頻寬,即可對大量數據進行池化運算,故可提升池化運算的效能。
上述實施例並非用以限定本發明,任何熟悉此技藝者,在未脫離本發明之精神與範疇內,而對其進行之等效修改或變更,均應包含於後附之申請專利範圍中。

Claims (20)

  1. 一種卷積神經網路的池化運算的方法,包括:讀入一池化窗內至少一排的多個新數據;將該等新數據進行一第一池化運算以產生至少一個排池化結果;將該排池化結果存於一緩衝器;以及將該緩衝器內的至少一先前排池化結果及該排池化結果進行一第二池化運算以產生該池化窗的一池化結果。
  2. 如申請專利範圍第1項所述的方法,其中該等新數據為卷積運算的結果,且該等新數據在讀入前未存在於該緩衝器。
  3. 如申請專利範圍第1項所述的方法,其中該緩衝器為一先進先出緩衝器,該等新數據為該池化窗的至少一行(column)的新數據。
  4. 如申請專利範圍第3項所述的方法,其中該緩衝器的規模大於或等於該池化窗的列(row)數。
  5. 如申請專利範圍第3項所述的方法,其中該池化窗的步幅為S,當存了S個該排池化結果在該緩衝器後,才進行該第二池化運算。
  6. 如申請專利範圍第1項所述的方法,其中該第一池化運算及該第二池化運算為最大池化運算。
  7. 一種卷積神經網路的池化運算的裝置,包括:一第一階池化單元,配置來讀入一池化窗內至少一排的多個新數據,並將該等新數據進行一第一池化運算以產生至少一排池化結果;一緩衝器,耦接該第一階池化單元,配置來儲存該排池化結果及至少一先前排池化結果;以及一第二階池化單元,配置來將該緩衝器內的該先前排池化結果及該排池化結果進行一第二池化運算以產生該池化窗的一池化結果。
  8. 如申請專利範圍第7項所述的裝置,其中該等新數據為卷積運算的結果,且該等新數據在讀入前未存在於該緩衝器。
  9. 如申請專利範圍第7項所述的裝置,其中該緩衝器為一先進先出緩衝器,該等新數據為該池化窗的至少一行(column)的新數據。
  10. 如申請專利範圍第9項所述的裝置,其中該緩衝器的規模大於或等於 該池化窗的列(row)數。
  11. 如申請專利範圍第9項所述的裝置,其中該池化窗的步幅為S,當存了S個該排池化結果在該緩衝器後,才進行該第二池化運算。
  12. 如申請專利範圍第7項所述的裝置,其中該第一池化運算及該第二池化運算為最大池化運算。
  13. 一種卷積神經網路的池化運算的方法,包括:讀入一池化窗內已備好的至少一數據,其中該池化窗內涵蓋尚未備好的數據;將該已備好的數據進行池化運算以產生一部分池化結果;以及當該池化窗內涵蓋尚未備好的數據變為已備好的數據時,將該部分池化結果及變為已備好的數據再進行池化運算以產生一池化結果。
  14. 如申請專利範圍第13項所述的方法,其中該池化運算為最大池化運算。
  15. 一種卷積神經網路的池化運算的裝置,進行如申請專利範圍第13項或第14項所述的方法。
  16. 一種池化運算的裝置,包括:多個池化單元,各包含多個輸入及一輸出;以及一緩衝器,在本輪池化運算中從其中一個池化單元的該輸出接收一池化運算結果,並將該池化運算結果於次輪池化運算中輸出到另一個池化單元的其中一個輸入。
  17. 如申請專利範圍第16項所述的裝置,其中該其中一個池化單元的其中一個輸入是占位符,該另一個池化單元的其中一個輸入是占位符。
  18. 如申請專利範圍第16項所述的裝置,其中該等池化單元的該等輸入係從多個卷積運算結果而來,該等池化單元依據一池化窗在不同位置進行運算,該池化窗的步幅為S,相鄰的該等池化單元具有S個不重複輸入。
  19. 如申請專利範圍第16項所述的裝置,其中該其中一個池化單元為尾端的池化單元,該另一個池化單元為啟端的池化單元。
  20. 一種池化運算的方法,包括:在本輪池化運算中,進行多組池化運算; 將其中一組池化運算的結果予以暫存;以及於次輪池化運算中,將暫存的池化運算的結果當作其中另一組池化運算的輸入。
TW106104512A 2017-02-10 2017-02-10 卷積神經網路的池化運算裝置及方法 TWI607389B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW106104512A TWI607389B (zh) 2017-02-10 2017-02-10 卷積神經網路的池化運算裝置及方法
US15/802,092 US10943166B2 (en) 2017-02-10 2017-11-02 Pooling operation device and method for convolutional neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106104512A TWI607389B (zh) 2017-02-10 2017-02-10 卷積神經網路的池化運算裝置及方法

Publications (2)

Publication Number Publication Date
TWI607389B TWI607389B (zh) 2017-12-01
TW201830295A true TW201830295A (zh) 2018-08-16

Family

ID=61230706

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106104512A TWI607389B (zh) 2017-02-10 2017-02-10 卷積神經網路的池化運算裝置及方法

Country Status (2)

Country Link
US (1) US10943166B2 (zh)
TW (1) TWI607389B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI701608B (zh) * 2018-09-07 2020-08-11 香港商阿里巴巴集團服務有限公司 用於圖片匹配定位的神經網路系統、方法及裝置

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6805984B2 (ja) * 2017-07-06 2020-12-23 株式会社デンソー 畳み込みニューラルネットワーク
CN110322388B (zh) * 2018-03-29 2023-09-12 上海熠知电子科技有限公司 池化方法及装置、池化系统、计算机可读存储介质
CN109002885A (zh) * 2018-07-24 2018-12-14 济南浪潮高新科技投资发展有限公司 一种卷积神经网络池化单元及池化计算方法
US20200090023A1 (en) * 2018-09-14 2020-03-19 Huawei Technologies Co., Ltd. System and method for cascaded max pooling in neural networks
US20200090046A1 (en) * 2018-09-14 2020-03-19 Huawei Technologies Co., Ltd. System and method for cascaded dynamic max pooling in neural networks
US11467973B1 (en) * 2018-09-28 2022-10-11 Amazon Technologies, Inc. Fine-grained access memory controller
FR3089664A1 (fr) * 2018-12-05 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif pour réduire la charge de calcul d’un microprocesseur destiné à traiter des données par un réseau de neurones à convolution
CN110490312B (zh) * 2019-07-10 2021-12-17 瑞芯微电子股份有限公司 一种池化计算方法和电路
US10832745B1 (en) 2019-07-26 2020-11-10 Micron Technology, Inc. Apparatuses and methods for performing operations using sense amplifiers and intermediary circuitry
KR20210014902A (ko) 2019-07-31 2021-02-10 삼성전자주식회사 프로세서 및 그 제어 방법
CN110516793B (zh) * 2019-08-27 2022-06-17 Oppo广东移动通信有限公司 一种池化处理方法及装置、存储介质
KR20210036715A (ko) * 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법
CN112313673A (zh) * 2019-11-15 2021-02-02 深圳市大疆创新科技有限公司 感兴趣区域-池化层的计算方法与装置、以及神经网络系统
JP2023041348A (ja) * 2021-09-13 2023-03-24 トヨタ自動車株式会社 情報処理装置
TWI798972B (zh) * 2021-12-01 2023-04-11 大陸商星宸科技股份有限公司 智慧處理器裝置與降低記憶體頻寬的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203619B (zh) * 2015-05-29 2022-09-13 三星电子株式会社 数据优化的神经网络遍历
US11475269B2 (en) * 2015-12-15 2022-10-18 Analog Devices, Inc. Convolutional neural network
JP6658033B2 (ja) * 2016-02-05 2020-03-04 富士通株式会社 演算処理回路、および情報処理装置
CN106228240B (zh) * 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106250863B (zh) * 2016-08-09 2019-07-26 北京旷视科技有限公司 对象追踪方法和装置
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US10733505B2 (en) * 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10198401B2 (en) * 2016-12-30 2019-02-05 Intel Corporation Max pooling in a matrix processing architecture
US10402527B2 (en) * 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI701608B (zh) * 2018-09-07 2020-08-11 香港商阿里巴巴集團服務有限公司 用於圖片匹配定位的神經網路系統、方法及裝置

Also Published As

Publication number Publication date
US10943166B2 (en) 2021-03-09
US20180232629A1 (en) 2018-08-16
TWI607389B (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
TWI607389B (zh) 卷積神經網路的池化運算裝置及方法
TWI630544B (zh) 卷積神經網路的運算裝置及方法
TWI634490B (zh) 卷積運算裝置及卷積運算方法
US8904069B2 (en) Data processing apparatus and image processing apparatus
US10169295B2 (en) Convolution operation device and method
JP5602532B2 (ja) 画像処理装置および画像処理方法
CN108416430A (zh) 卷积神经网络的池化运算装置及方法
JP5359569B2 (ja) メモリのアクセス方法
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
CN108073548B (zh) 卷积运算装置及卷积运算方法
CN112334915A (zh) 运算处理装置
US10162799B2 (en) Buffer device and convolution operation device and method
US20230267310A1 (en) Neural network processing apparatus, information processing apparatus, information processing system, electronic device, neural network processing method, and program
JP5675278B2 (ja) データ処理装置および画像処理装置
US20200225877A1 (en) Information processing apparatus and memory control method
CN108769697B (zh) 基于时间交织流水线架构的jpeg-ls压缩系统及方法
JP6295619B2 (ja) 画像処理装置及び方法、並びに電子機器
CN112837256B (zh) 一种用于Harris角点检测的电路系统及检测方法
US20150262325A1 (en) Device for image decomposition using a wavelet transform
JP4454532B2 (ja) 画像処理装置、携帯電話機
CN114611683A (zh) 卷积神经网络操作实现方法、装置、设备及存储介质
JP4759628B2 (ja) イメージデータ処理装置、撮像システム、イメージデータ処理方法、コンピュータプログラム、及びコンピュータ読み取り可能な記憶媒体
JP7157457B2 (ja) データ処理装置
KR102667134B1 (ko) 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법
TWI616840B (zh) 卷積運算裝置及方法