TW201802727A - 在可程式化二維影像處理器上之卷積神經網路 - Google Patents
在可程式化二維影像處理器上之卷積神經網路Info
- Publication number
- TW201802727A TW201802727A TW106121712A TW106121712A TW201802727A TW 201802727 A TW201802727 A TW 201802727A TW 106121712 A TW106121712 A TW 106121712A TW 106121712 A TW106121712 A TW 106121712A TW 201802727 A TW201802727 A TW 201802727A
- Authority
- TW
- Taiwan
- Prior art keywords
- image data
- dimensional
- array
- plane
- neural network
- Prior art date
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 45
- 238000004364 calculation method Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 15
- 230000001186 cumulative effect Effects 0.000 claims description 2
- 238000013528 artificial neural network Methods 0.000 claims 1
- 238000009825 accumulation Methods 0.000 abstract description 2
- 230000035508 accumulation Effects 0.000 abstract description 2
- 230000015654 memory Effects 0.000 description 37
- 230000006870 function Effects 0.000 description 14
- 125000001475 halogen functional group Chemical group 0.000 description 14
- 238000013461 design Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 208000023463 mandibuloacral dysplasia Diseases 0.000 description 2
- 238000000120 microwave digestion Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000005574 cross-species transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration by the use of local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/36—Applying a local operator, i.e. means to operate on image points situated in the vicinity of a given point; Non-linear local filtering operations, e.g. median filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Multimedia (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Nonlinear Science (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本發明描述一種方法,其包含在具有一執行通道陣列及一二維移位暫存器之一影像處理器上執行一卷積神經網路層。該二維移位暫存器提供針對該等執行通道之局部各自暫存器空間。該卷積神經網路之該執行包含將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中。該卷積神經網路之該執行亦包含循序地藉由下列步驟而執行該影像資料平面與一係數值陣列之一二維卷積:在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列;在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。
Description
本發明描述大體上係關於影像處理,且更具體言之係關於一種在一二維影像處理器上之卷積神經網路。
影像處理通常涉及組織成一陣列之像素值的處理。在此,一空間組織二維陣列捕獲影像之二維性質(額外維度可包含時間(例如,一二維影像序列)及資料類型(例如,色彩))。在一典型案例中,由已產生一靜止影像或一圖框序列以捕獲運動影像之一相機提供陣列化像素值。傳統影像處理器通常落於兩個極端情況之任一側上。 一第一極端情況如在一通用處理器或類似通用處理器(例如,具有向量指令增強之一通用處理器)上執行之軟體程式般執行影像處理任務。儘管第一極端情況通常提供一高度多樣化的應用程式軟體開發平台,但其使用較精細粒度資料結構與相關聯額外負擔(例如,指令提取及解碼、晶片上及晶片外資料之處置、臆測執行)最終導致在執行程式碼期間每資料單元消耗之較大量能量。 一第二、相對極端情況將固定功能硬接線電路應用於大得多的資料區塊。使用直接應用於客製化設計電路之較大(與較精細粒度相反)資料區塊大大地降低每資料單元之功率消耗。然而,使用客製化設計固定功能電路通常導致處理器能夠執行之有限任務集合。因而,在第二極端情況中缺少廣泛多樣化的程式化環境(與第一極端情況相關聯)。 提供高度多樣化的應用程式軟體開發機會與改良的每資料單元之功率效率兩者的一技術平台仍係一所期望但缺失的解決方案。
描述一種方法,其包含在具有一執行通道陣列及一二維移位暫存器之一影像處理器上執行一卷積神經網路層。該二維移位暫存器提供針對該等執行通道之局部各自暫存器空間。該卷積神經網路之執行包含將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中。該卷積神經網路之執行亦包含循序地藉由下列步驟而執行該影像資料平面與一係數值陣列之一二維卷積:在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列;在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。 亦描述一種裝置,其具有用於在具有一執行通道陣列及一二維移位暫存器之一影像處理器上執行一卷積神經網路層的構件。該二維移位暫存器提供針對該等執行通道之局部各自暫存器空間。用於該卷積神經網路之執行之該構件包含用於將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中之構件。用於執行該卷積神經網路之該構件亦包含用於循序地藉由下列步驟而執行該影像資料平面與一係數值陣列之一二維卷積之構件:在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列;在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。
a . 影像處理器硬體架構及運算
圖1展示實施為硬體之一影像處理器的一架構100之一實施例。例如,一編譯器可以影像處理器為目標,該編譯器將針對一模擬環境內之一虛擬處理器寫入之程式碼轉換成實際上由硬體處理器執行之程式碼。如圖1中觀察到,架構100包含複數個線緩衝器單元101_1至101_M (下文中稱作「線緩衝器」、「線緩衝器單元」或類似者),該複數個線緩衝器單元101_1至101_M透過一網路104 (例如,一晶片上網路(NOC),包含一晶片上交換網路、一晶片上環形網路或其他種類之網路)互連至複數個模板處理器單元102_1至102_N (下文中稱作「模板處理器」、「模板處理器單元」或類似者)及對應片產生器單元103_1至103_N (下文中稱作「片產生器」、「片產生器單元」或類似者)。在一實施例中,任何線緩衝器單元可透過網路104連接至任何片產生器及對應模板處理器。 在一實施例中,程式碼經編譯且經載入至一對應模板處理器102上以執行先前由一軟體開發者定義之影像處理運算(程式碼亦可例如取決於設計及實施方案而載入至該模板處理器之相關聯片產生器103上)。在至少一些例項中,可藉由下列步驟而實現一影像處理管線:將一第一管線階段之一第一核心程式載入至一第一模板處理器102_1中;將一第二管線階段之一第二核心程式載入至一第二模板處理器102_2中等,其中第一核心執行管線之第一階段之功能,第二核心執行管線之第二階段之功能等,且額外控制流方法經安裝以將輸出影像資料自管線之一個階段傳遞至管線之下一階段。 在其他組態中,影像處理器可實現為具有對相同核心程式碼進行運算之兩個或更多個模板處理器102_1、102_2的一平行機器。例如,可藉由跨其各者執行相同功能之多個模板處理器分散圖框而處理一高度密集且高資料速率的影像資料串流。 在又其他組態中,本質上核心之任何有向非循環圖(DAG)可藉由下列步驟而載入至硬體處理器上:在DAG設計中,用各自模板處理器其等自身的各自程式碼核心組態各自模板處理器;及將適當控制流攔截程式組態至硬體中以將輸出影像自一個核心引導至下一核心之輸入。 作為一般流程,影像資料之圖框係由一巨集I/O單元105接收且在一逐圖框基礎上傳遞至線緩衝器單元101之一或多者。一特定線緩衝器單元將其影像資料圖框剖析成一較小影像資料區(稱為「線群組」),且接著透過網路104將線群組傳遞至一特定片產生器。一完整或「完全」單一線群組可例如由一圖框之多個連續完整列或行(為了簡潔起見,本說明書將主要指稱連續列)之資料組成。該片產生器將影像資料之線群組進一步剖析成一更小影像資料區(稱為「片」),且將片提供至其對應模板處理器。 在一影像處理管線或一DAG流程具有一單一輸入之情況中,通常將輸入圖框引導至相同線緩衝器單元101_1,該線緩衝器單元101_1將影像資料剖析成線群組且將線群組引導至片產生器103_1,該片產生器103_1之對應模板處理器102_1在管線/DAG中執行第一核心之程式碼。在由模板處理器102_1對其處理之線群組之運算完成之後,片產生器103_1將輸出線群組發送至一「下游」線緩衝器單元101_2 (在一些使用情況下,輸出線群組可被發送回至先前已發送輸入線群組之相同線緩衝器單元101_1)。 表示在其等自身之各自其他片產生器及模板處理器(例如,片產生器103_2及模板處理器102_2)上執行之管線/DAG中之下一階段/運算的一或多個「消費者」核心接著自下游線緩衝器單元101_2接收由第一模板處理器102_1產生之影像資料。以此方式,一第一模板處理器上進行運算之一「生產者」核心將其輸出資料轉遞至一第二模板處理器上進行運算之一「消費者」核心,其中在該生產者核符合整個管線或DAG之設計之後,該消費者核心執行下一任務集合。 一模板處理器102經設計以對影像資料之多個重疊模板同時進行運算。多個重疊模板及模板處理器之內部硬體處理容量有效地判定一片之大小。在此,在一模板處理器102內,執行通道陣列聯合地進行運算以同時處理由多個重疊模板覆蓋之影像資料表面區域。 如下文將更詳細地描述,在各項實施例中,影像資料之片載入至模板處理器單元102內之一二維暫存器陣列結構中。據信,片及二維暫存器陣列結構之使用藉由作為例如一單一載入運算將大量資料移動至大量暫存器空間中,緊隨其後由一執行通道陣列對資料直接執行處理任務而提供功率消耗改良。另外,一執行通道陣列及對應暫存器陣列之使用提供可容易程式化及/或組態之不同模板大小。 圖2a至圖2e依高階繪示一線緩衝器單元101之剖析活動、一片產生器單元103之較精細粒度剖析活動兩者以及耦合至片產生器單元103的模板處理器102之模板處理活動的實施例。 圖2a描繪影像資料201之一輸入圖框之一實施例。圖2a亦描繪一模板處理器經設計以進行運算的三個重疊模板202之一輪廓(各模板具有3像素×3像素之一尺寸)。各模板分別針對其產生輸出影像資料之輸出像素以實心黑色突顯。為了簡潔起見,三個重疊模板202被描繪為僅沿垂直方向重疊。應相關地認知,實際上,一模板處理器可經設計以沿垂直方向及水平方向兩者具有重疊模板。 如圖2a中觀察到,由於模板處理器內之垂直重疊模板202,在一單一模板處理器可進行運算之圖框內存在影像資料之一寬帶。如下文將更詳細地論述,在一實施例中,模板處理器以一由左至右方式跨影像資料處理其等重疊模板內之資料(且接著以一由上至下順序針對下一組線重複)。因此,隨著模板處理器繼續其等之運算,實心黑色輸出像素區塊之數目將水平地向右增長。如上文論述,一線緩衝器單元101負責自足以供模板處理器進行運算達擴展數目個即將來臨循環的一傳入圖框剖析輸入影像資料之一線群組。一線群組之一例示性描繪被繪示為一陰影區203。在一實施例中,線緩衝器單元101可理解用於發送一線群組至一片產生器/自一片產生器接收一線群組之不同動態。例如,根據稱為「全群組」之一種模式,在一線緩衝器單元與一片產生器之間傳遞影像資料之完整全寬線。根據稱為「虛高」之一第二模式,初始傳遞具有全寬列之一子集之一線群組。接著以較小(小於全寬)件循序地傳遞剩餘列。 在輸入影像資料之線群組203已由線緩衝器單元定義且傳遞至片產生器單元的情況下,片產生器單元將線群組進一步剖析成更精確地配合至模板處理器之硬體限制的較精細片。更具體言之,如下文將進一步更詳細地描述,在一實施例中,各模板處理器係由一二維移位暫存器陣列組成。二維移位暫存器陣列本質上使影像資料於一執行通道陣列「下方」移位,其中移位之型樣引起各執行通道對其自身各自模板內之資料進行運算(即,各執行通道處理其自身資訊模板以針對該模板產生一輸出)。在一實施例中,片係「填入」或以其他方式載入至二維移位暫存器陣列中的輸入影像資料之表面區域。 如下文將更詳細地描述,在各項實施例中,實際上存在可在任何循環中移位之多個二維暫存器資料層。為了方便起見,本發明描述之大部分將簡單地使用術語「二維移位暫存器」及類似者以指稱具有可移位之一或多個此等二維暫存器資料層的結構。 因此,如圖2b中觀察到,片產生器剖析來自線群組203之一初始片204且將該初始片204提供至模板處理器(在此,資料之片對應於大致由參考符號204識別之5×5陰影區)。如圖2c及圖2d中觀察到,模板處理器藉由以一由左至右方式在輸入影像資料之片上方有效地移動重疊模板202而對該片進行運算。截至圖2d,可針對其自片內之資料計算的一輸出值之像素之數目(在一黑色3×3陣列中係九)被耗用(無其他像素位置可具有自片內之資訊判定的一輸出值)。為了簡單起見,已忽略影像之邊界區。 如圖2e中觀察到,片產生器接著提供下一片205以供模板處理器繼續運算。應注意,模板在其等開始對下一片進行運算時之初始位置接下來自第一片上之耗盡點繼續進行至右邊(如先前在圖2d中描繪)。運用新片205,隨著模板處理器以相同於處理第一片之方式對該新片進行運算,模板將簡單地繼續移動至右邊。 應注意,歸因於環繞一輸出像素位置的模板之邊界區,在第一片204之資料與第二片205之資料之間存在一定重疊。可藉由片產生器重新傳輸重疊資料兩次而簡單地處置重疊。在替代實施方案中,為了將下一片饋送至模板處理器,片產生器可繼續進行以僅將新資料發送至模板處理器且模板處理器再使用來自先前片之重疊資料。 b . 模板處理器設計及運算
圖3a展示一模板處理器單元架構300之一實施例。如圖3a中觀察到,該模板處理器包含一資料計算單元301、一純量處理器302與相關聯記憶體303及一I/O單元304。資料計算單元301包含一執行通道陣列305、一二維移位陣列結構306及與該陣列之特定列或行相關聯的單獨各自隨機存取記憶體307。 I/O單元304負責將自片產生器接收的資料之「輸入」片載入至資料計算單元301中且將來自模板處理器的資料之「輸出」片載入至片產生器中。在一實施例中,將片資料載入至資料計算單元301中需要將一經接收片剖析成影像資料之列/行且將影像資料之列/行載入至二維移位暫存器結構306或執行通道陣列之列/行之各自隨機存取記憶體307中(下文更詳細地描述)。若片初次載入至記憶體307中,則在適當時執行通道陣列305內之個別執行通道接著可將片資料自隨機存取記憶體307載入至二維移位暫存器結構306中(例如,作為緊接在對片之資料進行運算之前的一載入指令)。在完成將一資料片載入至暫存器結構306中之後(無論直接自一片產生器或自記憶體307),執行通道陣列305之執行通道對資料進行運算且最終直接將所完成資料作為一片「回寫」至片產生器或「回寫」至隨機存取記憶體307中。若執行通道回寫至隨機存取記憶體907,則I/O單元304自隨機存取記憶體307提取資料以形成一輸出片,該輸出片接著被轉遞至片產生器。 純量處理器302包含一程式控制器309,該程式控制器309自純量記憶體303讀取模板處理器之程式碼之指令且將該等指令發佈至執行通道陣列305中之執行通道。在一實施例中,一單一相同指令被傳播至陣列305內之所有執行通道以實現來自資料計算單元301一類似單一指令多重資料(SIMD)行為。在一實施例中,自純量記憶體303讀取且發佈至執行通道陣列305之執行通道的指令之指令格式包含每指令含一個以上運算碼之一極長指令字(VLIW)型格式。在一進一步實施例中,該VLIW格式包含引導由各執行通道之ALU執行的一數學函數之一ALU運算碼(如下文描述,其在一實施例中可指定一個以上傳統ALU運算)及一記憶體運算碼(其引導針對一特定執行通道或一組執行通道之一記憶體運算)。 術語「執行通道」指稱能夠執行一指令之一組一或多個執行單元(例如,可執行一指令之邏輯電路)。然而,在各項實施例中,一執行通道可包含超出僅執行單元之更多類似處理器的功能性。例如,除一或多個執行單元外,一執行通道亦可包含解碼一經接收指令之邏輯電路,或在更多類似多重指令多重資料(MIMD)設計之情況中包含提取及解碼一指令之邏輯電路。關於類似MIMD方法,儘管本文中已大體上描述一集中式程式控制方法,但在各項替代實施例中可實施一更為分散式的方法(例如,包含程式碼及陣列305之各執行通道內的一程式控制器)。 一執行通道陣列305、程式控制器309與二維移位暫存器結構306之組合為寬範圍之可程式化功能提供一可廣泛調適/組態的硬體平台。例如,應用程式軟體開發者能夠程式化具有寬範圍之不同功能能力以及尺寸(例如,模板大小)的核心,前提是個別執行通道能夠執行多種功能且能夠容易存取接近任何輸出陣列位置之輸入影像資料。 除充當用於由執行通道陣列305進行運算之影像資料之一資料儲存器外,隨機存取記憶體307亦可保存一或多個查找表。在各項實施例中,一或多個純量查找表亦可具現於純量記憶體303內。 一純量查找涉及將來自於來自相同索引之相同查找表之相同資料值傳遞至執行通道陣列305內的執行通道之各者。在各項實施例中,上文描述之VLIW指令格式經擴展以亦包含一純量運算碼,該純量運算碼將由純量處理器執行之一查找運算引導至一純量查找表中。被指定結合運算碼使用之索引可為一即刻運算元或自一些其他資料儲存位置提取。無論如何,在一實施例中,來自純量記憶體內之一純量查找表之一查找本質上涉及在相同時脈循環期間將相同資料值傳播至執行通道陣列305內之所有執行通道。下文進一步提供關於查找表之使用及運算之進一步細節。 圖3b概述上文論述之VLIW指令字實施例。如圖3b中觀察到,VLIW指令字格式包含針對三個單獨指令之欄位:1)一純量指令351,其係由純量處理器執行;2)一ALU指令352,其係由執行通道層內之各自ALU以SIMD方式傳播及執行;及3)一記憶體指令353,其係以一部分SIMD方式傳播及執行(例如,若沿執行通道陣列中之一相同列之執行通道共用一相同隨機存取記憶體,則來自不同列之各者之一個執行通道實際上執行該指令(記憶體指令353之格式可包含識別來自各列之哪個執行通道執行該指令的一運算元))。 亦包含針對一或多個中間運算元之一欄位354。可在指令格式中識別指令351、352、353之哪個使用哪個中間運算元資訊。指令351、352、353之各者亦包含其自身的各自輸入運算元及所得資訊(例如,針對ALU運算之局部暫存器與針對記憶體存取指令之一局部暫存器及一記憶體位址)。在一實施例中,在執行通道陣列內之執行通道執行其他兩個指令352、353之任一者之前,由純量處理器執行純量指令351。即,VLIW字之執行包含執行純量指令351之一第一循環,其後係可執行其他指令352、353之一第二循環(應注意,在各項實施例中,可平行地執行指令352及353)。 在一實施例中,由純量處理器302執行之純量指令包含發佈至片產生器103以自資料計算單元301之記憶體或2D移位暫存器306載入片/將片儲存至資料計算單元301之記憶體或2D移位暫存器306中的命令。在此,該片產生器之運算可取決於線緩衝器單元101之運算或防止在運行時間前瞭解片產生器103完成由純量處理器302發佈之任何命令將花費的循環之數目的其他變數。因而,在一實施例中,其純量指令351對應於或以其他方式引起將發佈至片產生器103之一命令之任何VLIW字亦包含其他兩個指令欄位352、353中之非運算(NOOP)指令。程式碼接著進入針對指令欄位352、353之NOOP指令之一迴圈,直至該片產生器完成其自資料計算單元之載入/至資料計算單元之儲存為止。在此,在將一命令發佈至該片產生器之後,該純量處理器可設定該片產生器在完成該命令之後重設的一互鎖暫存器之一位元。在NOOP迴圈期間,該純量處理器監測該互鎖位元之位元。當該純量處理器偵測到該片產生器已完成其命令時,正常執行再次開始。 圖4展示一資料計算單元401之一實施例。如圖4中觀察到,資料計算單元401包含邏輯上定位於一二維移位暫存器陣列結構406「上方」之一執行通道陣列405。如上文論述,在各項實施例中,由一片產生器提供之一影像資料片載入至二維移位暫存器406中。執行通道接著對來自暫存器結構406之片資料進行運算。 執行通道陣列405及移位暫存器結構406相對於彼此而固定於適當位置中。然而,移位暫存器陣列406內之資料以一策略且協調方式移位以引起執行通道陣列中之各執行通道處理該資料內之一不同模板。因而,各執行通道判定正產生之輸出片中的一不同像素之輸出影像值。自圖4之架構應明白,重疊模板不僅垂直配置而且水平配置,此係因為在執行通道陣列405包含垂直相鄰執行通道以及水平相鄰執行通道。 資料計算單元401之一些顯著架構特徵包含移位暫存器結構406具有寬於執行通道陣列405之尺寸。即,在執行通道陣列405外側存在一暫存器「光暈(halo)」409。儘管光暈409被展示為存在於執行通道陣列之兩側上,但取決於實施方案,該光暈可存在於執行通道陣列405之更少(一個)或更多(三或四個)側上。光暈405用來為在資料於執行通道405「下方」移位時,溢出執行通道陣列405之界限外側的資料提供「外溢」空間。作為一簡單情況,在處理以執行通道陣列405之右邊緣為中心的一5×5模板之最左像素時,該模板將需要進一步向右的四個光暈暫存器位置。為了便於繪製,當在一標稱實施例中任一側(右側、底側)上之暫存器將具有水平連接及垂直連接兩者時,圖4將光暈之右側之暫存器展示為僅具有水平移位連接且將光暈之底側之暫存器展示為僅具有垂直移位連接。 由耦合至陣列中之各列及/或各行、或其部分的隨機存取記憶體407提供額外外溢空間(例如,一隨機存取記憶體可被指派至執行通道陣列之逐列橫跨4個執行通道且逐行橫跨2個執行通道之一「區」。為了簡單起見,本申請案之剩餘部分將主要提及基於列及/或行之分配方案)。在此,若一執行通道之核心運算需要其處理二維移位暫存器陣列406外側之像素值(一些影像處理常式可需要該等像素值),則影像資料之平面能夠例如自光暈區409進一步外溢至隨機存取記憶體407中。例如,考量一6×6模板,其中硬體包含至執行通道陣列之右邊緣上的一執行通道之右邊的僅四個儲存元件之一光暈區。在此情況中,資料將需要進一步向右移位離開光暈409之右邊緣以完全地處理模板。移出光暈區409外側之資料接著將外溢至隨機存取記憶體407。下文進一步提供隨機存取記憶體407及圖3之模板處理器的其他應用。 圖5a至圖5k演示如上文提及之影像資料在執行通道陣列「下方」之二維移位暫存器陣列內移位的方式之一工作實例。如圖5a中觀察到,以一第一陣列507描繪二維移位陣列之資料內容且由一圖框505描繪執行通道陣列。再次,簡單化地描繪執行通道陣列內之兩個相鄰執行通道510。在此簡單化描繪510中,各執行通道包含一暫存器R1,該暫存器R1自移位暫存器接受資料,自一ALU輸出接受資料(例如,以表現為跨循環之一累加器),或將輸出資料寫入至一輸出目的地中。 各執行通道亦使二維移位陣列中在其「下方」之內容在一局部暫存器R2中可用。因此,R1係執行通道之一實體暫存器,而R2係二維移位暫存器陣列之一實體暫存器。執行通道包含可對由R1及/或R2提供之運算元進行運算的一ALU。如下文將進一步更詳細地描述,在一實施例中,移位暫存器實際上經實施為每陣列位置具有多個(一「深度」之)儲存/暫存器元件,但移位活動限於儲存元件之一個平面(例如,每循環僅儲存元件之一個平面可移位)。圖5a至圖5k將此等較深暫存器位置之一者描繪為用來儲存來自各自執行通道之所得X。為了便於繪示,較深所得暫存器被繪製為與其相應暫存器R2並排而非在其下方。 圖5a至圖5k側重於其等之中心位置與在執行通道陣列505內描繪之該對執行通道位置511對準的兩個模板之計算。為了便於繪示,該對執行通道510被繪製為水平相鄰者,而事實上根據下列實例,其等係垂直相鄰者。 如初始在圖5a中觀察到,執行通道511係以其等之中心模板位置為中心。圖5b展示由兩個執行通道511執行之目標碼。如圖5b中觀察到,兩個執行通道511之程式碼引起移位暫存器陣列507內之資料向下移位一個位置且向右移位一個位置。此使兩個執行通道511對準於其等各自模板之左上角。程式碼接著引起定位於其等各自位置(R2)中之資料載入至R1中。 如圖5c中觀察到,程式碼接著引起該對執行通道511使移位暫存器陣列507內之資料向左移位一個單位,此引起至各執行通道之各自位置之右邊的值移位至各執行通道之位置中。接著將R1中之值(先前值)與已移位至各執行通道之位置(R2)中的新值相加。將所得寫入至R1中。如圖5d中觀察到,重複如上文針對於圖5c描述之相同程序,此引起所得R1現包含上部執行通道中之值A+B+C及下部執行通道中之值F+G+H。此時,兩個執行通道511已處理其等各自模板之上部列。應注意至執行通道陣列505之左側上的一光暈區中之外溢(若在左手側上存在一個光暈區)或至隨機存取記憶體中之外溢(若在執行通道陣列505之左手側上不存在一光暈區)。 如圖5e中觀察到,程式碼接著引起移位暫存器陣列內之資料向上移位一個單位,此引起兩個執行通道511與其等各自模板之中間列之右邊緣對準。兩個執行通道511之暫存器R1當前包含模板之頂部列的最右值及中間列的最右值之和。圖5f及圖5g演示跨兩個執行通道模板之中間列向左移動的繼續進展。累加繼續,使得在圖5g之處理結束時,兩個執行通道511包含其等各自模板之頂部列及中間列的值之和。 圖5h展示用以將各執行通道與其對應模板之最低列對準的另一移位。圖5i及圖5j展示用以完成對兩個執行通道之模板之過程的處理之繼續移位。圖5k展示用以將各執行通道與其在資料陣列中之正確位置對準且將所得寫入至該正確位置的額外移位。 在圖5a至圖5k之實例中,應注意,用於移位運算之目標碼可包含識別在(X,Y)座標中表達之移位的方向及量值的一指令格式。例如,用於向上移位達一個位置之目標碼可在目標碼中表達為SHIFT 0,+1。作為另一實例,向右移位達一個位置可在目標碼中表達為SHIFT +1,0。在各項實施例中,亦可在目標碼中指定較大量值之移位(例如,SHIFT 0,+2)。在此,若2D移位暫存器硬體僅支援每循環移位達一個位置,則可由機器解譯指令以要求多循環執行,或2D移位暫存器硬體可經設計以支援每循環移位達一個以上位置。下文進一步更詳細地描述後者之實施例。 圖6a展示用於陣列執行通道及移位暫存器結構的單位單元之另一、更詳細描繪(光暈區中之暫存器不包含一對應執行通道)。在一實施例中,藉由在執行通道陣列之各節點處具現圖6a中觀察到之電路而實施執行通道及與執行通道陣列中之各位置相關聯的暫存器空間。如圖6a中觀察到,單位單元包含一執行通道601,該執行通道601耦合至由四個暫存器R2至R5組成之一暫存器組602。在任何循環期間,執行通道601可自暫存器R1至R5之任一者讀取或寫入至暫存器R1至R5之任一者。對於需要兩個輸入運算元之指令,該執行通道可自R1至R5之任一者擷取兩個運算元。 在一實施例中,藉由下列步驟實施二維移位暫存器結構:在一單一循環期間容許暫存器R2至R4之任(僅)一者之內容透過輸出多工器603移「出」至其相鄰者之暫存器組之一者;及用透過輸入多工器604自其相鄰者之一對應者移「入」的內容取代暫存器R2至R4之任(僅)一者之內容,使得相鄰者之間的移位係沿一相同方向(例如,所有執行通道向左移位,所有執行通道向右移位等)。儘管一相同暫存器使其內容移出且用在一相同循環內移入之內容取代可為常見,但在一相同循環期間多工器配置603、604容許一相同暫存器內之不同移位源及移位目標暫存器。 如圖6a中描繪,應注意,在一移位序列期間,一執行通道將使內容自其暫存器組602移出至其左相鄰者、右相鄰者、頂部相鄰者及底部相鄰者之各者。結合相同移位序列,該執行通道亦將使內容自其左相鄰者、右相鄰者、頂部相鄰者及底部相鄰者之一特定者移入其暫存器組。再次,對於所有執行通道,移出目標及移入源應符合一相同移位方向(例如,若移出係至右相鄰者,則移入應自左相鄰者)。 儘管在一項實施例中,每循環每個執行通道容許僅一個暫存器之內容移位,但其他實施例可容許移入/移出一個以上暫存器之內容。例如,若圖6a中觀察到的多工器電路603、604之一第二例項併入至圖6a之設計中,則可在一相同循環期間移出/移入兩個暫存器之內容。當然,在每循環容許僅一個暫存器之內容移位的實施例中,可藉由針對數學運算之間的移位消耗更多時脈循環而在數學運算之間發生自多個暫存器之移位(例如,可藉由在數學運算之間消耗兩個移位運算而使兩個暫存器之內容在數學運算之間移位)。 若在一移位序列期間並未移出一執行通道之暫存器組之所有內容,則應注意,各執行通道之非移出暫存器之內容保持於適當位置中(不移位)。因而,未用移入內容取代之任何非移位內容跨移位循環局部地保留於執行通道。各執行通道內觀察到之記憶體單元「M」用來自與執行通道陣列內之執行通道的列及/或行相關聯的隨機存取記憶體空間載入資料/將資料儲存至與執行通道陣列內之執行通道的列及/或行相關聯的隨機存取記憶體空間。在此,M單元充當一標準M單元,因為其通常用來載入/儲存無法自執行通道之自身暫存器空間載入/儲存至執行通道之自身暫存器空間的資料。在各項實施例中,M單元之主要運算係將資料自一局部暫存器寫入至記憶體中,及自記憶體讀取資料且將該資料寫入至一局部暫存器中。 對於由硬體執行通道601之ALU單元支援的ISA運算碼,在各項實施例中,由硬體ALU支援之數學運算碼整體上相關於(例如,實質上相同於)由一虛擬執行通道支援之數學運算碼(例如,ADD、SUB、MOV、MUL、MAD、ABS、DIV、SHL、SHR、MIN/MAX、SEL、AND、OR、XOR、NOT)。如上文剛剛描述,可由執行通道601執行記憶體存取指令以自其等相關聯隨機存取記憶體提取資料/將資料儲存至其等相關聯隨機存取記憶體。另外,硬體執行通道601支援移位運算指令(右、左、上、下)以使二維移位暫存器結構內之資料移位。如上文描述,程式控制指令大體上係由模板處理器之純量處理器執行。 c. 影像處理器上之卷積神經網路 (CNN) 之實施方案
圖7展示一三維(3D)卷積之一圖示描繪。如此項技術中已知之一3D卷積可用來實施針對例如一影像處理應用、一機器視覺應用、一物件辨識應用及/或一機器學習應用之一卷積神經網路(CNN)。如圖7中觀察到,三維卷積將影像資料701之一三維區塊與係數702之一三維區塊「卷積」。在此,係數702之三維區塊係對影像資料701內之相同大小區塊進行卷積以產生一所得表面區域703。 在實踐中,影像資料701及係數資料702實施為三維資訊矩陣。即,影像資料701可實施為像素資料之一三維矩陣且係數資料702可實施為係數值之一三維矩陣。為了執行3D卷積,計算一三維點積,藉此具有相同於係數之尺寸的影像資料701之一較小三維部分(諸如較小部分705)中之像素分別乘以係數702之三維矩陣內的相同定位之係數。 接著將來自個別乘法運算之各者之部分乘積相加以產生對應於點積之所得的一單一值(一純量)。純量所得定位於所得陣列703中對應於所卷積之影像資料701內的較小區之位置的一位置處。例如,較小部分705與係數702之卷積產生定位於所得表面703內之位置704處的一純量。類似地,較小部分707 (為了便於繪製,僅其頂部表面可見)與係數702之卷積產生定位於所得區域703內之位置706處的一純量值。 因而,將針對乘以係數702之影像資料之各不同較小部分產生一不同純量值,且該等不同純量之各者具有在所得表面區域703內之一各自位置。下文進一步更詳細地描述關於3D卷積實施方案之各項實施例之細節。 一CNN層通常包含每影像資料區塊之多個3D卷積。更具體言之,一CNN層通常包含與影像資料之一單一區塊卷積之係數之多個區塊。圖8展示此一CNN層之一實例。在此,影像資料之相同區塊801係與係數之多個區塊802_1至802_N卷積以產生N個所得表面區域803_1至803_N。因此,總所得803可被視為具有N個所得平面之一三維區塊803。在各種處理應用中,三維所得區塊803用作用於下一CNN計算之輸入影像區塊。圖8之處理對應於一單一CNN層之處理。可自多個此等CNN層之執行計算一完整CNN。 圖9a及圖9b描繪一3D卷積之一實施例。參考圖9a,影像資料之區塊901 (其對應於圖8中之影像資料之區塊801)可被視為由影像資料之多個平面組成。即,影像資料之區塊901可被視為由沿z軸之一第一深度位置處之一第一平面901_1、沿z軸之一第二深度位置處之一第二平面901_2等...及沿z軸之一第M深度位置處之一第M平面901_M組成。在實踐中,沿z軸之各位準或深度可對應於影像資料之一不同「通道」。例如,若M=3,則第一平面位準901_1可對應於紅色(R)資料,第二平面位準901_2對應於綠色(G)資料,且第三平面位準901_3可對應於藍色(B)資料。 同樣地,係數之區塊902_1 (其對應於圖8中之係數之第一區塊802_1)亦可被視為由沿M「深度」z軸位置之係數資料之M個平面組成。3D卷積計算為M個二維(2D)卷積之和。在此,在一2D卷積運算中,將沿一相同深度位準駐留之影像資料及係數卷積以針對該深度位準產生一中間所得平面。 例如,執行影像資料平面901_1及係數平面902_1_1之一第一2D卷積以產生一第一中間所得平面P1_1,執行影像資料平面901_2及係數平面902_1_2之一第二2D卷積以產生一第二中間所得平面P1_2等,且執行影像資料平面901_M及係數平面902_1_M之一第M 2D卷積以產生一第M中間所得平面P1_M。接著以一對準方式將中間平面P1_1至P1_M相加910(將中間平面陣列之相同位置中的純量值相加)以產生一所得陣列903_1。所得陣列903_1對應於圖8中之所得陣列803_1。 圖9b展示可在影像及係數資料之各z軸深度位準下執行的一2D卷積之一例示性實施例。圖9b展示對應於一相同平面內之影像資料之一較小部分的相鄰資料像素(A至L)。亦描繪在相同於影像資料之平面位準下駐留的係數之平面(a1至a9)。在將係數資料與模板位置950對準時執行之運算940在平面位準之中間平面中產生一單一純量所得S_P1。相比之下,在將係數資料與模板位置951對準時執行之運算941在平面位準之中間平面中產生一單一純量所得S_P2。 應注意,運算940及941之各者可特性化為一大規模乘加運算(執行九次相乘及八次相加)。由於模板位置950、951彼此相鄰,純量所得S_P1及S_P2將彼此相鄰地定位於所得中間平面內。在此,模板位置在影像資料之一整個平面之表面區域上方「滑動」且由各唯一模板位置界定之對應「乘加」運算在中間平面中產生一唯一所得值。在中間平面內所得值相對於彼此之位置係由產生該等所得值的模板之相對位置界定。 重新參考圖9a,對M個中間平面P1_1至P1_M求和910以產生所得平面903_1。重複圖9a之計算N次(每次用一不同係數集合),直至已對所有係數集合進行計算為止。即,如可自圖8及圖9a及圖9b收集,針對係數集合802_1至802_N之各者執行圖9a及圖9b之運算N次以產生所得平面803_1至803_N。 圖10a至圖10j係關於在具有上文在本說明書之先前段落中詳細地描述的架構特徵之一影像處理器上之一CNN層的計算。在此,讀者不僅參考圖10a至圖10j而且參考圖4。如先前段落中描述,模板處理器可具有一二維執行通道陣列405及一對應二維移位暫存器陣列406。如將自下文論述顯而易見的是,圖10a至圖10j之方法旨在利用模板處理器之二維處理性質,同時亦最小化影像資料切入及切出模板處理器之次數。 圖10a展示其中影像資料之第一平面1001_1之一或多個片載入至模板處理器之局部記憶體407中的一初始設置階段。為了便於繪示,圖10a建議影像平面之所有片載入至模板處理器之RAM中,但在運算中,可採取一更零碎方法,其中片產生器接收全影像平面1001_1,將該影像平面剖析成片且適當時將片饋送至模板處理器之RAM 407中(例如,在完成對一先前片之處理時或之前,將下一片載入至RAM中)。另外,至少將第一係數集合1002_1(若非所有係數集合1002_1至1002_N)載入至模板處理器RAM 407中。在此,作為一比較點,圖10之影像資料平面1001_1對應於圖9之影像資料平面901_1,且圖10之係數集合1002_1對應於圖9之係數集合902_1。作為額外比較點,圖10之係數集合1002_1至1002_N對應於圖8之係數集合802_1至802_N。 在影像資料之第一平面1001_1及第一係數集合1002_1載入至模板處理器RAM 407的情況下,系統準備執行如上文關於圖9b描述之一2D卷積。圖10b描繪卷積,其中影像資料1001_1與係數資料1002_1_1 (其對應於圖9a之係數資料902_1_1)卷積。2D卷積包含將影像資料之一或多個片自模板處理器RAM載入至影像處理器之二維暫存器結構中。接著執行2D卷積自身,從而得到中間平面P1_1。下文關於圖11a至圖11f進一步提供關於實際上可如何執行2D卷積之一更透徹論述。 在已將第一影像平面1001_1與係數之第一平面1002_1卷積的情況下,機器準備開始下一運算序列。在此,若圖9a中描繪之運算系列將按順序執行,則可能需要將影像平面901_1切出模板處理器RAM及將影像平面901_2切入模板處理器RAM。隨後,參考圖8及圖9a,應注意,影像平面901_1將需要切換回至模板處理器RAM中用於與係數集合802_2至802_N之任一者/所有執行之2D卷積。因此,潛在地,影像平面901_1將需要切入及切出模板處理器RAM達N次。為了免除影像資料之一相同平面來回切入及切出模板處理器,而非遵循由圖9a建議之嚴格處理順序,取而代之,一旦影像資料之一平面載入至模板處理器RAM中,影像資料之該平面便保持於其中,直至其已用來處理CNN層之所有係數集合為止。 因此,如圖10c中描繪,程序中之下一序列係將相同影像平面1001_1與下一係數集合中之第一平面卷積。因而,圖10c展示用影像平面1001_1及係數平面1002_2_1 (第二係數集合中之第一平面)執行之一2D卷積。所得係第二係數集合之第一中間平面P2_1。處理序列繼續將相同、初始影像平面1001_1與係數之各者之第一平面卷積。圖10d展示包含初始影像平面1001_1之最後2D卷積序列。在此,用第N個係數集合1002_N之頂部平面1002_N_1執行2D卷積,此產生針對第N個係數集合之第一中間所得平面PN_1。 在完成圖10d之運算之後,初始影像平面1001_1已耗盡且可切出模板處理器RAM (或例如,甚至被棄用)。因而,簡要地參考圖9a,下一影像資料位準901_2現可切入模板處理器RAM。圖10e展示新系統狀態,其中先前影像資料平面1001_1已切出模板處理器RAM (其輪廓係用虛線繪製以指示其不再駐留於模板處理器RAM中)且其中下一影像平面1001_2已切入模板處理器RAM (其輪廓係用實線繪製以指示其目前駐留於模板處理器RAM內)。 圖10f展示新、第二影像平面1001_2與第一係數集合1002_1中之第二係數位準1002_1_2的2D卷積。卷積之結果係針對第一係數集合1002_1之第二中間平面P1_2。圖10g展示影像平面1001_2與係數集合1002_2中之第二係數位準1002_2_2的下一卷積,此產生針對第二係數集合1002_2之第二中間所得層P2_2。圖10h展示影像平面1001_2與係數集合1002_N中之第二係數位準1002_N_2的最後卷積,此產生針對第N個係數集合1002_2之第二中間所得層PN_2。 在第二影像平面1001_2耗盡之後,如上文對於第一影像平面及第二影像平面描述般載入及處理第三影像平面。接著,類似地連續處理各影像平面。圖10i展示最後影像平面1001_M與最後係數集合1002_N之底部係數位準1002_N_M的最後2D卷積,此產生最後中間所得層PN_M。此時,已計算所有係數集合之所有中間平面。圖10j展示針對一特定係數集合之所有中間平面之求和以產生各係數集合之最終所得平面,該最終所得平面繼而對應於CNN層之所得。即,針對N個係數集合之各者執行圖9a之求和910。所得平面1003_1至1003_N之各者因此對應於圖8之所得平面803_1至803_N。 在一實施例中,機器藉由保存一「運行中間平面和」而非單獨地儲存各中間平面且接著對其等求和而執行10j之相加。例如,參考圖10a及圖10f,緊接在產生中間平面P1_2之後,將中間平面P1_2與中間平面P1_1相加。將平面P1_1及P1_2之所得和儲存於例如模板處理器單元之內部。當中間平面P1_3 (未展示)作為第三影像平面與第一係數集合(亦未展示)內之第三平面1002_1_3的2D卷積之所得而產生之後,隨後調用P1_1/P1_2求和結果並將其與中間平面P1_3相加。再次儲存所得且將調用所得以在產生中間平面P1_4之後與中間平面P1_4相加。類似處理適用於其他係數集合之中間平面。應注意,若運行和及中間平面之x,y維度大於二維移位暫存器陣列之維度,則可藉由下列步驟而執行求和:將運行和及下一中間平面剖析成片且例如在一逐片基礎上將片載入至二維移位暫存器陣列中進行處理。 圖11a至圖11j描述針對一3×3模板大小執行一2D卷積之一實施例。如下文進一步更詳細地論述,其他模板大小係可能的。參考圖11a,影像資料A至R載入至二維移位暫存器中。圖11a展示兩個模板1101、1102之影像資料。為了簡潔起見,圖11a至圖11fj之論述將側重於如圖11a中描繪之產生像素位置H及K中之輸出結果的模板1101、1102之2D卷積。然而,重要的是應認知,存在將以各像素位置為中心之一不同模板且將關於圖11a至圖11j描述之2D卷積程序同時產生針對每一此像素位置之一卷積結果。 參考圖11a,為了執行2D卷積,係數值1103需要乘以影像資料模板之各者內之一各自定位之像素。即,兩個像素值A及D乘以係數a1,此係因為此等像素值及a1皆定位於模板左上角中,兩個像素值C及F乘以係數a3,此係因為此等像素值及係數皆定位於模板右上角中。2D卷積結果係像素值及對應係數之所有九個部分乘積之求和。如下文將進一步更詳細地描述,在一實施例中,在九個循環內發生部分乘積之求和。 自圖3b之論述回想到,在各項實施例中,模板處理器能夠將包含一中間運算元之純量指令發佈至所有執行通道。在一實施例中,藉由發佈一純量乘加指令鏈而實施2D卷積,其中係數作為一中間運算元包含於指令字中。 參考圖11b,在一第一循環期間,發佈具有係數a5作為一中間運算元之一純量指令。在執行該指令時,將係數a5與影像資料陣列中之每一像素值相乘且將所得局部地儲存於其對應執行通道內之像素值之暫存器空間中。再次,僅參考以像素位置H及K為中心之該對模板1101、1102,係數a5乘以H及K。部分乘積H×a5局部地儲存於模板1101之中心處的像素位置1121 (其當前具有像素值H)中之執行通道暫存器空間中。部分乘積K×a5局部地儲存於模板1102之中心處的像素位置1122 (其當前具有像素值K)中之執行通道暫存器空間中。在此,應注意,模板1101及1102周圍之邊界與其等內之像素位置可被視為在各像素位置處含有一專用ALU及局部暫存器空間之固定硬體區。即,模板1101及1102內之各像素可被視為各具有一專用ALU執行單元及局部專用暫存器空間之一硬體執行通道。 參考圖11c,在一第二循環期間,執行一第一移位指令以使影像資料在二維移位暫存器陣列內向右移位一個單元且發佈具有係數a4作為一中間運算元之一後續純量乘加指令。在執行第二指令時,將係數a4與影像資料陣列中之每一像素值相乘且將所得局部地儲存於其對應執行通道內之像素值之暫存器空間中。再次,僅參考現以像素位置G及J為中心之該對模板1101、1102,係數a4乘以G及J。將部分乘積G×a4與模板1101之中心處(即,含有值H×a5之像素位置1121)的執行通道暫存器空間中之局部儲存值相加,且將所得S_H回寫至相同暫存器空間。將部分乘積J×a4與模板1102之中心處(即,當前具有值K×a5之像素位置1122)的執行通道暫存器空間中之局部儲存值相加,且將所得S_K回寫至相同暫存器空間。 參考圖11d,在一第三循環期間,執行一第一移位指令以使影像資料在二維移位暫存器陣列內向下移位一個單元且發佈具有係數a1作為一中間運算元之一後續純量乘加指令。在執行第二指令時,將係數a1與影像資料陣列中之每一像素值相乘且將所得儲存於其對應執行通道內之像素值局部之暫存器空間中。再次,僅參考現以像素位置A及D為中心之該對模板1101、1102,係數a1乘以A及D。將部分乘積A×a1與模板1101 (其含有來自圖11c之值S_H)之中心處的執行通道暫存器空間中之局部儲存值相加且將所得S_H回寫至相同暫存器空間。將部分乘積D×a1與模板1102 (其含有來自圖11c之值S_K)之中心處的執行通道暫存器空間中之局部儲存值相加且將所得S_K回寫至相同暫存器空間。 圖11e至圖11j展示各具有一對應移位的另六個此等循環,該對應移位將尚未乘以一係數之一新像素值佈置於模板中心中。在執行圖11j之最後循環之後,2D卷積之所得駐留於各模板中心中之局部暫存器空間中(模板1101之值S_H及模板1102之值S_K)。 儘管上文論述係關於其中在一相同模板處理器上執行一整個CNN層之一方法,但其他方法可嘗試使CNN層跨多個模板處理器平行化(回想到,圖8展示與一CNN層相關聯之計算之一實施例)。例如,參考圖8及圖12,若N小於模板處理器之數目,則各模板處理器可被指派其自身3D卷積(即,各模板處理器執行其自身唯一係數集合之一3D卷積)。因此,各模板處理器接收相同影像資料將其與不同係數集合卷積。在此情況中,在各模板處理器處可遵循由圖9a建議之排序(即,各模板處理器將影像資料之各平面與一單一係數集合卷積)。即使N大於模板處理器之數目,仍可藉由例如使各模板處理器處理兩個或更多個唯一係數集合而分配/平行化CNN層之執行。 在圖13中描繪之又一平行化方法中,將輸入影像資料之不同平面唯一地指派至不同模板處理器。各模板處理器例如載入有所有係數集合之適當平面位準。例如,經指派以處理第一(最高)影像資料平面之模板處理器1302_1接收所有N個係數集合之第一(最高)平面。模板處理器接著繼續進行以執行圖10b至圖10d之運算,同時經指派以處置第二(下一較低)影像平面之另一模板處理器1302_2執行圖10f至圖10h之卷積。在此方法中,一相同係數集合之中間和平面將跨多個模板處理器分佈且隨後應移動至一相同模板處理器進行對準求和以產生該係數集合之特定所得平面。在此,不同模板處理器可同時計算不同係數集合之不同所得平面。在此方法之一擴展中,影像資料之一個以上平面可指派至任何特定模板處理器(例如,若影像資料平面之數目超過模板處理器之數目)。 在圖14中描繪之又一方法中,各模板處理器可經指派以對所得平面之僅一特定區域進行運算。例如,一第一模板處理器1402_1對影像平面表面區域之一第一象限進行運算,一第二模板處理器1402_2對影像平面表面區域之一第二象限進行運算,一第三模板處理器1402_3對影像平面表面區域之一第三象限進行運算,且一第四模板處理器1402_4對影像平面表面區域之一第四象限進行運算。各模板處理器執行一整個CNN層但僅對整個影像之1/4表面區域執行。最終所得平面係藉由使適當所得平面在其等相關聯模板處理器處理之正確象限中緊挨彼此「配合」而實現。圖14僅展示其中影像分解成四個象限之一種類型的實施例。其他組態可具有較少唯一表面區域(例如,兩半)或更多唯一表面區域(例如,九個、十六個等)。不同影像區段當中之任何重疊輸入應發送至一個以上模板處理器。 在又其他組態中,可在一單一模板處理器上執行各具有N個係數集合之一個以上CNN層。在一實施例中,可藉由在多個CNN層當中進行時間多工化而執行在一單一模板處理器上執行多個CNN層。圖15展示其中在一相同模板處理器上使兩個不同CNN層多工化之一簡單化實例。在此,將輸入影像資料之一第一平面1501_1載入至模板處理器RAM中。模板處理器接著繼續進行以執行影像資料1501_1與第一CNN層之係數集合1502_1至1502_N之各者之適當平面的2D卷積。在如上文描述之一運行和累加器中對所得中間平面求和。 在第一CNN層之最後係數集合1502_N已經卷積且其中間平面加至累加器中之後,處理下一CNN層。即,影像資料平面1501_1未切出模板處理器之作用中的上下文,而是替代地繼續與第二CNN層之係數集合1502_1至1502_N之適當各自層一起使用。第二CNN層之中間平面累加於獨立於針對第一CNN層之累加器的一累加器中。在已處理第二係數集合1512_1至1512_N之適當各自平面之後,影像資料之下一影像平面切入模板處理器之上下文且該程序重複但具有針對兩個係數集合之不同各自平面。 在又一方法中,針對一第一CNN之輸出直接作為針對一第二CNN之輸入饋送。例如,係數集合1502之中間平面之求和產生待由具有係數集合1512之模板處理器執行的下一、後續CNN之一輸入影像平面。 在又其他組態中,不同且獨立影像可指派至不同模板處理器(使得可由影像處理器同時執行不同影像上之CNN)。 儘管前文論述強調3×3模板大小,但在一項實施例中,機器經設計以支援(例如,透過影像處理器之組態暫存器空間及/或經編譯程式碼)多個3D模板(例如,1×1×M、3×3×M、5×5×M及7×7×M)。 儘管可以浮點記法計算上文描述之乘法及求和運算,但在其他實施例中可以定點整數記法計算。更進一步,固定整數記法可為低精度(例如,8位元或更少(諸如5位元))或較高精度。較低精度固定整數應被理解為更具時間/能源效率而不損耗諸多應用之影像品質。 在各項實施例中,可執行程式碼經結構化以在一單一ALU通道上執行2次(例如,8位元)乘加(MAD)以每循環達成2次MAD。在一實施例中,ALU通道硬體經設計以執行兩次8位元×8位元乘法(即,四個8位元輸入運算元)且接著將兩個16位元乘積及一32位元累加器相加在一起以在一個循環中產生一32位元和。在此,該累加器對應於與相乘所得相加之一32位元輸入運算元,其中求和所得寫入至輸出「累加器」暫存器中。在此,兩次乘法被假定針對輸出平面中之相同像素且因此可相加在一起。四個8位元輸入運算元係由來自相同輸入影像平面之兩個輸入及兩個係數值組成。 在一替代實施例中,各ALU通道經設計以支援雙8位元乘加以每循環達成2次MAD。即,硬體執行一第一8位元×8位元乘法且所得運用16位元輸入運算元求和至所得16位元累加器中及一第二、單獨8位元×8位元乘法且所得運用單獨16位元輸入運算元求和至單獨16位元累加器中。然而,16位元累加器將可能在一單一循環中飽和(例如,運用全8位元輸入被乘數),其需要每一循環傳送至一32位元累加器中,此可使總速率下降至總體每循環1次MAD。 為了避免飽和打擊,可使用較低解析度輸入被乘數資料。例如,可運用各自所得執行一對6位元×6位元乘法,該等各自所得運用一各自不同16位元輸入運算元求和至單獨、各自16位元累加器中。較低解析度輸入被乘數在16位元累加器飽和及對應傳送至一32位元累加器中之前需要多個循環。例如,可每16個循環發生飽和。在每16個循環飽和之情況中,每第17個循環,可將雙16位元累加器相加且每第18個循環,可將前一雙累加器求和之所得加至一運行32位元累加器。在一實施例中,硬體可經設計以在一單一循環中執行累加器求和且加至32位元累加器中。在各項實施例中,此一較低精度方法可能能夠每循環達成1.8次乘加。 較高精度應用(例如,運用8個以上位元之輸入被乘數資料)可經設計以使用一32位元輸入求和運算元及累加器所得,其中每循環執行近似1次MAD。類似於低精度方法,如此做將僅在已執行大量循環之前避免累加器之飽和。例如,在12位元輸入被乘數影像資料之情況中,在32位元累加器將飽和之前執行256個循環之單一MAD 。 圖16展示一方法,其包含在具有一執行通道陣列及一二維移位暫存器之一影像處理器上執行一卷積神經網路層1601。該二維移位暫存器提供針對該等執行通道之局部各自暫存器空間。該卷積神經網路之執行包含將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中1602。該卷積神經網路之執行亦包含循序地藉由下列步驟而執行1603該影像資料平面與一係數值陣列之一二維卷積:在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列;在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。 d . 實施方案實施例
應相關地指出,上文描述之各種影像處理器架構特徵未必限於傳統意義上之影像處理且因此可適用於可(或可不)引起影像處理器重新特性化之其他應用。例如,若相對於實際相機影像之處理,將在動畫之創建及/或產生及/或呈現中使用上文描述之各種影像處理器架構特徵之任一者,則影像處理器可特性化為一圖形處理單元。另外,上文描述之影像處理器架構特徵可適用於其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。以此方式應用,影像處理器可與一更通用處理器(例如,即或作為計算系統之一CPU之部件)整合(例如,作為其之一協同處理器),或可為一計算系統內之一獨立處理器。 上文論述之硬體設計實施例可在一半導體晶片內具體體現及/或具體體現以一半導體製程為最終目標的一電路設計之一描述。在後者之情況中,此等電路描述可採取下列之形式:一(例如,VHDL或Verilog)暫存器轉移位準(RTL)電路描述、一閘位準電路描述、一電晶體位準電路描述或遮罩描述或其等之各種組合。電路描述通常具體體現在一電腦可讀儲存媒體(諸如一CD-ROM或其他類型之儲存技術)上。 自先前段落,應相關地認知,如上文描述之一影像處理器可具體體現為一電腦系統上之硬體(例如,作為一手持型器件之晶片上系統(SOC)之部件,該晶片上系統(SOC)處理來自該手持型器件之相機之資料)。在其中影像處理器具體體現為一硬體電路之情況中,應注意,可直接自一相機接收由影像處理器處理之影像資料。在此,影像處理器可為一離散相機之部件,或具有一整合式相機之一計算系統之部件。在後者之情況中,可直接自該相機或自該計算系統之系統記憶體接收影像資料(例如,該相機將其影像資料發送至系統記憶體而非影像處理器)。亦應注意,先前段落中描述之諸多特徵可適用於一圖形處理器單元(其呈現動畫)。 圖17提供一計算系統之一例示性描繪。下文描述之計算系統之諸多組件適用於具有一整合式相機及相關聯影像處理器之一計算系統(例如,一手持型器件,諸如一智慧型電話或平板電腦)。一般技術者將能夠容易區別兩者。 如圖17中觀察到,基本計算系統可包含一中央處理單元1701 (其可包含例如安置於一多核心處理器或應用程式處理器上之複數個通用處理核心1715_1至1715_N及一主記憶體控制器1717)、系統記憶體1702、一顯示器1703 (例如,觸控螢幕、平板)、一區域有線點對點鏈路(例如,USB)介面1704、各種網路I/O功能1705 (諸如一乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如,WiFi)介面1706、一無線點對點鏈路(例如,藍芽)介面1707及一全球定位系統介面1708、各種感測器1709_1至1709_N、一或多個相機1710、一電池1711、一功率管理控制單元1712、一揚聲器及麥克風1713與一音訊編碼器/解碼器1714。 一應用程式處理器或多核心處理器1750可包含其CPU 1701內之一或多個通用處理核心1715、一或多個圖形處理單元1716、一記憶體管理功能1717 (例如,一記憶體控制器)、一I/O控制功能1718及一影像處理單元1719。通用處理核心1715通常執行計算系統之作業系統及應用程式軟體。圖形處理單元1716通常執行圖形密集型功能以,例如產生呈現於顯示器1703上之圖形資訊。記憶體控制功能1717與系統記憶體1702介接以將資料寫入至系統記憶體1702/自系統記憶體1702讀取資料。功率管理控制單元1712通常控制系統1700之功率消耗。 可根據上文在先前段落中詳細地描述之影像處理單元實施例之任一者而實施影像處理單元1719。替代地或組合地,IPU 1719可耦合至GPU 1716及CPU 1701之任一者或兩者作為其協同處理器。另外,在各項實施例中,可運用上文詳細地描述之影像處理器特徵之任一者而實施GPU 1716。 觸控螢幕顯示器1703、通信介面1704至1707、GPS介面1708、感測器1709、相機1710及揚聲器/麥克風編解碼器1713、1714之各者皆可被視為與整個計算系統相關的各種形式之I/O (輸入及/或輸出),該計算系統在適當情況下亦包含一整合式周邊器件(例如,一或多個相機1710)。取決於實施方案,此等I/O組件之各者可整合於應用程式處理器/多核心處理器1750上,或可定位於晶粒外或定位於應用程式處理器/多核心處理器1750之封裝外側。 在一實施例中,一或多個相機1710包含能夠量測相機與其視場中之一物件之間的深度之一深度相機。在一應用程式處理器或其他處理器之一通用CPU核心(或具有用以執行程式碼之一指令執行管線之其他功能區塊)上執行的應用程式軟體、作業系統軟體、器件驅動器軟體及/或韌體可執行上文描述之功能之任一者。 本發明之實施例可包含如上文陳述之各種程序。該等程序可具體體現為機器可執行指令。該等指令可用來引起一通用或專用處理器執行某些程序。替代地,此等程序可由含有用於執行該等程序之硬接線邏輯之特定硬體組件或由程式化電腦組件與客製化硬體組件之任何組合執行。 本發明之元件亦可提供為用於儲存機器可執行指令之一機器可讀媒體。該機器可讀媒體可包含但不限於軟碟、光碟、CD-ROM及磁光碟、FLASH記憶體、ROM、RAM、EPROM、EEPROM、磁卡或光學卡、傳播媒體或適於儲存電子指令的其他類型之媒體/機器可讀媒體。例如,元件可作為藉由具體體現在一載波或其他傳播媒體中之資料信號而經由一通信鏈路(例如,一數據機或網路連接)自一遠端電腦(例如,一伺服器)傳送至一請求電腦(例如,用戶端)的一電腦程式下載。 在前述說明書中,已描述特定例示性實施例。然而,將明白,在不背離如隨附申請專利範圍中陳述的本發明之更廣泛精神及範疇之情況下,可對該等實施例作出各種修改及變更。說明書及圖式據此被視為一闡釋性意義而非一限制性意義。
100‧‧‧架構
101_1‧‧‧線緩衝器單元
101_2‧‧‧線緩衝器單元
102_1‧‧‧模板處理器單元
102_2‧‧‧模板處理器單元
103_1‧‧‧片產生器單元
103_2‧‧‧片產生器單元
104‧‧‧網路
105‧‧‧巨集I/O單元
201‧‧‧影像資料
202‧‧‧模板
203‧‧‧線群組
204‧‧‧初始片/第一片
205‧‧‧下一片/第二片
300‧‧‧模板處理器單元架構
301‧‧‧資料計算單元
302‧‧‧純量處理器
303‧‧‧純量記憶體
304‧‧‧I/O單元
305‧‧‧執行通道陣列
306‧‧‧二維移位陣列結構
309‧‧‧程式控制器
351‧‧‧純量指令
352‧‧‧ALU指令/指令欄位
353‧‧‧記憶體指令/指令欄位
354‧‧‧欄位
401‧‧‧資料計算單元
405‧‧‧執行通道陣列
406‧‧‧二維移位暫存器陣列結構
407_1‧‧‧隨機存取記憶體
407_2‧‧‧隨機存取記憶體
409‧‧‧光暈/光暈區
505‧‧‧圖框/執行通道陣列
507‧‧‧第一陣列/移位暫存器陣列
510‧‧‧執行通道
511‧‧‧執行通道位置/執行通道
601‧‧‧執行通道
602‧‧‧暫存器組
603‧‧‧輸出多工器/多工器配置/多工器電路
604‧‧‧輸入多工器/多工器配置/多工器電路
701‧‧‧影像資料
702‧‧‧係數/係數資料
703‧‧‧所得表面區域/所得陣列/所得表面
704‧‧‧位置
705‧‧‧較小部分
706‧‧‧位置
707‧‧‧較小部分
801‧‧‧影像資料之區塊
802_1‧‧‧係數之第一區塊
802_2-802_N‧‧‧係數之區塊
803‧‧‧所得/三維區塊/三維所得區塊
803_1‧‧‧所得表面區域/所得陣列/所得平面
803_2-803_N‧‧‧所得表面區域/所得平面
901‧‧‧影像資料之區塊
901_1‧‧‧第一平面/第一平面位準/影像資料平面
901_2‧‧‧第二平面/第二平面位準/影像資料平面
901_M‧‧‧第M平面/第M平面位準/影像資料平面
902_1‧‧‧係數之區塊
902_1_1‧‧‧係數平面/係數資料
902_1_2‧‧‧係數平面
902_1_M‧‧‧係數平面
903_1‧‧‧所得陣列
910‧‧‧相加
940‧‧‧運算
941‧‧‧運算
950‧‧‧模板位置
951‧‧‧模板位置
1001_1‧‧‧第一影像資料平面
1001_2‧‧‧下一影像平面/新、第二影像平面/影像平面
1001_M‧‧‧最後影像平面
1002_1‧‧‧第一係數集合
1002_1_1‧‧‧係數資料/係數平面
1002_1_2‧‧‧第二係數位準
1002_2‧‧‧係數集合
1002_2_1‧‧‧係數平面
1002_2_2‧‧‧係數集合
1002_2中之第二係數位準
1002_N‧‧‧最後係數集合
1002_N_1‧‧‧第N個係數集合1002_N之頂部平面
1002_N_2‧‧‧係數集合1002_N中之第二係數位準
1002_N_M‧‧‧最後係數集合1002_N之底部係數位準
1003_1-1003_N‧‧‧所得平面
1101‧‧‧模板
1102‧‧‧模板
1103‧‧‧係數值
1121‧‧‧像素位置
1122‧‧‧像素位置
1302_1‧‧‧模板處理器
1302_2‧‧‧模板處理器
1402_1‧‧‧第一模板處理器
1402_2‧‧‧第二模板處理器
1501_1‧‧‧輸入影像資料之第一平面/影像資料
1502_1-1502_N‧‧‧係數集合
1512_1-1512_N‧‧‧第二係數集合
1601‧‧‧步驟
1602‧‧‧步驟
1603‧‧‧步驟
1700‧‧‧系統
1701‧‧‧中央處理單元
1702‧‧‧系統記憶體
1703‧‧‧顯示器/觸控螢幕顯示器
1704‧‧‧區域有線點對點鏈路(例如,USB)介面/通信介面
1705‧‧‧網路I/O功能/通信介面
1706‧‧‧無線區域網路(例如,WiFi)介面/通信介面
1707‧‧‧無線點對點鏈路(例如,藍芽)介面/通信介面
1708‧‧‧全球定位系統介面
1709_1-1709_N‧‧‧感測器
1710‧‧‧相機
1711‧‧‧電池
1712‧‧‧功率管理控制單元
1713‧‧‧揚聲器及麥克風/揚聲器/麥克風編解碼器
1714‧‧‧音訊編碼器/解碼器/揚聲器/麥克風編解碼器
1715_1-1715_N‧‧‧通用處理核心
1716‧‧‧圖形處理單元
1718‧‧‧I/O控制功能
1719‧‧‧影像處理單元
1750‧‧‧應用程式處理器/多核心處理器
a1-a9‧‧‧係數平面
A-R‧‧‧影像資料
A-L‧‧‧資料像素
P1_1‧‧‧第一中間所得平面
P1_2‧‧‧第二中間所得平面
P1_3‧‧‧中間平面
P1_4‧‧‧中間平面
P1_M‧‧‧第M中間所得平面
P2_1‧‧‧第一中間平面
P2_2‧‧‧第二中間所得層
PN_1‧‧‧第一中間所得平面
PN_2‧‧‧第二中間所得層
PN_M‧‧‧最後中間所得層
R1-R5‧‧‧暫存器
101_1‧‧‧線緩衝器單元
101_2‧‧‧線緩衝器單元
102_1‧‧‧模板處理器單元
102_2‧‧‧模板處理器單元
103_1‧‧‧片產生器單元
103_2‧‧‧片產生器單元
104‧‧‧網路
105‧‧‧巨集I/O單元
201‧‧‧影像資料
202‧‧‧模板
203‧‧‧線群組
204‧‧‧初始片/第一片
205‧‧‧下一片/第二片
300‧‧‧模板處理器單元架構
301‧‧‧資料計算單元
302‧‧‧純量處理器
303‧‧‧純量記憶體
304‧‧‧I/O單元
305‧‧‧執行通道陣列
306‧‧‧二維移位陣列結構
309‧‧‧程式控制器
351‧‧‧純量指令
352‧‧‧ALU指令/指令欄位
353‧‧‧記憶體指令/指令欄位
354‧‧‧欄位
401‧‧‧資料計算單元
405‧‧‧執行通道陣列
406‧‧‧二維移位暫存器陣列結構
407_1‧‧‧隨機存取記憶體
407_2‧‧‧隨機存取記憶體
409‧‧‧光暈/光暈區
505‧‧‧圖框/執行通道陣列
507‧‧‧第一陣列/移位暫存器陣列
510‧‧‧執行通道
511‧‧‧執行通道位置/執行通道
601‧‧‧執行通道
602‧‧‧暫存器組
603‧‧‧輸出多工器/多工器配置/多工器電路
604‧‧‧輸入多工器/多工器配置/多工器電路
701‧‧‧影像資料
702‧‧‧係數/係數資料
703‧‧‧所得表面區域/所得陣列/所得表面
704‧‧‧位置
705‧‧‧較小部分
706‧‧‧位置
707‧‧‧較小部分
801‧‧‧影像資料之區塊
802_1‧‧‧係數之第一區塊
802_2-802_N‧‧‧係數之區塊
803‧‧‧所得/三維區塊/三維所得區塊
803_1‧‧‧所得表面區域/所得陣列/所得平面
803_2-803_N‧‧‧所得表面區域/所得平面
901‧‧‧影像資料之區塊
901_1‧‧‧第一平面/第一平面位準/影像資料平面
901_2‧‧‧第二平面/第二平面位準/影像資料平面
901_M‧‧‧第M平面/第M平面位準/影像資料平面
902_1‧‧‧係數之區塊
902_1_1‧‧‧係數平面/係數資料
902_1_2‧‧‧係數平面
902_1_M‧‧‧係數平面
903_1‧‧‧所得陣列
910‧‧‧相加
940‧‧‧運算
941‧‧‧運算
950‧‧‧模板位置
951‧‧‧模板位置
1001_1‧‧‧第一影像資料平面
1001_2‧‧‧下一影像平面/新、第二影像平面/影像平面
1001_M‧‧‧最後影像平面
1002_1‧‧‧第一係數集合
1002_1_1‧‧‧係數資料/係數平面
1002_1_2‧‧‧第二係數位準
1002_2‧‧‧係數集合
1002_2_1‧‧‧係數平面
1002_2_2‧‧‧係數集合
1002_2中之第二係數位準
1002_N‧‧‧最後係數集合
1002_N_1‧‧‧第N個係數集合1002_N之頂部平面
1002_N_2‧‧‧係數集合1002_N中之第二係數位準
1002_N_M‧‧‧最後係數集合1002_N之底部係數位準
1003_1-1003_N‧‧‧所得平面
1101‧‧‧模板
1102‧‧‧模板
1103‧‧‧係數值
1121‧‧‧像素位置
1122‧‧‧像素位置
1302_1‧‧‧模板處理器
1302_2‧‧‧模板處理器
1402_1‧‧‧第一模板處理器
1402_2‧‧‧第二模板處理器
1501_1‧‧‧輸入影像資料之第一平面/影像資料
1502_1-1502_N‧‧‧係數集合
1512_1-1512_N‧‧‧第二係數集合
1601‧‧‧步驟
1602‧‧‧步驟
1603‧‧‧步驟
1700‧‧‧系統
1701‧‧‧中央處理單元
1702‧‧‧系統記憶體
1703‧‧‧顯示器/觸控螢幕顯示器
1704‧‧‧區域有線點對點鏈路(例如,USB)介面/通信介面
1705‧‧‧網路I/O功能/通信介面
1706‧‧‧無線區域網路(例如,WiFi)介面/通信介面
1707‧‧‧無線點對點鏈路(例如,藍芽)介面/通信介面
1708‧‧‧全球定位系統介面
1709_1-1709_N‧‧‧感測器
1710‧‧‧相機
1711‧‧‧電池
1712‧‧‧功率管理控制單元
1713‧‧‧揚聲器及麥克風/揚聲器/麥克風編解碼器
1714‧‧‧音訊編碼器/解碼器/揚聲器/麥克風編解碼器
1715_1-1715_N‧‧‧通用處理核心
1716‧‧‧圖形處理單元
1718‧‧‧I/O控制功能
1719‧‧‧影像處理單元
1750‧‧‧應用程式處理器/多核心處理器
a1-a9‧‧‧係數平面
A-R‧‧‧影像資料
A-L‧‧‧資料像素
P1_1‧‧‧第一中間所得平面
P1_2‧‧‧第二中間所得平面
P1_3‧‧‧中間平面
P1_4‧‧‧中間平面
P1_M‧‧‧第M中間所得平面
P2_1‧‧‧第一中間平面
P2_2‧‧‧第二中間所得層
PN_1‧‧‧第一中間所得平面
PN_2‧‧‧第二中間所得層
PN_M‧‧‧最後中間所得層
R1-R5‧‧‧暫存器
下文描述及隨附圖式用來繪示各項實施例。在圖式中: 圖1展示一影像處理器硬體架構之一實施例; 圖2a、圖2b、圖2c、圖2d及圖2e描繪將影像資料剖析成一線群組,將一線群組剖析成一片(sheet)及運用重疊模板對一片執行運算; 圖3a展示一模板處理器之一實施例; 圖3b展示一指令格式之一實施例; 圖4展示一模板處理器內之一資料計算單元之一實施例; 圖5a、圖5b、圖5c、圖5d、圖5e、圖5f、圖5g、圖5h、圖5i、圖5j及圖5k描繪使用一二維移位陣列及一執行通道陣列以結合重疊模板判定一對相鄰輸出像素值的一實例; 圖6展示用於一整合式執行通道陣列及二維移位陣列的一單位單元之一實施例; 圖7描繪一3D卷積; 圖8描繪一CNN層; 圖9a描繪影像資料平面與係數平面之一3D卷積。 圖9b描繪相當於具有兩個3×3模板之影像資料與一對應係數集合之一2D卷積。 圖10a、圖10b、圖10c、圖10d、圖10e、圖10f、圖10g、圖10h、圖10i及圖10j描繪運用影像平面及具有係數平面之係數集合執行一CNN層; 圖11a、圖11b、圖11c、圖11d、圖11e、圖11f、圖11g、圖11h、圖11i、圖11j描繪運用具有一二維移位暫存器之一影像處理器針對兩個3×3模板之一二維卷積; 圖12展示一第一影像處理器CNN層組態; 圖13展示一第二影像處理器CNN層組態; 圖14展示一第三影像處理器CNN層組態; 圖15係關於在一影像處理器上使多個CNN層多工化; 圖16展示在一影像處理器上執行一CNN層之一方法; 圖17展示一計算系統。
801‧‧‧影像資料之區塊
802_1‧‧‧係數之第一區塊
802_2-802_N‧‧‧係數之區塊
803‧‧‧所得/三維區塊/三維所得區塊
803_1‧‧‧所得表面區域/所得陣列/所得平面
803_2-803_N‧‧‧所得表面區域/所得平面
Claims (24)
- 一種方法,其包括: 在具有一執行通道陣列及一二維移位暫存器之一影像處理器上執行一卷積神經網路層,該二維移位暫存器用以提供針對該等執行通道之局部各自暫存器空間,該卷積神經網路之該執行包括: a)將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中; b)循序地藉由下列步驟而執行該影像資料平面與一係數值陣列之一二維卷積: 在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列; 在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及 在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。
- 如請求項1之方法,其進一步包括運用該影像資料平面及下一係數陣列重複上述a)及b),其中該係數值陣列係來自該卷積神經網路層之一第一係數集合之一平面,且該下一係數值陣列係來自該卷積神經網路層之一第二係數集合之一平面。
- 如請求項2之方法,其進一步包括將自一相同係數集合產生之中間平面局部地累加至該等執行通道。
- 如請求項2之方法,其中在該影像資料與下列平面之間執行二維卷積中間,將該影像資料局部地保存至該等執行通道:1)來自該第一係數集合之該平面;及2)來自該第二係數集合之該平面。
- 如請求項1之方法,其中該同時相乘進一步包括同時將一相同係數值與該二維移位暫存器內之影像資料相乘。
- 如請求項1之方法,其中值對準之該實現包括在將該二維移位暫存器內之影像資料乘以下一係數值之前,使該影像資料移位。
- 一種具有儲存於其上之程式碼之機器可讀儲存媒體,該程式碼在由具有一執行通道陣列及為該等執行通道提供局部各自暫存器空間之一二維移位暫存器之一影像處理器處理時,引起一方法被執行,該方法包括: 藉由執行下列步驟而執行一卷積神經網路: a)將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中; b)循序地藉由下列步驟而執行該影像資料平面與一係數值陣列之一二維卷積: 在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列; 在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及 在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。
- 如請求項7之機器可讀儲存媒體,其中該方法進一步包括運用該影像資料平面及下一係數陣列重複上述a)及b),其中該係數值陣列係來自該卷積神經網路層之一第一係數集合之一平面,且該下一係數值陣列係來自該卷積神經網路層之一第二係數集合之一平面。
- 如請求項8之機器可讀儲存媒體,其中該方法進一步包括將自一相同係數集合產生之中間平面局部地累加至該等執行通道。
- 如請求項8之機器可讀儲存媒體,其中在該影像資料與下列平面之間執行二維卷積中間,將該影像資料局部地保存至該等執行通道:1)來自該第一係數集合之該平面;及2)來自該第二係數集合之該平面。
- 如請求項7之機器可讀儲存媒體,其中該同時相乘進一步包括同時將一相同係數值與該二維移位暫存器內之影像資料相乘。
- 如請求項7之機器可讀儲存媒體,其中值對準之該實現包括在將該二維移位暫存器內之影像資料乘以下一係數值之前,使該影像資料移位。
- 如請求項7之機器可讀儲存媒體,其中該影像處理器包括多個模板處理器,各模板處理器具有一各自執行通道陣列及二維移位暫存器,且其中該影像處理器經組態以在具有該卷積神經網路層之不同係數集合之不同模板處理器上執行相同影像資料。
- 如請求項7之機器可讀儲存媒體,其中該影像處理器包括多個模板處理器,各模板處理器具有一各自執行通道陣列及二維移位暫存器,且其中該影像處理器經組態以執行不同模板處理器上之該卷積神經網路之相同係數集合與該等不同模板處理器上之不同影像資料。
- 如請求項14之機器可讀儲存媒體,其中該不同影像資料包括一三維影像資料區塊之不同區塊之多個平面。
- 如請求項7之機器可讀儲存媒體,其中該影像處理器經組態以將來自該卷積神經網路層之一輸出用作下一卷積神經網路層之一輸入以藉由該影像處理器計算。
- 如請求項7之機器可讀媒體,其中該影像處理器經組態以使該卷積神經網路層與一第二卷積神經網路層多工化,其中該影像資料在該卷積神經網路層與該第二卷積神經網路層之處理之間,局部地保持於該等執行通道。
- 一種裝置,其包括: i)一影像處理器,其包括一執行通道陣列及一二維移位暫存器,該二維移位暫存器用以提供針對該等執行通道之各自局部暫存器空間; ii)一機器可讀儲存媒體,其含有經儲存之程式碼,該程式碼在由該執行通道陣列執行時,引起一方法被執行,該方法包括: 藉由執行下列步驟而執行一卷積神經網路: a)將一三維影像資料區塊之一影像資料平面載入至該二維移位暫存器中; b)循序地藉由下列步驟而執行該影像資料平面與一係數值陣列之一二維卷積: 在該等執行通道內,同時將各自像素與係數值相乘以產生一部分乘積陣列; 在該等執行通道內,同時對該等部分乘積與針對該影像資料內之不同模板保存於該二維暫存器內的部分乘積之各自累加求和;及 在該等執行通道內,藉由使該二維移位暫存器陣列內之內容移位而實現該二維卷積之值之對準。
- 如請求項18之裝置,其中該影像處理器包括多個模板處理器,各模板處理器具有一各自執行通道陣列及二維移位暫存器,且其中該影像處理器經組態以在具有該卷積神經網路層之不同係數集合之不同模板處理器上執行相同影像資料。
- 如請求項18之裝置,其中該影像處理器包括多個模板處理器,各模板處理器具有一各自執行通道陣列及二維移位暫存器,且其中該影像處理器經組態以執行不同模板處理器上之該卷積神經網路之相同係數集合與該等不同模板處理器上之不同影像資料。
- 如請求項20之裝置,其中該不同影像資料包括一三維影像資料區塊之不同區塊之多個平面。
- 如請求項18之裝置,其中該影像處理器經組態以將來自該卷積神經網路層之一輸出用作下一卷積神經網路層之一輸入以由該影像處理器計算。
- 如請求項18之裝置,其中該影像處理器經組態以使該卷積神經網路層與一第二卷積神經網路層多工化,其中該影像資料在該卷積神經網路層與該第二卷積神經網路層之處理之間,局部地保持於該等執行通道。
- 如請求項18之裝置,其中該影像處理器及該機器可讀儲存媒體係一計算系統之部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/201,204 | 2016-07-01 | ||
US15/201,204 US10546211B2 (en) | 2016-07-01 | 2016-07-01 | Convolutional neural network on programmable two dimensional image processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201802727A true TW201802727A (zh) | 2018-01-16 |
TWI690858B TWI690858B (zh) | 2020-04-11 |
Family
ID=59363203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106121712A TWI690858B (zh) | 2016-07-01 | 2017-06-29 | 用於在可程式化二維影像處理器上之卷積神經網路之方法、機器可讀媒體及裝置 |
Country Status (9)
Country | Link |
---|---|
US (3) | US10546211B2 (zh) |
EP (1) | EP3479302B1 (zh) |
JP (1) | JP6764954B2 (zh) |
KR (1) | KR102232722B1 (zh) |
CN (1) | CN107563952B (zh) |
DE (2) | DE102017113733B4 (zh) |
GB (3) | GB2574940B (zh) |
TW (1) | TWI690858B (zh) |
WO (1) | WO2018005030A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853908B2 (en) | 2019-02-12 | 2020-12-01 | Google Llc | Image processor complex transfer functions |
TWI770967B (zh) * | 2020-06-19 | 2022-07-11 | 大陸商深圳市商湯科技有限公司 | 一種神經網路的訓練方法、視頻識別方法及電腦設備和電腦可讀儲存介質 |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180046898A1 (en) * | 2016-08-11 | 2018-02-15 | Vivante Corporation | Zero Coefficient Skipping Convolution Neural Network Engine |
US10360470B2 (en) | 2016-10-10 | 2019-07-23 | Gyrfalcon Technology Inc. | Implementation of MobileNet in a CNN based digital integrated circuit |
US10339445B2 (en) | 2016-10-10 | 2019-07-02 | Gyrfalcon Technology Inc. | Implementation of ResNet in a CNN based digital integrated circuit |
US10366328B2 (en) | 2017-09-19 | 2019-07-30 | Gyrfalcon Technology Inc. | Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit |
US9940534B1 (en) * | 2016-10-10 | 2018-04-10 | Gyrfalcon Technology, Inc. | Digital integrated circuit for extracting features out of an input image based on cellular neural networks |
US10402628B2 (en) | 2016-10-10 | 2019-09-03 | Gyrfalcon Technology Inc. | Image classification systems based on CNN based IC and light-weight classifier |
US10366302B2 (en) | 2016-10-10 | 2019-07-30 | Gyrfalcon Technology Inc. | Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor |
US10043095B2 (en) * | 2016-10-10 | 2018-08-07 | Gyrfalcon Technology, Inc. | Data structure for CNN based digital integrated circuit for extracting features out of an input image |
TWI634490B (zh) * | 2016-11-14 | 2018-09-01 | 美商耐能股份有限公司 | 卷積運算裝置及卷積運算方法 |
US10878310B2 (en) | 2016-11-29 | 2020-12-29 | Mellanox Technologies, Ltd. | Accelerated convolution in convolutional neural networks |
US11562115B2 (en) | 2017-01-04 | 2023-01-24 | Stmicroelectronics S.R.L. | Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links |
US10339443B1 (en) | 2017-02-24 | 2019-07-02 | Gopro, Inc. | Systems and methods for processing convolutional neural network operations using textures |
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
US11373266B2 (en) * | 2017-05-05 | 2022-06-28 | Intel Corporation | Data parallelism and halo exchange for distributed machine learning |
US10474464B2 (en) | 2017-07-05 | 2019-11-12 | Deep Vision, Inc. | Deep vision processor |
US10817983B1 (en) * | 2017-09-28 | 2020-10-27 | Apple Inc. | Method and device for combining real and virtual images |
CN109754359B (zh) * | 2017-11-01 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 一种应用于卷积神经网络的池化处理的方法及系统 |
US11270201B2 (en) | 2017-12-29 | 2022-03-08 | Intel Corporation | Communication optimizations for distributed machine learning |
CN108182471B (zh) * | 2018-01-24 | 2022-02-15 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
US10459876B2 (en) * | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
GB201801639D0 (en) * | 2018-02-01 | 2018-03-21 | Ruff Brendan Patrick | Low precision efficient multiplication free convolutional filter bank device |
US11468302B2 (en) | 2018-03-13 | 2022-10-11 | Recogni Inc. | Efficient convolutional engine |
CN108520297B (zh) * | 2018-04-02 | 2020-09-04 | 周军 | 可编程深度神经网络处理器 |
CN108829610B (zh) * | 2018-04-02 | 2020-08-04 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
EP3557485B1 (en) * | 2018-04-19 | 2021-05-26 | Aimotive Kft. | Method for accelerating operations and accelerator apparatus |
KR102126857B1 (ko) * | 2018-05-10 | 2020-06-25 | 서울대학교산학협력단 | 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법 |
CN108921926B (zh) * | 2018-07-02 | 2020-10-09 | 云从科技集团股份有限公司 | 一种基于单张图像的端到端三维人脸重建方法 |
US10417342B1 (en) | 2018-07-03 | 2019-09-17 | Gyrfalcon Technology Inc. | Deep learning device for local processing classical chinese poetry and verse |
CN108681984B (zh) * | 2018-07-26 | 2023-08-15 | 珠海一微半导体股份有限公司 | 一种3*3卷积算法的加速电路 |
CN109065089B (zh) * | 2018-07-26 | 2020-11-06 | 杭州闪亿半导体有限公司 | 一种用于卷积运算的存储模块、模组 |
US10311149B1 (en) | 2018-08-08 | 2019-06-04 | Gyrfalcon Technology Inc. | Natural language translation device |
CN109086875A (zh) * | 2018-08-16 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种基于宏指令集的卷积网络加速方法及装置 |
US10983583B2 (en) * | 2018-08-23 | 2021-04-20 | Apple Inc. | Electronic display reduced blanking duration systems and methods |
JP7165018B2 (ja) | 2018-10-03 | 2022-11-02 | キヤノン株式会社 | 情報処理装置、情報処理方法 |
US11501141B2 (en) * | 2018-10-12 | 2022-11-15 | Western Digital Technologies, Inc. | Shifting architecture for data reuse in a neural network |
US10387772B1 (en) | 2018-10-22 | 2019-08-20 | Gyrfalcon Technology Inc. | Ensemble learning based image classification systems |
CN109711538B (zh) * | 2018-12-14 | 2021-01-15 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
JP7408289B2 (ja) * | 2019-03-28 | 2024-01-05 | 株式会社エヌエスアイテクス | 畳込み演算装置 |
CN111767994A (zh) * | 2019-04-01 | 2020-10-13 | 中国科学院半导体研究所 | 一种神经元计算模块 |
KR20210004702A (ko) * | 2019-07-05 | 2021-01-13 | 삼성전자주식회사 | Ai 프로세서 및 이의 신경망 연산 수행 방법 |
US11475283B2 (en) | 2019-10-24 | 2022-10-18 | Apple Inc. | Multi dimensional convolution in neural network processor |
DE102019130930A1 (de) | 2019-11-15 | 2021-05-20 | Carl Zeiss Microscopy Gmbh | Mikroskop und Verfahren mit Ausführen eines faltenden neuronalen Netzes |
CN110728367B (zh) * | 2019-12-18 | 2020-05-05 | 深圳鲲云信息科技有限公司 | 用于神经网络的数据存储方法及装置 |
CN111079904B (zh) * | 2019-12-23 | 2023-05-23 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法和存储介质 |
US11403727B2 (en) | 2020-01-28 | 2022-08-02 | Nxp Usa, Inc. | System and method for convolving an image |
DE102020201182A1 (de) * | 2020-01-31 | 2021-08-05 | Robert Bosch Gesellschaft mit beschränkter Haftung | Hardwarebeschleunigte Berechnung von Faltungen |
US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
WO2021183567A1 (en) * | 2020-03-10 | 2021-09-16 | Verheyen Henry | Hardware architecture for processing data in neural network |
US11513847B2 (en) | 2020-03-24 | 2022-11-29 | Deep Vision Inc. | System and method for queuing commands in a deep learning processor |
JP7367595B2 (ja) | 2020-04-07 | 2023-10-24 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US11500680B2 (en) * | 2020-04-24 | 2022-11-15 | Alibaba Group Holding Limited | Systolic array-friendly data placement and control based on masked write |
KR102441171B1 (ko) * | 2020-05-26 | 2022-09-08 | 한국전자통신연구원 | 다시점 얼굴 영상 기반 사용자 모니터링 장치 및 방법 |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
US11586442B2 (en) | 2020-08-06 | 2023-02-21 | Nxp Usa, Inc. | System and method for convolving image with sparse kernels |
GB2599098B (en) * | 2020-09-22 | 2024-04-10 | Imagination Tech Ltd | Hardware implementation of windowed operations in three or more dimensions |
US11734017B1 (en) | 2020-12-07 | 2023-08-22 | Waymo Llc | Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor |
US20220207332A1 (en) * | 2020-12-31 | 2022-06-30 | Nxp Usa, Inc. | Scalable neural network accelerator architecture |
CN112967211A (zh) * | 2021-01-31 | 2021-06-15 | 成都商汤科技有限公司 | 一种图像处理方法、装置、计算机设备及存储介质 |
CN113191935A (zh) * | 2021-04-30 | 2021-07-30 | 华中科技大学 | 一种用于高斯金字塔构建的可重构硬件加速方法与系统 |
US20230032323A1 (en) * | 2021-07-28 | 2023-02-02 | Apical Limited | Image processing method and system |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4445177A (en) | 1981-05-22 | 1984-04-24 | Data General Corporation | Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions |
DE3851005T2 (de) | 1987-06-01 | 1995-04-20 | Applied Intelligent Syst Inc | Paralleles Nachbarverarbeitungssystem und -Verfahren. |
US4770430A (en) | 1987-08-11 | 1988-09-13 | Lange Dennis M | Self-steering axle assembly for vehicles |
US4935894A (en) | 1987-08-31 | 1990-06-19 | Motorola, Inc. | Multi-processor, multi-bus system with bus interface comprising FIFO register stocks for receiving and transmitting data and control information |
US5253308A (en) | 1989-06-21 | 1993-10-12 | Amber Engineering, Inc. | Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing |
WO1994009595A1 (en) | 1991-09-20 | 1994-04-28 | Shaw Venson M | Method and apparatus including system architecture for multimedia communications |
JP3482660B2 (ja) | 1993-09-08 | 2003-12-22 | ソニー株式会社 | 画像データ処理装置および画像データ処理方法 |
US5612693A (en) | 1994-12-14 | 1997-03-18 | International Business Machines Corporation | Sliding window data compression using a toroidal bit shift register |
JP3573755B2 (ja) | 1996-01-15 | 2004-10-06 | シーメンス アクチエンゲゼルシヤフト | 画像処理プロセッサ |
US5892962A (en) | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US6366289B1 (en) | 1998-07-17 | 2002-04-02 | Microsoft Corporation | Method and system for managing a display image in compressed and uncompressed blocks |
US6587158B1 (en) | 1998-07-23 | 2003-07-01 | Dvdo, Inc. | Method and apparatus for reducing on-chip memory in vertical video processing |
US7010177B1 (en) | 1998-08-27 | 2006-03-07 | Intel Corporation | Portability of digital images |
EP1164544B1 (en) | 1999-03-16 | 2011-11-02 | Hamamatsu Photonics K.K. | High-speed vision sensor |
JP3922859B2 (ja) | 1999-12-28 | 2007-05-30 | 株式会社リコー | 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6745319B1 (en) | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
US6728862B1 (en) | 2000-05-22 | 2004-04-27 | Gazelle Technology Corporation | Processor array and parallel data processing methods |
US6728722B1 (en) | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
US7286717B2 (en) | 2001-10-31 | 2007-10-23 | Ricoh Company, Ltd. | Image data processing device processing a plurality of series of data items simultaneously in parallel |
JP4146654B2 (ja) | 2002-02-28 | 2008-09-10 | 株式会社リコー | 画像処理回路、複合画像処理回路、および、画像形成装置 |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
WO2003088033A1 (en) | 2002-04-09 | 2003-10-23 | University Of Rochester | Multiplier-based processor-in-memory architectures for image and graphics processing |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US20060044576A1 (en) | 2004-07-30 | 2006-03-02 | Kabushiki Kaisha Toshiba | Apparatus for image processing |
US7667764B2 (en) | 2004-06-04 | 2010-02-23 | Konica Minolta Holdings, Inc. | Image sensing apparatus |
JP4219887B2 (ja) | 2004-12-28 | 2009-02-04 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
ATE504043T1 (de) | 2005-04-28 | 2011-04-15 | Univ Edinburgh | Umkonfigurierbares anweisungs-zellen-array |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
JP2007067917A (ja) | 2005-08-31 | 2007-03-15 | Matsushita Electric Ind Co Ltd | 画像データ処理装置 |
US7602974B2 (en) | 2005-10-21 | 2009-10-13 | Mobilic Technology (Cayman) Corp. | Universal fixed-pixel-size ISP scheme |
FR2895103B1 (fr) | 2005-12-19 | 2008-02-22 | Dxo Labs Sa | Procede et systeme de traitement de donnees numeriques |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US20080111823A1 (en) | 2006-11-13 | 2008-05-15 | Faraday Technology Corp. | Graphics processing system |
EP1927949A1 (en) | 2006-12-01 | 2008-06-04 | Thomson Licensing | Array of processing elements with local registers |
US8321849B2 (en) | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US20080244222A1 (en) | 2007-03-30 | 2008-10-02 | Intel Corporation | Many-core processing using virtual processors |
TW200842699A (en) | 2007-04-06 | 2008-11-01 | Technology Properties Ltd | Signal processing |
JP4389976B2 (ja) | 2007-06-29 | 2009-12-24 | ブラザー工業株式会社 | 画像処理装置および画像処理プログラム |
JP4844853B2 (ja) | 2007-09-05 | 2011-12-28 | 国立大学法人東北大学 | 固体撮像素子及びその駆動方法 |
CN102047241B (zh) | 2008-05-30 | 2014-03-12 | 先进微装置公司 | 本地与全局数据共享 |
JP4999791B2 (ja) | 2008-06-30 | 2012-08-15 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
JP5376920B2 (ja) | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
US8456480B2 (en) | 2009-01-14 | 2013-06-04 | Calos Fund Limited Liability Company | Method for chaining image-processing functions on a SIMD processor |
KR101572879B1 (ko) | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US8442927B2 (en) * | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US20110055495A1 (en) | 2009-08-28 | 2011-03-03 | Qualcomm Incorporated | Memory Controller Page Management Devices, Systems, and Methods |
US8976195B1 (en) | 2009-10-14 | 2015-03-10 | Nvidia Corporation | Generating clip state for a batch of vertices |
US8436857B2 (en) | 2009-10-20 | 2013-05-07 | Oracle America, Inc. | System and method for applying level of detail schemes |
US8595428B2 (en) | 2009-12-22 | 2013-11-26 | Intel Corporation | Memory controller functionalities to support data swizzling |
US8749667B2 (en) | 2010-08-02 | 2014-06-10 | Texas Instruments Incorporated | System and method for maintaining maximum input rate while up-scaling an image vertically |
US8508612B2 (en) | 2010-09-30 | 2013-08-13 | Apple Inc. | Image signal processor line buffer configuration for processing ram image data |
US8797323B2 (en) | 2011-01-18 | 2014-08-05 | Intel Corporation | Shadowing dynamic volumetric media |
WO2012105174A1 (ja) | 2011-01-31 | 2012-08-09 | パナソニック株式会社 | プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム |
US9092267B2 (en) | 2011-06-20 | 2015-07-28 | Qualcomm Incorporated | Memory sharing in graphics processing unit |
US20130027416A1 (en) | 2011-07-25 | 2013-01-31 | Karthikeyan Vaithianathan | Gather method and apparatus for media processing accelerators |
JP5742651B2 (ja) | 2011-10-15 | 2015-07-01 | コニカミノルタ株式会社 | 画像処理装置、連携方法および連携プログラム |
JP5746100B2 (ja) | 2011-12-27 | 2015-07-08 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
US8823736B2 (en) | 2012-01-20 | 2014-09-02 | Intel Corporation | Graphics tiling architecture with bounding volume hierarchies |
US10244246B2 (en) | 2012-02-02 | 2019-03-26 | Texas Instruments Incorporated | Sub-pictures for pixel rate balancing on multi-core platforms |
US9235769B2 (en) | 2012-03-15 | 2016-01-12 | Herta Security, S.L. | Parallel object detection method for heterogeneous multithreaded microarchitectures |
TWI520598B (zh) | 2012-05-23 | 2016-02-01 | 晨星半導體股份有限公司 | 影像處理裝置與影像處理方法 |
US9232139B2 (en) | 2012-07-24 | 2016-01-05 | Apple Inc. | Image stabilization using striped output transformation unit |
US10318308B2 (en) * | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
US9378181B2 (en) | 2012-11-09 | 2016-06-28 | Intel Corporation | Scalable computing array |
US8954992B2 (en) | 2013-03-15 | 2015-02-10 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Distributed and scaled-out network switch and packet processing |
US9477999B2 (en) * | 2013-09-20 | 2016-10-25 | The Board Of Trustees Of The Leland Stanford Junior University | Low power programmable image processor |
US9613001B2 (en) * | 2013-12-20 | 2017-04-04 | Intel Corporation | Processing device for performing convolution operations |
US10540587B2 (en) | 2014-04-11 | 2020-01-21 | Google Llc | Parallelizing the training of convolutional neural networks |
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
US10095479B2 (en) | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US9785423B2 (en) | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US10671564B2 (en) * | 2015-10-08 | 2020-06-02 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs convolutions using collective shift register among array of neural processing units |
-
2016
- 2016-07-01 US US15/201,204 patent/US10546211B2/en active Active
-
2017
- 2017-06-07 JP JP2018567935A patent/JP6764954B2/ja active Active
- 2017-06-07 KR KR1020197000838A patent/KR102232722B1/ko active IP Right Grant
- 2017-06-07 EP EP17740501.6A patent/EP3479302B1/en active Active
- 2017-06-07 WO PCT/US2017/036441 patent/WO2018005030A1/en active Search and Examination
- 2017-06-20 GB GB1907743.7A patent/GB2574940B/en active Active
- 2017-06-20 GB GB1814094.7A patent/GB2564285B/en active Active
- 2017-06-20 GB GB1709785.8A patent/GB2554491B/en active Active
- 2017-06-21 DE DE102017113733.5A patent/DE102017113733B4/de active Active
- 2017-06-21 DE DE202017103694.4U patent/DE202017103694U1/de active Active
- 2017-06-23 US US15/631,906 patent/US10789505B2/en active Active
- 2017-06-29 TW TW106121712A patent/TWI690858B/zh active
- 2017-07-03 CN CN201710532146.4A patent/CN107563952B/zh active Active
-
2020
- 2020-09-22 US US17/028,097 patent/US20210004633A1/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853908B2 (en) | 2019-02-12 | 2020-12-01 | Google Llc | Image processor complex transfer functions |
TWI722684B (zh) * | 2019-02-12 | 2021-03-21 | 美商谷歌有限責任公司 | 關於影像處理器複雜傳遞函數之電腦實施之方法及非暫時性電腦儲存媒體及採用影像處理器之運算裝置 |
TWI770967B (zh) * | 2020-06-19 | 2022-07-11 | 大陸商深圳市商湯科技有限公司 | 一種神經網路的訓練方法、視頻識別方法及電腦設備和電腦可讀儲存介質 |
Also Published As
Publication number | Publication date |
---|---|
CN107563952B (zh) | 2021-04-16 |
DE102017113733A1 (de) | 2018-01-04 |
GB2564285B (en) | 2019-07-17 |
JP2019522291A (ja) | 2019-08-08 |
US20210004633A1 (en) | 2021-01-07 |
EP3479302B1 (en) | 2023-11-01 |
GB201814094D0 (en) | 2018-10-17 |
JP6764954B2 (ja) | 2020-10-07 |
WO2018005030A1 (en) | 2018-01-04 |
US20180005074A1 (en) | 2018-01-04 |
DE102017113733B4 (de) | 2022-06-30 |
US20180005075A1 (en) | 2018-01-04 |
CN107563952A (zh) | 2018-01-09 |
GB2574940B (en) | 2020-07-22 |
DE202017103694U1 (de) | 2017-10-04 |
GB2574940A (en) | 2019-12-25 |
GB2564285A (en) | 2019-01-09 |
US10789505B2 (en) | 2020-09-29 |
US10546211B2 (en) | 2020-01-28 |
GB201907743D0 (en) | 2019-07-17 |
GB201709785D0 (en) | 2017-08-02 |
EP3479302A1 (en) | 2019-05-08 |
KR20190022627A (ko) | 2019-03-06 |
KR102232722B1 (ko) | 2021-03-29 |
GB2554491B (en) | 2018-10-10 |
GB2554491A (en) | 2018-04-04 |
TWI690858B (zh) | 2020-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI690858B (zh) | 用於在可程式化二維影像處理器上之卷積神經網路之方法、機器可讀媒體及裝置 | |
TWI614689B (zh) | 用於映射程式碼至一高效能、高功率效率、可程式化之影像處理硬體平台的編譯器技術 | |
CN107438860B (zh) | 用于高性能功率高效的可编程图像处理的架构 | |
US11140293B2 (en) | Sheet generator for image processor | |
TWI698832B (zh) | 用於影像處理器之編譯器管理記憶體 | |
US10719295B2 (en) | Circuit to perform dual input value absolute value and sum operation | |
TWI676150B (zh) | 具有可組態數目之主動核心及支援內部網路之影像處理器 |