TWI797985B - 卷積運算的執行方法 - Google Patents

卷積運算的執行方法 Download PDF

Info

Publication number
TWI797985B
TWI797985B TW111104810A TW111104810A TWI797985B TW I797985 B TWI797985 B TW I797985B TW 111104810 A TW111104810 A TW 111104810A TW 111104810 A TW111104810 A TW 111104810A TW I797985 B TWI797985 B TW I797985B
Authority
TW
Taiwan
Prior art keywords
data
convolution
block
multiplication
mapping data
Prior art date
Application number
TW111104810A
Other languages
English (en)
Other versions
TW202232345A (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 國立成功大學
Publication of TW202232345A publication Critical patent/TW202232345A/zh
Application granted granted Critical
Publication of TWI797985B publication Critical patent/TWI797985B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Complex Calculations (AREA)

Abstract

一種卷積運算的執行方法,包括:根據特徵圖塊將具有N個通道的輸入圖像分成第一圖塊至第X圖塊;依序對N個通道的輸入圖像的第一圖塊至N個通道的輸入圖像的第X圖塊裡的資料進行卷積運算,並將運算結果儲存為輸出資料;對每一圖塊,透過一卷積核映射該圖塊裡的資料,並且對該圖塊的該映射資料進行乘積累加運算,其中每完成一次乘積累加運算便移動卷積核以改變該圖塊的該映射資料,並對改變的該映射資料進行乘積累加運算,直到該圖塊裡的所有資料完成乘積累加運算,以完成該圖塊的卷積運算。

Description

卷積運算的執行方法
相關申請的交叉引用:
本申請要求如下申請的優先權:2021年02月10日提出申請號為63/147,804的美國臨時案。上述美國臨時案整體以引用方式併入本文中。
本發明係關於一種卷積運算的執行方法,且特別是有關於一種重複使用資料的卷積運算的執行方法。
卷積神經網路(Convolutional Neural Network, CNN)是深層神經網路的一種,其使用卷積層對輸入進行過濾,以獲得有用訊息。卷積層的過濾器可根據所學習的參數進行修改,以萃取得到特定工作的最有用訊息。卷積神經網路通常可適用於分類、偵測與辨識,例如影像分類、醫學影像分析及影像/視訊辨識。
現行有很多用於神經網路的加速器,例如,Eyeriss、張量處理單元(Tensor Processing Unit,TPU)、DianNao家族、Angel Eye和EIE。 然而,對於部分加速器、張量處理單元、DaDianNao和EIE來說,由於它們需要大容量的晶載記憶體(On-Chip Memory),不然就是需要進行大量的晶外記憶體(Off-Chip Memory)的存取,因此並不適用於低端邊緣設備。 雖然Eyeriss和Angel Eye支持多元大小的檔案管理器(filer),但由於處理單元的架構設計或乘積累加運算單元(Multiply-Accumulate Unit,MAC)上的過濾器映射(filter mapping),導致乘積累加運算單元的利用率較低。
有鑑於此,本揭示內容提供一種卷積運算的執行方法,在執行過程中對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而提高效能。
本揭示內容的一態樣在於提供一種卷積運算的執行方法,卷積運算的執行方法由包括多個處理單元與控制器的卷積運算單元執行。卷積運算的執行方法包括以下步驟。透過控制器根據尺寸為T×T的一特徵圖塊將具有N個通道的一輸入圖像分成一第一圖塊至一第X圖塊共X個圖塊,其中每一該X個圖塊包括I j(1,1)~I j(T,T)共T×T個資料,其中j為對應的通道且1 ≤ j ≤ N。透過該等處理單元依序對該N個通道的該輸入圖像的該第一圖塊至該N個通道的該輸入圖像的該第X圖塊裡的資料進行卷積運算,並將運算結果儲存為輸出資料。其中,對每一圖塊,透過尺寸為A×A的一卷積核映射該圖塊裡的資料,並且對該圖塊的該映射資料進行乘積累加運算,其中每完成一次該卷積核所映射的A×A個資料的乘積累加運算便移動該卷積核以改變該圖塊的該映射資料,並對改變的該映射資料進行乘積累加運算,直到該圖塊裡的所有資料完成乘積累加運算,從而完成該圖塊的卷積運算,且所有輸出資料形成輸出圖像,其中1 ≤ A ≤ T。
在本揭示內容的一些實施例中,在A=3的情況下,對每一圖塊,用於進行乘積累加運算的該映射資料為I j(p, q)、I j((p+1), q) 、I j((p+2), q) 、I j(p, (q+1)) 、I j((p+1), (q+1)) 、I j((p+2), (q+1)) 、I j(p, (q+2)) 、I j(p+1), (q+2)) 、I j((p+2), (q+2)),其中1 ≤ p ≤ (T-2),1 ≤ q ≤ (T-2);其中當p=1, q=1時,進行第一次乘積累加運算。
在本揭示內容的一些實施例中,當p≠(T-2)時,每完成一次乘積累加運算,移動該卷積核使得p的值加1,直到p = (T-2)。
在本揭示內容的一些實施例中,當p=(T-2)且q=K時,在完成該映射資料為I j((T-2), K)、I j((T-1), K) 、I j(T, K)、I j((T-2), (K+1))、I j((T-1), (K+1)) 、I j(T, (K+1))、I j((T-2), (K+2))、I j((T-1), (K+2)) 、I j(T, (K+2))的乘積累加運算後,移動該卷積核使得p=1且q=K+1,其中1 ≤ K ≤ (T-2)。
在本揭示內容的一些實施例中,當p=(T-2)且q=(T-2)時,在完成該映射資料為I j((T-2), (T-2))、I j((T-1), (T-2)) 、I j(T, (T-2))、I j((T-2), (T-1))、I j((T-1), (T-1)) 、I j(T, (T-1))、I j((T-2), T)、I j((T-1), T) 、I j(T, T)的乘積累加運算後,完成該圖塊裡的所有資料的乘積累加運算,不再移動該卷積核。
在本揭示內容的一些實施例中, 進行卷積運算的順序為依序對該第一通道至該第N通道的該輸入圖像的該第W圖塊進行卷積運算直到該N個通道的該輸入圖像的該第W圖塊皆完成卷積運算後才對該第一通道至該第N通道的該輸入圖像的第(W+1)圖塊依序進行卷積運算,其中1 ≤ W ≤ X。
在本揭示內容的一些實施例中,其中該等處理單元的每一者包括Y個乘積累加運算單元用以進行乘積累加運算,在A=5且Y < 25的情況下,對每一圖塊,用於進行乘積累加運算的該映射資料為I j(p, q)~I j((p+4), (q+4))共25個,其中1 ≤ p ≤ (T-4),1 ≤ q ≤ (T-4);當p≠(T-4)時,則對該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,並在完成該乘積累加運算後,移動該卷積核使得p的值加1,並對改變的該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,直到p = (T-4)。
在本揭示內容的一些實施例中,當p=(T-4)且q=K時,在完成該25個映射資料中的第一個至第Y個連續的映射資料的乘積累加運算後,移動該卷積核使得p=1且q=K+1,並對改變的該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,其中1 ≤ K ≤ (T-4)。
在本揭示內容的一些實施例中,當p=(T-4)且q=(T-4)時,在完成該25個映射資料中的第一個至第Y個連續的映射資料的乘積累加運算後,在(25-Y) > Y的情況下,移動該卷積核使得p=1且q=1,並在每次移動該卷積核後,對改變的該25個映射資料中的第(Y+1)個至第2Y個連續的映射資料進行乘積累加運算。
在本揭示內容的一些實施例中,當p=(T-4)且q=(T-4)時,在完成該25個映射資料中的第一個至第Y個連續的映射資料的乘積累加運算後,在(25-Y) < Y的情況下,移動該卷積核使得p=1且q=1,並在每次移動該卷積核後,對改變的該25個映射資料中的第(Y+1)個至第25個連續的映射資料以及第一預設資料至第Z預設資料共Z個預設資料進行乘積累加運算,其中Z= (2Y-25)。
在本揭示內容的一些實施例中,進行卷積運算的順序為依序對該第一通道至該第N通道的該輸入圖像的該第W圖塊進行卷積運算直到該N個通道的該輸入圖像的該第W圖塊皆完成卷積運算後才對該第一通道至該第N通道的該輸入圖像的第(W+1)圖塊依序進行卷積運算,其中1 ≤ W ≤ X。
在本揭示內容的一些實施例中,其中該等處理單元的每一者包括Y個乘積累加運算單元用以進行乘積累加運算,在A=1且1< Y < N的情況下,用於進行乘積累加運算的該映射資料為第一通道至第Y通道的該輸入圖像的相同位置的資料I j(p, q)~I Y(p, q) ,其中1 ≤ p ≤ T,1 ≤ q ≤ T。
在本揭示內容的一些實施例中,當p≠ T 時,每完成一次卷積核所映射的Y個資料的乘積累加運算,移動該卷積核使得p的值加1,直到p = T。
在本揭示內容的一些實施例中,當p=T且q=K時,在完成該Y個映射資料I j(T, K)~ I Y(T, K)的乘積累加運算後,移動該卷積核使得p=1且q=K+1,其中1 ≤ K ≤ (T-1)。
在本揭示內容的一些實施例中,當p=T且q=T時,在完成該Y個映射資料I j(T, T)~I Y(T, T)的乘積累加運算後,在(N-Y) > Y的情況下,移動該卷積核使得p=1且q=1,並且用於進行乘積累加運算的該映射資料為第(Y+1)通道至第2Y通道的該輸入圖像的相同位置的資料I (Y+1)(p, q)~I Y(p, q)。
在本揭示內容的一些實施例中,當p=T且q=T時,在完成該Y個映射資料I j(T, T)~I Y(T, T)的乘積累加運算後,在(N-Y) < Y的情況下,移動該卷積核使得p=1且q=1,並且用於進行乘積累加運算的該映射資料為第(Y+1)通道至第N通道的該輸入圖像的相同位置的資料I (Y+1)(p, q)~I N(p, q)以及第一預設資料至第F資料共F個預設資料,其中F = 2Y-N。
在本揭示內容的一些實施例中,每完成一次該卷積核所映射的的資料的乘積累加運算後,將完成的乘積累加運算結果與一部分和值以得到該運算結果,並將該部分和值的值更新為該運算結果的值。
綜上所述,透過本揭示內容的卷積運算的執行方法,在執行過程中對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而最大限度地提高效能,因此可實現較佳的乘積累加運算單元利用率和減少從晶外記憶體存取資料的時間,從而提升了卷積運算單元的效能。
為了讓本發明之上述及其他目的、特徵、優點能更明顯易懂,下文將特舉本發明較佳實施例,並配合所附圖式,作詳細說明如下。
如第1圖所示,第1圖是根據本發明一實施例繪示的一種卷積運算單元100的架構示意圖。卷積運算單元100可包括處理單元陣列(Processing unit array)110、記憶體單元130以及控制器150。處理單元陣列110包括多個一維的處理單元(Processing unit)111,其分別配置根據控制器150所接收的來自中央處理單元170的指令進行卷積運算,例如第2圖所示的卷積運算的執行方法200。在一實施例中,每個處理單元111皆包括多個乘積累加運算單元(Multiply-Accumulate Unit,MAC) (圖未繪示)用以執行乘積累加運算。記憶體單元130為晶載記憶體(On-Chip Memory),其包括輸入資料記憶體131、權重記憶體133及輸出資料記憶體135。輸入資料記憶體131配置為根據控制器150所接收的來自中央處理單元170的指令存取儲存在卷積運算單元100外部的晶外記憶體(Off-Chip Memory)190的所需進行卷積運算的輸入資料(例如輸入圖像(Input  Image))。權重記憶體133配置為根據控控制器150所接收的來自中央處理單元170的指令存取儲存在卷積運算單元100外部的晶外記憶體190的所需進行卷積運算的卷積核(Kernel)K1~K32,其中卷積核根據尺寸(size)的不同而包括不同數量的權重值(weight)。輸出資料記憶體135配置為儲存經由處理單元陣列110進行卷積運算後所得到的運算結果,即第一輸出資料~第三十二輸出資料,這些輸出資料可形成對應的輸出圖像(Output Image)。
在一實施例中,卷積運算單元100和晶外記憶體190之間還配置有第一緩衝器(buffer)191、第二緩衝器193和第三緩衝器195。用於進行卷積運算所需的輸入資料可先由第一緩衝器191對晶外記憶體190進行存取並儲存在第一緩衝器191,而輸入資料記憶體131可直接從第一緩衝器191存取這些資料。用於進行卷積運算所需的卷積核/權重值可先由第二緩衝器193對晶外記憶體190進行存取並儲存在第二緩衝器193,而權重記憶體133可直接從第二緩衝器191存取這些卷積核/權重值。輸出資料記憶體135可將處理單元陣列110進行卷積運算後所得到的輸出圖像先儲存在第三緩衝器195,而第三緩衝器195再將這些結果資料儲存在晶外記憶體190。
請一併參照第2圖,第2圖是根據本發明一實施例繪示的卷積運算的執行方法200的流程圖。在本實施例中,卷積運算的執行方法200透過卷積運算單元100執行。在本實施例中,處理單元陣列110所包括的處理單元111的數量可為32個,可一次平行執行32個卷積運算,並且產生32個輸出資料。每個處理單元111可包括9個乘積累加運算單元,亦即,卷積運算單元100包括288個乘積累加運算單元。卷積核的數量同樣為32個(例如K1~K32),分別對應32個處理單元111。每個卷積核根據其尺寸包含不同數量的權重值,且每個卷積核裡的權重值彼此不一定相同。
在卷積運算的執行方法200的過程中,其對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而最大限度地提高效能,因此可實現較佳的乘積累加運算單元的利用率和減少從晶外記憶體進行資料存取的時間,從而提升卷積運算單元100的效能。
卷積運算的執行方法200包括步驟S210~S250,其中根據卷積核的尺寸的不同,步驟中的細節會有些不同,其將進一步於之後說明。在步驟S210中,透過控制器150根據尺寸為T×T的特徵圖塊(Feature Tile)將具有N個通道的輸入圖像(Input Image)分成第一圖塊至第X圖塊,共X個圖塊,其中每個圖塊包括I j(1,1)~I j(T,T)共T×T個資料,其中j為對應的通道且1 ≤ j ≤ N (可參考第3A圖)。在步驟S230中,透過處理單元111依序對N個通道的輸入圖像的第一圖塊至N個通道的輸入圖像的第X圖塊裡的資料進行卷積運算,並將運算結果儲存為輸出資料。在步驟S250中,對每一圖塊,透過尺寸為A×A的卷積核映射圖塊裡的資料,並且對圖塊的映射資料進行乘積累加運算。其中,每完成一次卷積核所映射的A×A個資料的乘積累加運算便移動該卷積核以改變該圖塊的映射資料,並對改變的映射資料進行乘積累加運算,直到該圖塊裡的所有資料完成乘積累加運算,從而完成該圖塊的卷積運算,且所有輸出資料形成輸出圖像,其中1 ≤ A ≤ T。
請一併參照第3A圖-第3H圖,第3A圖-第3H圖分別是根據本發明的第一實施例的卷積運算的執行方法200的對應步驟的示意圖。由於本實施例的每個處理單元111包括9個乘積累加運算單元,可平行進行一組3×3卷積核的乘積累加運算,因此較佳的卷積核尺寸為3×3(亦即,包含9個權重值),但對於不同尺寸的卷積核本揭示內容亦有對應的優化流程,將於之後進一步敘述。現在先對本實施例中的尺寸為3×3的卷積核進行說明。
如第3A圖所示,對應於步驟S210,將尺寸為H×L×N的輸入圖像根據尺寸為T×T的特徵圖塊的分成多個圖塊,其中H為輸入圖像的高度、L為輸入圖像的寬度、N為輸入圖像的通道(channel)(或稱深度)。因此,對於每一個通道(即第一通道至第N通道)的H×L的輸入圖像,皆可分成相同數量(例如X個)且尺寸為T×T的圖塊。在本實施例中,特徵圖塊的尺寸為52×52(即T=52)。
接著,對應於步驟S230和步驟S250,如第3B圖至第3F圖所示。當輸入圖像的尺寸為H×L×N,則對於第一通道的輸入圖像來說,其包括了I 1(1, 1)~I 1(L, H)共H×L個待運算的資料。對於第N通道的輸入圖像來說,其包括了I N(1, 1)~I N(L, H)共H×L個待運算的資料。由於先前根據T×T的特徵圖塊將H×L×N的輸入圖像分成多個圖塊,則每個通道的第一圖塊包括了I j(1,1)~I j(T,T) 共T×T個待運算的資料,j為通道且1 ≤ j ≤ N。類似地,每個通道的第二個圖塊包括了I j(T+1,1)~I j(2T,2T)待運算的資料,以此類推。
在一實施例中,由於每個輸入圖像的尺寸可能不同,導致根據尺寸為T×T的特徵圖塊所分成的所有圖塊中的部分圖塊無法全部包含輸入圖像的資料。因此,對於被分成的圖塊對應沒包含輸入圖像的資料的位置(或是像素),則這些位置的資料會被填入預設資料。在一實施例中,預設資料為0。
舉例來說,對於尺寸為10×10的輸入圖像,其可包含I j(1,1)~I j(10,10)共100個輸入資料。若特徵圖塊的尺寸為3×3,則可以分成16個圖塊,其中第4個圖塊僅包含了輸入圖像的I j(10, 1)、I j(10, 2)、I j(10, 3)共3個資料分別對應於第4個圖塊的(1,1), (1,2), (1,3)的位置,而對應於第4個圖塊的(2,1), (2,2), (2,3), (3,1), (3,2), (3,3)的位置的資料則皆為0。類似地,對於第16個圖塊,僅包含了輸入圖像的一個資料I j(10, 10)對應於第16個圖塊的(1,1)的位置,而對應於第16個圖塊的剩餘位置的資料則皆為0。
接著,如第3B圖所示,透過卷積核映射圖塊裡的資料,並且對所述圖塊裡的映射資料進行乘積累加運算。在本實施例中,卷積核的尺寸為3×3,因此映射資料可為I j(p, q)、I j((p+1), q) 、I j((p+2), q) 、I j(p, (q+1)) 、I j((p+1), (q+1)) 、I j((p+2), (q+1)) 、I j(p, (q+2)) 、I j(p+1), (q+2)) 、I j((p+2), (q+2))共9筆資料,其中1 ≤ p ≤ (T-2),1 ≤ q ≤ (T-2)。一般來說,第一次乘積累加運算的進行通常是對圖塊的第一個資料(亦即,I j(1,1))依序開始進行,因此第一圖塊裡的第一筆被卷積核所映射的資料可為I 1(1,1)、I 1(2,1)、I 1(3,1)、I 1(1,2)、I 1(2,2)、I 1(3,2)、I 1(1,3)、I 1(2,3)、I 1(3,3),亦即p=1且 q=1。這九個資料均會傳送到處理單元陣列110裡的32個處理單元111進行運算,其中每個處理單元111會利用9個乘積累加運算單元根據對應的卷積核K1~K32裡的權重值對這9個資料分別進行乘法後再相加(即乘積累加運算)。在一些實施例中,在完成乘積累加運算後,處理單元111會進一步將乘積累加運算結果和部分和值Psum相加後所得到的運算結果作為輸出資料儲存在輸出資料記憶體135,並將部分和值Psum的值更新為所得到的運算結果的值。在本實施例中,對於第一通道的輸入圖像來說,其對應的第一輸出結果如下: P 0=I 1(1,1)*W0+I 1(2,1)*W1+I 1(3,1)*W2+I 1(1,2)*W3+I 1(2,2)*W4+I 1(3,2)*W5+I 1(1,3)*W6+I 1(2,3)*W7+I 1(3,3)*W8+Psum 由於部分和值Psum在此之前並未有進行運算,因此預設為0。由於有32個處理單元111,因此此9筆資料會同時運算並得到32個第一輸出資料P 0
接著,如第3C圖至第3D圖所示,當p≠(T-2)時,每完成一次乘積累加運算,移動該卷積核使得p的值加1,直到p = (T-2)。具體來說,將卷積核於第一圖塊右移一個資料單位使其映射的資料右移一個單位,並對改變的9筆映射資料進行乘積累加運算。如第3C圖所示,此時所映射的9個資料分別為I 1(2,1)、I 1(3,1)、I 1(4,1)、I 1(2,2)、I 1(3,2)、I 1(4,2)、I 1(2,3)、I 1(3,3)、I 1(4,3)。由於卷積核僅右移一個單位,本次運算的部分輸入資料與前次運算的部分輸入資料相同,因此只需要存取新增的資料(即I 1(4,1)、I 1(4,2)、I 1(4,3))即可。此外,這9筆資料同樣傳送到每個處理單元111,同樣由相同的卷積核裡的權重值進行運算,因此不需要再重新存取卷積核裡的權重值。同樣地,處理單元111對這9筆資料完成乘積累加運算後的結果再與部分和值Psum(此時為前一次的運算結果)相加,所得到的運算結果作為第一通道的輸出圖像的第二輸出資料P 1,並且同樣將部分和值Psum的值更新為現在的運算結果的值。換句話說,透過更新部分和值Psum,輸出資料亦重複使用,而不必再存取前一次的運算結果。
接著,如第3E圖所示,當p=(T-2)且q=K時,在完成該映射資料為I j((T-2), K)、I j((T-1), K) 、I j(T, K)、I j((T-2), (K+1))、I j((T-1), (K+1)) 、I j(T, (K+1))、I j((T-2), (K+2))、I j((T-1), (K+2)) 、I j(T, (K+2))的乘積累加運算後,移動卷積核使得p=1且q=K+1,其中1 ≤ K ≤ (T-2)。具體來說,當卷積核所映射的圖塊的三行資料(例如,I 1(1,1)~I 1(T,1)、I 1(1,2)~I 1(T,2)、I 1(1,3)~I 1(T,3))都完成乘積累加運算時,便移動卷積核至下一行的資料,亦即,將卷積核下移一個資料單位並回到圖塊的第一列至第三列。
根據上述的規則右移或下移卷積核,直到p=(T-2)且q=(T-2)時,如第3F圖所示,此時卷積核所映射的資料為第一圖塊裡最後一筆待運算的資料,因此,在完成該映射資料為I j((T-2), (T-2))、I j((T-1), (T-2)) 、I j(T, (T-2))、I j((T-2), (T-1))、I j((T-1), (T-1)) 、I j(T, (T-1))、I j((T-2), T)、I j((T-1), T) 、I j(T, T)的乘積累加運算後,第一圖塊裡的所有資料的乘積累加運算便已完成,也就是第一圖塊已完成卷積運算,因此不須再移動卷積核。此時,處理單元111可產生第2704輸出資料(T=52的情況下),並且根據先前所產生的所有輸出資料可形成輸出圖像。
接著,如第3G圖所示,在完成了第一通道的輸入圖像的第一圖塊的卷積運算後,接著根據上述的規則依序對第二通道的輸入圖像的第一圖塊裡進行卷積運算,直到第N通道的輸入圖像的第一圖塊完成卷積運算。當N個通道的的輸入圖像的第一圖塊料皆完成卷積運算後,接著回到第一通道的輸入圖像,並根據上述的規則依序對第二圖塊進行卷積運算(如第3H圖所示),直到N個通道的輸入圖像的所有圖塊皆完成卷積運算。
簡言之,在卷積核的尺寸(即權重值的數量)等於每個處理單元111所包括的乘積累加運算單元的數量的情況,進行卷積運算的順序為依序對該第一通道至該第N通道的該輸入圖像的該第W圖塊進行卷積運算直到該N個通道的該輸入圖像的該第W圖塊皆完成卷積運算後才對該第一通道至該第N通道的該輸入圖像的第(W+1)圖塊依序進行卷積運算,其中1 ≤ W ≤ X。
透過上述的方法,在運算過程中對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而最大限度地提高效能,因此可實現較佳的乘積累加運算單元利用率和減少從晶外記憶體存取資料的時間,從而提升了卷積運算單元100的效能。
請參考第4A圖~第4F圖,第4A圖~第4F圖分別是根據本發明的第二實施例的卷積運算的執行方法200的對應步驟的示意圖。在本實施例中,卷積核的尺寸為5×5。為了方便說明,本示例顯示的T為6,但實際上應為52。
如圖4A所示,同樣地,根據特徵圖塊的尺寸將每個通道的輸入圖像的資料分成多個圖塊,對於每個通道的輸入圖像的第一圖塊來說,由於卷積核的尺寸為5×5,因此映射資料為I j(p, q)~I j((p+4), (q+4))共25個,其中1 ≤ p ≤ (T-4),1 ≤ q ≤ (T-4)。需注意的是,在本實施例中因為卷積核的尺寸為5×5,因此每個卷積核包括25個權重值W0~W24。然而,由於本實施例中每個處理單元111包括的乘積累加運算單元的數量(例如Y個,Y=9)小於權重值的數量,因此並無法同一時間對這25個資料進行乘積累加運算。在一實施例中,從這25個映射資料挑選9個映射資料來進行運算。
因此,在本實施例中,如第4A圖所示,對25個映射資料中的第一個至第Y個連續的映射資料(在本例中即第一個至第九個映射資料)進行乘積累加運算,並在完成該乘積累加運算後,移動卷積核使得p的值加1(亦即,將卷積核右移一個資料單位),如第4B圖所示,並對改變的25個映射資料中同樣的第一個至第Y個連續的映射資料進行乘積累加運算,直到p = (T-4)。
須說明的是,對於第4A圖所選出的9個資料分別對應到權重值W0~W8。然而,若是要從接下來的9個資料進行運算(如第4E圖所示),則所述9個資料對應到的權重值為W9~W17,意味著必須要重新從晶外記憶體190或是第二緩衝器193存取這些權重值為W9~W17,導致等待資料存取的時間變長,造成效能降低。因此在本實施例中,針對卷積核的尺寸大於處理單元的乘積累加運算單元的數量的情況下,並不等到卷積核所映射的所有資料完成乘積累加運算後才移動卷積核,而是每完成一次乘積累加運算後便移動卷積核,以避免等待存取新的權重值的時間。
接著,如第4C圖所示,當p=(T-4)且q=K時,在完成該次的乘積累加運算後,移動該卷積核使得p=1且q=K+1(亦即,將卷積核下移一個資料單位並回到第一列),並對改變的該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,其中1 ≤ K ≤ (T-4)。
當p=(T-4)且q=(T-4)時,在完成該次的乘積累加運算後,在(25-Y) > Y的情況下,移動該卷積核使得p=1且q=1,並在每次移動該卷積核後,對改變的該25個映射資料中的第(Y+1)個至第2Y個連續的映射資料進行乘積累加運算。具體來說,當卷積核裡剩下的尚未運算的權重值的數量(即(25-Y))還大於乘積累加運算單元的數量(Y)的情況下,仍然無法一次完成剩下的映射資料的運算,因此此時便回到最初的25個映射資料並對第(Y+1)個至第2Y個連續的映射資料(本例中為第10個至第18個映射資料)進行乘積累加運算,並根據上述的規則移動卷積核。
當p=(T-4)且q=(T-4)時,在完成該次的乘積累加運算後,在(25-Y) < Y的情況下,移動卷積核使得p=1且q=1,並在每次移動該卷積核後,對改變的該25個映射資料中的第(Y+1)個至第25個連續的映射資料以及第一預設資料至第Z預設資料共Z個預設資料進行乘積累加運算,其中Z= (2Y-25)。具體來說,當卷積核裡剩下的尚未運算的權重值的數量(即(25-Y))已經小於乘積累加運算單元的數量(Y)的情況下,便可一次完成剩下的映射資料的運算,然而有可能乘積累加運算單元的數量會大於剩下的權重值的數量,為了避免部分的乘積累加運算單元沒有使用到,在這樣的情況下便會提供預設資料給部分的乘積累加運算單元,預設資料的數量為Z個,且值預設為0,其中Z = 乘積累加運算單元的數量(Y)減去尚未計算的權重值的數量。
同樣地,在完成了第一通道的輸入圖像的第一圖塊裡的所有資料的乘積累加運算後,也就是完成第一圖塊的卷積運算,接著根據上述的規則依序對第二通道的輸入圖像的第一圖塊進行卷積運算,直到第N通道的輸入圖像的第一圖塊皆完成卷積運算。當N個通道的的輸入圖像的第一圖塊皆完成卷積運算後,接著回到第一通道的輸入圖像,並根據上述的規則依序對第二圖塊進行卷積運算,直到N個通道的輸入圖像的所有圖塊皆完成卷積運算。
簡言之,在卷積核的尺寸大於每個處理單元111所包括的乘積累加運算單元的數量的情況,進行卷積運算的順序為依序對該第一通道至該第N通道的該輸入圖像的該第W圖塊進行卷積運算直到該N個通道的該輸入圖像的該第W圖塊皆完成卷積運算後才對該第一通道至該第N通道的該輸入圖像的第(W+1)圖塊依序進行卷積運算,其中1 ≤ W ≤ X。
透過上述的方法,在運算過程中對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而最大限度地提高效能,因此可實現較佳的乘積累加運算單元利用率和減少從晶外記憶體存取資料的時間,從而提升了卷積運算單元100的效能。
第3A圖至第3H圖示出了卷積核的尺寸(即權重值的數量)等於每個處理單元111所包括的乘積累加運算單元的數量的情況。第4A圖至第4F圖示出了卷積核的尺寸大於每個處理單元111所包括的乘積累加運算單元的數量的情況。以下將針對卷積核的尺寸小於每個處單元111所包括的乘積累加運算單元的數量的情況。
請參考第5A圖~第5D圖,第5A圖~第5D圖分別是根據本發明的第三實施例的卷積運算方法200的對應步驟的示意圖。在本實施例中,卷積核的尺寸為1×1。
如圖5A所示,由於卷積核包括的權重值只有1個,因此此時若根據上述方法由處理單元111的多個乘積累加運算單元同時對卷積核所映射的資料進行運算,會造成大量的乘積累加運算單元沒有利用到,效能大幅降低。因此,在本實施例中,卷積核所映射的資料包括第一通道至第Y通道的輸入圖像的相同位置的資料I j(p, q)~I Y(p, q) ,其中1 ≤ p ≤ T,1 ≤ q ≤ T,且Y為每個處理單元111所包括的乘積累加運算單元的數量。當p≠ T 時 ,每完成一次該卷積核所映射的Y個資料的乘積累加運算後,移動卷積核使得p的值加1,直到p = T。例如,在本例中,Y = 9,因此進行第一次運算的映射資料為I 1(1,1)~I 9(1,1),而進行第一次運算的映射資料為I 1(2,1)~I 9(2,1),以此類推。
當p = T且q = K時,在完成映射資料為I j(T, K)、I (j+1)(T, K) 、I (j+2)(T, K)、…、I Y(T, K)的乘積累加運算後,移動卷積核使得p=1且q=K+1,其中1 ≤ K ≤ (T-1)。
當p = T且q = T時,在完成該映射資料為I j(T, K)、I (j+1)(T, K) 、I (j+2)(T, K)、…、I Y(T, K)的乘積累加運算後,在(N-Y) > Y的情況下,移動卷積核使得p=1且q=1,並且用於進行乘積累加運算的映射資料為第(Y+1)通道至第2Y通道的輸入圖像的相同位置的資料I (Y+1)(p, q)~I 2Y(p, q)。當剩下的尚未進行運算的通道的輸入圖像的數量還大於乘積累加運算單元的數量的情況下,由於無法一次完成剩下的輸入圖像的相同位置的資料的運算,因此便繼續依序從第(Y+1)通道至第2Y通道的輸入圖像的相同位置的資料I (Y+1)(p, q)~I Y(p, q)進行乘積累加運算。
另一方面,在(N-Y) < Y的情況下(例如本例,N=13且Y=9),由於剩下的尚未進行運算的通道的輸入圖像的數量已經小於乘積累加運算單元的數量,因此可一次可完成剩下的通道的輸入圖像的相同位置的資料的運算。然而,類似於卷積核的尺寸為5×5的情況,在此例中,剩下的通道數可能小於乘積累加運算單元的數量,為了避免部分的乘積累加運算單元沒有使用到,因此在這樣的情況下便會提供預設資料給部分的乘積累加運算單元,預設資料的數量為F個,且值預設為0,其中F = 乘積累加運算單元的數量(Y)減去尚未計算的通道的數量(N-Y),例如,在本例中,F =5。
透過上述的方法,在運算過程中對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而最大限度地提高效能,因此可實現較佳的乘積累加運算單元利用率和減少從晶外記憶體存取資料的時間,從而提升了卷積運算單元100的效能。
請參照第6A圖~第6C圖。第6A圖是根據本發明的一些實施例的對YOLOv3-tiny使用卷積運算的執行方法200的實驗結果,第6B圖是根據本發明的一些實施例的對VGG16使用卷積運算的執行方法200的實驗結果,第6C圖是根據本發明的一些實施例的對AlexNet使用卷積運算的執行方法200的實驗結果。從第6B圖跟第6C圖可清楚看出,在卷積核的尺寸為3×3或更高的情況下(亦即,權重值的數量等於或大於每個處理單元所包括的乘積累加運算單元的數量),使用卷積運算方法200的處理單元和乘積累加運算單元的使用率幾乎都接近100%,因此處理器的使用率可提升到幾乎上限,得以被有效地運用。從第6A圖則可發現,即便是卷積核的尺寸為1×1(亦即,權重值的數量小於每個處理單元所包括的乘積累加運算單元的數量),累加運算單元的使用率從11.11%提升至98%以上,使用率是大幅度地提升。
綜上所述,透過本發明的卷積運算方法200,在執行過程中對於部分的輸入圖像、權重值和輸出圖像的資料進行重複使用,避免了從晶外記憶體或晶內記憶體重複存取相同的資料,從而最大限度地提高效能,因此可實現較佳的乘積累加運算單元利用率和減少從晶外記憶體存取資料的時間,從而提升了卷積運算單元100的效能。
雖然本發明已以較佳實施例揭露,然其並非用以限制本發明,任何熟習此項技藝之人士,在不脫離本發明之精神和範圍內,當可作各種更動與修飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者爲準。
100:卷積運算單元 110:處理單元陣列 111:處理單元 130:晶載記憶體 131:輸入資料記憶體 133:權重記憶體 135:輸出資料記憶體 150:控制器 170:中央處理單元 190:晶外記憶體 191:第一緩衝器 193:第二緩衝器 195:第三緩衝器 K1~K32:卷積核 200:卷積運算的執行方法 S210、S230、S250:步驟
第1圖是根據本發明一實施例繪示的一種卷積運算單元的架構示意圖。 第2圖是根據本發明一實施例繪示的卷積運算的執行方法的流程圖。 第3A圖~第3H圖分別是根據本發明的第一實施例的卷積運算的執行方法的對應步驟的示意圖。 第4A圖~第4F圖分別是根據本發明的第二實施例的卷積運算的執行方法的對應步驟的示意圖。 第5A圖~第5D圖分別是根據本發明的第三實施例的卷積運算的執行方法的對應步驟的示意圖 第6A圖是根據本發明的一些實施例的對YOLOv3-tiny使用卷積運算的執行方法的實驗結果。 第6B圖是根據本發明的一些實施例的對VGG16使用卷積運算的執行方法的實驗結果。 第6C圖是根據本發明的一些實施例的對AlexNet使用卷積運算的執行方法的實驗結果。
200:卷積運算的執行方法
S210、S230、S250:步驟

