TWI719512B - 使用像素通道置亂的卷積神經網路的演算方法與系統 - Google Patents
使用像素通道置亂的卷積神經網路的演算方法與系統 Download PDFInfo
- Publication number
- TWI719512B TWI719512B TW108121979A TW108121979A TWI719512B TW I719512 B TWI719512 B TW I719512B TW 108121979 A TW108121979 A TW 108121979A TW 108121979 A TW108121979 A TW 108121979A TW I719512 B TWI719512 B TW I719512B
- Authority
- TW
- Taiwan
- Prior art keywords
- values
- pixel
- value
- scrambling
- filter
- Prior art date
Links
- 238000000034 method Methods 0.000 title abstract description 13
- 238000013528 artificial neural network Methods 0.000 title abstract description 9
- 238000004364 calculation method Methods 0.000 claims description 83
- 238000013527 convolutional neural network Methods 0.000 claims description 56
- 238000004891 communication Methods 0.000 claims description 4
- 230000000739 chaotic effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Images
Classifications
-
- 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/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/7715—Feature extraction, e.g. by transforming the feature space, e.g. multi-dimensional scaling [MDS]; Mappings, e.g. subspace methods
-
- 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/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
-
- 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/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
- G06V10/7747—Organisation of the process, e.g. bagging or boosting
-
- 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)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
一種使用像素通道置亂的卷積神經網路的演算方法,在方法中,以一運算系統接收原始輸入數值,在執行卷積運算之前,先對原始輸入數值執行像素置亂,將原始輸入數值分離為多組數值,以降低各組數值的維度,並再對多組數值執行通道置亂,選出參與卷積運算的數值,形成多組新的輸入數值,再經過捨棄未被選擇的數值,可有效地降低輸入數值的維度,接著是設定卷積核,接著通過一乘法累加器,以卷積核與多組新的輸入數值執行卷積運算,形成多組輸出數值。
Description
本發明關於一種運用卷積神經網路的數據處理技術,特別是一種通過像素與通道置亂的前置作業達到減少運算量和儲存空間卻仍保有辨識準確率的卷積神經網路的運算方法與系統。
在人工智能(Artificial Intelligence,AI)的領域中應用了機器學習(machine learning)的技術,在機器學習中,一種卷積神經網路(Convolutional Neural Network,簡稱CNN)是一種前饋神經網路,特別可以應用在影像處理的領域中,特別是影像辨識、物件偵測、影像分割等處理。
卷積神經網路的模型及演算法於近幾年的發展皆有極大的成就,然而,儘管卷積神經網路在影像特徵萃取及辨識上有很高的正確率,但因為所需的計算量大,且因為一層一層運算的特性,導致在硬體上實現較為困難。
近年來各研究機構提出了適合硬體計算的類神經網路,例如Mobile Net的深度可分離卷積(depth-wise separable convolution)及轉變卷積(Shift Convolution)等,各種發展的目的是能夠保有原來的準確率、但減少模型的運算量和儲存空間。
因為以卷積神經網路為基礎的模型運算量很大,已知有習知技術由雲端伺服器或是電腦主機運算,若應用在智慧物連網(AIOT)產品上,可以將影像數據傳回雲端伺服器運算,以解決運算量大的問題。
若要同時保有準確率,又要減少模型參數量及運算量,習知技術如SqueezeNet(2016),可以不改變卷積運算,而是將原來較大的卷積核(convolution kernel)拆解成數個模組,以減少參數儲存。習知技術如MobileNet v1(2017)與MobileNet v2(2018),解決方案是將原始k*k的卷積運算利用深度可分離卷積(depth-wise separable convolution)模組近似之,此深度可分離卷積模組為深度卷積(depth-wise convolution)後接一個逐點卷積(point-wise convolution)。再如習知技術ShiftNet(2018),以位移卷積(shift-convolution)取代深度卷積,能減少更多的參數儲存量和卷積運算量。
揭露書公開一種使用像素通道置亂的卷積神經網路的演算方法與系統,其中在執行卷積運算之前,將輸入數值執行像素置亂(pixel shuffle)與通道置亂(channel shuffle)的前置作業,可以降低輸入數值的長度、寬度與深度的維度,使得在參數量相同的情況下,降低了系統的運算量及記憶體使用量。
根據實施例,使用像素通道置亂的卷積神經網路的演算方法包括以運算系統接收一原始輸入數值,原始輸入數值可以為影像數據,具有一長度、一寬度與具有第一數量的深度的數值,再以運算系統的處理器對原始輸入數值執行一像素置亂,將原始輸入數值分離為多組數值,以降低各組數值的維度;再對這些數值執行一通道置亂,能自多組數值中分別選出參與卷積運算的數值,形成多組新的輸入數值,數值暫存至記憶體中。
接著,設定多組新的輸入數值對應的卷積核,根據實施例,可以包括有第二數量的卷積核,各卷積核實現篩選器。之後,通過處理器中的乘法累加器,以第二數量的卷積核與多組新的輸入數值執行卷積運算,形成具有第二數量的多組輸出數值。
其中,當原始輸入數值具有第一數量深度的數值,一旦經所述像素置亂與通道置亂後,可形成小於此第一數量深度的多組新的輸入數值。
優選地,所述原始輸入數值為影像數據,通過運算系統執行卷積運算以萃取影像特徵後,可形成具有多組具有該第二數量深度的特徵圖。而此具有第二數量的多組輸出數值若再經一反向像素置亂演算後,可形成具有第二數量深度的影像特徵圖。
優選地,所產生的影像特徵圖可用於識別該原始輸入數值。
優選地,執行卷積運算的各卷積核的長度、寬度與深度是任意正整數。
根據執行使用像素通道置亂的卷積神經網路的演算方法的系統實施例,系統包括有處理器,以及電性連結處理器的通訊電路與記憶體,其中執行所述的使用像素通道置亂的卷積神經網路的演算方法。
進一步地,所述演算系統可形成一個雲端系統,用以提供使用像素通道置亂的卷積神經網路的演算方法執行影像辨識的服務。
更者,演算系統也可實現一個獨立的電路系統,適用於特定系統中,以使用像素通道置亂的卷積神經網路的演算方法執行影像辨識。
為使能更進一步瞭解本發明的特徵及技術內容,請參閱以下有關本發明的詳細說明與圖式,然而所提供的圖式僅用於提供參考與說明,並非用來對本發明加以限制。
以下是通過特定的具體實施例來說明本發明的實施方式,本領域技術人員可由本說明書所公開的內容瞭解本發明的優點與效果。本發明可通過其他不同的具體實施例加以施行或應用,本說明書中的各項細節也可基於不同觀點與應用,在不悖離本發明的構思下進行各種修改與變更。另外,本發明的附圖僅為簡單示意說明,並非依實際尺寸的描繪,事先聲明。以下的實施方式將進一步詳細說明本發明的相關技術內容,但所公開的內容並非用以限制本發明的保護範圍。
應當可以理解的是,雖然本文中可能會使用到“第一”、“第二”、“第三”等術語來描述各種元件或者信號,但這些元件或者信號不應受這些術語的限制。這些術語主要是用以區分一元件與另一元件,或者一信號與另一信號。另外,本文中所使用的術語“或”,應視實際情況可能包括相關聯的列出項目中的任一個或者多個的組合。
卷積神經網路(CNN)在影像辨識應用上有很大的成果,且陸續開發出以卷積神經網路為基礎的影像處理方法,但是,在這種全連接神經網路中,相鄰兩層之間的每個神經元之間相互連結,當輸入層的特徵維度變得很高時,神經網路需要訓練的參數就大很多,運算量也隨之更大,因此,卷積神經網路進展分為兩方面,一方面是進一步提高準確率,另一方面則是壓縮及加速網路模型運算。
因為以卷積神經網路為基礎的模型運算量很大,揭露書提出一種使用像素通道置亂的卷積神經網路(pixel-channel shuffle convolution neural network)的演算方法與系統,其目的是能夠同時保有準確率,又要減少模型參數量及運算量,方法運用了一種深度可分離卷積模組為深度卷積(depth-wise convolution),再以所揭露的像素通道置亂的卷積神經網路取代習知的逐點卷積(point-wise convolution),能更減少計算量,例如,在特定環境下實驗,結果是可減少的計算量與記憶體使用量成為傳統的逐點卷積的四分之一。
在保有準確率以及減少模型參數量與運算量的需求下,針對所述卷積神經網路,以影像辨識與偵測功能為例,根據揭露書所提出的使用像素通道置亂的卷積神經網路的演算方法的實施例,能夠達成的特點包括,使用卷積神經網路(CNN)中的特徵圖(feature map)減少通道運算,以及結合像素置亂(pixel shuffle)及通道置亂(channel shuffle)以減少硬體運算量,包括減少使用記憶體的大小。
先參考圖1所述的逐點卷積(point-wise convolution)運算的示意圖。
圖1(A)中顯示為逐點卷積運算的輸入層,以立方塊顯示這個輸入層,其中顯示由標示a、b、 c、d為代表形成的第一層輸入數值,此輸入層顯示為長(H)、寬(W)與深(C1)形成的一立方塊,其中深度(C1)表示此輸入層卷積核的數量(第一數量C1)。
圖1(B)接著示意顯示卷積核實現的1*1篩選器(filter),此例顯示有第二數量C2個篩選器,卷積運算即以此篩選器在上一級輸入層(圖1(A))以一移動窗口依照一步伐(strides)設定而逐一掃描計算,過程中為相乘再加總,最後得出如圖1(C)顯示的輸出數值。
圖1(C)顯示的輸出層為長(H)、寬(W)與深(C2)形成的立方塊,深度(C2)為對照篩選器的數量(第二數量C2)而產生相同數量的特徵圖,以此顯示輸出數值的數量,H*W*C2表示輸出數值的大小。
卷積核實現一個篩選機制,如圖1(B)所示,所述卷積核中的每一個參數相當於神經網路中的權值參數,與對應的局部像素相連接,所述如移動窗口逐一掃描計算是將卷積核的各個參數與對應的局部像素值做乘法運算,最後再取總和,得到卷積層上的結果。使用卷積核可以提取影像中的特徵,並進行特徵映射(mapping)。
舉例來說,當輸入數值(input data)和一個篩選器(filter)做卷積運算,如圖1(B),此例顯示之篩選器的大小為1*1,深度為16(第一數量C1),將輸入數值與一個篩選器(1*1*16)相乘後,輸出的特徵圖(feature map)顯示是大小為H*W*1的輸出數值。同理,當提出C2個篩選器(如圖1(B)),將會產生C2張特徵圖,合併後即如圖1(C)所示的立方塊。也就是,輸入數值與篩選器經過卷積運算後,形成圖1(C)的輸出層樣態,合併之後大小即為H*W*C2,也就是輸出數值(output data)的大小。
根據卷積運算,設有一個數量(第二數量C2,如圖1(B))的篩選器(卷積核),每個篩選器具有一個數量的值(第一數量C1,此例為16,如圖1(B))和輸入數值中每個位置上的相同數量的值(第一數量C1,此例為16,如圖1(A))個別做乘法運算,最後再取總和,第二數量C2的篩選器經過卷積運算就會形成第二數量C2個特徵圖,合併後形成如圖1(C)所示大小為H*W*C2的特徵圖,也就是卷積運算的輸出數值。
圖2顯示一個篩選器與輸入數值中的一個位置的卷積運算示意圖,圖中顯示一篩選器20,具有第一數量C1的值,依據需求可為任何值,此例顯示為16,對輸入數值22進行卷積運算,輸入數值22示意顯示為圖1(A)顯示的a位置,具有第一數量C1個值,顯示為16。根據使用像素通道置亂的卷積神經網路的演算方法實施方式,其中概念是輸入數值22中每個位置不用和篩選器20中所有第一數量C1的值做乘法運算,而是依照一特定規則進行乘法運算,以輸入數值22中不同的幾何位置和篩選器20的不同值做乘法運算,產生輸出數值24,結果是可以減少運算量。
續參考圖3顯示使用像素通道置亂的卷積神經網路的演算方法的範例示意圖,此例顯示一個2*2的輸入數值,各輸入數值具有第一數量C1的數值,如所示有16個,此例中,每個區塊依照順序標號為a、b、c、d,可指為系統所要處理的輸入影像中的像素。卷積運算中設有篩選器30,其中各層數值分別以篩選器編號301~316標示,為了減少運算量,將篩選器30依據一減少運算量的需求設定一乘法與加總的規則。
此例中,輸入數值為2*2區塊組成,實施例為以4個連續像素為一組,因此篩選器30的設定可以4為間隔分類為4組,圖中顯示篩選器編號301、305、309與313設為第一組篩選器,編號302、306、310與314設為第二組篩選器,編號303、307、311與315設為第三組篩選器,編號304、308、312與316設為第四組篩選器,依照順序分別與標號為a、b、c、d的輸入數值進行卷積運算,而不是與所有的輸入數值進行卷積運算,可降低運算量。以上篩選器的編組規則以及編組後形成的新的運算規則將以系統中一記憶體所儲存。
舉例來說,系統將輸入數值a中第一數量C1(此例為16)個數值僅依照規則(如以4為間隔)取出其中數值a1、a2、a3與a4,形成第一組輸入數值(I_A),依照規則選擇得出的輸入數值將先暫存系統之記憶體中,再與上述第一組篩選器(篩選器編號301、305、309與313)進行卷積運算。其中輸入數值a中未選擇的數值將被捨棄,可以有效降低運算量,此例顯示運算量降至原本的四分之一。其中,針對第一組輸入數值(I_A),卷積運算將與對應位置的篩選器(第一組篩選器)進行乘加運算:(數值a1乘上編號301篩選器)+(數值a2乘上編號301篩選器)+(數值a3乘上編號301篩選器)+(數值a4乘上編號301篩選器)=第一筆輸出數值;(數值a1乘上編號305篩選器)+(數值a2乘上編號305篩選器)+(數值a3乘上編號305篩選器)+(數值a4乘上編號305篩選器)=第二筆輸出數值;(數值a1乘上編號309篩選器)+(數值a2乘上編號309篩選器)+(數值a3乘上編號309篩選器)+(數值a4乘上編號309篩選器)=第三筆輸出數值;(數值a1乘上編號313篩選器)+(數值a2乘上編號313篩選器)+(數值a3乘上編號313篩選器)+(數值a4乘上編號313篩選器)=第四筆輸出數值。從輸入數值a卷積運算得出的第一筆輸出數值、第二筆輸出數值、第三筆輸出數值與第四筆輸出數值形成第一組輸出數值(O_A)。
同理,系統將輸入數值b中第一數量C1(此例為16)個數值依照規則(如以4為間隔)取出其中數值b1、b2、b3與b4,形成第二組輸入數值(I_B),選擇的輸入數值先暫存系統之記憶體中,再與第二組篩選器(篩選器編號302、306、310與314)進行卷積運算。同樣地,輸入數值b中未選擇的數值將被捨棄。其中,針對第二組輸入數值(I_B),卷積運算將與對應位置的篩選器(第二組篩選器)進行乘加運算:(數值b1乘上編號302篩選器)+(數值b2乘上編號302篩選器)+(數值b3乘上編號302篩選器)+(數值b4乘上編號302篩選器)=第一筆輸出數值;(數值b1乘上編號306篩選器)+(數值b2乘上編號306篩選器)+(數值b3乘上編號306篩選器)+(數值b4乘上編號306篩選器)=第二筆輸出數值;(數值b1乘上編號310篩選器)+(數值b2乘上編號310篩選器)+(數值b3乘上編號310篩選器)+(數值b4乘上編號310篩選器)=第三筆輸出數值;(數值b1乘上編號314篩選器)+(數值b2乘上編號314篩選器)+(數值b3乘上編號314篩選器)+(數值b4乘上編號314篩選器)=第四筆輸出數值。從輸入數值b卷積運算得出的第一筆輸出數值、第二筆輸出數值、第三筆輸出數值與第四筆輸出數值形成第二組輸出數值(O_B)。
同理,系統將輸入數值c中第一數量C1(此例為16)個數值依照規則(如以4為間隔)取出其中數值c1、c2、c3與c4,形成第三組輸入數值(I_C),選擇的輸入數值先暫存系統之記憶體中,再與第三組篩選器(篩選器編號303、307、311與315)進行卷積運算。輸入數值c中未選擇的數值將被捨棄。其中,針對第三組輸入數值(I_C),卷積運算將與對應位置的篩選器(第三組篩選器)進行乘加運算:(數值c1乘上編號303篩選器)+(數值c2乘上編號303篩選器)+(數值c3乘上編號303篩選器)+(數值c4乘上編號303篩選器)=第一筆輸出數值;(數值c1乘上編號307篩選器)+(數值c2乘上編號307篩選器)+(數值c3乘上編號307篩選器)+(數值c4乘上編號307篩選器)=第二筆輸出數值;(數值c1乘上編號311篩選器)+(數值c2乘上編號311篩選器)+(數值c3乘上編號311篩選器)+(數值c4乘上編號311篩選器)=第三筆輸出數值;(數值c1乘上編號315篩選器)+(數值c2乘上編號315篩選器)+(數值c3乘上編號315篩選器)+(數值c4乘上編號315篩選器)=第四筆輸出數值。從輸入數值c卷積運算得出的第一筆輸出數值、第二筆輸出數值、第三筆輸出數值與第四筆輸出數值形成第三組輸出數值(O_C)。
同理,系統將輸入數值d中第一數量C1(此例為16)個數值依照規則(如以4為間隔)取出其中數值d1、d2、d3與d4,形成第四組輸入數值(I_D),選擇的輸入數值先暫存系統之記憶體中,再與第四組篩選器(篩選器編號304、308、312與316)進行卷積運算。輸入數值d中未選擇的數值將被捨棄。其中,針對第四組輸入數值(I_D),卷積運算將與對應位置的篩選器(第四組篩選器)進行乘加運算:(數值d1乘上編號304篩選器)+(數值d2乘上編號304篩選器)+(數值d3乘上編號304篩選器)+(數值d4乘上編號304篩選器)=第一筆輸出數值;(數值d1乘上編號308篩選器)+(數值d2乘上編號308篩選器)+(數值d3乘上編號308篩選器)+(數值d4乘上編號308篩選器)=第二筆輸出數值;(數值d1乘上編號312篩選器)+(數值d2乘上編號312篩選器)+(數值d3乘上編號312篩選器)+(數值d4乘上編號312篩選器)=第三筆輸出數值;(數值d1乘上編號316篩選器)+(數值d2乘上編號316篩選器)+(數值d3乘上編號316篩選器)+(數值d4乘上編號316篩選器)=第四筆輸出數值。從輸入數值c卷積運算得出的第一筆輸出數值、第二筆輸出數值、第三筆輸出數值與第四筆輸出數值形成第四組輸出數值(O_D)。
圖3所示範例顯示根據特定規則選擇的輸入數值(a、b、c、d)形成第一組輸入數值(I_A)、第二組輸入數值(I_B)、第三組輸入數值(I_C)與第四組輸入數值(I_D),接著對這些選擇形成的輸入數值進行卷積運算,卷積運算結果形成的輸出數值為第一組輸出數值(O_A)、第二組輸出數值(O_B)、第三組輸出數值(O_C)與第四組輸出數值(O_D)。
根據以上範例,可知進行卷積運算時,並非所有輸入數值都有運算,捨棄了輸入數值中依據特定規則選擇參與卷積運算的數值以外的數值,因此可以有效降低計算量。
依據前述實施範例的概念,揭露書所提出的使用像素通道置亂的卷積神經網路的演算方法中,不同於傳統的逐點卷積運算,所述方法將其中應用的逐點卷積運算拆成數個操作,包括有像素置亂(pixel shuffle)、通道置亂(channel shuffle)、逐點卷積運算(point-wise convolution)以及反向像素置亂(inverse pixel shuffle)等步驟。
如圖4各步驟的描述以及圖5所描述的運算系統,運行此使用像素通道置亂的卷積神經網路的演算方法的系統可為執行影像處理的演算系統50,演算系統50設有處理器501、通訊電路505與記憶體503,電路元件之間電性連接,通過處理器501的運算能力執行演算方法中像素置亂、通道置亂演算、卷積運算以及後續反向像素置亂的步驟,特別是通過處理器501中執行乘加運算的一乘法累加器(multiplier-accumulator)執行卷積運算。由於通過演算方法可以有效降低運算量,使得對應的硬體需求,如乘法累加器與記憶體,也都有效降低。
值得一提的是,演算系統50除了可為一般電腦系統外,更可為一雲端系統,通過網路52以接收各終端(511, 512, 513)傳送的影像數據,提供使用像素通道置亂的卷積神經網路的演算方法執行影像辨識的服務。在另一實施例中,演算系統50也可實現一個獨立的電路系統,例如積體電路(IC),適用於特定系統中,以使用像素通道置亂的卷積神經網路的演算方法執行影像辨識。
根據實施例之一,演算系統50處理一輸入影像作為影像識別的目的,通過所述卷積神經網路的演算方法可影像中像素中取得一張圖的特徵,所述特徵除了針對每個像素外,還涵蓋了像素和像素之間的關聯性。相關方法流程可通過以下圖式說明描述,如圖6~9顯示的範例示意圖,並同時參考圖4所示描述使用像素通道置亂的卷積神經網路的演算方法之流程圖,特別的是,通過這些例圖可以理解為何使用像素通道置亂的卷積神經網路的演算方法可將計算量降低之外,還能趨近原本龐大卷積運算量的結果。
圖6顯示使用像素通道置亂的卷積神經網路的演算方法中執行像素置亂的實施例示意圖。
圖6(A)顯示一個以長(H)、寬(W)與深度(第一數量C1,如16)立方塊表示的原始輸入數值,並以輸入數值a、b、c、d排列表示4組輸入數值,各組輸入數值具有第一數量C1的數值。如圖4步驟S401,演算系統接收H*W*C1大小的原始輸入數值,此原始輸入數值可為具備有一長度、一寬度與一深度的影像數據。
演算系統對原始輸入數值執行一置亂(shuffle)的動作,如像素置亂(pixel shuffle),如圖4步驟S403,通過運算系統的處理器,將原始輸入數值依照需求分離為多組數值,使得各組數值相對於原始輸入數值降低了維度,長度與寬度都可降低,但深度可能不變。如圖6(B)所示,將原始輸入數值分離為4組,形成4組長(H/2)、寬(W/2)與深度(第一數量C1)的立方塊,各組立方塊的長度與寬度大小都減半。之後可以圖6(C)顯示的方式表達,其中顯示有第一數量C1(特徵圖)的第一組輸入數值(I_A)、第二組輸入數值(I_B)、第三組輸入數值(I_C)與第四組輸入數值(I_D)。以上在運算程序中產生的資料都可暫存至記憶體,等待下一個步驟取出資料。
接著,如圖4步驟S405,演算系統對經過像素置亂形成的多組數值執行通道置亂(channel shuffle),步驟如圖7所示使用像素通道置亂的卷積神經網路的演算方法中執行通道置亂的實施例示意圖。
圖7(A)顯示經過上述像素置亂程序後長度與寬度減少至一半的各輸入數值,接著依照一規則從上述多組數值中的每一組分別選擇其中參與卷積運算的數值,形成多組新的輸入數值,可暫存至系統的記憶體。圖中顯示在第一組輸入數值(I_A)中依照篩選器的設計以一間隔選擇其中數值,例如每4個數值選擇一個,也就是取其中第4k+1張的特徵圖,其中k為0, 1, 2, 3。同理,從第二組輸入數值(I_B)中同樣每4個數值選擇其中一個,也就是取其中第4k+2張的特徵圖,其中k為0, 1, 2, 3;從第三組輸入數值(I_C)中每4個數值選擇其中一個,也就是取其中第4k+3張的特徵圖,其中k為0, 1, 2, 3;再從第四組輸入數值(I_D)中每4個數值選擇一個,也就是取其中第4k+4張的特徵圖,其中k為0, 1, 2, 3。
圖7(B)顯示將第一組輸入數值(I_A)、第二組輸入數值(I_B)、第三組輸入數值(I_C)與第四組輸入數值(I_D)等各組中選擇的數值重新排列在前面幾層中。
圖7(C)顯示捨棄第一組輸入數值(I_A)、第二組輸入數值(I_B)、第三組輸入數值(I_C)與第四組輸入數值(I_D)中未選擇參與卷積運算的輸入數值,此例顯示原本具有16個數值(特徵圖)的各組輸入數值降低至4個,顯示輸入數值通過通道置亂程序後降低了特徵圖數量(成為原本的四分之一),形成新的第一組輸入數值(I_A’)、第二組輸入數值(I_B’)、第三組輸入數值(I_C’)與第四組輸入數值(I_D’)。如圖4步驟S407,通過運算系統執行通道置亂,並捨棄當中未被選擇的數值後,數值深度維度也降低至第三數量C1’,相對於深度為第一數量C1的原始輸入數值,經像素置亂與通道置亂後,形成小於第一數量C1深度的多組新的輸入數值(深度為第三數量C1’),此例顯示為原始數據的四分之一(如4),形成參與卷積運算的多組輸入數值(I_A’、I_B’、I_C’、I_D’)。
圖8接著顯示使用像素通道置亂的卷積神經網路的演算方法中執行卷積運算的實施例示意圖。
圖8(A)顯示經過像素置亂與通道置亂而降低參與卷積運算的數值(特徵圖)數量的第一組輸入數值(I_A’)、第二組輸入數值(I_B’)、第三組輸入數值(I_C’)與第四組輸入數值(I_D’),深度皆降至第三數量C1’,分別通過圖8(B)顯示的四組卷積核實現的篩選器(深度對應為第三數量C1’)進行卷積運算,設定出每組新的輸入數值對應的卷積核(篩選器),並依照需求設定有第二數量(C2)個篩選器(此例顯示1*1*4),每一組篩選器為由原本篩選器依照規則拆出,且卷積核深度只有原來的四分之一(第三數量C1’)。如圖4步驟S409,依據上述參與卷積運算的多組輸入數值(I_A’、I_B’、I_C’、I_D’)設定對應的卷積核,深度也一併降低,實現上述第二數量C2個篩選器。
再如圖4步驟S411,通過運算系統中處理器的乘法累加器,以步驟S409設定的卷積核與多組新的輸入數值執行卷積運算,如圖8(C)表示,卷積運算後產生四個輸出數值,分別是第一組輸出數值(O_A)、第二組輸出數值(O_B)、第三組輸出數值(O_C)與第四組輸出數值(O_D)。各組輸出數值的長度與寬度如同經過像素置亂與通道置亂處理後形成的輸入數值的長度與寬度,分別為H/2及W/2,深度則如同卷積核的第二數量C2。所述多組輸出數值則是通過自原始輸入數值(如影像數據)萃取出來的影像特徵,此例為具有第二數量C2深度的多張特徵圖。同樣地,這些特徵圖可先暫存至記憶體。
當系統完成卷積運算產生各組輸出數值後,接著步驟如圖9顯示是執行一個操作為反向像素置亂(inverse pixel shuffle),如圖4步驟S413。圖9(A)顯示系統自記憶體取得的第一組輸出數值(O_A)、第二組輸出數值(O_B)、第三組輸出數值(O_C)與第四組輸出數值(O_D),各組輸出數值中分別涵蓋原本輸入數值中各分類數值(a、b、c、d)的成份,各組輸出數值可按照原本設計的輸入數值編號順序a、b、c、d反向組合成一個長度為H、寬度為W與深度為第二數量C2的最終輸出數值,也就是通過運算系統執行像素通道置亂的卷積神經網路的演算方法得出最初輸入影像數據的一影像特徵圖,如圖9(B)所示。值得一提的是,影像特徵圖是根據原始輸入數值(影像數據)經所述演算方法萃取出的影像特徵,也就是最後產生的影像特徵圖,能提供特定系統作為識別原始影像的用途。
值得一提的是,根據使用像素通道置亂的卷積神經網路的演算方法實施例,應用於像素置亂的輸入數值可以隨著需求而調整,執行卷積運算的卷積核大小是可以根據需求任意改變的,長度、寬度與深度可以是任意正整數。從最終輸出數值與最初的輸入數值來看,數值前後大小相同,且參數量相同,但系統所需要執行乘加運算的乘法累加器(multiplier-accumulator)數量需求更低。
綜上所述,根據上述關於使用像素通道置亂的卷積神經網路的演算方法與系統的實施例,在運用卷積神經網路的數據處理技術上,特別通過像素置亂(pixel shuffle)與通道置亂(channel shuffle)的前置作業達到減少運算量和儲存空間卻仍保有卷積運算的準確率。
以上所公開的內容僅為本發明的優選可行實施例,並非因此侷限本發明的申請專利範圍,所以凡是運用本發明說明書及圖式內容所做的等效技術變化,均包含於本發明的申請專利範圍內。
第一數量C1 第二數量C2 第三數量C1’ 篩選器20 輸入數值22 輸出數值24 篩選器30 篩選器編號301~316 輸入數值a, b, c, d 數值a1~a4、b1~b4、c1~c4、d1~d4 演算系統50 處理器501 通訊電路505 記憶體503 網路52 終端511, 512, 513 第一組輸入數值I_A 第二組輸入數值I_B 第三組輸入數值I_C 第四組輸入數值I_D 第一組輸入數值I_A’ 第二組輸入數值I_B’ 第三組輸入數值I_C’ 第四組輸入數值I_D’ 第一組輸出數值O_A 第二組輸出數值O_B 第三組輸出數值O_C 第四組輸出數值O_D 步驟S401~S413使用像素通道置亂的卷積神經網路的演算流程
圖1顯示逐點卷積運算的示意圖;
圖2顯示一個篩選器與輸入數值中的一個位置的卷積運算示意圖;
圖3顯示使用像素通道置亂的卷積神經網路的演算方法的範例示意圖;
圖4顯示使用像素通道置亂的卷積神經網路的演算方法實施例流程圖;
圖5顯示實現使用像素通道置亂的卷積神經網路的演算方法的運算系統實施例示意圖;
圖6顯示使用像素通道置亂的卷積神經網路的演算方法執行像素置亂的實施例示意圖;
圖7顯示使用像素通道置亂的卷積神經網路的演算方法執行通道置亂的實施例示意圖;
圖8顯示使用像素通道置亂的卷積神經網路的演算方法執行卷積運算的實施例示意圖;
圖9顯示使用像素通道置亂的卷積神經網路的演算方法進行反向像素置亂的實施例示意圖。
S401取得原始輸入數值(H*W*C1) S403執行像素置亂(H/2*W/2*C1) S405執行通道置亂(I_A、I_B、I_C、I_D) S407捨棄,形成多組輸入數值(I_A’、I_B’、I_C’、I_D’) S409設定卷積核(C2個篩選器) S411執行卷積運算(H/2*W/2*C2) S413執行反向像素置亂(H*W*C2)
Claims (10)
- 一種使用像素通道置亂的卷積神經網路的演算方法,包括:以一運算系統接收一原始輸入數值,該原始輸入數值為具有一長度、一寬度與一深度的數值;通過該運算系統的一處理器,對該原始輸入數值執行一像素置亂,該像素置亂將該原始輸入數值分離為多組數值,以降低各組數值的維度;通過該處理器,對該多組數值執行一通道置亂,該通道置亂自該多組數值中分別選出參與一卷積運算的數值,形成多組新的輸入數值,暫存於該運算系統的一記憶體中,該通道置亂降低了該原始輸入數值的特徵圖數量;設定該多組新的輸入數值對應的卷積核,並包括有一第二數量的卷積核,各卷積核實現一篩選器,其中每個篩選器具有一第一數量的值;以及通過該處理器中的一乘法累加器,以該第二數量的篩選器與該多組新的輸入數值執行該卷積運算,其中,於該卷積運算中,每個篩選器的該第一數量的值和該多組新的輸入數值中每個位置該第一數量的值做乘法運算,再取一總和,該第二數量的篩選器經該卷積運算即形成該第二數量的特徵圖,形成具有該第二數量的多組輸出數值。
- 如請求項1所述的使用像素通道置亂的卷積神經網路的演算方法,其中該原始輸入數值為一影像數據,通過該運算系統執行該卷積運算以萃取影像特徵後,形成具有多組具有該第二數量深度的特徵圖。
- 如請求項2所述的使用像素通道置亂的卷積神經網路的演算方法,其中具有該第二數量的該多組輸出數值再經一反向像素置亂演算後,形成具有該第二數量深度的一影像特徵圖。
- 如請求項1所述的使用像素通道置亂的卷積神經網路的演算方法,其中,通過該通道置亂形成該新的輸入數值後,進一步捨棄各組數值中未被選擇參與該卷積運算的數值。
- 如請求項1所述的使用像素通道置亂的卷積神經網路的演算方法,其中該原始輸入數值具有該第一數量深度的數值,經該像素置亂與該通道置亂後,形成小於該第一數量深度的該多組新的輸入數值。
- 如請求項5所述的使用像素通道置亂的卷積神經網路的演算方法,其中該原始輸入數值為一影像數據,通過該運算系統執行該卷積運算以萃取影像特徵後,形成具有多組具有該第二數量深度的特徵圖。
- 如請求項6所述的使用像素通道置亂的卷積神經網路的演算方法,其中具有該第二數量的該多組輸出數值再經一反向像素置亂演算後,形成具有該第二數量深度的一影像特徵圖。
- 如請求項7所述的使用像素通道置亂的卷積神經網路的演算方法,其中該影像特徵圖用於識別該原始輸入數值。
- 如請求項1至8任一項所述的使用像素通道置亂的卷積神經網路的演算方法,其中,執行該卷積運算的各卷積核的長度、寬度與深度是任意正整數。
- 一種使用像素通道置亂的卷積神經網路的演算系統,包括:一處理器,以及電性連結該處理器的一通訊電路與一記憶體;其中,通過該處理器執行一使用像素通道置亂的卷積神經網路的演算方法,包括:接收一原始輸入數值,該原始輸入數值為具有一長度、一寬度與一深度的數值;對該原始輸入數值執行一像素置亂,該像素置亂將該原始輸入數值分離為多組數值,以降低各組數值的維度; 對該多組數值執行一通道置亂,該通道置亂自該多組數值中分別選出參與一卷積運算的數值,形成多組新的輸入數值,暫存於該記憶體中,該通道置亂降低了該原始輸入數值的特徵圖數量;設定該多組新的輸入數值對應的卷積核,並包括有一第二數量的卷積核,各卷積核實現一篩選器,其中每個篩選器具有一第一數量的值;以及通過該處理器中的一乘法累加器,以該第二數量的篩選器與該多組新的輸入數值執行該卷積運算,其中,於該卷積運算中,每個篩選器的該第一數量的值和該多組新的輸入數值中每個位置該第一數量的值做乘法運算,再取一總和,該第二數量的篩選器經該卷積運算即形成該第二數量的特徵圖,形成具有該第二數量的多組輸出數值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108121979A TWI719512B (zh) | 2019-06-24 | 2019-06-24 | 使用像素通道置亂的卷積神經網路的演算方法與系統 |
US16/790,979 US11275966B2 (en) | 2019-06-24 | 2020-02-14 | Calculation method using pixel-channel shuffle convolutional neural network and operating system using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108121979A TWI719512B (zh) | 2019-06-24 | 2019-06-24 | 使用像素通道置亂的卷積神經網路的演算方法與系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202101304A TW202101304A (zh) | 2021-01-01 |
TWI719512B true TWI719512B (zh) | 2021-02-21 |
Family
ID=74039320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108121979A TWI719512B (zh) | 2019-06-24 | 2019-06-24 | 使用像素通道置亂的卷積神經網路的演算方法與系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11275966B2 (zh) |
TW (1) | TWI719512B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112907600B (zh) * | 2021-03-10 | 2024-05-24 | 无锡禹空间智能科技有限公司 | 目标检测模型的优化方法及*** |
CN113469906B (zh) * | 2021-06-24 | 2023-02-07 | 湖南大学 | 一种用于图像修复的跨层全局和局部感知网络的方法 |
CN113284149B (zh) * | 2021-07-26 | 2021-10-01 | 长沙理工大学 | Covid-19胸部ct图像识别方法、装置及电子设备 |
CN113743582B (zh) * | 2021-08-06 | 2023-11-17 | 北京邮电大学 | 基于栈混洗的新型通道混洗方法和装置 |
TWI790789B (zh) * | 2021-10-22 | 2023-01-21 | 大陸商星宸科技股份有限公司 | 卷積運算方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8345984B2 (en) * | 2010-01-28 | 2013-01-01 | Nec Laboratories America, Inc. | 3D convolutional neural networks for automatic human action recognition |
CN104809426A (zh) * | 2014-01-27 | 2015-07-29 | 日本电气株式会社 | 卷积神经网络的训练方法、目标识别方法及装置 |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107729994A (zh) * | 2017-11-28 | 2018-02-23 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
TW201818301A (zh) * | 2016-11-14 | 2018-05-16 | 美商耐能股份有限公司 | 卷積運算裝置及卷積運算方法 |
CN207993065U (zh) * | 2017-01-04 | 2018-10-19 | 意法半导体股份有限公司 | 可配置的加速器框架设备和用于深度卷积神经网络的*** |
CN108875906A (zh) * | 2018-04-20 | 2018-11-23 | 华侨大学 | 一种多尺度逐步累加的卷积神经网络学习方法 |
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL281321B (en) * | 2016-10-04 | 2022-07-01 | Magic Leap Inc | Efficient data layouts for convolutional neural networks |
JP7072640B2 (ja) * | 2017-05-19 | 2022-05-20 | モヴィディウス リミテッド | 畳み込み効率を向上させる方法、システム、及び装置 |
CN108304923B (zh) * | 2017-12-06 | 2022-01-18 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
EP3514733A1 (en) * | 2018-01-18 | 2019-07-24 | Aptiv Technologies Limited | A device and a method for image classification using a convolutional neural network |
CN109345449B (zh) * | 2018-07-17 | 2020-11-10 | 西安交通大学 | 一种基于融合网络的图像超分辨率及去非均匀模糊方法 |
-
2019
- 2019-06-24 TW TW108121979A patent/TWI719512B/zh active
-
2020
- 2020-02-14 US US16/790,979 patent/US11275966B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8345984B2 (en) * | 2010-01-28 | 2013-01-01 | Nec Laboratories America, Inc. | 3D convolutional neural networks for automatic human action recognition |
CN104809426A (zh) * | 2014-01-27 | 2015-07-29 | 日本电气株式会社 | 卷积神经网络的训练方法、目标识别方法及装置 |
TW201818301A (zh) * | 2016-11-14 | 2018-05-16 | 美商耐能股份有限公司 | 卷積運算裝置及卷積運算方法 |
CN207993065U (zh) * | 2017-01-04 | 2018-10-19 | 意法半导体股份有限公司 | 可配置的加速器框架设备和用于深度卷积神经网络的*** |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107729994A (zh) * | 2017-11-28 | 2018-02-23 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN108875906A (zh) * | 2018-04-20 | 2018-11-23 | 华侨大学 | 一种多尺度逐步累加的卷积神经网络学习方法 |
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
Also Published As
Publication number | Publication date |
---|---|
US20200401847A1 (en) | 2020-12-24 |
US11275966B2 (en) | 2022-03-15 |
TW202101304A (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI719512B (zh) | 使用像素通道置亂的卷積神經網路的演算方法與系統 | |
CN110188239B (zh) | 一种基于跨模态注意力机制的双流视频分类方法和装置 | |
Li et al. | SiamVGG: Visual tracking using deeper siamese networks | |
WO2020119527A1 (zh) | 人体动作识别方法、装置、终端设备及存储介质 | |
CN110443286B (zh) | 神经网络模型的训练方法、图像识别方法以及装置 | |
Ren et al. | Face video deblurring using 3D facial priors | |
CN107871306B (zh) | 一种图片去噪的方法和装置 | |
WO2023146523A1 (en) | Event-based extraction of features in a convolutional spiking neural network | |
Hu et al. | Learning hybrid convolutional features for edge detection | |
CN110958469A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
CN113129212B (zh) | 图像超分辨率重建方法、装置、终端设备及存储介质 | |
CN109300531A (zh) | 一种脑疾病早期诊断方法和装置 | |
CN114821058A (zh) | 一种图像语义分割方法、装置、电子设备及存储介质 | |
CN114627035A (zh) | 一种多聚焦图像融合方法、***、装置及存储介质 | |
CN109948575A (zh) | 超声图像中眼球区域分割方法 | |
CN114219824A (zh) | 基于深度网络的可见光-红外目标跟踪方法及*** | |
CN111783862A (zh) | 多注意力导向神经网络的立体显著性物体检测技术 | |
CN115965844B (zh) | 基于视觉显著性先验知识的多聚焦图像融合方法 | |
Wang et al. | Exposure fusion using a relative generative adversarial network | |
CN116703768A (zh) | 盲点去噪网络模型的训练方法、装置、介质和设备 | |
CN112990370B (zh) | 图像数据的处理方法和装置、存储介质及电子设备 | |
Khan et al. | Binarized convolutional neural networks for efficient inference on GPUs | |
Peng et al. | MND-GAN: A research on image deblurring algorithm based on generative adversarial network | |
CN112785498B (zh) | 一种基于深度学习的病理图像超分建模方法 | |
CN114663720A (zh) | 基于孪生神经网络的目标跟踪方法、装置、介质及设备 |