TW202236209A - 像素對像素神經網路中的資料處理 - Google Patents
像素對像素神經網路中的資料處理 Download PDFInfo
- Publication number
- TW202236209A TW202236209A TW111103717A TW111103717A TW202236209A TW 202236209 A TW202236209 A TW 202236209A TW 111103717 A TW111103717 A TW 111103717A TW 111103717 A TW111103717 A TW 111103717A TW 202236209 A TW202236209 A TW 202236209A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- layer
- neural network
- input
- memory
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 377
- 238000012545 processing Methods 0.000 title claims abstract description 232
- 238000000034 method Methods 0.000 claims abstract description 207
- 230000015654 memory Effects 0.000 claims description 245
- 230000008569 process Effects 0.000 claims description 112
- 239000000872 buffer Substances 0.000 claims description 65
- 238000005516 engineering process Methods 0.000 abstract description 3
- 239000000463 material Substances 0.000 description 28
- 238000010586 diagram Methods 0.000 description 25
- 238000009877 rendering Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 230000009467 reduction Effects 0.000 description 6
- 230000003190 augmentative effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 239000011449 brick Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/2163—Partitioning the feature space
-
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
- Image Input (AREA)
Abstract
本文提供用於處理神經網路中的資料的技術。示例方法可以包括:由神經網路的每個層對資料輸入的第一條帶中的一列進行處理,在水平方向上並且按照逐層順序來對列進行依次處理;在對該列進行處理之後,逐層逐列處理第一條帶中的後續列,在水平方向上並且按照逐層順序來依次處理每個後續列;基於對所述列和後續列的處理產生輸出條帶;由每個層處理資料輸入的第二條帶,第二條帶中的每個列在水平方向上並且按照逐層順序來依次處理,其中,在逐列的基礎上處理第二條帶中的列;以及基於對第二條帶的處理來產生另一輸出條帶。
Description
本公開內容通常涉及神經網路。例如,本公開內容的各方面涉及用於在神經網路中處理資料的技術和系統。
各種設備和系統可以實現處理引擎和網路以處理各種類型的資料,以及產生特定的輸出和/或效果。例如,一些設備可以實現神經網路來處理圖像和/或視頻,以及產生輸出以供使用(例如,用於在設備上顯示、供應用程式使用等等)。神經網路可以有效地執行具有準確的結果的各種複雜的任務。神經網路的輸出和功能還可以用於各種各樣的應用,諸如例如計算機圖形、擴展實境(例如,擴增實境、虛擬實境等)、圖像識別、資料處理(例如,圖像處理、視頻處理等)、資料後處理、視覺渲染、電視等。
神經網路經常處理大量資料(諸如視頻、圖像和/或音頻資料),以執行某些任務以及產生特定的輸出。由神經網路處理的資料量和神經網路的處理需求可以給設備資源(諸如記憶體、電源和計算資源)帶來重大負擔。此外,一些神經網路架構可能比其它架構更佔用資源和/或可能需要或利用額外的資源來進行操作。這可以進一步增加神經網路的資源和/或處理成本,降低神經網路的效率,和/或以其它方式增加神經網路的操作和資源負擔及要求。
在一些示例中,描述用於提高神經網路效率以及減少神經網路的資源和處理負擔和成本的技術和系統。根據至少一個說明性示例,提供一種在像素對像素神經網路中處理資料的方法。在一些示例中,該方法可以包括:獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列;由神經網路的每個層對所述資料輸入的第一條帶中的一資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列;在對所述第一條帶中的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在水平方向上並且按照逐層順序來依次處理的;由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶;在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在水平方向上並且按照逐層順序來處理的;基於對所述第二條帶的處理來產生第二輸出條帶。
根據至少一個說明性示例,提供一種用於在像素對像素神經網路中處理資料的非暫時性計算機可讀媒體。在一些方面中,該非暫時性計算機可讀媒體可以包括指令,所述指令在被一個或多個處理器執行時,使所述一個或多個處理器進行以下操作:獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列;由神經網路的每個層對所述輸入資料的第一條帶中的一資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列;在對所述第一條帶的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中每個後續資料列是在水平方向上並按照逐層順序來依次處理的;由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶;在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在水平方向上並且按照逐層順序來處理的;以及基於對所述第二條帶的處理來產生第二輸出條帶。
根據至少一個說明性示例,提供一種用於在像素對像素神經網路中處理資料的裝置。在一些方面中,該裝置可以包括具有儲存在其上的計算機可讀指令的記憶體以及一個或多個處理器,所述一個或多個處理器被配置為:獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列;由神經網路的每個層對所述資料輸入的第一條帶中的一個資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列;在對所述第一條帶的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在水平方向上並且按照逐層順序來依次處理的;由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶;在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在水平方向上並且按照逐層順序來處理的;以及基於對所述第二條帶的處理來產生第二輸出條帶。
根據另一說明性示例,一種用於在像素對像素神經網路中處理資料的裝置可以包括:用於獲得輸入資料的構件,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列;由神經網路的每個層對所述資料輸入的第一條帶中的一個資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列;在對所述第一條帶的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在水平方向上並且按照逐層順序來依次處理的;由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶;在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在水平方向上並且按照逐層順序來處理的;以及基於對所述第二條帶的處理來產生第二輸出條帶。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以在第一記憶體中,儲存所述神經網路的前一層針對所述第一條帶中的所述資料列中的一個或多個區塊產生的輸出;以及在與所述神經網路的特定層相關聯的第二記憶體中,儲存來自所述資料列中的一個或多個區塊的一行或多行資料。在一些示例中,所述一行或多行資料可以包括所述神經網路的所述特定層的資料輸入在前一條帶區塊列上的一部分。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以基於所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括所述特定層的所述資料輸入在所述前一條帶區塊列上的所述部分;以及由所述神經網路的所述特定層基於針對所述前一層的所述輸出來產生額外輸出。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以決定針對所述特定層的所述輸入的一部分;以及將所述輸入的所述部分儲存在與所述神經網路的所述特定層相關聯的第三記憶體中。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以根據後續層的前一條帶區塊列,基於所述特定層的所述額外輸出和針對所述後續層的所述輸入的所述部分的組合來產生針對所述神經網路的所述後續層的額外輸入;以及由所述神經網路的所述後續層,基於針對所述後續層的所述額外輸入來產生第二額外輸出。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以將所述第二額外輸出儲存在第四記憶體中。在一些示例中,所述第二記憶體和所述第三記憶體可以包括行儲存記憶體中的行儲存,以及所述第一記憶體和所述第四記憶體可以包括暫存記憶體中的緩衝區。
在一些示例中,在水平方向上順序地處理所述第一條帶中的所述資料列可以包括:由所述神經網路的每個層依次處理所述資料列中的多個資料區塊。在一些情況下,所述神經網路的每個層在沿著水平方向處理後續區塊之前,沿著深度方向處理每個前面的資料區塊。
在一些示例中,處理所述後續列可以包括:由所述神經網路的每個層依次處理每個後續列中的相應多個資料區塊。在一些示例中,所述神經網路的每個層在處理後續列中的後續資料區塊之前,沿著所述深度方向處理所述後續列中的前面的資料區塊。
在一些示例中,所述神經網路可以包括像素對像素神經網路,並且所述輸入資料可以包括與圖像相關聯的像素。
在一些示例中,獲得所述輸入資料可以包括:將所述輸入資料邏輯地分段為所述條帶,其中每個條帶包括所述輸入資料的相應部分。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以在與所述神經網路的特定層相關聯的第一記憶體中,儲存由所述神經網路的前一層針對每個後續資料列中的一個或多個區塊產生的輸出;以及在第二記憶體中,儲存來自每個後續資料列中的所述一個或多個區塊的一行或多行資料。在一些示例中,所述一行或多行資料可以包括所述神經網路的所述特定層的一個或多個資料輸入的一個或多個部分。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括針對前一條帶區塊列的所述特定層的所述一個或多個資料輸入的所述一個或多個部分;以及由所述神經網路的所述特定層基於來自所述前一層的所述輸出和來自所述前一條帶區塊列上的所述特定層的所述輸入的一個子集來產生額外輸出。
在一些方面中,上面所描述的方法、非暫時性計算機可讀媒體和裝置可以決定針對所述特定層的所述輸入的部分;將所述輸入的所述部分儲存在與所述神經網路的後續層相關聯的第三記憶體中;以及將所述額外輸出儲存在第四記憶體中。在一些情況下,所述第二記憶體和所述第四記憶體可以包括記憶體緩衝區。
在一些示例中,處理所述資料列可以包括:由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述資料列。
在一些示例中,處理所述後續的資料列可以包括:由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述第一條帶中的後續資料列。
在一些方面中,裝置可以是相機(例如,IP相機)、行動設備(例如,行動電話或所謂的“智慧型手機”或其它行動設備)、智慧型穿戴式設備、擴展實境設備(例如,虛擬實境(VR)設備、擴增實境(AR)設備或混合實境(MR)設備)、個人計算機、膝上型計算機、伺服器計算機、3D掃描儀、多相機系統或其它設備,或可以是上述設備的一部分。在一些方面中,該裝置包括用於擷取一個或多個圖像的一個或多個相機。在一些方面中,該裝置進一步包括用於顯示一個或多個圖像、通知和/或其它可顯示資料的顯示器。在一些方面中,上面所描述的裝置可以包括一個或多個感測器。
本概括內容既不是旨在識別所主張保護的標的的關鍵或必要特徵,也不是旨在單獨用於決定所主張保護的標的的範圍。透過參考本專利的整個說明書的適當部分、任何或所有圖式以及每個請求項,應當理解標的。
透過參考以下的說明書、申請專利範圍和圖式,前述內容以及其它特徵和實施例將變得更加顯而易見。
下文提供本公開內容的某些方面和實施例。對於本領域技術人員顯而易見的是,這些方面和實施例中的一些項可以獨立地應用,並且其中的一些可以組合地應用。在下面的描述中,出於解釋的目的,闡述特定的細節以便提供對本申請的實施例的透徹理解。然而,將顯而易見的是,可以在不具有這些特定細節的情況下實施各個實施例。圖式和描述不旨在是限制性的。
隨後的描述僅提供示例性實施例,並且不旨在限制本公開內容的範圍、適用性或配置。相反,對示例性實施例的隨後描述將向本領域技術人員提供用於實現示例性實施例的促成描述。應當理解的是,在不背離所附申請專利範圍闡述的本申請的精神和保護範圍的情況下,可以對元件的功能和排列進行各種改變。
如先前所述的,神經網路可以有效地執行具有準確的結果的各種複雜的任務。在許多情況下,神經網路處理大量的資料(諸如視頻、圖像和/或音頻資料),以執行某些任務以及產生特定的輸出。神經網路處理的資料量和神經網路的處理需求會給設備資源(諸如記憶體、電源和計算資源)帶來重大負擔。一些神經網路架構還可能比其它架構更佔用資源和/或可能需要或利用額外的資源來進行操作。這可能進一步增加神經網路的資源和/或處理成本,降低神經網路的效率,和/或以其它方式增加神經網路的操作和資源負擔及要求。
例如,像素對像素神經網路(以及類似地處理其它類型的資料的其它網路)通常使用較大的記憶體緩衝區來暫時儲存由像素對像素網路處理的資料。然而,隨著輸入資料大小的增加,儲存在記憶體緩衝區中的資料量和/或記憶體緩衝區需求可能顯著增長並且甚至不可持續。這可能導致硬體成本和要求增加。設備上的資源可能限制像素對像素神經網路可以處理的資料的類型、數量和/或大小。在許多情況下,甚至更大、更昂貴的記憶體緩衝區可能不支援某些像素對像素神經網路實現方式和/或使像素對像素神經網路不能夠處理某些類型的資料。
在一些情況下,像素對像素神經網路使用的記憶體緩衝區可能會變得超載。這可能導致對其它資源(諸如功率和計算資源)的需求增加。例如,對像素對像素神經網路使用的記憶體緩衝區的超載可能導致像素對像素神經網路所使用的頻寬、處理器時鐘週期和功率達到峰值。由於記憶體緩衝區被超載和/或像素對像素神經網路不能夠在記憶體緩衝區中儲存額外資料,因此設備處的性能度量會顯著提高。在一些情況下,可以透過增加設備硬體資源的數量和/或能力來減少或緩解此類問題。例如,可以增加設備處的記憶體資源和能力,以處理像素對像素神經網路使用的更大量資料。然而,處理某些類型的資料和/或執行某些任務所需的記憶體資源量可能很昂貴,並且甚至成本過高。
再舉一個示例,可以在設備處增加定製處理器以處理像素對像素神經網路的操作中的一些或所有操作。雖然定製處理器可以增加設備處的處理能力,以及支援像素對像素神經網路的額外處理需求,但是像素對像素神經網路可能仍需要大量的記憶體來處理資料。然而,支援如此大量記憶體所需的記憶體資源可能成本過高,和/或以其它方式阻礙對定製處理器的實現來解決像素對像素神經網路的記憶體需求。在低端設備實現方式中,可能加劇像素對像素神經網路的記憶體和資源問題。
例如,在低端設備中,由像素對像素神經網路使用的記憶體資源量是更有限的。在許多情況下,可能需要減少像素對像素神經網路使用的記憶體緩衝區的大小。通常,可能類似地需要減少用於傳送去往和/或來自記憶體緩衝區的資料的記憶體系統或子系統。然而,如先前所解釋的,記憶體緩衝區的減少可能導致頻寬需求激增。記憶體系統或子系統的減少可能會進一步加劇這種情況,這也可能減少設備處的可用頻寬的量。因此,低端設備受到記憶體和頻寬減少的不成比例的影響。
在一些方面中,在本文中描述用於高效地處理資料和減少神經網路(諸如像素對像素神經網路和將大型二維(2D)輸入(和/或三維(3D)輸入)處理為大型或更大2D輸出(和/或3D輸出)的任何其它神經網路)中的資源負擔的系統、裝置、程序(也稱為方法)和計算機可讀媒體(在本文中統稱為“系統和技術”)。本文所描述的系統和技術可以提高神經網路效率,同時減少神經網路的資源和處理負擔和成本。在一些示例中,這些系統和技術可以提供實現基於條帶和光柵的資料處理方案的架構,該方案允許神經網路在神經網路層之間處理和/或串流式傳輸更大量的資料,以及減少在神經網路運行期間儲存在記憶體中的資料量。本文描述的系統和技術可以減少由神經網路處理的重疊和/或冗餘資料的數量。
在圖1至圖9中示出本文描述的用於處理資料的系統和技術的示例,以及在下文中對本文描述的用於處理資料的系統和技術的示例進行描述。圖1是示出示例計算系統100的示意圖。計算系統100可以執行用於處理資料的實現神經網路。如本文所述,神經網路可以實現用於提高處理效率和/或減少資源需求的架構和資料處理方案。計算系統100和/或神經網路可以執行各種任務和操作,諸如例如用於擴展實境、圖像/視頻處理和/或後處理、資料處理和/或後處理、計算機圖形、自動化、機器視覺、物件建模和註冊、多媒體渲染和/或合成、和/或任何其它資料處理任務、效果和/或計算的任務和操作。
在一些說明性示例中,計算系統100實現一個或多個像素對像素神經網路,以及執行如本文進一步描述的基於條帶和光柵的處理方案和架構。在一些示例中,像素對像素神經網路可以接收像素輸入以及產生像素輸出。儘管關於像素對像素神經網路描述本公開內容中的各種示例,但是本文描述的系統和技術可以利用其它類型和/或架構的神經網路來實現,和/或用於其它類型和/或架構的神經網路。例如,可以實現本文所描述的系統和技術,以用於將大型2D資料輸入處理為大型或更大型2D資料輸出或者將任何大型3D資料輸入處理為大型或更大型3D資料輸出的任何神經網路。本文中的像素對像素神經網路示例是出於說明和解釋目的而提供的非限制性示例。
在圖1所示的示例中,計算系統100包括一個或多個感測器102、儲存裝置104、記憶體106、計算組件110、處理引擎130和渲染引擎132。計算系統100可以是計算設備或多個計算設備的一部分。在一些示例中,計算系統100可以是電子設備(或多個電子設備)的一部分,諸如相機系統(例如,數位相機、IP相機、攝影機、保全攝影機等)、電話系統(如,智慧型手機、蜂巢式電話、會議系統等)、桌上型計算機、XR設備(例如,頭戴式顯示器等)、智慧型穿戴式設備(例如,智慧型手錶、智慧型眼鏡等)、膝上型計算機或筆記型計算機、平板計算機、機上盒、電視、顯示設備、數位媒體播放器、遊戲主控台、視頻串流設備、無人機、汽車中的計算機、單晶片系統(SoC)、物聯網(IoT)設備、或者任何其它適當的電子設備。
在一些實現方式中,一個或多個感測器102、儲存裝置104、記憶體106、計算組件110、處理引擎130和渲染引擎132可以是相同的計算設備的一部分。例如,在一些情況下,一個或多個感測器102、儲存裝置104、記憶體106、計算組件110、處理引擎130和渲染引擎132可以整合到智慧型手機、膝上型計算機、平板計算機、智慧型穿戴式設備、遊戲系統、伺服器、SoC和/或任何其它計算設備中。在其它實現方式中,一個或多個感測器102、儲存裝置104、記憶體106、計算組件110、處理引擎130和/或渲染引擎132中的任何一者可以是兩個或更多個單獨的計算設備的一部分。
一個或多個感測器102可以包括一個或多個圖像感測器、雷達感測器、光雷達(LIDAR)感測器、紅外(IR)感測器、陀螺儀、加速度計、慣性測量單元(IMU)、音頻感測器和/或任何其它感測器。在一些示例中,一個或多個感測器102可以包括一個或多個圖像感測器。一個或多個圖像感測器可以包括能夠擷取圖像的圖像感測器和/或圖像擷取設備。例如,一個或多個圖像感測器可以包括能夠擷取紅綠藍(RGB)圖像的一個或多個感測器。在一些示例中,圖像(或幀)可以包括每像素具有紅色、綠色和藍色分量的紅綠藍(RGB)圖像或幀;每像素具有一個亮度分量和兩個色度(顏色)分量(紅色色度和藍色色度)的亮度、紅色色度、藍色色度(YCbCr)圖像或幀;或者任何其它適當類型的彩色或單色圖片。
在一些情況下,一個或多個圖像感測器可以是任何類型的圖像感測器(或圖像擷取設備)和/或視頻感測器(或視頻擷取設備)。例如,一個或多個圖像感測器可以包括數位相機感測器、攝影機感測器、智慧型手機相機感測器、作為電子裝置(例如,電視、計算機、相機等)的一部分而包括的圖像/視頻擷取設備。在一些情況下,一個或多個圖像感測器可以是相機或計算設備的一部分,諸如數位相機、攝影機、IP相機、智慧型手機、智慧型電視、遊戲系統、掃描儀、多功能相機系統或者其它計算設備。例如,一個或多個圖像感測器可以是雙相機系統或設備的一部分,諸如智慧型手機、相機等。一個或多個圖像感測器可以擷取圖像資料和/或視頻內容(例如,原始圖像和/或視頻資料)。如本文所描述的,圖像資料和/或視頻內容可以由計算組件110、處理引擎130和/或渲染引擎132來處理。
儲存裝置104可以是用於儲存資料(諸如圖像、音頻、文件或視頻資料)的任何儲存設備。此外,儲存裝置104可以儲存來自計算系統100的任何組件的資料。例如,儲存裝置104可以儲存來自一個或多個感測器102、計算組件110的資料或測量值(例如,參數、輸入、輸出、產生的圖像、計算結果、模型等)和/或來自處理引擎130和/或渲染引擎132中的任何一項的資料(例如,輸出圖像、處理結果、模型等)。在一些示例中,儲存裝置104可以包括用於儲存資料(例如,圖像資料)以供計算組件110進行處理的緩衝區。記憶體106可以包括用於儲存資料的任何記憶體設備,諸如隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快取記憶體、記憶體緩衝區等。
在一些實現方式中,計算組件110可以包括中央處理單元(CPU)112、圖形處理單元(GPU)114、數位信號處理器(DSP)116、圖像信號處理器(ISP)118和/或神經處理單元(NPU)120。在一些示例中,計算組件110可以包括一個或多個記憶體,諸如快取記憶體和/或記憶體緩衝區。計算組件110可以執行各種操作,諸如資料處理、計算機視覺、圖形渲染、擴展實境(例如,虛擬實境、擴增實境等)、圖像/視頻處理、感測器處理、識別(例如,文本識別、物件識別、特徵識別、人臉識別、面部表情識別、眼睛注視識別、年齡識別、性別識別、種族識別、追蹤或模式識別、場景變化識別等)、機器學習、濾波、自動化、計算機圖形和本文所描述的各種操作中的任何一者。在一些示例中,計算組件110可以實現處理引擎130和渲染引擎132。在其它示例中,計算組件110還可以實現一個或多個其它處理引擎。
針對處理引擎130和渲染引擎132的操作可以由計算組件110中的一個或多個計算組件110來實現。在一個說明性示例中,處理引擎130(和相關聯的操作)可以由CPU 112、DSP 116、ISP 118和/或NPU 120來實現,以及渲染引擎132(和相關聯的操作)可以由GPU 114來實現。在一些情況下,計算組件110可以包括其它電子電路或硬體、計算機軟體、韌體或其任何組合,以執行本文所描述的各種操作中的任何一者。
計算組件110可以實現處理引擎130以執行各種處理操作,諸如圖像/視頻處理、XR渲染、計算機視覺、資料處理、計算機建模、遊戲、計算機圖形等等。處理引擎130可以實現神經網路和處理架構和/或方案,如本文進一步描述的。例如,處理引擎130可以實現像素對像素神經網路以及如本文所描述的基於條帶和光柵的處理方案。在一些示例中,處理引擎130可以由NPU 120實現,以使用本文描述的基於條帶和光柵的處理模式來執行各種任務。
雖然將計算系統100示出為包括某些組件,但是本領域一般技術人員將領會的是,計算系統100可以包括比圖1所示的組件更多或更少的組件。例如,計算系統100在一些情況下還可以包括一個或多個額外記憶體設備(例如,RAM、ROM、快取記憶體等)、一個或多個網路介面(例如,有線和/或無線通信介面等)、一個或多個顯示設備、和/或未在圖1中示出的其它硬體或處理設備。下文關於圖9描述可以利用計算系統100實現的計算設備和硬體組件的說明性示例。
如先前所描述的,某些神經網路架構(諸如像素對像素神經網路架構)使用或需要大型記憶體緩衝區來處理資料。隨著輸入資料大小的增加,記憶體緩衝區大小可能不可持續地增長。對於某些資料處理情況,即使是大型記憶體緩衝區也可能是不充足的。隨著記憶體緩衝區變得超載和/或已滿,其它資源需求和/或利用率會顯著地增加。例如,隨著記憶體緩衝區變得超載,頻寬、功率、時鐘週期等也會大幅增加。增加更多記憶體緩衝區和/或具有更高容量的記憶體緩衝區可能是昂貴的,並且可能無法充分防止和/或減輕記憶體緩衝區超載和/或其它資源需求和/或利用率的增加。大型記憶體緩衝區的成本還可能防止增加其它硬體資源(諸如定製處理器)來解決此類資源需求和/或限制。
本文所描述的系統和技術提供用於解決這些和其它挑戰/限制的架構和資料處理方案。該架構和資料處理方案可以用於處理任何類型的資料,諸如圖像資料、視頻資料、音頻資料、文件等等。出於解釋和說明的目的,將相對於處理圖像資料來描述該架構和資料處理方案。
在一些示例中,本文描述的系統和技術可以提供基於條帶和光柵的處理方案。基於條帶和光柵的處理方案可以將神經網路的輸入劃分為垂直條帶,神經網路根據特定模式來處理所述垂直條帶,如下所述。神經網路的每層可以在沿著垂直方向移動以處理額外資料之前沿著深度和水平方向來處理條帶中的資料。在再次沿著垂直方向移動以處理新資料之前,可以類似地沿著深度和水平方向來處理額外資料。
圖2是示出用於實現基於條帶和光柵的處理方案的像素對像素神經網路的示例輸入200的示意圖。輸入200可以包括例如圖像、音頻文件、2D資料、3D資料和/或任何其它類型的資料。在該示例中,輸入200表示正在由像素對像素神經網路(諸如像素對像素卷積神經網路)處理的圖像。輸入200包括條帶210A和條帶210B,如本文進一步描述的。
在圖2中,在左圖230A和右圖230B中示出輸入200,所述左圖230A和右圖230B說明在輸入200內的不同位置處的條帶210A和條帶210B。左圖230A示出在第一處理時間期間在輸入200的左側部分的條帶210A,以及右圖230B示出在第二處理時間期間在輸入200的右側部分的條帶210B。將輸入200劃分地在圖230A和230B中(210A、210B)示出,以說明在不同時間輸入200內的不同條帶210A和210B。雖然圖2的示例示出兩個條帶,但是在其它示例中,輸入200可以包括比圖2中所示更多或更少的條帶。在一些示例中,輸入200中的條帶的數量可以改變,或者取決於神經網路處理要求和/或架構。
條帶210A和條帶210B可以各自包括從輸入200的頂部垂直延伸到輸入200的底部的多個條帶區塊。例如,圖2示出在條帶210A的頂部的條帶區塊212A和在條帶210A的底部的條帶區塊212B,以及在條帶210B的頂部的條帶區塊220A和在條帶210B的底部的條帶區塊220B。這些條帶區塊中的每個條帶區塊可以表示條帶210A和條帶210B的列(或層)。雖然為簡單起見而未在圖2中示出,但是條帶210A可以包括從條帶區塊212A延伸到條帶區塊212B的額外條帶區塊,使得條帶210A包括從頂部到底部的條帶區塊的列(或層)。類似地,雖然為簡單起見而未在圖2中示出,但是條帶210B可以包括從條帶區塊220A延伸到條帶區塊220B的額外條帶區塊,使得條帶210B包括從頂部到底部的條帶區塊的列(或層)。
輸入200和條帶210A和條帶210B可以包括水平維度202(例如,沿著x軸)、垂直維度204(例如,沿著y軸)和深度維度206(例如,沿著z軸)。神經網路的每層可以在沿著垂直維度204來處理資料之前,沿著深度維度206和水平維度202來處理資料。
條帶210A可以包括重疊區域216,並且條帶210B可以包括重疊區域222。重疊區域216和重疊區域222可以包括由神經網路處理的輸入中的重疊量。如圖所示,重疊區域216和重疊區域222中的重疊在水平維度202中。垂直維度204中的任何重疊可以儲存在記憶體中,以供神經網路根據需要來使用。在一些情況下,重疊會導致一定數量的額外和/或冗餘計算。然而,條帶210A和條帶210B的配置以及本文描述的資料處理方案可以避免在其它方向上的重疊。因此,輸入200中的重疊可以小於其它資料處理方案和架構中的重疊量,並且可以導致更少的額外和/或冗餘計算。
例如,條帶210A和條帶210B的配置以及本文描述的資料處理方案可以避免在條帶區塊(例如,條帶區塊212A、條帶區塊212B、條帶區塊220A、條帶區塊220B)的至少一側中沿著水平維度202的重疊、至少一側沿著垂直維度204的重疊、以及一側或兩側沿著深度維度206的重疊。這可以顯著地降低神經網路的記憶體和處理要求和/或負擔。此外,透過在處理期間僅包括沿著水平維度202的一側(相對於條帶區塊)的少量重疊,以及儲存沿著垂直維度204(相對於條帶區塊)的一側可能存在的任何重疊量,可以進一步減少神經網路的記憶體和處理要求和/或負擔。
圖3是示出用於神經網路310的示例資料處理方案300的示意圖。資料處理方案300可以包括條帶光柵資料處理順序或模式。神經網路310可以實現資料處理方案300,以處理條帶210A和條帶210B中的資料。神經網路310可以包括用於處理輸入資料和產生輸出的多個層(例如,層312至318)。
神經網路310可以包括採用大的n維輸入並產生大的或更大的大n維輸出的任何神經網路。例如,在一些情況下,神經網路310可以包括像素對像素神經網路。像素對像素神經網路可以對來自圖像的輸入像素進行處理,以及產生針對圖像的輸出像素。在一些示例中,圖像可以是大的和/或高解析度的圖像。例如,圖像可以是2D圖像或3D圖像。在其它情況下,神經網路310可以包括2D輸入到2D輸出神經網路。例如,神經網路310可以從2D輸入產生2D輸出。在一些示例中,神經網路310可以處理和/或轉換2D資料的每個部分,以及針對2D資料的每個部分產生2D資料輸出。2D輸入和2D輸出可以包括例如圖像、視頻資料、音頻資料或者任何其它2D資料。
在其它情況下,神經網路310可以包括3D輸入到3D輸出神經網路。例如,神經網路310可以從3D輸入產生3D輸出。在一些示例中,神經網路310可以處理和/或轉換3D資料的每個部分,並且針對3D資料的每個部分產生3D資料輸出。3D輸入和3D輸出可以包括例如圖像、視頻資料、音頻資料或任何其它3D資料。
在圖3中,條帶210A和條帶210B包括用於根據資料處理方案300來處理條帶區塊302中的資料的區塊列306A-N。條帶區塊302可以包括首先沿著條帶區塊302的深度維度206進行處理的圖磚(tile)304(或子區塊),然後沿著水平維度202行動條帶區塊302,以沿著在水平維度202移動的條帶區塊302的深度維度206處理圖磚304中的資料。圖磚304可以繼續將沿著條帶區塊302的深度維度206進行處理,並且條帶區塊302可以繼續沿著水平維度202(例如,跨越對應的區塊列)進行處理。一旦層中的所有層312至318已經處理跨越區塊列的資料,處理方案300可以在垂直維度204中移動,以類似地處理條帶的下一列中的資料。
在神經網路310中的下一層根據相同的處理順序/模式來處理條帶區塊302(和列)中的資料之前,神經網路310中的每個層(例如,層312至318中的每個層)可以根據上面所描述的模式來處理條帶區塊302(和列)中的資料。例如,在神經網路中的下一層以類似的模式處理條帶區塊302中的資料之前,神經網路310中的每個層可以沿著條帶區塊302的深度維度206來在列306A中處理條帶區塊302中的資料,然後是處理列306A的水平維度202。
為了說明起見,神經網路310的層312(例如,層0)可以首先沿著條帶區塊302的深度維度206來處理條帶210A的列306A中的條帶區塊302的圖磚304。一旦層312已經處理列306A中的條帶區塊302中的資料,層312可以沿著水平維度202移動,並且處理列306A中的相鄰條帶區塊中的資料。在層312再次沿著列306A的水平維度202移動到下一個相鄰條帶區塊之前,層312可以沿著深度維度206來處理相鄰條帶區塊中的圖磚。層312可以繼續以這種模式處理資料,直到其完成對列306A中的資料的處理為止。一旦層312完成對列306A中的資料的處理,神經網路310中的下一層(層314(例如,層1))可以根據相同的模式來處理列306A中的資料。例如,層314可以沿著深度維度依次地處理條帶區塊中的資料,並且可以沿著水平維度202依次地處理列306A中的區塊。一旦層314完成對列306A中的資料的處理,神經網路310中的下一層(層316(例如,層2))可以根據相同的模式來處理列306A中的資料。一旦層314完成對列306A中的資料的處理,神經網路310中的下一層(層318(例如,層N))可以根據相同的模式來處理列306A中的資料。
用此方式,神經網路310中的每個層可以根據上文所描述的模式依次地處理列306A中的資料,然後在條帶210A的垂直維度204中移動以類似地處理(例如,根據相同的模式)下一列(列306B)中的資料。一旦神經網路310中的所有層都完成對列306B中的資料的處理,神經網路310可以在條帶210A的垂直維度204中移動,並且神經網路310中的每個層可以類似地處理條帶210A的下一列中的資料。神經網路310可以繼續沿著垂直維度204移動,直到條帶210A的最後一列(例如,列306N)中的資料已經被每個層處理為止。
一旦對條帶210A進行處理,神經網路310可以處理下一個條帶(條帶210B)。神經網路310可以根據上面關於條帶210A描述的順序/模式來處理條帶210B,直到其完成對條帶210B中的所有資料的處理為止。如先前所解釋的,輸入資料可以包括比圖2和圖3中所示的更多或更少的條帶。因此,如果輸入資料包括另外的條帶,則神經網路310可以前進到下一個條帶,並如先前所解釋地處理下一個條帶中的資料。神經網路310可以繼續處理任何另外的條帶,直到所有條帶已被處理為止。
每個條帶(例如,條帶210A和210B)可以包括任意數量的列。此外,條帶區塊(例如,條帶區塊302)和圖磚(例如,圖磚304)的大小不受限於任何特定大小,並且可以在不同的實現方式中變化。在一些示例中,條帶區塊和/或圖磚的大小可以是基於偏好、神經網路架構、資料路徑架構、神經網路要求、輸入的類型和/或屬性、條帶的大小和/或數量、和/或任何其它因素。例如,在一些情況下,條帶區塊和/或圖磚的大小可以是基於乘法累加(MAC)資料路徑架構。
在一些示例中,資料處理方案300可以包括內部處理循環和外部處理循環。內部處理循環可以根據如前所述的模式來處理條帶區塊中的資料。在一些示例中,內部處理循環可以順序地或平行地處理條帶區塊內的水平區塊(或子圖磚),順序地或平行地處理條帶區塊內的垂直區塊(或子圖磚),順序地或平行地處理圖磚輸出深度,以及順序或平行地處理輸入深度。在一個說明性示例中,可以“展開”(例如,平行處理和/或輸出)水平區塊、垂直區塊和圖磚輸出深度,並且可以“遍歷”(例如,順序處理和/或輸出)輸入深度。
外循環可以如前所述以特定順序來處理輸入資料。例如,外循環可以按深度方向、然後是水平方向、然後是神經網路層順序、然後是垂直方向、然後是條帶順序來處理資料。例如,神經網路的第一層可以首先沿著條帶區塊的深度維度來處理條帶區塊中的資料。然後,神經網路的第一層可以在水平方向上移動到下一個條帶區塊,以及類似地處理下一個條帶區塊中的資料。神經網路的第一層可以繼續沿著水平方向移動,以及沿著水平方向處理每個條帶區塊中的資料,直到一列中的所有條帶區塊都處理完為止。然後,神經網路的第二層可以執行相同的模式來處理列中的條帶區塊。神經網路中的每個後續層可以類似地執行相同的模式,直到所有層處理列中的條帶區塊為止。一旦所有層處理列中的條帶區塊,神經網路的第一層可以沿著條帶在垂直方向上移動,以類似地處理下一列中的條帶區塊。神經網路的每個層可以依次處理下一列中的條帶區塊,以及神經網路可以繼續在垂直方向上移動,直到所有層都處理完所有列中的條帶區塊為止。然後,神經網路可以繼續處理任何後續條帶,以及根據上文所描述的外循環順序來依次處理後續條帶。
圖4是示出用於儲存條帶資料以產生層輸入的示例記憶體架構400的示意圖。在該示例中,記憶體架構400包括行儲存記憶體402和暫存記憶體420。在一些示例中,行儲存記憶體402和暫存記憶體420可以包括一個或多個隨機存取記憶體。
暫存記憶體420可以儲存來自神經網路310的層(例如,層312至318)的輸出。例如,暫存記憶體420中的緩衝區422可以儲存來自層0(例如,層312)的輸出,並且暫存記憶體420中的緩衝區424可以儲存來自層1(例如,層314)的輸出。隨著神經網路的額外層產生輸出,其輸出可以類似地儲存在暫存記憶體420中。來自神經網路中的一個層的輸出可以用作針對神經網路中的下一層的輸入。在一些示例中,暫存記憶體420可以包括用於神經網路310的每個層的每個輸出的緩衝區。在一些情況下,暫存記憶體中的緩衝區(例如,緩衝區422和緩衝區424)可以包括乒乓緩衝區。
行儲存記憶體402可以儲存來自神經網路310中的層的資料部分(例如,列資料、資料區塊、資料視窗、條帶區塊的資料列的子集等等)。儲存在行儲存記憶體402中的資料可以包括神經網路310的兩個或更多個層的重疊資料(例如,重疊區域216和重疊區域222)。在一些示例中,行儲存記憶體402可以包括行儲存404至410。每個行儲存可以對應於神經網路310的相應層,並且行儲存中的資料可以用作針對與該行儲存相關聯的層的輸入的一部分。在該示例中,行儲存404可以對應於神經網路310的層0(例如,層312),行儲存406可以對應於神經網路310的層1(例如,層314),行儲存408可以對應於神經網路310的層2(例如,層316),以及行儲存410可以對應於神經網路310的層N(例如,層318)。儲存在與神經網路的層相關聯的行儲存中的資料可以包括來自神經網路310的前一層的資料的一子集(例如,一行或多行、一個或多個資料區塊、輸入視窗、條帶區塊的資料列的子集等等)。
例如,與神經網路310的層1(例如,層314)相對應的行儲存406可以包括來自神經網路310的層0(例如,層312)的輸出資料的一子集。在一些情況下,儲存的資料的大小可以是基於由神經網路310實現的卷積濾波器的大小。例如,卷積濾波器可以引起來自每個層的輸出資料的輕微偏移。由於一個層使用來自前一層的輸出作為其輸入的一部分,輸出資料的偏移可以減少該層輸入的大小。因此,儲存在行儲存中的前一層的資料部分(例如,重疊)可以用作下一層輸入的一部分,以增加下一層輸入的大小。為了說明起見,由神經網路310的層實現的卷積濾波器可以導致輸出資料的縮小。因此,可能需要增加來自一層的縮小輸出,來制定到下一層的輸入。
如先前所述,與神經網路310的層1(例如,層314)相對應的行儲存406可以包括來自神經網路310的層0(例如,層312)的輸出資料的一個子集。類似地,與神經網路310的層2(例如,層316)相對應的行儲存408可以包括來自神經網路310的層1(例如,層314)的輸出資料的一個子集,以及與神經網路310的層N(例如,層318)相對應的行儲存410可以包括來自神經網路310的層2(例如,層316)的輸出資料的一個子集。在一些示例中,由於層0是第一層並且不具有來自前一層的資料,因此儲存在與層0相對應的行儲存404中的資料可以包括填充。該填充可以包括例如邊複製(例如,重複第一的一個或多個輸入行)、值複製和/或任何其它填充技術和/或資料。
在一些示例中,來自神經網路310的一層的重疊資料可以包括來自資料處理方案300的垂直重疊的一部分。例如,如先前所解釋的,資料處理方案300可以包括在水平方向上的重疊(例如,重疊區域216和222)。在一些情況下,當每個層處理條帶的一列(例如,列306A、306B、306N)中的資料時,神經網路310的每個層可以處理水平方向上的重疊。可以將向下垂直方向上的額外重疊儲存在行儲存記憶體402中,以在處理條帶中的下一列時使用。在一些情況下,該垂直重疊可以包括上文關於行儲存404至410描述的重疊資料。例如,該重疊資料可以包括神經網路310所處理的條帶的前一列在垂直方向上的一部分資料。.
記憶體架構400可以使用儲存在暫存記憶體420中的輸出和在行儲存記憶體402中的重疊資料來準備和處理層資料。例如,在圖4中,神經網路310的層0的輸出456儲存在緩衝區422中,以及來自神經網路310的層0的重疊資料454儲存在行儲存406中。為了制定針對層1的輸入452,來自緩衝區422的層0的輸出456可以與來自行儲存406的重疊資料454相組合。層0的輸出456和重疊資料454的組合可以產生針對層1的輸入452。
如圖所示,記憶體架構400可以逐層地組合來自兩個記憶體(例如,行儲存記憶體402和暫存記憶體420)的資料,以形成針對任何給定層的輸入資料。在一些情況下,層是連續處理的,而不需要從系統記憶體中提取資料。
在一些示例中,行儲存記憶體402可以儲存每神經網路層的m行的輸入資料。例如,行儲存404可以針對層0儲存m行的輸入資料,行儲存406可以針對層1儲存m行的輸入資料,行儲存408可以針對層2儲存m行的輸入資料,並且行儲存410可以針對層N儲存m行的輸入資料。在一些情況下,m行可能取決於相關聯的神經網路層的核心大小。
暫存記憶體420中的每個緩衝區可以儲存特定神經網路層的輸出。在一些情況下,儲存在緩衝區中的特定神經網路層的輸出可以包括n行的資料。例如,緩衝區422可以儲存層0的包括n行資料的輸出,以及緩衝區424可以儲存層1的包括n行資料的輸出。
在一些情況下,n行資料可以在層之間傳遞。在一些示例中,n行的數量在不同示例中可以變化,和/或可以取決於所使用的架構。在一些情況下,增加行數n可以允許更大的MAC平行度。例如,如果MAC引擎是1024 MAC/週期,則MAC引擎可以同時處理多個行(例如,n個行)、多個像素(或其它類型的資料),以及同時進行多個輸入深度和輸出深度。在一些情況下,這些參數可以組合以形成一個內循環圖磚大小。
圖5A是示出用於產生神經網路層輸入和輸出的示例資料處理架構500的示意圖。資料處理架構500包括行儲存記憶體402和暫存記憶體420。如先前所述,暫存記憶體420可以儲存來自神經網路310的層(例如,層312至318)的輸出。例如,暫存記憶體420中的緩衝區422可以儲存來自層0(例如,層312)的輸出,並且暫存記憶體420中的緩衝區424可以儲存來自層1(例如,層314)的輸出。隨著神經網路的額外層產生輸出,其輸出可以類似地儲存在暫存記憶體420中。來自神經網路中的一層的輸出可以用作針對神經網路中下一層的輸入。在一些示例中,暫存記憶體420可以包括與神經網路310的每個層的每個輸出一樣多的緩衝區。在其它示例中,暫存記憶體420可以包括與兩個半區塊列層輸出一樣少的緩衝區。
行儲存記憶體402可以儲存來自神經網路310中的層的資料部分(例如,列資料、資料區塊、資料視窗、條帶區塊的資料列的子集等)。在行儲存記憶體402中儲存的資料可以包括神經網路310的兩個或更多個層的重疊資料(例如,重疊區域216和重疊區域222)。在一些示例中,來自神經網路310的一個層的重疊資料可以包括來自資料處理方案300的垂直重疊的一部分。
資料處理架構500可以使用儲存在暫存記憶體420中的輸出和在行儲存記憶體402中的重疊資料來準備和處理層資料。例如,在圖5A中,神經網路310的層0的輸出540儲存在緩衝區422中,並且來自神經網路310的層1的先前執行的重疊資料542儲存在行儲存406中。為了準備和處理針對層1的資料,垂直組合器530可以從緩衝區422中獲得層0的輸出540,並從行儲存406中獲得重疊資料542,以及產生針對神經網路310的層1的資料544。為了產生資料544,垂直組合器530可以對輸出540和重疊資料542進行組合。在一些示例中,資料544可以包括針對層1制定的輸入。
可以透過MAC資料路徑532來處理資料544,以產生層1的輸出548。在一些示例中,輸出548可以包括與條帶的一列中的條帶區塊相對應的資料區塊。該資料區塊可以包括來自條帶的該列中的水平位置並且沿著條帶區塊的深度維度的資料。在其它示例中,輸出548可以包括與條帶的一列相對應的層1的資料輸出。
然後,可以將層1的輸出548儲存在暫存記憶體420上的緩衝區424中以供層2使用。在一些示例中,MAC資料路徑532可以包括MAC陣列,並且可以執行矩陣乘法運算以產生輸出548。在一些情況下,MAC資料路徑532 可以使用層1的卷積核心來產生輸出548。例如,該卷積核心可以對資料進行卷積以產生輸出548。
行儲存更新組件534可以獲得由垂直組合器530產生的資料544,以產生用於層1的下一列的重疊資料546。然後,行儲存更新組件534可以將重疊資料546儲存在與層1相關聯的行儲存中406。在一些示例中,垂直組合器530可以決定和/或切割資料544的一部分,以產生重疊資料546。在一些情況下,垂直組合器530可以決定和/或切割資料544的底部部分以產生重疊資料546。然後,資料處理架構500可以使用來自上一次執行層2的行儲存408中的重疊資料546和緩衝區424中的輸出548,來準備和處理用於層2的資料。
在一些示例中,資料處理架構500可以選擇性地包括水平組合器560,用於將水平重疊資料550增加到由垂直組合器530產生的資料544。例如,參考圖5B,水平組合器560可以從垂直組合器530獲得資料544,並且將水平重疊資料550增加到資料544以產生用於MAC陣列562的區塊輸入552。區塊輸入552可以用作MAC陣列562的MAC陣列輸入。區塊輸入552可以包括資料544以及增加或附加到資料544的水平邊緣的水平重疊資料550。
在一些示例中,水平重疊資料550可以在MAC陣列562處理資料544之前,利用水平方向上的資料(例如,水平重疊資料550)填充資料544。在一些情況下,透過將水平重疊資料550增加到資料544,資料處理架構500可以減少資料處理架構500和資料處理方案300使用的總頻寬。在一些示例中,水平重疊資料550可以包括來自於以下位置的資料的一個子集:在與資料544相同的條帶列中處理的先前水平位置的資料。
MAC陣列562可以使用區塊輸入552來產生輸出548,其可以如先前所述儲存在緩衝區424中。在一些示例中,MAC陣列562可以執行矩陣乘法運算以產生輸出548。在一些情況下,水平組合器560可以對資料544和水平重疊資料550實現IM2COL操作以產生區塊輸入552。
如圖5B所示,資料處理架構500可以包括用於將資料儲存在行儲存記憶體402中的寫控制器570,以及用於從行儲存記憶體402讀取/提取資料的讀控制器572。類似地,資料處理架構500可以包括用於將資料儲存在暫存記憶體420中的寫控制器574,以及用於從暫存記憶體420讀取/提取資料的讀控制器576。
圖6是示出利用垂直行偏移填充以及用於產生層輸出610的層輸入602的示例的示意圖。在該示例中,層輸入602對應於特定神經網路層的第一通路(pass)。層輸入602包括輸入行606和填充604。在一些示例中,輸入行606可以包括從暫存記憶體420提取的資料,諸如儲存在暫存記憶體420中的緩衝區中的層輸出。
在一些情況下,可以在輸入行606的第一行608之前和/或頂部增加填充604。填充604可以提供垂直行偏移。在一些示例中,垂直行偏移可以用於增加層輸入的大小,以解決由卷積濾波器引起的移位和/或縮小,如先前所解釋的。在一些情況下,填充604可以包括從行儲存記憶體402提取的重疊資料。該重疊資料可以包括來自由該層處理的前一條帶列的一個或多個垂直行。
在一些情況下,如果與層輸入602相關聯的層是層0(例如,層312),並且來自先前處理的重疊資料不可用,則填充604可以包括重複的列和/或用於填充層輸入602的值。例如,填充604可以包括第一行608和/或來自輸入行606的一個或多個其它行。
層輸入602可以用於產生層輸出610。層輸出610可以包括輸出行612。在一些示例中,輸出行612可以儲存在暫存記憶體420的緩衝區中,以用於制定針對下一個神經網路層的輸入。
如圖6所示,層輸入602大於層輸出610。在一些示例中,神經網路層中的卷積可以導致資料的移位和/或減少。資料的移位和/或減少可以導致層輸出610小於層輸入602。因此,當層輸出610用於產生針對下一層的輸入時,層輸出610的類似填充(例如,填充604)可以用於增加下一層的輸入的大小。在一些情況下,重疊資料(例如,來自前一層和/或列的一個或多個垂直行)可以用於層輸出610的填充。
圖7是示出用於在處理條帶時減少冗餘計算的示例漏斗處理方案700的示意圖。在該示例中,中央條帶710包括在中央條帶710的每個側上的水平重疊712。水平重疊712用於產生與中央條帶710相對應的輸出條帶708。在該示例中,使用層0至N來產生輸出條帶708。神經網路(例如,神經網路310)可以透過層0至N來逐層地處理條帶資料。
水平重疊712可以增加由神經網路(和/或神經網路的層)執行的操作的數量以及對諸如頻寬、記憶體、功率和/或計算之類的系統資源的負擔,所述負擔可能隨著神經網路實現的每個額外層而增加。在一些示例中,由神經網路實現的層越多,資源負擔和由神經網路的層執行的冗餘操作的數量就越大。
漏斗處理方案700可以透過隨著神經網路逐層進行而逐漸減少活動條帶寬度,來減少資源負擔和冗餘計算。在一些示例中,漏斗處理方案700還可以減少每層MAC的數量。
漏斗處理方案700可以首先產生針對層0的輸入條帶702。如圖7所示,針對層0的輸入條帶702的輸入範圍大於針對層1、2和N的輸入範圍。例如,當從層0前進到層1時,漏斗處理方案700可以相對於針對層0的輸入條帶702的輸入範圍,減少針對層1的中間條帶704的輸入範圍。類似地,漏斗處理方案700可以相對於針對層1的中間條帶704的輸入範圍,減少針對層2的中間條帶706的輸入範圍。漏斗處理方案700可以相對於針對層2的中間條帶706的輸入範圍,進一步減少針對層N處的輸出條帶708的輸入範圍。
用此方式,漏斗處理方案700可以逐漸減少針對神經網路的每個層的輸入範圍,以及減少用於產生輸出條帶708的冗餘計算。計算和處理資料的減少可以減少對於諸如記憶體、計算、功率、頻寬等之類的資源的負擔。
圖8是示出根據本公開內容的一些示例的用於處理在神經網路中的資料的示例程序800的流程圖。在方塊802處,程序800可以包括:獲得輸入資料(例如,輸入200),其包括對輸入資料進行邏輯地分段的條帶(例如,條帶210A、條帶210B)。輸入資料的每個條帶包括至少一個資料列,諸如圖2所示的條帶210A。在一些示例中,程序800可以包括:將輸入資料邏輯地分段為條帶。在一些情況下,每個條帶可以包括輸入資料的相應部分。
在方塊804處,程序800可以包括:由神經網路(例如,神經網路310)的每個層(例如,層312、層314、層316、層318)處理輸入資料的第一條帶(例如,條帶210A)中的一個資料列(例如,列306A)。在一些示例中,可以在水平方向(例如,水平維度202)以及按照逐層順序來依次處理該資料列,其中在神經網路的每個後續層之前,神經網路的每個前面的層處理特定的列(例如,第一條帶中的資料列,諸如條帶210A中的列306A)。
在一些情況下,在水平方向上依次地處理該資料列可以包括:由神經網路的每個層順序地處理該列中的多個資料區塊(例如,條帶區塊302)。在一些情況下,神經網路的每個層可以在沿著水平方向(例如,水平維度202)處理後續區塊之前,沿著深度方向(例如,深度維度206)處理每個前面的資料區塊。
在一些情況下,神經網路可以包括卷積神經網路。在一些示例中,神經網路可以包括像素對像素神經網路,並且輸入資料可以包括與圖像相關聯的像素。在其它情況下,神經網路可以包括將2D資料輸入處理為2D資料輸出和/或將3D資料輸入處理為3D資料輸出的神經網路。
在一些示例中,按照逐層順序來處理資料列可以包括:由神經網路的每個後續層處理神經網路的前面的層的輸出。在一些示例中,輸出可以對應於資料列。
在方塊806處,程序800可以包括:由神經網路的每個層在對第一條帶中的資料列進行處理之後,在逐列基礎上處理第一條帶中的後續資料列(例如,列306B、列306N)。在一些示例中,可以在水平方向上以及按照逐層順序來依次處理每個後續資料列(例如,神經網路的每個前面的層在神經網路的每個後續層之前處理後續列).
在一些情況下,處理後續列可以包括:由神經網路的每個層順序地處理每個後續列中的相應多個資料區塊(例如,條帶區塊302)。在一些情況下,神經網路的每個層可以在處理後續列中的後續資料區塊之前,沿著深度方向處理第一條帶中後續列中的先前資料區塊。
在一些情況下,按照逐層順序來處理後續的資料列可以包括:由神經網路的每個後續層處理神經網路的前面的層的輸出。在一些示例中,該輸出可以對應於後續的資料列。
在方塊808處,程序800可以包括:由神經網路基於對資料列和後續資料列的處理來產生第一輸出條帶。
在方塊810處,程序800可以包括:由神經網路的每個層並且在對第一條帶進行處理之後來處理輸入資料的第二條帶(例如,條帶210B)中的資料列。在一些示例中,可以在逐列基礎上處理第二條帶中的資料列。在一些示例中,可以在水平方向上並且按照逐層順序來處理第二條帶中的每個資料列。
在方塊812處,程序800可以包括:基於對第二條帶的處理來產生第二輸出條帶。在一些示例中,神經網路可以基於第一輸出條帶和/或第二輸出條帶來產生針對輸入資料的輸出。
在一些情況下,程序800可以包括:在第一記憶體(例如,暫存記憶體420)中,儲存由神經網路的前一層針對該資料列中的一個或多個區塊(例如,條帶區塊302)產生的輸出(例如,輸出548);以及在與神經網路的特定層相關聯的第二記憶體(例如,行儲存記憶體402)中,儲存來自該資料列中的一個或多個區塊的一行或多行資料。在一些示例中,所述一行或多行資料可以包括神經網路的特定層的資料輸入在前一條帶區塊列上的一部分(例如,重疊資料542、重疊資料546)。
在一些示例中,程序800可以包括:基於由前一層產生的輸出和一行或多行資料的組合來產生針對神經網路的特定層的輸入(例如,輸入452、區塊輸入552),以及所述一行或多行資料包括相同層的資料輸入在前一條帶列上的部分。程序800可以包括:由神經網路的特定層基於針對前一層的輸入來產生額外輸出。
在一些示例中,程序800可以包括:決定和/或切割針對特定層的輸入的一部分(例如,重疊資料542、重疊資料546)。程序800可以包括:將輸入的該部分儲存在與神經網路的特定層相關聯的第三記憶體(例如,行儲存記憶體402)中。
在一些情況下,程序800可以包括:基於特定層的額外輸出和來自後續層的前一個區塊列的輸入的所述部分的組合來產生針對神經網路的後續層的額外輸入。程序800可以包括:由神經網路的後續層基於針對後續層的額外輸入來產生第二額外輸出。
在一些情況下,程序800可以包括:將第二額外輸出儲存在第四記憶體(例如,暫存記憶體420)中。在一些示例中,第二記憶體和第三記憶體可以包括行儲存記憶體(例如,行儲存記憶體402)中的行儲存(例如,行儲存404、行儲存406、行儲存408、行儲存410),以及第一記憶體和第四記憶體可以包括暫存記憶體(例如,暫存記憶體420)中的緩衝區(例如,緩衝區422、緩衝區424)。
在一些情況下,程序800可以包括:在與神經網路的特定層相關聯的第一記憶體(例如,暫存記憶體420)中,儲存由神經網路的前一層針對每個後續資料列中的一個或多個區塊產生的輸出。程序800可以包括:在第二記憶體(例如,行儲存記憶體402)中,儲存來自每個後續資料列中的一個或多個區塊的一行或多行資料。在一些示例中,所述一行或多行資料可以包括神經網路的特定層的一個或多個資料輸入的一個或多個部分。
在一些情況下,程序800可以包括:基於由前一層產生的輸出和一行或多行資料(其包括針對前一條帶區塊列的特定層的一個或多個資料輸入的一個或多個部分)的組合來產生針對神經網路的特定層的輸入。程序800可以包括:由神經網路的特定層基於來自前一層的輸出的輸入和來自特定層在前一條帶區塊列上的輸入的子集來產生額外輸出。
在一些情況下,程序800可以包括:決定和/或切割針對特定層的輸入的部分。程序800可以包括:將輸入的部分儲存在與神經網路的後續層相關聯的第三記憶體(例如,行儲存記憶體402)中。程序800可以進一步包括:將額外輸出儲存在第四記憶體(例如,暫存記憶體420)中。在一些示例中,第二記憶體和第四記憶體可以包括記憶體緩衝區(例如,緩衝區422、緩衝區424)。
在一些示例中,本文所描述的處理(例如,程序800和/或本文所描述的任何其它程序)可以由計算設備或裝置來執行。在一個示例中,程序800可以由圖1的計算系統100來執行。在另一示例中,程序800可以由具有圖9所示的計算設備架構900的計算系統來執行。例如,具有圖9所示的計算設備架構900的計算設備可以實現圖8的操作和/或本文關於圖1至圖8中的任何項描述的組件和/或操作。
該計算設備可以包括任何適當的設備,諸如行動設備(例如,行動電話)、桌上型計算設備、平板計算設備、穿戴式設備(例如,VR耳機、AR耳機、AR眼鏡、聯網手錶或智慧型手錶或其它穿戴式設備)、伺服器計算機、自動駕駛車輛或自動駕駛車輛的計算設備、機器人設備、膝上型計算機、智慧型電視、相機和/或具有資源能力來執行本文所描述的程序的任何其它計算設備,其包括程序800和/或本文所描述的任何其它程序。在一些情況下,計算設備或裝置可以包括各種組件,諸如一個或多個輸入設備、一個或多個輸出設備、一個或多個處理器、一個或多個微處理器、一個或多個微型計算機、一個或多個照相機、一個或多個感測器、和/或被配置為執行本文所描述的程序的步驟的其它組件。在一些示例中,計算設備可以包括顯示器、被配置為傳送和/或接收資料的網路介面、其任何組合、和/或其它組件。網路介面可以被配置為傳送和/或接收基於網際網路協定(IP)的資料或其它類型的資料。
可以在電路中實現計算設備的組件。例如,組件可以包括和/或可以使用電子電路或其它電子硬體來實現,所述電子硬體可以包括一個或多個可程式化電子電路(例如,微處理器、圖形處理單元(GPU)、數位信號處理器(DSP)、中央處理單元(CPU)和/或其它適當的電子電路),和/或可以包括和/或使用計算機軟體、韌體或其任何組合來實現,以執行本文所描述的各種操作。
將程序800示出為邏輯流程圖,其操作表示可以以硬體、計算機指令或其組合來實現的一系列操作。在計算機指令的上下文中,操作表示儲存在一個或多個計算機可讀儲存媒體上的計算機可執行指令,所述計算機可執行指令在被一個或多個處理器執行時,執行所記載的操作。通常,計算機可執行指令包括執行特定功能或實現特定資料類型的例程、程式、物件、組件、資料結構等等。描述操作的順序不旨在被解釋為是限制性的,以及可以以任何順序和/或平行地組合任意數量的所描述的操作以實現程序。
另外地,可以在被配置有可執行指令的一個或多個計算機系統的控制下執行程序800和/或本文所描述的其它程序,並且可以將程序800和/或本文所描述的其它程序實現為在一個或多個處理器上共同執行的碼、透過硬體執行的碼或者其組合(例如,可執行指令、一個或多個計算機程式或一個或多個應用程式)。如上所述,可以例如以包括多個可由一個或多個處理器執行的指令的計算機程式的形式,將碼儲存在計算機可讀或機器可讀儲存媒體上。計算機可讀或機器可讀儲存媒體可以是非暫時性的。
圖9示出可以實現本文所描述的各種技術的示例計算設備的示例計算設備架構900。例如,計算設備架構900可以實現圖1中所示的計算系統100的至少一些部分。示出使用諸如匯流排之類的連接905彼此電通信的計算設備架構900的組件。示例計算設備架構900包括處理單元(CPU或處理器)910和計算設備連接905,該計算設備連接905將包括計算設備記憶體915(諸如唯讀記憶體(ROM)920和隨機存取記憶體(RAM)925)的各種計算設備組件耦接到處理器910。
計算設備架構900可以包括高速記憶體的快取記憶體,該高速記憶體與處理器910直接連接、緊密接近或整合為處理器910的一部分。計算設備架構900可以將資料從記憶體915和/或儲存設備930複製到快取記憶體912以供處理器910快速存取。用此方式,快取記憶體可以提供性能提升,這避免處理器910在等待資料時的延遲。這些和其它模組可以控制或者被配置為控制處理器910以執行各種動作。其它計算設備記憶體915也可以是可用的。記憶體915可以包括具有不同性能特徵的多種不同類型的記憶體。處理器910可以包括任何通用處理器和硬體或儲存在儲存設備930中的軟體服務(例如,服務1 932、服務2 934和服務3 936),並且被配置為控制處理器910以及專用處理器,其中將軟體指令合併到處理器設計方案中。處理器910可以是包含多個核心或處理器、匯流排、記憶體控制器、快取記憶體等等的自包含系統。多核心處理器可以是對稱的或非對稱的。
為了使用戶能夠與計算設備架構900進行交互,輸入設備945可以表示任意數量的輸入機制,諸如用於語音的麥克風、用於手勢或圖形輸入的觸敏螢幕、鍵盤、滑鼠、運動輸入、語音等等。輸出設備935也可以是本領域技術人員已知的眾多輸出機制中的一者或多者,諸如顯示器、投影儀、電視、揚聲器設備。在一些實例中,多模式計算設備可以使用戶能夠提供多種類型的輸入,以與計算設備架構900進行通信。通信介面940通常可以控制和管理用戶輸入以及計算設備輸出。對於在任何特定硬體裝置上的操作沒有限制,並且因此在改進的硬體或韌體裝置得到開發時,本文的基本功能可以輕鬆地替換為改進的硬體或韌體裝置。
儲存設備930是非揮發性記憶體,並且可以是可以儲存能夠由計算機存取的資料的硬碟或其它類型的計算機可讀媒體,諸如磁帶、快閃記憶卡、固態儲存設備、數位通用磁碟、盒式磁帶、隨機存取記憶體(RAM)925、唯讀記憶體(ROM)920以及其混合。儲存設備930可以包括用於控制處理器910的服務932、服務934和服務936。可以預期其它硬體或軟體模組。儲存設備930可以連接到計算設備連接905。在一個方面中,執行特定功能的硬體模組可以包括結合必要的硬體組件(諸如處理器910、連接905、輸出設備935等等)儲存在計算機可讀媒體中的用於執行該功能的軟體組件。
用語“計算機可讀媒體”包括但不限於攜帶式或非攜帶式儲存設備、光儲存設備、以及能夠儲存、包含或攜帶指令和/或資料的各種其它媒體。計算機可讀媒體可以包括在其中可以儲存資料的非暫時性媒體,並且不包括無線地或透過有線連接傳播的載波和/或暫時性電子信號。非暫時性媒體的示例可以包括但不受限於磁碟或磁帶、諸如壓縮光碟(CD)或數位通用光碟(DVD)之類的光學儲存媒體、快閃記憶體、記憶體或記憶體設備。計算機可讀媒體上可以具有儲存在其上的碼和/或機器可執行指令,其可以表示程序、函數、子程式、程式、例程、子例程、模組、軟體封包、類、或者指令、資料結構或程式語句的任何組合。可以透過傳遞和/或接收資訊、資料、自變量、參數或記憶體內容,將碼段耦接到另一碼段或硬體電路。可以經由包括記憶體共用、訊息傳遞、訊標傳遞、網路傳輸等等的任何適當方式來傳遞、轉發或發送資訊、自變量、參數、資料等等。
在一些實施例中,計算機可讀儲存設備、媒體和記憶體可以包括包含位元串流等等的電纜或無線信號。然而,當提及時,非暫時性計算機可讀儲存媒體明確地排除諸如能量、載波信號、電磁波和信號本身之類的媒體。
在以上的描述中提供特定細節,以提供對本文提供的實施例和示例的透徹理解。但是,本領域一般技術人員將理解的是,可以在沒有這些特定細節的情況下實施這些實施例。為了清楚解釋起見,在一些實例中,可以將本文的技術呈現為包括單獨的功能區塊,該單獨的功能區塊包括設備、設備組件、以軟體體現的方法或例程、或者硬體和軟體的組合。除了圖中所示的和/或本文所述的組件以外,還可以使用額外組件。例如,可以將電路、系統、網路、程序和其它組件示出為方塊圖形式的組件,以免在不必要的細節上使實施例模糊。在其它實例中,可以在沒有不必要的細節的情況下示出習知的電路、程序、演算法、結構和技術,以避免使實施例模糊。
在上文可以將各個實施例描述為程序或方法,將程序或方法描繪為流程圖、流程示意圖、資料流程圖、結構圖或方塊圖。雖然流程圖可以將操作描述為順序程序,但是操作中的許多操作可以平行或同時地執行。此外,可以重新安排操作的順序。程序在其操作完成時終止,但是可以具有未包含在圖式中的其它步驟。程序可以對應於方法、函數、程序、子例程、子程式等等。當程序對應於函數時,其終止可以對應於該函數返回到調用函數或主函數。
可以使用儲存在計算機可讀媒體中或者以其它方式對於計算機可讀媒體可用的計算機可執行指令,來實現根據上述示例的程序和方法。例如,這樣的指令可以包括引起或配置通用計算機、專用計算機或處理設備執行特定功能或功能組的指令和資料。可以透過網路存取使用的計算機資源部分。計算機可執行指令可以是例如二進制、中間格式指令(諸如組合語言)、韌體、來源碼。可以用於儲存指令、所使用的資訊和/或在根據所描述的示例的方法期間創建的資訊的計算機可讀媒體的示例包括磁碟或光碟、快閃記憶體、被提供有非揮發性記憶體的USB設備、網路儲存設備等等。
實現根據這些公開內容的程序和方法的設備可以包括硬體、軟體、韌體、中間軟體、微碼、硬體描述語言或其任意組合,並且可以採用多種外形中的任何一者。當在軟體、韌體、中間軟體或微碼中實現時,用於執行必要任務的程序碼或碼段(例如,計算機程式產品)可以儲存在計算機可讀媒體或機器可讀媒體中。處理器可以執行必要的任務。外形的典型示例包括膝上型計算機、智慧型手機、行動電話、平板設備或者其它小型外形的個人計算機、個人數位助理、機架安裝設備、獨立設備等等。本文所描述的功能還可以體現在周邊設備或附加卡中。作為進一步的示例,還可以在單個設備中執行的不同晶片或不同程序之間,在電路板上實現這種功能。
指令、用於傳送這樣的指令的媒體、用於執行這樣的指令的計算資源、以及用於支援這樣的計算資源的其它結構是用於提供本公開內容中描述的功能的示例構件。
在前面的描述中,參考本申請的特定實施例描述本申請的各方面,但是本領域一般技術人員將認識到的是,本申請不受其限制。因此,雖然本文已經詳細描述本申請的說明性實施例,但是要理解的是,可以以其它方式不同地體現和採用本發明的構思,並且除非受到現有技術的限制,所附的申請專利範圍旨在被解釋為包括這樣的變型。可以單獨或聯合地使用上述申請的各種特徵和方面。此外,在不背離本說明書的更廣泛的精神和保護範圍的情況下,可以在本文所述之外的任何數量的環境和應用中利用實施例。因此,說明書和圖式應被認為是說明性的而不是限制性的。為了說明起見,以特定順序描述方法。應當領會的是,在替代的實施例中,可以以與所描述的順序不同的順序來執行所述方法。
本領域一般技術人員將領會的是,在不背離本說明書的範圍的情況下,可以將本文中使用的小於(“<”)和大於(“>”)符號或用語分別替換為小於或等於(“≤”)和大於或等於(“≥”)符號。
在將組件描述為“被配置為”執行某些操作的情況下,可以例如透過以下方式來實現這種配置:設計電子電路或其它硬體以執行該操作,透過對可程式化電子電路(例如,微處理器或其它適當的電子電路)進行程式化以執行該操作,或其任意組合。
片語“耦接到”指直接或者間接地實體連接到另一組件的任何組件、和/或直接或者間接地與另一組件通信的任何組件(例如,透過有線或無線連接來連接到另一組件和/或其它適當的通信介面)。
引用集合中的“至少一個”和/或一個集合中的“一個或多個”的聲明語言或其它語言指示該集合中的一個成員或該集合中的多個成員(以任意組合)滿足申請專利範圍。例如,引用“A和B中的至少一個”或者“A或B中的至少一個”的聲明語言意味著A、B、或A和B。在另一示例中,引用“A、B和C中的至少一個”或“A、B或C中的至少一個”的聲明語言意味著A、B、C、或A和B、或A和C、或B和C、或A和B和C。集合中的“至少一個”和/或集合中的“一個或多個”的語言不將該集合限制於該集合中列出的條目。例如,引用“A和B中的至少一個”或者“A或B中的至少一個”的聲明語言可以意味著A、B、或A和B,以及可以另外地包括A和B的集合中未列出的條目。
結合本文所公開示例描述的各種示例性的邏輯方塊、模組、電路和演算法步驟可以實現為電子硬體、計算機軟體、韌體或者其組合。為了清楚地說明硬體和軟體之間的這種可交換性,上面對各種說明性的組件、方塊、模組、電路和步驟均圍繞其功能進行總體描述。至於這種功能是實現為硬體還是軟體,取決於特定的應用和對整個系統所施加的設計約束。熟練的技術人員可以針對每個特定應用以變通的方式實現所描述的功能,但是,這種實現方式不應當解釋為背離本公開內容的範圍。
本文所描述的技術還可以在電子硬體、計算機軟體、韌體或者其任何組合中實現。可以在諸如通用計算機、無線通信設備手持裝置或者具有多種用途(其包括在無線通信設備手持裝置和其它設備中的應用)的積體電路設備等等之類的各種設備中的任何一種來實現這種技術。描述成模組或組件的任何特徵可以在積體邏輯設備中一起實現,或可以分別作為離散但可互操作的邏輯設備來實現。如果在軟體中實現,則技術可以至少部分地由計算機可讀資料儲存媒體來實現,所述計算機可讀資料儲存媒體包括程式碼,所述程式碼包括在被執行時執行上述方法、演算法和/或操作中的一者或多者的指令。計算機可讀資料儲存媒體可以形成計算機程式產品的一部分,該計算機程式產品可以包括封裝材料。計算機可讀媒體可以包括記憶體或資料儲存媒體,例如,諸如同步動態隨機存取記憶體(SDRAM)之類的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、非揮發性隨機存取記憶體(NVRAM)、電可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體、磁或光資料儲存媒體等等。另外地或替代地,可以至少部分地透過計算機可讀通信媒體來實現技術,該計算機可讀通信媒體以指令或資料結構的形式(諸如傳播的信號或波)攜帶或傳送程式碼,並且程式碼可以由計算機存取、讀取和/或執行。
程式碼可以由處理器執行,該處理器可以包括一個或多個處理器,諸如一個或多個數位信號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、場域可程式化邏輯陣列(FPGA)或者其它等效的積體邏輯電路或離散邏輯電路。這樣的處理器可以被配置為執行本公開內容中描述的技術中的任何技術。通用處理器可以是微處理器,但是在替代的方式中,該處理器也可以是任何常規處理器、控制器、微控制器或狀態機。處理器也可以實現為計算設備的組合,例如,DSP和微處理器的組合、若干微處理器、與DSP核心結合的一個或多個微處理器、或者任何其它這樣的配置。因此,本文所使用的用語“處理器”可以指任何的前述結構、前述結構的任何組合、或者適合於實施本文所描述的技術的任何其它結構或裝置。
本公開內容的說明性示例包括:
方面1:一種裝置,包括記憶體和耦接到所述記憶體的一個或多個處理器,所述一個或多個處理器被配置為:獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列;由神經網路的每個層對所述資料輸入的第一條帶中的一個資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列;在對所述第一條帶的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中每個後續資料列是在水平方向上並且按照逐層順序來依次處理的;由所述神經網路基於對所述資料列和所述後續資料列的處理,來產生第一輸出條帶;在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中在水平方向上並且按照逐層順序來處理所述第二條帶中的每個資料列;以及基於對所述第二條帶的處理來產生第二輸出條帶。
方面2:根據方面1所述的裝置,其中,為了在所述水平方向上順序地處理所述第一條帶中的所述資料列,所述一個或多個處理器被配置為:由所述神經網路的每個層依次處理所述資料列中的多個資料區塊,其中,所述神經網路的每個層在沿著水平方向處理後續區塊之前,沿著深度方向處理每個前面的資料區塊。
方面3:根據方面2所述的裝置,其中,為了處理所述後續列,所述一個或多個處理器被配置為:由所述神經網路的每個層依次處理每個後續列中的相應多個資料區塊,其中,所述神經網路的每個層在處理後續列中的後續資料區塊之前,沿著所述深度方向處理所述後續列中的前面的資料區塊。
方面4:根據方面1至方面3中的任何一項所述的裝置,其中,所述神經網路包括像素對像素神經網路,並且其中,所述輸入資料包括與圖像相關聯的像素。
方面5:根據方面1至方面4中的任何一項所述的裝置,其中,為了獲得所述輸入資料,所述一個或多個處理器被配置為:將所述輸入資料邏輯地分段為所述條帶,其中,每個條帶包括所述輸入資料的相應部分。
方面6:根據方面1至方面5中的任何一項所述的裝置,其中,所述一個或多個處理器被配置為:在第一記憶體中,儲存所述神經網路的前一層針對所述第一條帶中的所述資料列中的一個或多個區塊產生的輸出;以及在與所述神經網路的特定層相關聯的第二記憶體中,儲存來自所述資料列中的一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的資料輸入在前一條帶區塊列上的一部分。
方面7:根據方面6所述的裝置,其中,所述一個或多個處理器被配置為:基於所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,以及所述一行或多行資料包括所述特定層的所述資料輸入在所述前一條帶區塊列上的所述部分;以及由所述神經網路的所述特定層基於針對所述前一層的所述輸出來產生另外輸出。
方面8:根據方面7所述的裝置,其中,所述一個或多個處理器被配置為:決定針對所述特定層的所述輸入的一部分;以及將所述輸入的所述部分儲存在與所述神經網路的所述特定層相關聯的第三記憶體中。
方面9:根據方面8所述的裝置,其中,所述一個或多個處理器被配置為:基於所述特定層的所述另外輸出和針對所述後續層的所述輸入的來自後續層的前一條帶區塊列的所述部分的組合來產生針對所述神經網路的所述後續層的額外輸入;以及由所述神經網路的所述後續層,基於針對所述後續層的所述另外輸入來產生第二另外輸出。
方面10:根據方面9所述的裝置,其中,所述一個或多個處理器被配置為:將所述第二額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第三記憶體包括行儲存記憶體中的行儲存,並且其中,所述第一記憶體和所述第四記憶體包括暫存記憶體中的緩衝區。
方面11:根據方面1至方面10中的任何一項所述的裝置,其中,所述一個或多個處理器被配置為:在與所述神經網路的特定層相關聯的第一記憶體中,儲存由所述神經網路的前一層針對每個後續資料列中的一個或多個區塊產生的輸出;以及在第二記憶體中,儲存來自每個後續資料列中的所述一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的一個或多個資料輸入的一個或多個部分。
方面12:根據方面11所述的裝置,其中,所述一個或多個處理器被配置為:基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括用於前一條帶區塊列的所述特定層的所述一個或多個資料輸入的所述一個或多個部分;以及由所述神經網路的所述特定層基於所述前一層的所述輸出和所述前一條帶區塊列上的所述特定層的所述輸入的一子集來產生額外輸出。
方面13:根據方面12所述的裝置,其中,所述一個或多個處理器被配置為:決定針對所述特定層的所述輸入的部分;將所述輸入的所述部分儲存在與所述神經網路的後續層相關聯的第三記憶體中;以及將所述額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第四記憶體包括記憶體緩衝區。
方面14:根據方面1至方面13中的任何一項所述的裝置,其中,為了處理所述資料列,所述一個或多個處理器被配置為:由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述資料列。
方面15:根據方面1至方面14中的任何一項所述的裝置,其中,為了處理所述後續的資料列,所述一個或多個處理器被配置為:由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述第一條帶中的後續資料列。
方面16:根據方面1至方面15中的任何一項所述的裝置,其中,所述裝置包括相機設備。
方面17:根據方面1至方面16中的任何一項所述的裝置,其中,所述裝置包括行動設備。
方面18:一種方法包括:獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列;由神經網路的每個層對所述資料輸入的第一條帶中的一個資料列進行處理,其中,在水平方向上並且按照逐層順序來依次處理所述資料列,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列;在對所述第一條帶中的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在水平方向上並且按照逐層順序來依次處理的;由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶;在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在水平方向上並且按照逐層順序來處理的;以及基於對所述第二條帶的處理來產生第二輸出條帶。
方面19:根據方面18所述的方法,其中,在所述水平方向上順序地處理所述第一條帶中的所述資料列包括:由所述神經網路的每個層依次處理所述列中的多個資料區塊,其中,所述神經網路的每個層在沿著水平方向處理後續區塊之前,沿著深度方向處理每個前面的資料區塊。
方面20:根據方面19所述的方法,其中,處理所述後續列包括:由所述神經網路的每個層依次處理每個後續列中的相應多個資料區塊,其中,所述神經網路的每個層在處理後續列中的後續資料區塊之前,沿著所述深度方向處理所述後續列中的前面的資料區塊。
方面21:根據方面18至方面20中的任何一項所述的方法,其中,所述神經網路包括像素對像素神經網路,並且其中,所述輸入資料包括與圖像相關聯的像素。
方面22:根據方面18至方面21中的任何一項所述的方法,其中,獲得所述輸入資料包括:將所述輸入資料邏輯地分段為所述條帶,其中,每個條帶包括所述輸入資料的相應部分。
方面23:根據方面18至22中的任何一項所述的方法,還包括:在第一記憶體中,儲存所述神經網路的前一層針對所述第一條帶中的所述資料列中的一個或多個區塊產生的輸出;以及在與所述神經網路的特定層相關聯的第二記憶體中,儲存來自所述資料列中的一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的資料輸入在前一條帶區塊列上的一部分。
方面24:根據方面23所述的方法,還包括:基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括所述特定層的所述資料輸入在所述前一條帶區塊列上的所述部分;以及由所述神經網路的所述特定層基於針對所述前一層的所述輸出來產生額外輸出。
方面25:根據方面24所述的方法,還包括:決定針對所述特定層的所述輸入的一部分;以及將所述輸入的所述部分儲存在與所述神經網路的所述特定層相關聯的第三記憶體中。
方面26:根據方面25所述的方法,還包括:基於所述特定層的所述額外輸出和針對所述後續層的所述輸入的來自後續層的前一條帶區塊列的所述部分的組合來產生針對所述神經網路的所述後續層的額外輸入;以及由所述神經網路的所述後續層,基於針對所述後續層的所述額外輸入來產生第二額外輸出。
方面27:根據方面26所述的方法,還包括:將所述第二額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第三記憶體包括行儲存記憶體中的行儲存,並且其中,所述第一記憶體和所述第四記憶體包括暫存記憶體中的緩衝區。
方面28:根據方面18至方面27中的任何一項所述的方法,還包括:在與所述神經網路的特定層相關聯的第一記憶體中,儲存由所述神經網路的前一層針對每個後續資料列中的一個或多個區塊產生的輸出;以及在第二記憶體中,儲存來自每個後續資料列中的所述一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的一個或多個資料輸入的一個或多個部分。
方面29:根據方面28所述的方法,還包括:基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括針對前一條帶區塊列的所述特定層的所述一個或多個資料輸入的所述一個或多個部分;以及由所述神經網路的所述特定層基於所述前一層的所述輸出和所述前一條帶區塊列上的所述特定層的所述輸入的一子集來產生額外輸出。
方面30:根據方面29所述的方法,還包括:決定針對所述特定層的所述輸入的部分;將所述輸入的所述部分儲存在與所述神經網路的後續層相關聯的第三記憶體中;以及將所述額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第四記憶體包括記憶體緩衝區。
方面31:根據方面18至方面30中的任何一項所述的方法,其中,處理所述資料列包括:由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述資料列。
方面32:根據方面18至方面31中的任何一項所述的方法,其中,處理所述後續的資料列包括:由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述第一條帶中的後續資料列。
方面33:一種具有儲存在其上的指令的非暫時性計算機可讀媒體,所述指令在由一個或多個處理器執行時,使所述一個或多個處理器執行根據方面18至方面32中的任何一項所述的方法。
方面34:一種裝置,包括用於執行根據方面18至方面32中的任何一項所述的方法的構件。
100:計算系統
102:感測器
104:儲存裝置
106:記憶體
110:計算組件
112:中央處理單元(CPU)
114:圖形處理單元(GPU)
116:數位信號處理器(DSP)
118:圖像信號處理器(ISP)
120:神經處理單元(NPU)
130:處理引擎
132:渲染引擎
200:輸入
202:水平維度
204:垂直維度
206:深度維度
210A:條帶
210B:條帶
212A:條帶區塊
212B:條帶區塊
216:重疊區域
220A:條帶區塊
220B:條帶區塊
222:重疊區域
230A:圖
230B:圖
300:資料處理方案
302:條帶區塊
304:圖磚
306A:區塊列
306B:區塊列
306N:區塊列
310:神經網路
312:層
314:層
316:層
318:層
400:記憶體架構
402:行儲存記憶體
404:行儲存
406:行儲存
408:行儲存
410:行儲存
420:暫存記憶體
422:緩衝區
424:緩衝區
452:輸入
454:重疊資料
456:輸出
500:資料處理架構
530:垂直組合器
532:MAC資料路徑
534:行儲存更新組件
540:輸出
542:重疊資料
544:資料
546:重疊資料
548:輸出
550:水平重疊資料
552:區塊輸入
560:水平組合器
562:MAC陣列
570:寫控制器
572:讀控制器
574:寫控制器
576:讀控制器
602:層輸入
604:填充
606:輸入行
608:第一行
610:層輸出
612:輸出行
700:漏斗處理方案
702:輸入條帶
704:中間條帶
706:中間條帶
708:輸出條帶
710:中央條帶
712:水平重疊
800:程序
802:步驟
804:步驟
806:步驟
808:步驟
810:步驟
812:步驟
900:計算設備架構
905:計算設備連接
910:處理器
912:快取記憶體
915:記憶體
920:唯讀記憶體(ROM)
925:隨機存取記憶體(RAM)
930:儲存設備
932:服務1
934:服務2
935:輸出設備
936:服務3
940:通信介面
945:輸入設備
下文結合圖式來詳細地描述本申請的說明性實施例:
圖1是示出根據本公開內容的一些示例的示例圖像處理系統的簡化方塊圖;
圖2是示出根據本公開內容的一些示例的用於實現基於條帶和光柵的處理方案的像素對像素神經網路的示例輸入的示意圖;
圖3是示出根據本公開內容的一些示例的用於神經網路的示例資料處理方案的示意圖;
圖4是示出根據本公開內容的一些示例的用於儲存條帶資料以產生層輸入的示例記憶體架構的示意圖;
圖5A和圖5B是示出根據本公開內容的一些示例的用於產生神經網路層輸入和輸出的示例資料處理架構的示意圖;
圖6是示出根據本公開內容的一些示例的利用垂直行偏移填充以及用於產生層輸出的層輸入的示例的示意圖;
圖7是示出根據本公開內容的一些示例的用於在處理條帶時減少冗餘計算的示例漏斗處理方案的示意圖;
圖8是示出根據本公開內容的一些示例的用於在神經網路中處理資料的示例程序的流程圖;以及
圖9是示出用於實現本文描述的某些方面的示例系統架構的示意圖。
202:水平維度
204:垂直維度
206:深度維度
210A:條帶
210B:條帶
300:資料處理方案
302:條帶區塊
304:圖磚
306A:區塊列
306B:區塊列
306N:區塊列
310:神經網路
312:層
314:層
316:層
318:層
Claims (30)
- 一種裝置,包括: 記憶體;以及 耦接到所述記憶體的一個或多個處理器,所述一個或多個處理器被配置為進行以下操作: 獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列; 由神經網路的每個層處理所述資料輸入的第一條帶中的一資料列,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列; 在對所述第一條帶中的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在所述水平方向上並且按照所述逐層順序來依次處理的; 由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶; 在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在所述水平方向上並且按照所述逐層順序來處理的;以及 基於對所述第二條帶的處理來產生第二輸出條帶。
- 根據請求項1所述的裝置,其中,為了在所述水平方向上順序地處理所述第一條帶中的所述資料列,所述一個或多個處理器被配置為: 由所述神經網路的每個層依次處理所述列中的多個資料區塊,其中,所述神經網路的每個層在沿著所述水平方向處理後續區塊之前,沿著深度方向處理每個前面的資料區塊。
- 根據請求項2所述的裝置,其中,為了處理所述後續列,所述一個或多個處理器被配置為: 由所述神經網路的每個層依次處理每個後續列中的相應的多個資料區塊,其中,所述神經網路的每個層在處理後續列中的後續資料區塊之前,沿著所述深度方向處理所述後續列中的前面的資料區塊。
- 根據請求項1所述的裝置,其中,所述神經網路包括像素對像素神經網路,並且其中,所述輸入資料包括與圖像相關聯的像素。
- 根據請求項1所述的裝置,其中,為了獲得所述輸入資料,所述一個或多個處理器被配置為: 將所述輸入資料邏輯地分段為所述條帶,其中,每個條帶包括所述輸入資料的相應部分。
- 根據請求項1所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 在第一記憶體中,儲存由所述神經網路的前一層針對所述第一條帶中的所述資料列中的一個或多個區塊產生的輸出;以及 在與所述神經網路的特定層相關聯的第二記憶體中,儲存來自所述資料列中的所述一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的資料輸入在前一條帶區塊列上的一部分。
- 根據請求項6所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括所述特定層的所述資料輸入在所述前一條帶區塊列上的所述部分;以及 由所述神經網路的所述特定層基於針對所述前一層的所述輸出來產生額外輸出。
- 根據請求項7所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 決定針對所述特定層的所述輸入的一部分;以及 將所述輸入的所述部分儲存在與所述神經網路的所述特定層相關聯的第三記憶體中。
- 根據請求項8所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 基於所述特定層的所述額外輸出和針對後續層的所述輸入的來自所述後續層的前一條帶區塊列的所述部分的組合來產生針對所述神經網路的所述後續層的額外輸入;以及 由所述神經網路的所述後續層基於針對所述後續層的所述額外輸入來產生第二額外輸出。
- 根據請求項9所述的裝置,其中,所述一個或多個處理器被配置為: 將所述第二額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第三記憶體包括行儲存記憶體中的行儲存,並且其中,所述第一記憶體和所述第四記憶體包括暫存記憶體中的緩衝區。
- 根據請求項1所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 在與所述神經網路的特定層相關聯的第一記憶體中,儲存由所述神經網路的前一層針對每個後續資料列中的一個或多個區塊產生的輸出;以及 在第二記憶體中,儲存來自每個後續資料列中的所述一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的一個或多個資料輸入的一個或多個部分。
- 根據請求項11所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括針對前一條帶區塊列的所述特定層的所述一個或多個資料輸入的所述一個或多個部分;以及 由所述神經網路的所述特定層基於來自所述前一層的所述輸出和所述前一條帶區塊列上的所述特定層的所述輸入的子集來產生額外輸出。
- 根據請求項12所述的裝置,其中,所述一個或多個處理器被配置為進行以下操作: 決定針對所述特定層的所述輸入的部分; 將所述輸入的所述部分儲存在與所述神經網路的後續層相關聯的第三記憶體中;以及 將所述額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第四記憶體包括記憶體緩衝區。
- 根據請求項1所述的裝置,其中,為了處理所述資料列,所述一個或多個處理器被配置為: 由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述資料列。
- 根據請求項1所述的裝置,其中,為了處理所述後續的資料列,所述一個或多個處理器被配置為: 由所述神經網路的每個後續層處理所述神經網路的前面的層的輸出,所述輸出對應於所述第一條帶中的後續資料列。
- 根據請求項1所述的裝置,其中,所述裝置包括照相機裝置。
- 根據請求項1所述的裝置,其中,所述裝置包括行動設備。
- 一種方法,包括: 獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列; 由神經網路的每個層對所述資料輸入的第一條帶中的一資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列; 在對所述第一條帶的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在所述水平方向上並且按照逐層順序來依次處理的; 由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶; 在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在所述水平方向上並且按照所述逐層順序來處理的;以及 基於對所述第二條帶的處理來產生第二輸出條帶。
- 根據請求項18所述的方法,其中,在所述水平方向上順序地處理所述第一條帶中的所述資料列包括: 由所述神經網路的每個層依次處理所述列中的多個資料區塊,其中,所述神經網路的每個層在沿著所述水平方向處理後續區塊之前,沿著深度方向處理每個前面的資料區塊。
- 根據請求項19所述的方法,其中,處理所述後續列包括: 由所述神經網路的每個層依次處理每個後續列中的相應的多個資料區塊,其中,所述神經網路的每個層在處理後續列中的後續資料區塊之前,沿著所述深度方向處理所述後續列中的前面的資料區塊。
- 根據請求項18所述的方法,其中,所述神經網路包括像素對像素神經網路,並且其中,所述輸入資料包括與圖像相關聯的像素。
- 根據請求項18所述的方法,其中,獲得所述輸入資料包括: 將所述輸入資料邏輯地分段為所述條帶,其中,每個條帶包括所述輸入資料的相應部分。
- 根據請求項18所述的方法,還包括: 在第一記憶體中,儲存由所述神經網路的前一層針對所述第一條帶中的所述資料列中的一個或多個區塊產生的輸出;以及 在與所述神經網路的特定層相關聯的第二記憶體中,儲存來自所述資料列中的一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的資料輸入在前一條帶區塊列上的一部分。
- 根據請求項23所述的方法,還包括: 基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括所述特定層的所述資料輸入在所述前一條帶區塊列上的所述部分; 由所述神經網路的所述特定層基於針對所述前一層的所述輸出來產生額外輸出; 決定針對所述特定層的所述輸入的一部分;以及 將針對所述神經網路的所述特定層的所述輸入的一部分儲存在與所述神經網路的所述特定層相關聯的第三記憶體中。
- 根據請求項24所述的方法,還包括: 基於所述特定層的所述額外輸出和針對後續層的所述輸入的來自所述後續層的前一條帶區塊列的所述部分的組合來產生針對所述神經網路的所述後續層的額外輸入; 由所述神經網路的所述後續層基於針對所述後續層的所述額外輸入來產生第二額外輸出;以及 將所述第二額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第三記憶體包括行儲存記憶體中的行儲存,並且其中,所述第一記憶體和所述第四記憶體包括暫存記憶體中的緩衝區。
- 根據請求項18所述的方法,還包括: 在與所述神經網路的特定層相關聯的第一記憶體中,儲存由所述神經網路的前一層針對每個後續資料列中的一個或多個區塊產生的輸出;以及 在第二記憶體中,儲存來自每個後續資料列中的所述一個或多個區塊的一行或多行資料,其中,所述一行或多行資料包括所述神經網路的所述特定層的一個或多個資料輸入的一個或多個部分。
- 根據請求項26所述的方法,還包括: 基於由所述前一層產生的所述輸出和所述一行或多行資料的組合來產生針對所述神經網路的所述特定層的輸入,所述一行或多行資料包括針對前一條帶區塊列的所述特定層的所述一個或多個資料輸入的所述一個或多個部分;以及 由所述神經網路的所述特定層基於來自所述前一層的所述輸出和所述前一條帶區塊列上的來自所述特定層的所述輸入的子集來產生額外輸出。
- 根據請求項27所述的方法,還包括: 決定針對所述特定層的所述輸入的部分; 將所述輸入的所述部分儲存在與所述神經網路的後續層相關聯的第三記憶體中;以及 將所述額外輸出儲存在第四記憶體中,其中,所述第二記憶體和所述第四記憶體包括記憶體緩衝區。
- 根據請求項18所述的方法,其中,處理所述資料列包括:由所述神經網路的每個後續層處理所述神經網路的前一層的輸出,所述輸出對應於所述資料列,並且其中,處理所述後續的資料列包括:由所述神經網路的每個後續層處理所述神經網路的前一層的輸出,所述輸出對應於所述第一條帶中的後續資料列。
- 一種具有儲存在其上的指令的非暫時性計算機可讀媒體,所述指令在被一個或多個處理器執行時,使所述一個或多個處理器進行以下操作: 獲得輸入資料,所述輸入資料包括對所述輸入資料進行邏輯地分段的條帶,所述輸入資料的每個條帶包括至少一個資料列; 由神經網路的每個層對所述資料輸入的第一條帶中的一資料列進行處理,其中,所述資料列是在水平方向上並且按照逐層順序來依次處理的,其中所述神經網路的每個前面的層在所述神經網路的每個後續層之前處理特定的資料列; 在對所述第一條帶中的所述資料列進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述第一條帶中的後續資料列,其中,每個後續資料列是在所述水平方向上並且按照所述逐層順序來依次處理的; 由所述神經網路基於對所述資料列和所述後續資料列的處理來產生第一輸出條帶; 在對所述第一條帶進行處理之後,由所述神經網路的每個層在逐列基礎上處理所述輸入資料的第二條帶中的資料列,其中,所述第二條帶中的每個資料列是在所述水平方向上並且按照所述逐層順序來處理的;以及 基於對所述第二條帶的處理來產生第二輸出條帶。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/200,090 | 2021-03-12 | ||
US17/200,090 US20220292344A1 (en) | 2021-03-12 | 2021-03-12 | Processing data in pixel-to-pixel neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202236209A true TW202236209A (zh) | 2022-09-16 |
Family
ID=80786743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111103717A TW202236209A (zh) | 2021-03-12 | 2022-01-27 | 像素對像素神經網路中的資料處理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20220292344A1 (zh) |
EP (1) | EP4305549A1 (zh) |
JP (1) | JP2024509408A (zh) |
KR (1) | KR20230156046A (zh) |
CN (1) | CN116917900A (zh) |
BR (1) | BR112023017772A2 (zh) |
TW (1) | TW202236209A (zh) |
WO (1) | WO2022191930A1 (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11580353B2 (en) * | 2018-05-04 | 2023-02-14 | Apple Inc. | Neural network processor for handling differing datatypes |
-
2021
- 2021-03-12 US US17/200,090 patent/US20220292344A1/en active Pending
-
2022
- 2022-01-26 BR BR112023017772A patent/BR112023017772A2/pt unknown
- 2022-01-26 WO PCT/US2022/013891 patent/WO2022191930A1/en active Application Filing
- 2022-01-26 EP EP22704642.2A patent/EP4305549A1/en active Pending
- 2022-01-26 KR KR1020237029964A patent/KR20230156046A/ko unknown
- 2022-01-26 JP JP2023552228A patent/JP2024509408A/ja active Pending
- 2022-01-26 CN CN202280019268.2A patent/CN116917900A/zh active Pending
- 2022-01-27 TW TW111103717A patent/TW202236209A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
BR112023017772A2 (pt) | 2023-10-03 |
KR20230156046A (ko) | 2023-11-13 |
WO2022191930A1 (en) | 2022-09-15 |
CN116917900A (zh) | 2023-10-20 |
JP2024509408A (ja) | 2024-03-01 |
EP4305549A1 (en) | 2024-01-17 |
US20220292344A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10855966B2 (en) | View interpolation of multi-camera array images with flow estimation and image super resolution using deep learning | |
US10021300B2 (en) | Image processing device and electronic system including the same | |
US11928753B2 (en) | High fidelity interactive segmentation for video data with deep convolutional tessellations and context aware skip connections | |
TWI568257B (zh) | 用於串流中捲動快門補償之系統、方法、非暫時性電腦可讀儲存媒體 | |
US20170061677A1 (en) | Disparate scaling based image processing device, method of image processing, and electronic system including the same | |
US10037598B2 (en) | Multi-block memory reads for image de-warping | |
TWI698834B (zh) | 用於圖形處理之方法及裝置 | |
US9460489B2 (en) | Image processing apparatus and image processing method for performing pixel alignment | |
CN111757080A (zh) | 用于沉浸式视觉体验的相机视图之间的虚拟视图内插 | |
CN110782387B (zh) | 图像处理方法、装置、图像处理器及电子设备 | |
US10230933B2 (en) | Processing three-dimensional (3D) image through selectively processing stereoscopic images | |
US10650488B2 (en) | Apparatus, method, and computer program code for producing composite image | |
US20200128264A1 (en) | Image processing | |
TW202236209A (zh) | 像素對像素神經網路中的資料處理 | |
US9241144B2 (en) | Panorama picture scrolling | |
US20130021371A1 (en) | Image display apparatus and image display method | |
JP2023522370A (ja) | 画像表示方法、装置、機器及び記憶媒体 | |
WO2017058423A1 (en) | Processing display of digital camera readout with minimal latency | |
US11734796B2 (en) | Methods and apparatus for shared image processing among multiple devices | |
WO2023097576A1 (en) | Segmentation with monocular depth estimation | |
US12039742B2 (en) | Supervised learning and occlusion masking for optical flow estimation | |
US10600151B2 (en) | Automatic determination of a region of influence | |
KR20240035992A (ko) | 현저성에 기초한 초해상도 | |
TW202420225A (zh) | 使用視訊區域分割的影像處理裝置以及包括其的電子系統 | |
WO2023129855A1 (en) | Systems and methods for image reprojection |