Claims (16)

  1. 一種卷積運算的執行方法,由一卷積運算單元執行,該卷積運算單元包括多個處理單元與一控制器,其中該卷積運算的執行方法包括:透過該控制器根據尺寸為T×T的一特徵圖塊將具有N個通道的一輸入圖像分成一第一圖塊至一第X圖塊共X個圖塊,其中每一該X個圖塊包括Ij(1,1)~Ij(T,T)共T×T個資料,其中j為對應的通道且1
    Figure 111104810-A0305-02-0023-1
    j
    Figure 111104810-A0305-02-0023-2
    N;及透過該等處理單元依序對該N個通道的該輸入圖像的該第一圖塊至該N個通道的該輸入圖像的該第X圖塊裡的資料進行卷積運算,並將運算結果儲存為輸出資料;其中對每一圖塊,透過尺寸為A×A的一卷積核映射該圖塊裡的資料,並且對該圖塊的該映射資料進行乘積累加運算,其中每完成一次該卷積核所映射的A×A個資料的乘積累加運算便移動該卷積核以改變該圖塊的該映射資料,並對改變的該映射資料進行乘積累加運算,直到該圖塊裡的所有資料完成乘積累加運算,從而完成該圖塊的卷積運算,且所有輸出資料形成輸出圖像,其中1
    Figure 111104810-A0305-02-0023-3
    A
    Figure 111104810-A0305-02-0023-4
    T;其中在A=3的情況下,對每一圖塊,用於進行乘積累加運算的該映射資料為Ij(p,q)、Ij((p+1),q)、Ij((p+2),q)、Ij(p,(q+1))、Ij((p+1),(q+1))、Ij((p+2),(q+1))、Ij(p,(q+2))、Ij(p+1),(q+2))、Ij((p+2),(q+2)),其中1
    Figure 111104810-A0305-02-0023-5
    p
    Figure 111104810-A0305-02-0023-6
    (T-2),1
    Figure 111104810-A0305-02-0023-7
    q
    Figure 111104810-A0305-02-0023-8
    (T-2);其中當p=1,q=1時,進行第一次乘積累加運算。
  2. 如請求項1所述的卷積運算的執行方法,當p≠(T-2)時,每完成一次乘積累加運算,移動該卷積核使得p的值加1,直到p=(T-2)。
  3. 如請求項2所述的卷積運算的執行方法,當p=(T-2)且q=K時,在完成該映射資料為Ij((T-2),K)、Ij((T-1),K)、Ij(T,K)、Ij((T-2),(K+1))、Ij((T-1),(K+1))、Ij(T,(K+1))、Ij((T-2),(K+2))、Ij((T-1),(K+2))、Ij(T,(K+2))的乘積累加運算後,移動該卷積核使得p=1且q=K+1,其中1
    Figure 111104810-A0305-02-0024-9
    K
    Figure 111104810-A0305-02-0024-10
    (T-2)。
  4. 如請求項3所述的卷積運算的執行方法,當p=(T-2)且q=(T-2)時,在完成該映射資料為Ij((T-2),(T-2))、Ij((T-1),(T-2))、Ij(T,(T-2))、Ij((T-2),(T-1))、Ij((T-1),(T-1))、Ij(T,(T-1))、Ij((T-2),T)、Ij((T-1),T)、Ij(T,T)的乘積累加運算後,完成該圖塊裡的所有資料的乘積累加運算,不再移動該卷積核。
  5. 如請求項1所述的卷積運算的執行方法,其中進行卷積運算的順序為依序對該第一通道至該第N通道的該輸入圖像的該第W圖塊進行卷積運算直到該N個通道的該輸入圖像的該第W圖塊皆完成卷積運算後才對該第一通道至該第N通道的該輸入圖像的第(W+1)圖塊依序進行卷積運算,其中1
    Figure 111104810-A0305-02-0024-11
    W
    Figure 111104810-A0305-02-0024-12
    X。
  6. 一種卷積運算的執行方法,由一卷積運算單元執行,該卷積運算單元包括多個處理單元與一控制器,其中該卷積運算的執行方法包括:透過該控制器根據尺寸為T×T的一特徵圖塊將具有N個通道的一輸入圖像分成一第一圖塊至一第X圖塊共X個圖塊,其中每一該X個圖塊包括Ij(1,1)~Ij(T,T)共T×T個資料,其中j為對應的通道且1
    Figure 111104810-A0305-02-0024-13
    j
    Figure 111104810-A0305-02-0024-14
    N;及 透過該等處理單元依序對該N個通道的該輸入圖像的該第一圖塊至該N個通道的該輸入圖像的該第X圖塊裡的資料進行卷積運算,並將運算結果儲存為輸出資料;其中對每一圖塊,透過尺寸為A×A的一卷積核映射該圖塊裡的資料,並且對該圖塊的該映射資料進行乘積累加運算,其中每完成一次該卷積核所映射的A×A個資料的乘積累加運算便移動該卷積核以改變該圖塊的該映射資料,並對改變的該映射資料進行乘積累加運算,直到該圖塊裡的所有資料完成乘積累加運算,從而完成該圖塊的卷積運算,且所有輸出資料形成輸出圖像,其中1
    Figure 111104810-A0305-02-0025-15
    A
    Figure 111104810-A0305-02-0025-16
    T;其中該等處理單元的每一者包括Y個乘積累加運算單元用以進行乘積累加運算,在A=5且Y<25的情況下,對每一圖塊,用於進行乘積累加運算的該映射資料為Ij(p,q)~Ij((p+4),(q+4))共25個,其中1
    Figure 111104810-A0305-02-0025-17
    p
    Figure 111104810-A0305-02-0025-18
    (T-4),1
    Figure 111104810-A0305-02-0025-19
    q
    Figure 111104810-A0305-02-0025-20
    (T-4);當p≠(T-4)時,則對該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,並在完成該乘積累加運算後,移動該卷積核使得p的值加1,並對改變的該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,直到p=(T-4)。
  7. 如請求項6所述的卷積運算的執行方法,當p=(T-4)且q=K時,在完成該25個映射資料中的第一個至第Y個連續的映射資料的乘積累加運算後,移動該卷積核使得p=1且q=K+1,並對改變的該25個映射資料中的第一個至第Y個連續的映射資料進行乘積累加運算,其中1
    Figure 111104810-A0305-02-0025-21
    K
    Figure 111104810-A0305-02-0025-22
    (T-4)。
  8. 如請求項7所述的卷積運算的執行方法,當p=(T-4)且q=(T-4)時,在完成該25個映射資料中的第一個至第Y個連續的映射資料的乘積累加運算後,在(25-Y)>Y的情況下,移動該卷積核使得p=1且q=1,並在每次移動該卷積核後,對改變的該25個映射資料中的第(Y+1)個至第2Y個連續的映射資料進行乘積累加運算。
  9. 如請求項8所述的卷積運算的執行方法,當p=(T-4)且q=(T-4)時,在完成該25個映射資料中的第一個至第Y個連續的映射資料的乘積累加運算後,在(25-Y)<Y的情況下,移動該卷積核使得p=1且q=1,並在每次移動該卷積核後,對改變的該25個映射資料中的第(Y+1)個至第25個連續的映射資料以及第一預設資料至第Z預設資料共Z個預設資料進行乘積累加運算,其中Z=2Y-25。
  10. 如請求項6所述的卷積運算的執行方法,其中進行卷積運算的順序為依序對該第一通道至該第N通道的該輸入圖像的該第W圖塊進行卷積運算直到該N個通道的該輸入圖像的該第W圖塊皆完成卷積運算後才對該第一通道至該第N通道的該輸入圖像的第(W+1)圖塊依序進行卷積運算,其中1
    Figure 111104810-A0305-02-0026-23
    W
    Figure 111104810-A0305-02-0026-24
    X。
  11. 一種卷積運算的執行方法,由一卷積運算單元執行,該卷積運算單元包括多個處理單元與一控制器,其中該卷積運算的執行方法包括: 透過該控制器根據尺寸為T×T的一特徵圖塊將具有N個通道的一輸入圖像分成一第一圖塊至一第X圖塊共X個圖塊,其中每一該X個圖塊包括Ij(1,1)~Ij(T,T)共T×T個資料,其中j為對應的通道且1
    Figure 111104810-A0305-02-0027-25
    j
    Figure 111104810-A0305-02-0027-26
    N;及透過該等處理單元依序對該N個通道的該輸入圖像的該第一圖塊至該N個通道的該輸入圖像的該第X圖塊裡的資料進行卷積運算,並將運算結果儲存為輸出資料;其中對每一圖塊,透過尺寸為A×A的一卷積核映射該圖塊裡的資料,並且對該圖塊的該映射資料進行乘積累加運算,其中每完成一次該卷積核所映射的A×A個資料的乘積累加運算便移動該卷積核以改變該圖塊的該映射資料,並對改變的該映射資料進行乘積累加運算,直到該圖塊裡的所有資料完成乘積累加運算,從而完成該圖塊的卷積運算,且所有輸出資料形成輸出圖像,其中1
    Figure 111104810-A0305-02-0027-27
    A
    Figure 111104810-A0305-02-0027-28
    T;其中該等處理單元的每一者包括Y個乘積累加運算單元用以進行乘積累加運算,在A=1且1<Y<N的情況下,用於進行乘積累加運算的該映射資料為第一通道至第Y通道的該輸入圖像的相同位置的資料Ij(p,q)~IY(p,q),其中1
    Figure 111104810-A0305-02-0027-29
    p
    Figure 111104810-A0305-02-0027-30
    T,1
    Figure 111104810-A0305-02-0027-31
    q
    Figure 111104810-A0305-02-0027-32
    T。
  12. 如請求項11所述的卷積運算的執行方法,當p≠T時,每完成一次該卷積核所映射的Y個資料的乘積累加運算,移動該卷積核使得p的值加1,直到p=T。
  13. 如請求項12所述的卷積運算的執行方法,當p=T且q=K時,在完成該Y個映射資料Ij(T,K)~IY(T,K)的乘積累加運算後,移動該卷積核使得p=1且q=K+1,其中1
    Figure 111104810-A0305-02-0028-33
    K
    Figure 111104810-A0305-02-0028-34
    (T-1)。
  14. 如請求項13所述的卷積運算的執行方法,當p=T且q=T時,在完成該Y個映射資料Ij(T,T)~IY(T,T)的乘積累加運算後,在(N-Y)>Y的情況下,移動該卷積核使得p=1且q=1,並且用於進行乘積累加運算的該映射資料為第(Y+1)通道至第2Y通道的該輸入圖像的相同位置的資料I(Y+1)(p,q)~I2Y(p,q)。
  15. 如請求項13所述的卷積運算的執行方法,當p=T且q=T時,在完成該Y個映射資料Ij(T,T)~IY(T,T)的乘積累加運算後,在(N-Y)<Y的情況下,移動該卷積核使得p=1且q=1,並且用於進行乘積累加運算的該映射資料為第(Y+1)通道至第N通道的該輸入圖像的相同位置的資料I(Y+1)(p,q)~IN(p,q)以及第一預設資料至第F資料共F個預設資料,其中F=2Y-N。
  16. 如請求項1、6或11所述的卷積運算的執行方法,其中每完成一次該卷積核所映射的的資料的乘積累加運算後,將完成的乘積累加運算結果與一部分和值以得到該運算結果,並將該部分和值的值更新為該運算結果的值。
