TWI716108B - 適用於深度神經網路之卷積計算積體電路及其方法 - Google Patents
適用於深度神經網路之卷積計算積體電路及其方法 Download PDFInfo
- Publication number
- TWI716108B TWI716108B TW108133548A TW108133548A TWI716108B TW I716108 B TWI716108 B TW I716108B TW 108133548 A TW108133548 A TW 108133548A TW 108133548 A TW108133548 A TW 108133548A TW I716108 B TWI716108 B TW I716108B
- Authority
- TW
- Taiwan
- Prior art keywords
- cuboid
- array
- target
- output
- internal memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
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)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Complex Calculations (AREA)
Abstract
本發明揭露一種積體電路,適用於一深度神經網路,包含至少一處理器、一第一內部記憶體、至少一MAC電路、一第二內部記憶體、一壓縮器以及一解壓縮器。該處理器對一輸入影像之各長方體的解壓縮資料進行長方體卷積計算,其中該輸入影像係饋入至多個卷積層之任一。該MAC電路進行和長方體卷積計算有關之乘法及累積運算,以輸出一第一被卷積長方體。該壓縮器將該第一被卷積長方體壓縮為一壓縮區塊,並儲存於該第二內部記憶體。該解壓縮器以逐壓縮區塊方式,將儲存於該第二內部記憶體的資料解壓縮,並將單一長方體的解壓縮資料儲存於該第一內部記憶體。其中,該第一輸入影像水平地被分割為複數個長方體,且在任二個相鄰長方體之間的各通道有至少一列的重疊。
Description
本發明係關於深度神經網路(Deep Neural Network,DNN),尤有關於一種適用於深度神經網路之卷積計算積體電路及其方法,以達到高能量效率及低面積複雜度。
DNN是一種具有超過二層且有一定程度複雜度的神經網路。DNN使用複雜的數學模型,且以複合的方式來處理資料。最近,有一種明顯的趨勢是將DNN使用於移動或穿戴裝置,即所謂的邊緣(edge)裝置執行AI演算法(AI-on-the-edge)或感應器實施AI演算法(AI-on-the-sensor),來進行各種應用,如自動語音辨識、物體偵測、特色抽取(feature extraction)等等。MobileNet是一種以移動(mobile)及嵌入式視覺應用為目的的高效率網路,相較於使用相同深度來進行正規/標準的卷積計算的網路,MobileNet利用混合的逐深度卷積(depthwise convolution)及大量1*1*M逐點卷積(pointwise convolution)來達到降低卷積計算負擔(loading)的顯著作用,進而達到輕量級深度神經網路。然而,在實施MobileNet時,大量資料進/出外部DRAM的移動仍導致大量 的功率消耗,這是因為每次32位元的DRAM讀取操作會產生640微微焦耳(picojoules,pJ)的功率消耗,此遠大於乘積累加MAC(multiply accumulate)運算的功率消耗(如32位元的乘法運算會有3.1pJ的功率消耗)。
一般而言,系統單晶片(System On Chip,SOC)通常整合許多功能而會消耗空間和功率。考慮到邊緣/移動裝置上有限的電池功率及空間,業界亟需一種有效利用功率及記憶體空間的積體電路與方法以進行DNN的卷積計算。
有鑒於上述問題,本發明的目的之一是提供一種積體電路,適用於一深度神經網路,以降低該積體電路的尺寸與功率消耗,並可避免使用外部的DRAM。
根據本發明之一實施例,提供一種積體電路,適用於一深度神經網路,包含至少一處理器、一第一內部記憶體、至少一MAC電路、一第二內部記憶體、一壓縮器以及一解壓縮器。該至少一處理器,被規劃為對一第一輸入影像之各長方體的解壓縮資料進行長方體卷積計算,其中該第一輸入影像係饋入至多個卷積層之任一。該第一內部記憶體,耦接至該至少一處理器。該至少一MAC電路,耦接至該至少一處理器及該第一內部記憶體,用以進行和長方體卷積計算有關之乘法及累積運算,以輸出一第一卷積長方體。該第二內部記憶體,僅儲存多個壓縮區塊。該 壓縮器,耦接至該至少一處理器、該至少一MAC電路、該第一內部記憶體以及該第二內部記憶體,該壓縮器被規劃為將該第一卷積長方體壓縮為一壓縮區塊,並儲存於該第二內部記憶體。以及,該解壓縮器,耦接至該至少一處理器、該第一內部記憶體以及該第二內部記憶體,被規劃為以逐壓縮區塊方式,解壓縮來自該第二內部記憶體的該些壓縮區塊,並將單一長方體的解壓縮資料儲存於該第一內部記憶體。其中,該第一輸入影像係水平地被分割為複數個具相同尺寸的長方體,且在任二個相鄰長方體之間的各通道有至少一列的重疊。以及,其中,該長方體卷積計算包含一逐深度卷積計算並跟隨一逐點卷積計算。,
本發明另一實施例,提供一種方法,應用於一積體電路中,該積體電路係適用於一深度神經網路且包含一第一內部記憶體及一第二內部記憶體,該方法包含:(a)解壓縮來自該第一內部記憶體輸出之一第一壓縮區塊,並將解壓縮資料儲存於該第二內部記憶體,其中該第一壓縮區塊係與一第一輸入影像之一目前長方體有關;(b)對該解壓縮資料進行長方體卷積計算以產生一3D逐點輸出陣列;(c)將該3D逐點輸出陣列壓縮為一第二壓縮區塊,並將該第二壓縮區塊儲存於該第一內部記憶體;(d)重複步驟(a)至(c),直到和一目標卷積層有關之所有長方體都處理完為止;以及,(e)重複步驟(a)至(d),直到所有卷積層都 處理完為止;其中,該第一輸入影像係饋入至該些卷積層之任一,並且水平地被分割為複數個具相同尺寸的長方體,且在任二個相鄰長方體之間的各通道有至少一列的重疊;其中,該長方體卷積計算包含一逐深度卷積計算並跟隨一逐點卷積計算。
茲配合下列圖示、實施例之詳細說明及申請專利範圍,將上述及本發明之其他目的與優點詳述於後。。
10‧‧‧晶片
51‧‧‧參考列
51a、57a‧‧‧第一個元素
53‧‧‧輸出圖
54、54’‧‧‧搜尋佇列
55、55’‧‧‧非零圖
57‧‧‧重建參考列
58‧‧‧重建輸出圖
100‧‧‧卷積計算積體電路
110‧‧‧DNN加速器
111‧‧‧MAC電路
112‧‧‧神經函數單元
113‧‧‧壓縮器
114‧‧‧解壓縮器
115‧‧‧ZRAM
120‧‧‧混合草稿式記憶體
130‧‧‧快閃控制介面
140‧‧‧數位訊號處理器(DSP)
141‧‧‧資料/程式內部記憶體
142‧‧‧控制匯流排
150‧‧‧快閃記憶體
161~16Q‧‧‧激勵函數查找表
170‧‧‧感測器介面
171‧‧‧加法器
172‧‧‧多工器
A(j)‧‧‧工作次陣列
A’(j)‧‧‧重建工作次陣列
第1A圖根據本發明一實施例,顯示一卷積計算積體電路之方塊圖。
第1B圖根據本發明一實施例,顯示神經函數單元之方塊圖。
第2圖係根據本發明一實施例,顯示一卷積計算方法之流程圖。
第3A圖是尺寸為DF*DF*M之MobileNet第一層之輸出特徵圖的一個例子。
第3B圖顯示該逐深度卷積如何運作的例子。
第3C圖顯示該逐點卷積如何運作的例子。
第4A圖係根據本發明一實施例,顯示RRVC方法之流程圖。
第4B-4C圖係根據本發明一實施例,顯示RRV解壓縮方 法之流程圖。
第5A圖顯示該RRVC方法如何運作的例子。
第5B圖顯示該RRV解壓縮方法如何運作的例子。
在通篇說明書及後續的請求項當中所提及的「一」及「該」等單數形式的用語,都同時包含單數及複數的涵義,除非本說明書中另有特別指明。
在深度學習領域中,卷積神經網路(convolutional neural network,CNN)是深度神經網路的一個類別,常應用於分析視覺影像(visual imagery)。一般而言,CNN具有三種階層,即:卷積層、池化層(pooling layer)及全連結層(fully connected layer),且CNN通常包含複數個卷積層。各卷積層具有複數個過濾器(filter)或卷積核(kernel)係用來對一輸入影像進行卷積,以產生一輸出特徵圖(feature map)。該輸入影像及一過濾器的深度(或通道(channel)數目)是相同的,而輸出特徵圖的深度(或通道數目)是相同於過濾器的數目。各過濾器可具有相同或不同的寬度與高度,係小於或等於該輸入影像的寬度與高度。
本發明的特色之一是水平地分割各卷積層的輸出特徵圖為複數個相同大小的長方體、依序將各長方體的資料壓縮成一個別的壓縮區塊(segment)及將該些壓縮區塊 儲存於一邊緣/移動裝置內一積體電路中的一第一內部記憶體(如ZRAM 115)。本發明的另一特色是對各卷積層,以逐壓縮區塊方式(on a compressed segment by compressed segment basis),從該第一內部記憶體擷取該些壓縮區塊、將一壓縮區塊解壓縮為一第二內部記憶體(如HRAM 120)中的解壓縮資料、對該解壓縮資料進行長方體卷積(cuboid convolution)以產生一3D逐點輸出陣列、將該3D逐點輸出陣列壓縮為一更新的壓縮區塊以及將該更新的壓縮區塊儲存於ZRAM 115。因此,透過選擇適當的長方體大小,各卷積層的一輸入影像中只有單一長方體的解壓縮資料係暫存於HRAM 115以備進行長方體卷積,而其餘長方體的壓縮區塊則仍儲存於ZRAM 115中。結果,本發明避免使用外部的DRAM,並且,不但降低了HRAM 120及ZRAM 115的尺寸,也降低了積體電路100的尺寸與功率消耗。
本發明的另一特色是:使用過濾器,對饋入一輕量級深度神經網路(如MobileNet)之任一卷積層之輸入影像之各長方體的解壓縮資料進行長方體卷積,而非習知的逐深度可分離卷積(depthwise separate convolution),以產生一3D逐點輸出陣列。本發明之長方體卷積可分為一逐深度卷積及一逐點卷積。本發明的另一特色是:將一列重覆值壓縮(row repetitive value compression,RRVC)方法應用於MobileNet第一層之輸出特徵圖中各長方體的各通道或 MobileNet各卷積層之輸出特徵圖中各長方體的各2D逐點輸出陣列(如圖3C之p(1)~p(N)),以產生各長方體的壓縮區塊以備儲存於ZRAM 115。
為清楚及方便描述,以下的例子及實施例皆以MobileNet(包含多個卷積層)為例做說明。應理解的是,本發明不因此而受限,而可普遍應用於允許進行習知的逐深度可分離卷積(depthwise separate convolution)之其他類別的深度神經網路。
在通篇說明書及後續的請求項當中所提及的相關用語定義如下,除非本說明書中另有特別指明。「輸入影像」一詞指的是:饋入至MobileNet第一層或各卷積層之整體輸入資料。「輸出特徵圖」一詞指的是:MobileNet第一層中進行正規/標準的卷積後而產生的整體輸出資料,或MobileNet各卷積層中所有長方體進行長方體卷積後而產生的整體輸出資料。
第1A圖根據本發明一實施例,顯示一卷積計算積體電路之方塊圖。請參考第1A圖,本發明卷積計算積體電路100,適用於MobileNet,包含一DNN加速器110、一混合草稿式記憶體(hybrid scratchpad memory,以下簡稱為HRAM)120、一快閃控制介面130、至少一數位訊號處理器(DSP)140、一資料/程式內部記憶體141、一快閃記憶體150以及一感測器介面170。其中,該DNN加速器110、該混合草稿 式記憶體120、該快閃控制介面130、該至少一數位訊號處理器(DSP)140、該資料/程式內部記憶體141以及該感測器介面170係內建於一晶片10之內,而該快閃記憶體150係配置於該晶片10之外部。該DNN加速器110包含至少一MAC電路111、一神經函數單元112、一壓縮器113、一解壓縮器114及一個ZRAM 115。該HRAM 120、該資料/程式內部記憶體141及該ZRAM 115都是內部記憶體,如晶載靜態隨機存取記憶體(on-chip SRAM)。根據不同需求及應用,該些DSP 140及該些MAC電路111的數目隨之不同。該些DSP 140及該些MAC電路111係平行運作。一較佳實施例中,該卷積計算積體電路100係包含四個DSP 140及八個MAC電路111。為方便描述,以下的例子及實施例皆以多個DSP 140及多個MAC電路111為例做說明。該感測器介面170的例子係包含,但不受限於,一數位視訊埠(digital video port)介面。各MAC電路111之實施係為本技術領域人士所習知,且通常以一乘法器、一加法器及一累積器來實施。一實施例中,該卷積計算積體電路100係實施於一邊緣/移動裝置。
根據該資料/程式內部記憶體141中的程式,該些DSP 140被規劃(configured)以執行有關卷積計算(包含正規/標準的卷積及長方體卷積)的所有操作,及透過一控制匯流排142,致能(enable)/禁能(disable)該些MAC電路111、該神經函數單元112、該壓縮器113及該解壓縮器114。該些DSP 140更被規劃為透過該控制匯流排142,控制該ZRAM 115及該HRAM 120的輸入/輸出操作。透過該感測器匯流排170,將來自一影像/聲音擷取裝置(如照相機)的一原始輸入影像儲存於該HRAM 120。該原始輸入影像可以是具有多通道的一般影像或是源自於一聲音訊號(audio signal)之具有單通道之光譜圖(spectrogram)(將於後面討論)。該快閃記憶體150預先儲存多個係數(coefficient),該些係數用以形成MobileNet第一層及各卷積層的該些過濾器。在進行MobileNet第一層及各卷積層的卷積計算之前,該些DSP 140透過該快閃控制介面130從該快閃記憶體150讀取出對應的多個係數並暫存於HRAM 120。在進行卷積計算期間,根據該資料/程式內部記憶體141中的程式,該些DSP 140透過該控制匯流排142指示該些MAC電路111對HRAM 120中的影像資料及該些係數,進行相關的乘法及累積操作。
該些DSP 140透過該控制匯流排142致能該神經函數單元112,以施予一選定的激勵函數(activation function)於該些MAC電路111的輸出之各元素。第1B圖根據本發明一實施例,顯示神經函數單元之方塊圖。請參考第1B圖,本發明神經函數單元112包含一加法器171、一多工器172及Q個激勵函數查找表(lookup table)161~16Q,其中Q>=1。激勵函數的選擇有很多,例如:線性整流函數(rectified linear unit,ReLU)、Tanh、Sigmoid等等。根據不同的需求,激勵函數查 找表161~16Q的數目Q及選擇亦隨之不同。加法器171將一輸入元素加上一偏差值(bias)(如20)以產生一偏差元素e0,並將該偏差元素e0傳送給所有激勵函數查找表161~16Q。根據該偏差元素e0,該些激勵函數查找表161~16Q分別輸出對應輸出值e1~eQ。最後,根據一控制訊號sel,該多工器172從輸出值e1~eQ中選擇其一輸出當作一輸出元素。
在施予該選定的激勵函數於該些MAC電路111的輸出後,該些DSP 140透過該控制匯流排142指示該壓縮器113,利用任何壓縮方法(例如RRVC方法)(將於後述),將來自該神經函數單元112的資料,以逐長方體方式(cuboid by cubid),壓縮為多個長方體的多個壓縮區塊。該ZRAM 115用來儲存與MobileNet第一層及各卷積層的輸出特徵圖有關的該些壓縮區塊。該些DSP 140透過該控制匯流排142致能/指示該解壓縮器114,利用任何解壓縮方法(例如RRV解壓縮方法)(將於後述),以逐壓縮區塊方式,將來自該ZRAM 115的多個壓縮區塊進行解壓縮,以進行後續的長方體卷積計算。該控制匯流排142是供該些DSP 140用來控制該些MAC電路111、該神經函數單元112、該壓縮器113、該解壓縮器114、該ZRAM 115及該HRAM 120。一實施例中,該控制匯流排142包含六條控制線,由該些DSP 140分別連接至該些MAC電路111、該神經函數單元112、該壓縮器113、該解壓縮器114、該ZRAM 115及該HRAM 120。
第2圖係根據本發明一實施例,顯示一卷積計算方法之流程圖。本發明卷積計算方法,應用於包含一第一內部記憶體及一第二內部記憶體之積體電路(如包含該ZRAM 115及該HRAM 120之積體電路100)中且該積體電路適用於MobileNet,以下,請參考第1A、2及3A~3C圖,說明本發明卷積計算方法,並假設(1)MobileNet中有T個卷積層;(2)預先儲存一原始輸入影像(即饋入MobileNet第一層的輸入影像)於該HRAM 120;(3)預先從該快閃記憶體150中讀出MobileNet第一層及各卷積層的係數(以形成對應的過濾器)。
步驟S202:使用對應的過濾器,對該輸入影像進行一正規/標準的卷積計算,以產生一輸出特徵圖。一實施例中,根據MobileNet的規格,由該些DSP 140及該些MAC電路111利用對應的過濾器,對該HRAM 120中的輸入影像進行一正規/標準的卷積計算,以產生MobileNet第一層之輸出特徵圖(也等於是後續卷積層的輸入影像)。其中,該輸入影像具有至少一通道。
步驟S204:將該輸出特徵圖分割為多個相同大小的長方體、將各長方體的資料壓縮為一壓縮區塊及依序將該些壓縮區塊儲存於ZRAM 115。第3A圖是尺寸為DF*DF*M之MobileNet第一層之輸出特徵圖的一個例子。請注意,MobileNet中,第j層的輸出特徵圖相當於第(j+1)層的輸入影像。一實施例中,請參考第3A-3B圖,該些DSP 140將該尺寸 等於DF*DF*M的輸入影像/輸出特徵圖水平地分割為K個尺寸為DC*DF*M的長方體,其中任二個相鄰長方體之間的各通道有(DC-DS)列的重疊。在第3A-3C圖的例子中,因為DC=4及DS=2,故在任二個相鄰長方體之間的各通道有二列的重疊。請注意,在前一個長方體完成長方體卷積計算後,其對應的3D逐點輸出陣列的高度僅有DS(第3C圖),故該前一個長方體的最後(DC-DS)列(row)的影像資料(第3A圖)仍然必須用來進行下一個長方體的長方體卷積計算,這是本發明為何在任二個相鄰長方體之間的各通道必須保留(DC-DS)列重疊的原因。
請再注意,第3A圖中MobileNet第一層之輸出特徵圖的M個通道的資料是平行地產生,從左至右、逐列、由上到下。因此,一旦第一個長方體的所有資料(如各通道從第一列至第四列)都儲存至該HRAM 120時,該些DSP 140透過該控制匯流排142指示該壓縮器113,利用任何壓縮方法(例如RRVC方法)(將於後述),將第一個長方體的所有資料壓縮為第一個壓縮區塊,並將該第一個壓縮區塊儲存於ZRAM 115。同樣地,一旦第二個長方體的所有資料都儲存至該HRAM 120時,該些DSP 140透過該控制匯流排142指示該壓縮器113,利用RRVC方法,將第二個長方體的所有資料壓縮為第二個壓縮區塊,並將該第二個壓縮區塊儲存於ZRAM 115。依此方式,重複上述壓縮及儲存操作,直到 所有長方體的壓縮區塊都儲存於ZRAM 115為止。請再注意,步驟S204與S212所使用的RRVC方法僅是一個示例,而非本發明之限制。實際實施時,可採用其他壓縮方式,此亦落入本發明之範圍。當MobileNet第一層之輸出特徵圖的所有長方體的壓縮區塊都儲存於ZRAM 115後,本流程跳到步驟S206。在步驟S204結束時,設定i=j=1。
步驟S206:為進行第j個卷積層的長方體卷積,先從ZRAM 115讀取第i個長方體的第i個壓縮區塊、再將第i個壓縮區塊解壓縮為解壓縮資料並儲存該解壓縮資料於HRAM 120。一實施例中,該些DSP 140透過該控制匯流排142指示該解壓縮器114,以逐壓縮區塊方式,從ZRAM 115讀取該些壓縮區塊,利用相對於步驟S204之壓縮方法之任何解壓縮方法(例如RRV解壓縮方法)(將於後述),將第i個長方體的解壓縮資料儲存於HRAM 120中。本發明無須使用任何外部DRAM,積體電路100中HRAM 120的小量儲存空間就足夠單一長方體的解壓縮資料進行長方體卷積計算,因為同時間其他長方體的壓縮區塊係儲存於ZRAM 115中。
另一實施例中,該正規/標準的卷積計算(步驟S202~步驟S204)及該長方體卷積計算(步驟S206~步驟S212)是以管線方式(pipelined manner)來進行。換言之,要進行該長方體卷積計算(步驟S206~步驟S212)無須等到MobileNet第一層之輸出特徵圖的所有資料都被壓縮且儲存於ZRAM 115(步驟S202~步驟S204),而是一旦第一層之輸出特徵圖的第一個長方體的所有資料都儲存至HRAM 120時,該些DSP 140就直接對該第一個長方體的資料,進行第二層(或第一卷積層)的長方體卷積計算,而不是指示該壓縮器113去壓縮該第一個長方體的資料。在此同時,該壓縮器113將第一層之輸出特徵圖之後續長方體的資料分別壓縮成多個壓縮區塊,再依序儲存於ZRAM 115。在該第一個長方體的第二層(或第一卷積層)之長方體卷積計算完成後,以逐壓縮區塊方式,讀取儲存於ZRAM 115的其他長方體的該些壓縮區塊,並解壓縮以利進行後續的長方體卷積計算(步驟S206)。
步驟S208:利用M個過濾器Kd(1)~Kd(M),對暫存在HRAM 120的第i個長方體的解壓縮資料,進行逐深度卷積計算。根據本發明,該長方體卷積為一逐深度卷積並跟隨一逐點卷積。第3B圖顯示該逐深度卷積如何運作的例子。參考第3B圖,該逐深度卷積是一個逐通道(channel-wise)的DK*DK空間卷積。舉例而言,尺寸為DC*DF的輸入陣列IA1與尺寸為DK*DK的過濾器Kd(1)進行卷積,以產生尺寸為DS*DF/St的2D逐深度輸出陣列d1;尺寸為DC*DF的輸入陣列IA2與尺寸為DK*DK的過濾器Kd(2)進行卷積,以產生尺寸為DS*DF/St的2D逐深度輸出陣列d2;...;依此類推。在此,假設各輸入陣列的四邊被填上一層0(即padding=1),故各2D逐 深度輸出陣列的高度Ds=ceil((Dc-2)/St),其中取整函數ceil( )代表在數學及電腦科學中,將一實數對應到相近整數的函數;參數St代表一步輻(stride),係有關於一過濾器在一輸入陣列上移動時,每次移動的像素數目。在MobileNet中,通常設定St=1或2。因為第3B圖有M個輸入陣列(對應於第i個長方體的M個通道),故有M個DK*DK的空間卷積以產生M個2D逐深度輸出陣列d1~dM,進而形成一3D逐深度輸出陣列。
在通篇說明書及後續的請求項當中所提及的相關用語定義如下,除非本說明書中另有特別指明。「輸入陣列」一詞指的是:一輸入影像中一長方體之一通道。在第3A-3B圖的例子中,尺寸皆為DC*DF的M個輸入陣列(IA1~IAM)形成尺寸為DC*DF*M的一長方體;尺寸皆為DC*DF*M的K個長方體對應尺寸為DF*DF*M的一輸入影像,且任二個相鄰長方體之間的各通道有(DC-DS)列的重疊。「2D逐點輸出陣列」一詞指的是:和一對應輸出特徵圖之一長方體有關之一3D逐點輸出陣列之一通道。在第3C圖的例子中,尺寸皆為DS*(DF/St)的N個2D逐點輸出陣列形成尺寸為DS*(DF/St)*N的3D逐點輸出陣列,該3D逐點輸出陣列和一對應輸出特徵圖之一長方體有關,以及尺寸皆為DS*(DF/St)*N的K個3D逐點輸出陣列形成尺寸為(DF/St)*(DF/St)*N的對應輸出特徵圖。
步驟S210:利用N個過濾器Kp(1)~Kp(N),對暫存於HRAM 120之3D逐深度輸出陣列,進行逐點卷積計算以 產生一3D逐點輸出陣列。第3C圖顯示該逐點卷積如何運作的例子。參考第3C圖,利用各1*1*M的過濾器Kp(1)~Kp(N),該些DSP 140施予逐點(或1*1)卷積橫跨該3D逐深度輸出陣列之所有通道,並混合該3D逐深度輸出陣列之對應元素,以產生一對應2D逐點輸出陣列中各位置的值。舉例而言,尺寸為DS*(DF/St)*M的3D逐深度輸出陣列與尺寸為1*1*M的過濾器Kp(1)進行卷積,以產生尺寸為DS*(DF/St)的2D逐點輸出陣列p(1);尺寸為DS*(DF/St)*M的3D逐深度輸出陣列與尺寸為1*1*M的過濾器Kp(2)進行卷積,以產生尺寸為DS*(DF/St)的2D逐點輸出陣列p(2);...;依此類推。在完成逐點卷積計算後,3D逐點輸出陣列的尺寸DS*(DF/St)*N係不同於該3D逐深度輸出陣列的尺寸DS*(DF/St)*M。
請注意,在本發明卷積計算方法中,皆會施加一對應激勵函數於各卷積計算之結果。為清楚及方便描述本發明,第2圖中僅說明卷積計算,而省略其對應的激勵函數。例如,在完成正規/標準的卷積計算後,該些MAC電路111產生一結果圖,然後,該神經函數單元112施予一第一激勵函數(如ReLU)至該結果圖的各元素,以產生該輸出特徵圖(步驟S202);在尺寸為DC*DF的輸入陣列IAm與尺寸為DK*DK的過濾器Kd(m)進行卷積後,該些MAC電路111產生一逐深度結果圖,然後,該神經函數單元112施予一第二激勵函數(如Tanh)至該逐深度結果圖的各元素,以產生尺寸 DS*(DF/St)的該2D逐深度輸出陣列,其中,1<=m<=M(步驟S208);在尺寸為DS*(DF/St)*M的3D逐深度輸出陣列與尺寸為1*1*M的過濾器Kp(n)進行卷積後,該些MAC電路111產生一逐點結果圖,然後,該神經函數單元112施予一第三激勵函數(如Sigmoid)至該逐點結果圖的各元素,以產生尺寸為DS*(DF/St)的2D逐點輸出陣列p(n),其中,1<=n<=N(步驟S210)。
步驟S212:將第i個長方體的3D逐點輸出陣列壓縮成一個壓縮區塊及將該壓縮區塊儲存於ZRAM 115。一實施例中,該些DSP 140透過該控制匯流排142指示該壓縮器113,利用RRVC將第i個長方體的3D逐點輸出陣列壓縮成一個壓縮區塊及將該壓縮區塊儲存於ZRAM 115。在本步驟結束時,將i值加1。
步驟S214:決定i是否大於K。若是,本流程跳到步驟S216,若否,本流程回到步驟S206。
步驟S216:將j值加1。
步驟S218:決定j是否大於T。若是,結束本流程,若否,本流程回到步驟S206。
第2圖的卷積計算方法係應用於具有晶載隨機存取記憶體(如ZRAM 115及HRAM 120)之積體電路中,以進行MobileNet的正規/標準卷積計算與長方體卷積計算,且避免存取外部DRAM中的相關資料。因此,相較於從事 MobileNet卷積計算的習知積體電路,本發明不但可降低HRAM 120及ZRAM 115的尺寸,也能降低積體電路100的尺寸與功率消耗。
由於空間相干性(spatial coherence),MobileNet的各卷積層的各2D逐點輸出陣列p(n)之相鄰列間存在重覆值,或MobileNet第一層之輸出特徵圖之各長方體之各通道之相鄰列間存在重覆值,其中1<=n<=N。因此,本發明提供一種RRVC方法,主要是對各2D逐點輸出陣列p(n)或一目標長方體之各通道之相鄰列進行逐位元(bitwise)互斥或(XOR)運算,以減少儲存位元數。第4A圖係根據本發明一實施例,顯示RRVC方法之流程圖。第5A圖顯示該RRVC方法如何運作的例子。該壓縮器113將該RRVC方法應用於MobileNet第一層之輸出特徵圖之各長方體之各通道(如第3A圖),或與各卷積層的各長方體有關之各2D逐點輸出陣列p(n)(如第3C圖)。以下,請參考第1A、3C、4A及5A圖,說明本發明RRVC方法,並假設該RRVC方法係應用於與單一長方體有關之一3D逐點輸出陣列,且該3D逐點輸出陣列具有多個2D逐點輸出陣列p(1)~p(N),如第3C圖所示。
步驟S402:設定i=j=1,以初始化參數。
步驟S404:將與第f個長方體有關之一3D逐點輸出陣列之一2D逐點輸出陣列p(i)分割為R個尺寸為a*b的工作次陣列A(j),其中R>1、a>1及b>1。在第3A及5A圖的例子 中,a=b=4且1<=f<=K。
步驟S406:根據一參考相位及工作次陣列A(j)的第一列的第一至第三個元素,形成一參考列51。一實施例中,該壓縮器113將該參考列51的第一個元素51a(即該參考相位)設為128,並將工作次陣列A(j)的第一列的第一至第三個元素的值複製到該參考列51的第二至第四個元素。
步驟S408:根據該參考列及該工作次陣列A(j),進行逐位元XOR運算。具體而言,是對從該參考列51及該工作次陣列A(j)的第一列依序輸出的二個元素,或者對從該工作次陣列A(j)的任二相鄰列依序輸出的二個元素,進行逐位元XOR運算,以產生一輸出圖53的對應列。根據第5A圖的例子(即a=b=4),對從該參考列51及該工作次陣列A(j)的第一列依序輸出的二個元素,進行逐位元XOR運算,以產生該輸出圖53的第一列;對從該工作次陣列A(j)的第一列及第二列依序輸出的二個元素,進行逐位元XOR運算,以產生該輸出圖53的第二列;對從該工作次陣列A(j)的第二列及第三列依序輸出的二個元素,進行逐位元XOR運算,以產生該輸出圖53的第三列;對從該工作次陣列A(j)的第三列及第四列依序輸出的二個元素,進行逐位元XOR運算,以產生該輸出圖53的第四列。
步驟S410:將該輸出圖53的非零(non-zero,NZ)值替換為1以形成一非零圖55,並依序將在該工作次陣 列A(j)中和該輸出圖53中的非零值有相同位置的原始值儲存於一搜尋佇列(queue)54。以從上至下、由左至右的方式,讀取在該工作次陣列A(j)的原始值,並儲存於該搜尋佇列54。和該工作次陣列A(j)有關的該搜尋佇列54及該非零圖55就成為即將被儲存於ZRAM 115之壓縮區塊的一部分。在第5A圖的例子中,用來儲存的總位元數從128降低至64,即壓縮率為50%。
步驟S412:將j值加1。
步驟S414:決定j是否大於R。若是,本流程跳到步驟S416,若否,本流程回到步驟S406以處理下一個工作次陣列。
步驟S416:將i值加1。
步驟S418:決定i是否大於N。若是,本流程跳到步驟S420,若否,本流程回到步驟S404以處理下一個2D逐點輸出陣列。
步驟S420:將上述所有非零圖55及搜尋佇列54組合成該第f個長方體的一壓縮區塊。並結束本流程。
第4B-4C圖係根據本發明一實施例,顯示RRV解壓縮方法之流程圖。第5B圖顯示該RRV解壓縮方法如何運作的例子。第4B-4C圖的該RRV解壓縮方法係對應至第4A圖的該RRVC方法。該解壓縮器114將該RRV解壓縮方法應用於與單一長方體有關之一壓縮區塊。以下,請參考第 1A、3C、4B-4C及5B圖,說明本發明RRV解壓縮方法。
步驟S462:設定i=j=1,以初始化參數。
步驟S464:從儲存於ZRAM 115的第f個長方體的一壓縮區塊中,擷取一非零圖55’及一搜尋佇列54’。該非零圖55’及該搜尋佇列54’對應至與第f個長方體有關之一3D重建(restored)逐點輸出陣列之一2D重建逐點輸出陣列p’(i)之一重建工作次陣列A’(j)。假設該重建工作次陣列A’(j)的尺寸為a*b、各2D重建逐點輸出陣列p’(i)具有R個重建工作次陣列A’(j)、及各3D重建逐點輸出陣列p’(i)具有N個2D重建逐點輸出陣列p’(i)有關,其中R>1、a>1及b>1。在第3A及5B圖的例子中,a=b=4且1<=f<=K。
步驟S466:根據該搜尋佇列54’的值,在該重建工作次陣列A’(j)中重建了和該非零圖55’中的非零值有相同位置的非零元素。如第5B圖所示,根據該搜尋佇列54’和該非零圖55’的值,在該重建工作次陣列A’(j)中重建了六個非零元素,但還有十個空白。
步驟S468:根據一參考相位及該重建工作次陣列A’(j)的第一列的第一至第三個元素,形成一重建參考列57。一實施例中,該解壓縮器114將重建參考列57的第一個元素57a(即該參考相位)設為128,並將重建工作次陣列A’(j)的第一列的第一至第三個元素的值複製到重建參考列57的第二至第四個元素。假設第5B圖中該重建工作次陣列A’(j) 的第一列的b1-b3代表空白。
步驟S470:在該重建輸出圖58中,將零值填入和該非零圖55’中的零值相同位置內。設定x=2。
步驟S472:根據該重建參考列57及該重建工作次陣列A’(j)的第一列的已知元素、該重建輸出圖58第一列的零值以及對該重建參考列57及該重建工作次陣列A’(j)的第一列進行的逐位元XOR運算,將計算得到的值填入重建工作次陣列A’(j)的第一列的空白處。據此,經計算依序得到b1=128、b2=222、b3=b2=222。
步驟S474:根據該重建工作次陣列A’(j)的第(x-1)列及第x列的已知元素、該重建輸出圖58第x列的零值以及對該重建工作次陣列A’(j)的第(x-1)列及第x列進行的逐位元XOR運算,將計算得到的值填入重建工作次陣列A’(j)的第x列的空白處。例如,若重建工作次陣列A’(j)的第二列的b4-b5代表空白,則經計算依序得到b4=222、b5=b3=222。
步驟S476:將x值加1。
步驟S478:決定x是否大於a。若是,則完成該重建工作次陣列A’(j)且本流程跳到步驟S480,若否,本流程回到步驟S474。
步驟S480:將j值加1。
步驟S482:決定j是否大於R。若是,則完成2D重建逐點輸出陣列p’(i)且本流程跳到步驟S484,若否,本 流程回到步驟S464。
步驟S484:將i值加1。
步驟S486:決定i是否大於N。若是,本流程跳到步驟S488,若否,本流程回到步驟S464以處理下一個2D重建逐點輸出陣列。
步驟S488:根據該些2D重建逐點輸出陣列p’(i),形成和第f個長方體有關之3D重建逐點輸出陣列,其中1<=i<=N。並結束本流程。
請注意,第5A圖的工作次陣列A(j)及第5B圖的重建工作次陣列A’(j)所具有的正方形與尺寸等於4*4只是一個示例,而非本發明的限制。在實際實施時,該工作次陣列A(j)及該重建工作次陣列A’(j)可具其他形狀(如矩形)及尺寸。
如本技術領域人士所熟知的,透過一光譜儀(optical spectrometer)、一組帶通濾波器、傅利葉轉換及一小波(wavelet)轉換,可將一聲音(audio)訊號轉換為一光譜圖(spectrogram)。由於該聲音訊號係隨著時間而變化,該光譜圖是該聲音訊號中多個頻率的頻譜之視覺表現。光譜圖廣泛應用於音樂、聲納、雷達、語音處理、地震等等。聲音訊號的光譜圖可用來辨識口說字詞的發音及分析動物不同叫聲。由於光譜圖的格式和灰階影像相同,故本發明將聲音訊號的光譜圖視為具有單一通道之輸入影像。因此, 上述實施例與例子不僅可應用於一般的灰階/彩色影像,也能應用於聲音訊號的光譜圖。如同一般的灰階/彩色影像,聲音訊號的光譜圖也必須事先透過該感測器匯流排170儲存於該HRAM 120,以備進行上述的正規/標準卷積及長方體卷積。
第1A-1B、2、4A-4C圖揭露的實施例以及功能性操作可利用數位電子電路、具體化的電腦軟體或韌體、電腦硬體,包含揭露於說明書的結構及其等效結構、或者上述至少其一之組合等等,來實施。在第2及4A-4D圖揭露的方法與邏輯流程可利用至少一部電腦執行至少一電腦程式的方式,來執行其功能。在第2及4A-4D圖揭露的方法與邏輯流程以及第1A-1B圖揭露的卷積計算積體電路100及神經函數單元112可利用特殊目的邏輯電路來實施,例如:現場可程式閘陣列(FPGA)或特定應用積體電路(ASIC)等。適合執行該至少一電腦程式的電腦包含,但不限於,通用或特殊目的的微處理器,或任一型的中央處理器(CPU)。適合儲存電腦程式指令及資料的電腦可讀取媒體包含所有形式的非揮發性記憶體、媒體及記憶體裝置,包含,但不限於,半導體記憶體裝置,例如,可抹除可規劃唯讀記憶體(EPROM)、電子可抹除可規劃唯讀記憶體(EEPROM)以及快閃(flash)記憶體裝置;磁碟,例如,內部硬碟或可移除硬碟;磁光碟(magneto-optical disk),例如,CD-ROM或DVD- ROM。
另一實施例中,該些DSP 140、該些MAC電路111、該神經函數單元112、該壓縮器113以及該解壓縮器114係利用一個一般用途(general-purpose)處理器以及一程式記憶體(例如該資料/程式內部記憶體141)來實施。該程式記憶體係與HRAM 120及ZRAM 115隔離開來,用來儲存一處理器可執行程式。當該一般用途處理器執行該處理器可執行程式時,該一般用途處理器被規劃以運作有如:該些DSP 140、該些MAC電路111、該神經函數單元112、該壓縮器113以及該解壓縮器114。
上述僅為本發明之較佳實施例而已,而並非用以限定本發明的申請專利範圍;凡其他未脫離本發明所揭示之精神下所完成的等效改變或修飾,均應包含在下述申請專利範圍內。
10‧‧‧晶片
100‧‧‧卷積計算積體電路
110‧‧‧DNN加速器
111‧‧‧MAC電路
112‧‧‧神經函數單元
113‧‧‧壓縮器
114‧‧‧解壓縮器
115‧‧‧ZRAM
120‧‧‧混合草稿式記憶體
130‧‧‧快閃控制介面
140‧‧‧數位訊號處理器(DSP)
141‧‧‧資料/程式內部記憶體
142‧‧‧控制匯流排
150‧‧‧快閃記憶體
170‧‧‧感測器介面
Claims (19)
- 一種卷積計算方法,應用於一積體電路中,該積體電路係適用於一深度神經網路且包含一第一內部記憶體及一第二內部記憶體,該方法包含:(a)解壓縮來自該第一內部記憶體輸出之一第一壓縮區塊,並將解壓縮資料儲存於該第二內部記憶體,其中該第一壓縮區塊係與一第一輸入影像之一目前長方體有關;(b)對該解壓縮資料進行長方體卷積計算以產生一3D逐點輸出陣列;(c)將該3D逐點輸出陣列壓縮為一第二壓縮區塊,並將該第二壓縮區塊儲存於該第一內部記憶體;(d)重複步驟(a)至(c),直到和一目標卷積層有關之所有長方體都處理完為止;以及(e)重複步驟(a)至(d),直到所有卷積層都處理完為止;其中,該第一輸入影像係饋入至該些卷積層之任一,並且水平地被分割為複數個具相同尺寸的長方體,且在任二個相鄰長方體之間的各通道有至少一列的重疊;其中,該長方體卷積計算包含一逐深度卷積計算並跟隨一逐點卷積計算;以及其中,該第一輸入影像水平地被分割的方向係平行於該第一輸入影像的深度方向。
- 如申請專利範圍第1項所記載之方法,更包含:在步驟(a)至(e)之前,在該些卷積層之前一層中,利用多個第一過濾器,對儲存於該第二內部記憶體之一第二輸入影像,進行一正規卷積計算以產生該第一輸入影像;以及在步驟(a)至(e)之前及該進行該正規卷積計算步驟之後,以逐壓縮區塊為基礎,將該第一輸入影像壓縮為多個第一壓縮區塊,並儲存於該第一內部記憶體。
- 如申請專利範圍第2項所記載之方法,其中該第二輸入影像為一個具有多通道的一般影像以及一個源自於一聲音訊號且具有單一通道的光譜圖之其一。
- 如申請專利範圍第1項所記載之方法,其中步驟(b)包含:利用多個第二過濾器,對該解壓縮資料進行該逐深度卷積計算以產生一3D逐深度輸出陣列;以及利用多個第三過濾器,對該3D逐深度輸出陣列進行該逐點卷積計算以產生該3D逐點輸出陣列。
- 如申請專利範圍第1項所記載之方法,其中步驟(c)更包含:(c1)根據一列重覆值壓縮(RRVC)方法,將該3D逐點輸出陣列壓縮為該第二壓縮區塊。
- 如申請專利範圍第5項所記載之方法,其中步驟(c1)更包含:(1)將該3D逐點輸出陣列之一目標通道分割為多個次陣 列;(2)根據一第一參考相位及一目標次陣列的第一列的多個元素,形成一目標次陣列的一參考列;(3)根據該參考列及該目標次陣列,進行逐位元XOR運算以產生一輸出圖;(4)將該輸出圖中的非零值替換為1,以及從該目標次陣列取出對應的原始值,以形成該第二壓縮區塊的一部份;(5)重複步驟(2)至(4),直到該目標通道的所有次陣列都處理完為止;以及(6)重複步驟(1)至(5),直到該3D逐點輸出陣列之所有通道都處理完為止,以形成該第二壓縮區塊。
- 如申請專利範圍第1項所記載之方法,其中步驟(a)更包含:(a1)根據一列重覆值解壓縮方法,解壓縮與該目前長方體有關之該第一壓縮區塊,以產生該些解壓縮資料。
- 如申請專利範圍第1項所記載之方法,其中步驟(a1)更包含:(1)擷取一非零圖及對應的原始值,係有關於該目前長方體之該第一壓縮區塊中一目標通道之一目標重建次陣列;(2)根據該非零圖及對應的原始值,重建該目標重建次陣列中的非零值; (3)根據一第二參考相位及該目標重建次陣列的第一列的多個元素,形成一重建參考列;(4)根據該非零圖中該些零值的位置,將零值填入一重建輸出圖;(5)根據該重建參考列、該重建輸出圖及該目標重建次陣列的已知元素、對該重建參考列及該目標重建次陣列第一列的逐位元XOR運算以及對該目標重建次陣列任二相鄰列的逐位元XOR運算,以逐列方式,將計算出的值填入該目標重建次陣列的空白處;(6)重複步驟(1)至(5),直到該目標通道的所有重建次陣列都處理完為止;以及(7)重複步驟(1)至(6),直到該第一壓縮區塊之所有通道都處理完為止,以形成該些解壓縮資料。
- 一種積體電路,適用於一深度神經網路,包含:至少一處理器,被規劃為對一第一輸入影像之各長方體的解壓縮資料進行長方體卷積計算,其中該第一輸入影像係饋入至多個卷積層之任一;一第一內部記憶體,耦接至該至少一處理器;至少一MAC電路,耦接至該至少一處理器及該第一內部記憶體,用以進行和長方體卷積計算有關之乘法及累積運算,以輸出一第一卷積長方體;一第二內部記憶體,僅儲存多個壓縮區塊; 一壓縮器,耦接至該至少一處理器、該至少一MAC電路、該第一內部記憶體以及該第二內部記憶體,該壓縮器被規劃為將該第一卷積長方體壓縮為一壓縮區塊,並儲存於該第二內部記憶體;以及一解壓縮器,耦接至該至少一處理器、該第一內部記憶體以及該第二內部記憶體,被規劃為以逐壓縮區塊方式,解壓縮來自該第二內部記憶體的該些壓縮區塊,並將單一長方體的解壓縮資料儲存於該第一內部記憶體;其中,該第一輸入影像係水平地被分割為複數個具相同尺寸的長方體,且在任二個相鄰長方體之間的各通道有至少一列的重疊;其中,該長方體卷積計算包含一逐深度卷積計算並跟隨一逐點卷積計算;以及其中,該第一輸入影像水平地被分割的方向係平行於該第一輸入影像的深度方向。
- 如申請專利範圍第9項所記載之積體電路,其中該至少一處理器更被規劃為:對於該些卷積層之前一層,利用多個第一過濾器,對一第二輸入影像進行一正規卷積計算,並導致該至少一MAC電路產生包含多個第二卷積長方體的該第一輸入影像,以及其中該第一內部記憶體用來儲存於該第二輸入影像。
- 如申請專利範圍第10項所記載之積體電路,其中該第二 輸入影像為一個具有多通道的一般影像以及一個源自於一聲音訊號且具有單一通道的光譜圖之其一。
- 如申請專利範圍第10項所記載之積體電路,其中該至少一處理器更被規劃為利用多個第二過濾器,對該解壓縮資料進行該逐深度卷積計算,並導致該至少一MAC電路產生以產生一3D逐深度輸出陣列,再利用多個第三過濾器,對該3D逐深度輸出陣列進行該逐點卷積計算,並導致該至少一MAC電路產生該第一卷積長方體。
- 如申請專利範圍第12項所記載之積體電路,更包含:一快閃記憶體,用以預先儲存多個係數,且該些係數用以形成該些第一、第二及第三過濾器;其中該至少一處理器更被規劃為在該正規卷積計算及該長方體卷積計算之前,從該快閃記憶體中讀出對應係數,並暫存於該第一內部記憶體。
- 如申請專利範圍第10項所記載之積體電路,其中該壓縮器更被規劃為將該第一卷積長方體及該第二卷積長方體壓縮之任一視為一目標長方體,並根據一列重覆值壓縮(RRVC)方法,壓縮該目標長方體以產生一對應壓縮區塊。
- 如申請專利範圍第14項所記載之積體電路,其中根據該列重覆值壓縮方法,該壓縮器更被規劃為:(1)將該目標長方體之一目標通道分割為多個次陣列;(2)根據一第一參考相位及一目標次陣列的第一列的多個 元素,形成該目標次陣列的一參考列;(3)根據該參考列及該目標次陣列,進行逐位元XOR述算以產生一輸出圖;(4)將該輸出圖中的非零值替換為1,以及從該目標次陣列取出對應的原始值,以形成該對應壓縮區塊的一部份;(5)重複步驟(2)至(4),直到該目標通道的所有次陣列都處理完為止;以及(6)重複步驟(1)至(5),直到該目標長方體之所有通道都處理完為止,以形成該對應壓縮區塊。
- 如申請專利範圍第9項所記載之積體電路,其中該解壓縮器更被規劃為根據一列重覆值解壓縮方法,解壓縮來自該第一內部記憶體之各壓縮區塊。
- 如申請專利範圍第16項所記載之積體電路,其中根據該列重覆值解壓縮方法,該解壓縮器更被規劃為:(1)擷取一非零圖及對應的原始值,係有關於一目標長方體之一壓縮區塊中一目標通道之一目標重建次陣列;(2)根據該非零圖及對應的原始值,重建該目標重建次陣列中的非零值;(3)根據一第二參考相位及該目標重建次陣列的第一列的多個元素,形成一重建參考列;(4)根據該非零圖中該些零值的位置,將零值填入一重建輸出圖; (5)根據該重建參考列、該重建輸出圖及該重建次陣列的已知元素、對該重建參考列及該重建次陣列第一列的逐位元XOR運算以及對該重建次陣列任二相鄰列的逐位元XOR運算,以逐列方式,將計算出的值填入該重建次陣列的空白處;(6)重複步驟(1)至(5),直到該目標通道的所有重建次陣列都處理完為止;以及(7)重複步驟(1)至(6),直到該目標長方體之該壓縮區塊之所有通道都處理完為止,以形成該些解壓縮資料。
- 如申請專利範圍第9項所記載之積體電路,更包含:一神經函數單元,耦接在該至少一處理器、該至少一MAC電路及該壓縮器之間,用來施予一選定的激勵函數於該至少一MAC電路輸出的各元素。
- 如申請專利範圍第18項所記載之積體電路,其中該神經函數單元包含:一加法器,用以將從該至少一MAC電路輸出的各元素加上一偏差值,以產生一偏差元素;Q個激勵函數查找表,耦接該加法器,用以根據該偏差元素產生Q個激勵值;以及一多工器,耦接該Q個激勵函數查找表的輸出端及該壓縮器,用以從該Q個激勵值中選擇其一當作一輸出元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862733083P | 2018-09-19 | 2018-09-19 | |
US62/733,083 | 2018-09-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202013262A TW202013262A (zh) | 2020-04-01 |
TWI716108B true TWI716108B (zh) | 2021-01-11 |
Family
ID=69772188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108133548A TWI716108B (zh) | 2018-09-19 | 2019-09-18 | 適用於深度神經網路之卷積計算積體電路及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200090030A1 (zh) |
TW (1) | TWI716108B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI840715B (zh) * | 2021-01-21 | 2024-05-01 | 創惟科技股份有限公司 | 基於卷積神經網路的運算電路、資料處理方法及電腦可讀取儲存媒體 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USD959447S1 (en) | 2019-12-20 | 2022-08-02 | Sap Se | Display system or portion thereof with a virtual three-dimensional animated graphical user interface |
USD959476S1 (en) | 2019-12-20 | 2022-08-02 | Sap Se | Display system or portion thereof with a virtual three-dimensional animated graphical user interface |
US11205296B2 (en) * | 2019-12-20 | 2021-12-21 | Sap Se | 3D data exploration using interactive cuboids |
USD959477S1 (en) | 2019-12-20 | 2022-08-02 | Sap Se | Display system or portion thereof with a virtual three-dimensional animated graphical user interface |
US11537865B2 (en) * | 2020-02-18 | 2022-12-27 | Meta Platforms, Inc. | Mapping convolution to a channel convolution engine |
US11443013B2 (en) | 2020-03-23 | 2022-09-13 | Meta Platforms, Inc. | Pipelined pointwise convolution using per-channel convolution operations |
US20210334072A1 (en) * | 2020-04-22 | 2021-10-28 | Facebook, Inc. | Mapping convolution to connected processing elements using distributed pipelined separable convolution operations |
US11295430B2 (en) | 2020-05-20 | 2022-04-05 | Bank Of America Corporation | Image analysis architecture employing logical operations |
US11379697B2 (en) | 2020-05-20 | 2022-07-05 | Bank Of America Corporation | Field programmable gate array architecture for image analysis |
CN112200295B (zh) * | 2020-07-31 | 2023-07-18 | 星宸科技股份有限公司 | 稀疏化卷积神经网络的排序方法、运算方法、装置及设备 |
CN111652330B (zh) * | 2020-08-05 | 2020-11-13 | 深圳市优必选科技股份有限公司 | 图像处理方法、装置、系统、电子设备及可读存储介质 |
CN112099737B (zh) * | 2020-09-29 | 2023-09-01 | 北京百度网讯科技有限公司 | 存储数据的方法、装置、设备和存储介质 |
CN113205107A (zh) * | 2020-11-02 | 2021-08-03 | 哈尔滨理工大学 | 一种基于改进高效率网络的车型识别方法 |
CN112801266B (zh) * | 2020-12-24 | 2023-10-31 | 武汉旷视金智科技有限公司 | 神经网络构建方法、装置、设备及介质 |
CN113033794B (zh) * | 2021-03-29 | 2023-02-28 | 重庆大学 | 基于深度可分离卷积的轻量级神经网络硬件加速器 |
CN113485836B (zh) * | 2021-07-21 | 2024-03-19 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113298241B (zh) * | 2021-07-27 | 2021-10-22 | 北京大学深圳研究生院 | 一种深度可分离卷积神经网络加速方法和加速器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809597A (zh) * | 2007-09-26 | 2010-08-18 | 佳能株式会社 | 计算处理装置及方法 |
US9904847B2 (en) * | 2015-07-10 | 2018-02-27 | Myscript | System for recognizing multiple object input and method and product for same |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157814B2 (en) * | 2016-11-15 | 2021-10-26 | Google Llc | Efficient convolutional neural networks and techniques to reduce associated computational costs |
WO2018217965A1 (en) * | 2017-05-25 | 2018-11-29 | Texas Instruments Incorporated | Secure convolutional neural networks (cnn) accelerator |
CN107844828B (zh) * | 2017-12-18 | 2021-07-30 | 南京地平线机器人技术有限公司 | 神经网络中的卷积计算方法和电子设备 |
US10223611B1 (en) * | 2018-03-08 | 2019-03-05 | Capital One Services, Llc | Object detection using image classification models |
US11687759B2 (en) * | 2018-05-01 | 2023-06-27 | Semiconductor Components Industries, Llc | Neural network accelerator |
-
2019
- 2019-09-17 US US16/573,032 patent/US20200090030A1/en not_active Abandoned
- 2019-09-18 TW TW108133548A patent/TWI716108B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809597A (zh) * | 2007-09-26 | 2010-08-18 | 佳能株式会社 | 计算处理装置及方法 |
US8391306B2 (en) * | 2007-09-26 | 2013-03-05 | Canon Kabushiki Kaisha | Calculation processing apparatus and method |
US9904847B2 (en) * | 2015-07-10 | 2018-02-27 | Myscript | System for recognizing multiple object input and method and product for same |
CN108027876A (zh) * | 2015-07-10 | 2018-05-11 | 迈思慧公司 | 用于识别多个对象输入的系统及其方法和产品 |
Non-Patent Citations (1)
Title |
---|
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI840715B (zh) * | 2021-01-21 | 2024-05-01 | 創惟科技股份有限公司 | 基於卷積神經網路的運算電路、資料處理方法及電腦可讀取儲存媒體 |
Also Published As
Publication number | Publication date |
---|---|
US20200090030A1 (en) | 2020-03-19 |
TW202013262A (zh) | 2020-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI716108B (zh) | 適用於深度神經網路之卷積計算積體電路及其方法 | |
JP7132824B2 (ja) | ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法 | |
WO2020168844A1 (en) | Image processing method, apparatus, equipment, and storage medium | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
US20180253635A1 (en) | Neural network devices and methods of operating the same | |
US9411726B2 (en) | Low power computation architecture | |
JP2019109896A (ja) | ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス | |
JP2019109895A (ja) | ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス | |
GB2554711A (en) | Buffer addressing for a convolutional neural network | |
WO2020062284A1 (zh) | 基于卷积神经网络的图像处理方法和设备,以及无人机 | |
JP7482253B2 (ja) | 画像処理方法、装置、コンピュータ機器及び記憶媒体 | |
EP1800245B1 (en) | System and method for representing a general two dimensional spatial transformation | |
WO2019128726A1 (zh) | 图像处理方法和装置 | |
US11836971B2 (en) | Method and device with convolution neural network processing | |
CN111126559A (zh) | 神经网络处理器及其卷积操作方法 | |
JP2023014091A (ja) | 効率的な畳み込みエンジン | |
JP2022541215A (ja) | ウェーブレット変換に基づく画像符号化/復号方法および装置 | |
CN112017107A (zh) | 基于zynq平台的高并行度、低延时的图像缩放及其裁剪的处理方法 | |
US20230144499A1 (en) | Compressing device and method using parameters of quadtree method | |
US12093800B2 (en) | Hybrid convolution operation | |
JP2021528726A (ja) | ポイントクラウドデータの処理方法、装置、電子機器及び記憶媒体 | |
CA2929403A1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN111967582B (zh) | 一种cnn卷积层运算方法及cnn卷积层运算加速器 | |
JP2023521303A (ja) | 畳み込みハードウェアによる特徴データに対する逆畳み込み処理方法及び装置 | |
CN112528219A (zh) | 存储器装置及其运算方法、计算设备 |