TW111104810A 2021-02-10 2022-02-09 卷積運算的執行方法 TWI797985B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163147804P 2021-02-10 2021-02-10
US63/147,804 2021-02-10

Publications (2)

Publication Number Publication Date
TW202232345A TW202232345A (zh) 2022-08-16
TWI797985B true TWI797985B (zh) 2023-04-01

Family

ID=82899607

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111104810A TWI797985B (zh) 2021-02-10 2022-02-09 卷積運算的執行方法

Country Status (2)

Country Link
US (1) US20220269752A1 (zh)
TW (1) TWI797985B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201933192A (zh) * 2018-01-17 2019-08-16 聯發科技股份有限公司 神經網絡計算加速器及其執行的方法
TW202009799A (zh) * 2018-08-21 2020-03-01 國立清華大學 應用於卷積神經網路之記憶體適應性處理方法及其系統
CN111814957A (zh) * 2020-06-28 2020-10-23 深圳云天励飞技术有限公司 神经网络运算方法及相关设备
US20200372276A1 (en) * 2016-11-07 2020-11-26 Samsung Electronics Co., Ltd. Convolutional neural network processing method and apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200372276A1 (en) * 2016-11-07 2020-11-26 Samsung Electronics Co., Ltd. Convolutional neural network processing method and apparatus
TW201933192A (zh) * 2018-01-17 2019-08-16 聯發科技股份有限公司 神經網絡計算加速器及其執行的方法
TW202009799A (zh) * 2018-08-21 2020-03-01 國立清華大學 應用於卷積神經網路之記憶體適應性處理方法及其系統
CN111814957A (zh) * 2020-06-28 2020-10-23 深圳云天励飞技术有限公司 神经网络运算方法及相关设备

Also Published As

Publication number Publication date
US20220269752A1 (en) 2022-08-25
TW202232345A (zh) 2022-08-16

Similar Documents

Publication Publication Date Title
US11449576B2 (en) Convolution operation processing method and related product
CN107622302B (zh) 用于卷积神经网络的超像素方法
US20180046898A1 (en) Zero Coefficient Skipping Convolution Neural Network Engine
CN108629406B (zh) 用于卷积神经网络的运算装置
WO2021018199A1 (zh) 一种基于卷积神经网络的图像处理方法及装置
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
KR20190066473A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US20180181406A1 (en) Arithmetic processing device and control method of the arithmetic processing device
KR20200067632A (ko) 뉴럴 네트워크를 구동하기 위한 메모리 공간을 할당하는 방법 및 장치
CN111079917A (zh) 张量数据分块存取的方法及装置
WO2022110386A1 (zh) 数据处理方法及人工智能处理器
US11810330B2 (en) Information processing apparatus, information processing method, non-transitory computer-readable storage medium
JP7171883B2 (ja) 効率的な畳み込みエンジン
TWI797985B (zh) 卷積運算的執行方法
CN109324984A (zh) 在卷积运算中使用循环寻址的方法和装置
CN111985617A (zh) 3d卷积神经网络在神经网络处理器上的处理方法和装置
CN111898081A (zh) 卷积运算方法及卷积运算装置
JP4690723B2 (ja) 画像片とサーキュラーアドレッシング構成を使用する画像データ処理方法及び装置
US20210004701A1 (en) Inference device, convolution computation method and program
EP4350581A1 (en) High-efficiency pooling method and device therefor
JP2020013455A (ja) 畳み込みニューラルネットワークの層において畳み込み演算処理を行なう情報処理装置
US20220172032A1 (en) Neural network circuit
CN111931123B (zh) 边界卷积计算方法、装置、硬件加速器及计算机设备
US20230409666A1 (en) Computer-readable recording medium storing calculation program, calculation method, and information processing device