TW202207090A - 用於二值化卷積神經網絡的處理器,邏輯芯片及其方法 - Google Patents

用於二值化卷積神經網絡的處理器,邏輯芯片及其方法 Download PDF

Info

Publication number
TW202207090A
TW202207090A TW110125803A TW110125803A TW202207090A TW 202207090 A TW202207090 A TW 202207090A TW 110125803 A TW110125803 A TW 110125803A TW 110125803 A TW110125803 A TW 110125803A TW 202207090 A TW202207090 A TW 202207090A
Authority
TW
Taiwan
Prior art keywords
feature map
convolution
binarized
output
unit
Prior art date
Application number
TW110125803A
Other languages
English (en)
Inventor
雷源
羅鵬
Original Assignee
香港商聯合微電子中心(香港)有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 香港商聯合微電子中心(香港)有限公司 filed Critical 香港商聯合微電子中心(香港)有限公司
Publication of TW202207090A publication Critical patent/TW202207090A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

本發明的實施例包括一種用於實現二值化卷積神經網絡(BCNN)的處理器。該處理器包括能執行二值化卷積運算和降採樣運算的共享邏輯模塊。通過調整共享邏輯模塊的參數,共享邏輯模塊可以在卷積模式和降採樣模式之間切換。在一些實施例中,該處理器可以是邏輯芯片。

Description

用於二值化卷積神經網絡的處理器,邏輯芯片及其方法
發明領域
本發明係有關於用於二值化卷積神經網絡的處理器,邏輯芯片及其方法。
發明背景
本發明與神經網絡技術相關。神經網絡是一種機器學習模型,用於接受輸入數據並通過一層或多層神經網絡層對輸入數據進行處理以輸出諸如分類或決策的輸出。每一神經網絡層的輸出將作為下一神經網絡層的輸入進行進一步處理。在整個神經網絡的輸入層和輸出層之間的那些層被稱為隱藏層。
卷積神經網絡是一類由一層或多層執行卷積功能的卷積層構建的神經網絡。卷積神經網絡應用於多個領域,包括但不限於,圖像和視頻識別,圖像和視頻分類,聲音識別和分類,面部識別,醫療數據分析,自然語言處理,用戶偏好預測,時間序列預測和分析等。
通常的,具有大量單元層的卷積神經網絡往往具有更好的性能,但同時對內存和計算資源的要求更高。因此,卷積神經網絡通常在具有強大的圖形處理單元(GPU)或張量處理單元(TPU)以及大量系統內存的計算機或服務器群集上實現。然而,隨著機器學習和人工智慧等應用的日益普及,現在亦希望能夠在資源有限的設備(例如智能電話,相機和平板電腦等)上實現卷積神經網絡的應用。
發明概要
相應的,本發明的第一方面提供了一種用於實現二值化卷積神經網絡(BCNN)的處理器,所述二值化卷積神經網絡包括多個層,所述多個層包括二值化卷積層和降採樣層;其中,所述二值化卷積層和所述降採樣層均由所述處理器的共享邏輯模塊執行,所述共享邏輯模塊包括:增強單元,用於基於增強參數對輸入到所述共享邏輯模塊的特徵圖進行增強;二值化卷積單元,用於基於卷積參數對輸入到所述共享邏輯模塊的特徵圖進行二值化卷積運算;和組合單元,用於將所述增強單元的輸出與所述二值化卷積單元的輸出進行組合;其中,通過調節所述增強參數和所述卷積參數中的至少一個,所述共享邏輯模塊可在卷積模式和降採樣模式之間切換。
本發明的第二方面提供了一種用於實現二值化卷積神經網絡的邏輯芯片,該邏輯芯片包括:共享邏輯模塊,其能夠對特徵圖執行二值化卷積操作和降採樣操作兩者;存儲器,用於存儲所述共享邏輯模塊的可調參數,其中,所述可調參數用於確定所述共享邏輯模塊執行二值化卷積操作或降採樣操作;和控制器或控制接口,其通過調整所述共享邏輯模塊的所述可調參數來控制所述共享邏輯模塊執行至少一項二值化卷積操作然後執行至少一項降採樣操作。
本發明的第三方面提供了一種方法,其經由實施二值化卷積神經網絡的處理器對圖像進行分類,所述方法包括:a)由所述處理器接收與待分類圖像相對應的第一特徵圖;b)由所述處理器接收第一組參數,其包括至少一個濾波器,至少一個步幅和至少一個增強變量;c)由所述處理器使用所述至少一個濾波器和所述至少一個步幅對所述第一特徵圖執行二值化卷積操作以產生第二特徵圖;d)由所述處理器使用所述至少一個增強變量對所述第一特徵圖執行增強操作以產生第三特徵圖;e)由所述處理器將所述第二特徵圖和所述第三特徵圖進行組合;f)接收第二組參數,其包括至少一個濾波器,至少一個步幅和至少一個增強變量;g)使用第二組參數代替第一組參數,並使用組合的所述第二和第三特徵圖代替第一特徵圖,重複步驟c)至e)。
本發明的進一步特徵和方面在所附申請專利範圍中提供。
具體實施方式
為了簡單和說明的目的,本公開主要通過參考其示例來描述。如本文中所用,術語“包括”(“includes”)是指包括但不限於,術語“包括”(“including”)是指包括但不限於。術語“包括”(“comprises”)是指包括但不限於,術語“包括”(“comprising”)是指包括但不限於。術語“基於”表示至少部分基於。術語“數”是指等於或大於一的任何自然數。術語“a”和“an”旨在表示特定元素中的至少一個。
圖1A所示為用於將圖片分類的一種卷積神經網絡(CNN)示例100。特徵圖1表示輸入卷積神經網絡以進行分類的輸入圖像。卷積神經網絡通過多個層處理輸入的特徵圖1並輸出分類結果180,例如是一系列選定圖像分類中的某一種,例如小轎車,卡車,貨車等。
在圖1A的示例中,輸入特徵圖用於表示圖像,但在其他示例中輸入特徵圖也可以表示音頻信號,醫療數據,自然語言文本或其他種類的數據。特徵圖包括多個元素中每個元素的值,並且在一些示例中可以用矩陣來表示。卷積神經網絡可以具有多個輸出節點。卷積神經網絡的輸出可以是與某一節點(例如卡車)相對應的一種分類,也可以是基於每個預定輸出節點的一種概率分佈(例如95%的汽車,3%的貨車,2%的卡車)。輸出可以是例如基於輸入特徵圖的分類或判定。
在輸入1和輸出180之間的卷積神經網絡層對於用戶可能是不可見的,因此被稱為隱藏層。卷積神經網絡的每一層都從前一層接收特徵圖,並對接收到的特徵圖進行處理以生成另一特徵圖從而輸出到下一層。因此,第一特徵圖1被輸入到卷積神經網路100並由卷積神經網絡的第一層110處理以產生第二特徵圖,其被輸入到卷積神經網絡的第二層120。之後,第二層120處理該第二特徵圖從而產生第三特徵圖,其被輸入到卷積神經網絡的第三層130,等等。CNN通常包括多個卷積層,多個降採樣層和一個或多個全連接層。
在圖1A的示例中,層110、130和150是卷積層。卷積層是將卷積函數應用於輸入特徵圖的層。圖1B所示為卷積操作的示例,其中輸入特徵圖1B與一濾波器(有時也稱為內核)110B進行卷積運算。卷積運算可以包括在輸入特徵圖上移動濾波器,並且在每個步驟中計算濾波器和輸入特徵圖的點積以產生輸出特徵圖111B的值。因此,在圖1B的示例中,將3×3濾波器110B乘以輸入特徵圖1B的3×3陰影區域,並且結果“15”作為輸出特徵圖111B左上單元。然後,如圖1B底部所示,將濾波器移至左側,並進行另一個點積,這一次得到值“16”作為特徵圖111B右上單元。繼續此過程,直到將濾波器移過輸入特徵圖的每個圖元進行計算並完成輸出特徵圖為止。卷積計算使卷積神經網絡識別特徵成為可能。由於卷積神經網絡具有許多層,較早的卷積層可以識別基本特徵(例如邊緣),而較後的層可以識別更抽象的特徵(例如對象的形狀或組成部分)。
在圖1A的示例中,層120和140是降採樣層。降採樣層是用於減小輸入特徵圖的尺寸的層。常規的神經網絡通過平均池化或最大池化的方式執行降採樣。在最大池化中,如圖1C所示,將輸入特徵圖1C的值劃分為子集(例如,圖1C中以灰色陰影顯示的2x2子集),每個子集的最大值作為輸出特徵圖111C的相應單元。在平均池化的方式中,每個子集的平均值作為輸出特徵圖111C的相應單元。通過減小傳遞到下一層的特徵圖尺寸並保留其中最重要的資訊,降採樣層將卷積神經網絡的節點數量保持在可管理的範圍內。
常規的卷積神經網絡使用大容量存儲器來存儲各種卷積濾波器的特徵圖和權重(值),並使用功能強大的處理器來計算各種卷積運算。這使得在一些資源受限的設備上難以實施卷積神經網絡運算,這些設備具有有限的內存和功能較弱的處理器,尤其是在卷積神經網絡具有許多層的情況下。雖然資源受限的設備可以在諸如專用集成電路(ASIC)或現場可編程門陣列(FPGA)的硬件邏輯芯片上實現卷積神經網絡,但由於此類邏輯芯片有限的內存和處理能力導致該實現具有挑戰性。此外,由於卷積層和池化層執行不同的邏輯操作,因此這些層需要不同的邏輯組件,這將消耗大面積的矽片空間,從而增加邏輯芯片的尺寸和成本。
因此,本公開提出了一種用於實現二值化卷積神經網絡(BCNN)的處理器,該處理器包括多個層,該多個層包括二值化卷積層和降採樣層,其中,二值化卷積層和降採樣層皆可通過處理器的共享邏輯模塊執行相關操作。通過調整共享邏輯模塊的參數,共享邏輯模塊可在用於執行卷積操作的卷積模式與用於執行降採樣操作的降採樣模式之間切換。共享邏輯模塊之所以被稱為共享邏輯模塊,是因為它能夠同時實現卷積神經網絡的卷積層和降採樣層,因此屬該兩類層的共享邏輯資源。共享邏輯模塊也可以稱為增強型二值化卷積模塊,其中的二值化表示該模塊執行的是二值化卷積運算,而增強型表示其既能夠執行降採樣運算也能夠執行卷積運算。
圖2所示為根據本發明實施例的處理器示例200。處理器200被配置為實現包括至少一個卷積層252和至少一個降採樣層254的卷積神經網絡250。處理器200包括共享邏輯模塊220,該共享邏輯模塊220用於接收輸入到該共享邏輯模塊的特徵圖201,根據該共享邏輯模塊的模塊參數224處理輸入特徵圖201,並基於此處理結果輸出特徵圖202。共享邏輯模塊220所執行的處理類型由參數224決定。通過調整參數224,共享邏輯模塊220即可在卷積模式和降採樣模式之間切換。
在卷積模式下,共享邏輯模塊220對輸入特徵圖201實施二值化卷積操作以實現卷積神經網絡的卷積層252,並輸出卷積特徵圖202。在降採樣模式下,共享邏輯模塊220對輸入特徵圖201實施降採樣操作以實現卷積神經網絡的降採樣層254,並輸出降採樣特徵圖202。
在一些實施例中,處理器200可以是邏輯芯片,諸如FPGA或ASIC。由於共享邏輯模塊220能夠執行卷積和降採樣操作兩者,因此與具有分離的卷積和降採樣模塊的常規卷積神經網絡邏輯芯片相比,共享邏輯模塊220的尺寸和/或成本可以大大減小。此外,由於是通過共享邏輯模塊220實現卷積層252的二值化卷積運算,因此與傳統的卷積神經網絡相比,其處理和存儲要求顯著降低。
在其他實施例中,共享邏輯單元220可以由處理器200可執行的機器可讀指令來實現。例如,卷積神經網絡可以在臺式計算機,服務器或雲計算服務等上實現,其中將對初始卷積神經網絡進行訓練並調整權重(“訓練階段”)。一旦對卷積神經網絡的訓練完成並最終確定了卷積權重,即可將其部署在邏輯芯片上以用於“推理階段”。
圖3A,3B和3C作為示意圖闡述了與先前技術相比,根據本發明實施例的硬件邏輯芯片,諸如FPGA或ASIC,如何使用更少的硬件組件和/或使用更少的矽片空間以實現所需功能。圖3B示出了卷積神經網絡示例300B,其包括以下系列層:第一卷積層310B,第二卷積層320B,第一降採樣層330B,第三卷積層340B,第二降採樣層350B和分類層360B。這些層可以執行諸如與圖1A中所示的卷積,降採樣和分類層同樣的功能。圖3A所示為根據本發明實施例的能夠實現圖3B中的卷積神經網絡300B的邏輯芯片示例300A。同時,圖3C所示為邏輯芯片300C的一種常規設計,其使用現有技術以實現圖3B中的卷積神經網絡300B。
可以看出,常規邏輯芯片300C針對卷積神經網絡300B的每一層都具有單獨的硬件模塊。因此,邏輯芯片300C總共具有六個模塊:第一卷積模塊310C,第二卷積模塊320C,第一池化模塊330C,第三卷積模塊340C,第二池化模塊350C和分類層360C。每個模塊實現卷積神經網絡的相應層,如虛線箭頭所示,例如,第一卷積層310B由第一卷積模塊310C實現,第一降採樣層330B由第一池化模塊330C實現等。
相比之下,與邏輯芯片300C的常規設計相比,邏輯芯片300A能夠以較少數量的硬件模塊來實現卷積神經網絡300B。這是因為邏輯芯片300A包括共享邏輯模塊(也可以稱為增強型二值化卷積模塊)320A,其能夠實現卷積層和降採樣層兩者。因此,如虛線所示,邏輯芯片300A的增強型二值化卷積模塊320A實現了卷積神經網絡300B的多個層320B,330B,340B和350B。換句話說,單個模塊320A執行由常規邏輯芯片300C中多個模塊所執行的功能。因此,與邏輯芯片300C相比,邏輯芯片300A可以具有更小的芯片尺寸和降低的製造成本。
在圖3A中,邏輯芯片300A包括共享邏輯模塊320A,存儲器322A和控制器326A。儘管在圖3A中將存儲器322A和控制器326A示為單獨的組件,但在其他示例中,存儲器和/或控制器可以集成入並成為共享邏輯模塊320A的一部分。共享邏輯模塊320A能夠對輸入到模塊320A的特徵圖執行二值化卷積操作和降採樣操作兩者。存儲器322A存儲可調參數324A,該可調參數324A用於確定共享邏輯模塊320A是對特徵圖執行二值化卷積操作還是降採樣操作。控制器326A被配置為通過調整共享邏輯模塊的可調參數324A以控制共享邏輯模塊320A執行至少一個二值化卷積操作,隨後執行至少一個降採樣操作。
在一個示例中,控制器326A可以存儲的一組適當的可調參數,並發送控制信號以使共享邏輯模塊讀取特徵圖並基於該組可調參數對該特徵圖執行操作。控制器326A可以是諸如控制邏輯芯片操作的處理組件。在其他示例中,控制器326A可以是控制接口,用於從外部設備接收控制信號至邏輯芯片300,其中該控制信號設置可調參數和/或控制共享邏輯模塊320A。
邏輯芯片300A還可以包括解碼模塊310A,該解碼模塊310A用於接收非二值化輸入,將該輸入轉換為二值化特徵圖並將二值化特徵圖輸出到共享邏輯模塊。在這種情況下,解碼意味著將非二值化特徵圖轉換為二值化特徵圖。例如,解碼模塊310A可以是卷積模塊,其接收輸入到邏輯芯片的特徵圖並執行卷積操作,接著執行二值化操作以將二值化的特徵圖輸出到模塊320A。在另一個實施例中,為了將非二值化輸入轉換為二值化特徵圖,解碼模塊可以將8位RGB數據轉換為色溫碼以替代使用卷積運算。邏輯芯片接收的輸入數據可以是諸如由照相機生成的圖像,聲音文件或其他類型的數據。在其他實施例中,邏輯芯片300A可以不包括解碼模塊,而是可以從外部解碼模塊接收二值化特徵圖。在此類實施例中,可以在單獨的邏輯芯片上實現解碼功能。
邏輯芯片300A還可以包括全連接層模塊360A,用於針對共享邏輯模塊320A輸出的特徵圖進行分類。因此,全連接層模塊360A實現了卷積神經網絡300B的分類層360B。在其他示例中,邏輯芯片300A可以不包括全連接層模塊,而是可以將特徵圖輸出到外部全連接層模塊。在這些其他示例中,分類層可以在單獨的邏輯芯片上實現。
在圖3A所示的實施例中,邏輯芯片300A包括共享邏輯模塊320A,存儲器322A和控制器326A。圖3D所示為根據本發明一個實施例的邏輯芯片300D,其中存儲器和控制器由外部設備提供並且不形成邏輯芯片的一部分。邏輯芯片300D包括共享邏輯模塊320D,該共享邏輯模塊320D具有至少一個輸入接口以接收輸入特徵圖301,可調參數324D和控制信號326D,以及一個輸出接口以輸出輸出特徵圖302。例如,可以從外部存儲器讀取輸入特徵圖301和可調參數。輸入特徵圖301可以是諸如在執行卷積神經網絡的前一層運算時在前一個處理週期中由外部解碼模塊輸出的特徵圖或由共享邏輯模塊輸出的特徵圖。在一些實施例中,輸入特徵圖可以是基於由照相機捕獲的圖像或由物理傳感器捕獲的數據。在實現了卷積神經網絡的最終降採樣或卷積層(例如圖3B中的層350B)之後,共享邏輯模塊320D可以將結果特徵圖輸出到另一個邏輯芯片,以實現卷積神經網絡的全連接層。
如上所述,在一些使用共享邏輯模塊320A、320D的實施例中,與常規設計相比,邏輯芯片300A、300D可以節省空間並且使用更少的硬件模塊。此外,當共享邏輯模塊320A、320D執行二值化卷積時,與執行非二值化卷積的常規邏輯芯片相比,所使用的存儲器和所需的處理能力可減少或降低。此外,當共享邏輯模塊320A、320D執行降採樣時,可以減少或避免在對二值化特徵圖執行平均或最大池化時經常發生的資訊丟失。
圖4示出了根據本發明實施例的用於實現卷積神經網絡的另一處理器示例400。處理器400包括共享邏輯模塊420,該共享邏輯模塊420用於實現卷積神經網絡450的卷積層452和降採樣層454兩者。這可以通過調整共享邏輯模塊420的參數P1,P2來完成。處理器400,共享邏輯模塊420,卷積神經網絡450以及層452和454可以對應於圖2所示實施例中的處理器200,共享邏輯模塊220,CNN 250以及層252和254。
共享邏輯模塊420可以包括增強單元422,二值化卷積單元424和組合單元426。增強單元422可以被配置為基於至少一個增強參數P1來增強輸入到共享邏輯模塊的特徵圖。二值化卷積單元424可以被配置為基於至少一個卷積參數P2對輸入到共享邏輯模塊的特徵圖401執行二值化卷積操作。組合單元426可以被配置為將增強單元422的輸出與二值化卷積單元424的輸出相組合。通過調節增強參數P1和卷積參數P2中的至少一個,共享邏輯模塊420可以在卷積模式和降採樣模式之間切換。
在一些實施例中,處理器400可以僅包含共享邏輯模塊420,而在其他實施例中,處理器400可以包括由虛線430所示的其他模塊。例如,這些其他模塊可以包括解碼模塊和全連接層模塊等。
與圖2中的實施例相類似,因為圖4的共享邏輯模塊420能夠執行卷積和降採樣兩者,在硬件邏輯芯片上實現卷積神經網絡所需的邏輯組件的數量將會減少。由於共享邏輯單元具有二值化卷積單元,因此與非二值化方式相比,其可以用較小的存儲和處理能力來實現卷積層。此外,由於降採樣是由二值化卷積單元和/或增強單元來處理,而不是由平均池化或最大池化來處理,從而避免或減少了將平均池化或最大池化應用於二值化特徵圖時發生的信息丟失。
增強單元還可以幫助避免卷積層中的資訊丟失。使用二值化卷積神經網絡的困難之一是資訊丟失,尤其是經過幾次二值化卷積之後容易在網絡的較深層中丟失,這會阻礙卷積神經網絡的訓練過程和識別模式的能力。在圖4所示的處理器架構中,在每一層,將輸入特徵圖401提供至增強單元422和二值化卷積單元424,並且將增強單元422的輸出與二值化卷積單元424的輸出相組合。由於增強單元所執行的增強操作可以保留輸入特徵圖的部分或全部原始數據,並將此類資訊傳遞到下一層,上述構架將有助於避免或減少過多的資訊丟失。
在一個實施例中,組合單元被配置為將增強單元的輸出與二值化卷積單元的輸出進行級聯。
增強單元422被配置為通過執行至少一個增強操作來增強輸入特徵圖401。增強操作是在保持輸入特徵圖的某些特性的同時,基於輸入特徵圖生成新的特徵圖的操作。增強操作可以包括諸如恒等功能,縮放功能,鏡像功能,翻轉功能,旋轉功能,頻道選擇功能和裁剪功能中的一項或多項。恒等功能複製輸入,以使從增強單元輸出的特徵圖與輸入到增強單元的特徵圖相同。縮放功能將輸入特徵圖的每個單元的值乘以相同的因數。例如,如果縮放因子為2,則每個單元值加倍;如果縮放因子為0.5,則每個單元值減半。如果縮放因子為0,則輸出為空。空輸出表示沒有輸出,或是其每個單元值皆為0的輸出特徵圖。鏡像,翻轉和旋轉功能分別用於鏡像翻轉特徵圖,繞軸翻轉特徵圖或旋轉特徵圖。通道選擇功能用於從特徵圖中選擇某些單元並丟棄其他單元,例如,隨機選擇某些行或所有偶數行或列,同時丟棄奇數行或列等。裁剪功能會刪除某些單元格以縮小特徵圖的尺寸,例如,移除圍繞特徵圖邊緣的單元。
在一個示例中,增強單元422被配置為對特徵圖執行縮放功能,並且增強參數P1是縮放因子。在一個實施例中,在卷積模式下將縮放因子設置為非零值,並且在降採樣模式下將縮放因子設置為零值。這樣在降採樣模式中增強單元的輸出為空值且可在降採樣模式中被丟棄。在硬件實現中,在縮放因子為零的操作模式下,可以跳過增強操作以節省能量和處理能力。在通過級聯進行組合的情況下,來自增強單元的空值可以減少輸出通道的數量,從而使得輸出通道的數量以及特徵圖的尺寸降低,這可能是一些卷積神經網絡構架中的降採樣層所需要的。
圖5A所示為根據本發明實施例的採用處理器的共享邏輯模塊以實現二值化卷積神經網絡(BCNN)的卷積層的示例方法500A。例如,該方法可以由圖4中處理器400的共享邏輯模塊420當其在卷積模式下時來實現。
在方框510A中,共享邏輯模塊接收輸入特徵圖。輸入特徵圖可以是諸如輸入到二值化卷積神經網絡的特徵圖或從二值化卷積神經網絡的前一層接收的特徵圖。
在方框520A中,共享邏輯模塊接收用於執行卷積層的增強參數和卷積參數。例如,共享邏輯模塊可以從存儲器讀取這些參數或通過控制指令接收這些參數。
在方框530A中,通過增強單元對輸入特徵圖執行增強操作。
在方框540A中,通過二值化卷積單元對輸入特徵圖執行二值化卷積操作。
在方框550A中,將二值化卷積單元與增強單元的輸出進行組合。
在方框560A中,基於方框550中的組合輸出特徵圖。
例如,可以在方框550A中將增強單元和二值化卷積單元輸出的特徵圖進行級聯,然後可以在方框560A中輸出級聯的特徵圖。
圖5B示出了根據本發明的採用處理器的共享邏輯模塊以實現二值化卷積神經網絡的降採樣層的示例方法500B。例如,該方法可以由圖4中處理器400的共享邏輯模塊420在降採樣模式時實現。
在方框510B中,共享邏輯模塊接收輸入特徵圖。輸入特徵圖可以是諸如輸入到二值化卷積神經網絡的特徵圖或從卷積神經網絡的上一層接收的特徵圖。
在方框520B中,共享邏輯模塊接收用於執行卷積層的增強參數和卷積參數。例如,共享邏輯模塊可以從存儲器中讀取這些參數,或者可以通過控制指令接收這些參數。
在方框530B中,通過增強單元對輸入特徵圖執行增強操作。
在方框540B中,通過二值化卷積單元對輸入特徵圖執行二值化卷積操作。
在方框550B中,將二值化卷積單元和增強單元的輸出進行組合。
在方框560B中,基於方框550中的組合,輸出一個或多個特徵圖。
例如,可以在方框550B中將增強單元和二值化卷積單元輸出的特徵圖進行級聯,並可以向方框560B中輸出該級聯的特徵圖。
應當理解,共享邏輯模塊的處理塊在卷積和降採樣模式下相同,但是所使用的參數不同。因此,通過調整參數,增強二值化卷積模塊可以在卷積模式和降採樣模式之間切換。從以上圖4、5和6的示例中可以認識到,本發明涉及兩個主要操作 - 二值化卷積和增強。以上已闡述了增強操作的示例。現在將參照圖6以非限制性示例的方式描述二值化卷積的示例。
如圖6所示,二值化卷積600的操作類似於圖1B所示的普通(非二值化)卷積的操作。即,濾波器620在輸入特徵圖610上移動,並且在每一步計算濾波器正對當前元素的點積。在每一步中,濾波器都會跨越或沿著輸入特徵圖移動等於步幅的多個單元。每一步的值之和形成輸出特徵圖630的單元值。但是,與普通卷積不同的是,在普通的卷積中單元可能具有許多不同的值,然而在二值化卷積中,輸入特徵圖610和濾波器620的值被二值化了。即是說,這些值被限制為兩個可能值之一,例如。1和0。這大大減少了執行卷積運算所需的內存,因為只需要1位來保存輸入特徵圖的每個單元和濾波器所計算的每個單元的值。此外,由於乘積值為1或0,從而大大簡化了點積計算,因此可以使用XNOR邏輯門來計算點積。由於普通卷積可能涉及浮點運算,並且通常使用功能更強大的處理器或更複雜的邏輯門佈置,因此,與普通(非二值化)卷積相比,用於二值化卷積的邏輯電路所需的處理能力和複雜度大大降低。
在一個示例中,共享邏輯模塊或增強二值化卷積模塊使用的參數包括濾波器和步幅。濾波器可以是在特徵圖上移動以執行卷積運算的矩陣,步幅表示濾波器在卷積運算的過程中每一步所移動的單元數。
圖7所示為根據本發明實施例的增強二值化卷積模塊700的示意性示例。它可以用作諸如圖2、3A,3D或圖4中的共享邏輯模塊或可以用來實現圖5A和圖5B的方法。
增強型二值化卷積模塊700可以包括存儲器710和控制器或控制接口750。存儲器710可以存儲輸入特徵圖718,該輸入特徵圖718將根據一系列參數進行處理,包括旁路參數712,步幅714和濾波器716。旁路參數712可以對應於圖4中的增強參數P1,步幅和濾波器可以對應於圖4中的卷積參數P2。儘管在圖4中僅示出了一個步幅,濾波器,增強參數以及特徵圖,但本領域技術人員應當理解的是,存儲器710亦可以存儲多個步幅,濾波器,增強參數和/或特徵圖。
增強型二值化卷積模塊700包括增強型二值化卷積單元730,旁路單元720,級聯器740。增強型卷積模塊可以接收輸入特徵圖718並且將輸入特徵圖718存儲在存儲器中。例如,可以從增強型二值化卷積模塊700的前一處理週期或者從諸如解碼模塊的另一邏輯模塊接收輸入特徵圖718。
二值化卷積單元730被配置為對輸入特徵圖執行二值化卷積運算。單元730可以對應於圖4中的二值化卷積單元424。二值化卷積單元可以包括用於執行二值化卷積運算的邏輯門,例如XNOR門。當濾波器以與步幅相等的步長在輸入特徵圖上移動時,二值化卷積單元可以將輸入特徵圖718的值與濾波器716的值相乘。二值化卷積單元730可以將二值化卷積的結果輸出到級聯器740。
旁路單元720被配置為將輸入特徵圖轉發給級聯器740。旁路單元720之所以被稱為旁路單元是因為他旁路了二值化卷積運算。在一些實施例中,旁路單元可以被配置為在將輸入特徵圖轉發給連接器之前,對輸入特徵圖執行增強操作。因此,旁路單元可以與圖4的增強單元422以類似的方式運作。
級聯器740被配置為將二值化卷積單元的輸出與旁路單元的輸出級聯。級聯器可以對應於圖4的組合單元426。
圖8所示增強二值化卷積模塊800的示意圖示例,連同輸入到該模塊的特徵圖801和從該模塊輸出的特徵圖804。圖8是具體實現方式的示例並且本發明不限於圖8所示的特徵的具體設置。相反,圖8只是以上圖2-7中描述的增強二值化卷積模塊和共享邏輯模塊的一種可能的實現方式。
增強二值化卷積模塊800包括增強單元820,二值化卷積單元830和級聯器840。這些單元可以以與前述實施例所述的增強或旁路模塊,二值化卷積模塊以及級聯器相同的方式操作。增強二值化卷積模塊800還包括控制器850和一個或多個存儲器,該存儲器存儲包括用於增強模塊的縮放因子822以及用於二值化卷積單元的濾波器832和步幅834。控制器850控制模塊800的操作順序。例如,控制器可以設置縮放因子822,濾波器832和步幅834,可以使輸入特徵圖801輸入到增強單元820和二值化卷積單元830,並且可以指示增強單元820和二值化卷積單元830對輸入特徵圖執行增強和卷積操作。
如圖8所示,可以有多個被稱為第一特徵圖的輸入特徵圖801。每個特徵圖包括多個值,也稱為激活。該特徵圖是二值化的,例如每個值都是1或0。每個輸入特徵圖都可被視為當前層的輸入通道,因此,如果有5個尺寸為32 x 32的輸入特徵圖,則可以說,當前層具有5個輸入通道,其尺寸為32 x 32。第一特徵圖801將被輸入到增強單元820和二值化卷積單元830兩者。
二值化卷積單元830可以使用濾波器832並基於步幅參數834在每個第一特徵圖801上執行諸如上圖6所述的二值化卷積操作。二值化卷積單元可以執行n×n二值化卷積運算,其採用尺寸為n×n(例如在圖6的示例中為3×3)的濾波器進行二值化卷積運算。在一些實施例中,在n×n二值化卷積操作之後跟著是批量歸一化操作836和/或二值化激活操作838。
批量歸一化操作836用於將二值化卷積得到的輸出特徵圖進行標準化處理的過程。在本領域中已知各種類型的批量歸一化操作。批量歸一化的一種可能方法包括計算從二值化卷積輸出的特徵圖中所含圖元值的平均值和標准偏差,並使用這些統計資訊執行歸一化操作。批量歸一化可以幫助減少內部協變量偏移,穩定學習過程並減少訓練卷積神經網絡所需的時間。
二值化激活操作838是對特徵圖的值進行二值化的操作。二值化激活可被應用於諸如由批量歸一化操作836處理後的特徵圖,又或者如果沒有批量歸一化操作,則直接應用於二值化卷積830的輸出。由圖6可以看出,由二值化卷積輸出的特徵圖的激活值並非二值化並且可以大於1。因此,二值化激活操作838進一步將這些激活值二值化以輸出如圖8所示的二值化特徵圖802。
在一些實施例中,通過將批量歸一化操作的參數與n x n二值化卷積操作以及二值化激活操作的參數合並,從而可以將n x n二值化卷積操作,批量歸一化和二值化激活操作壓縮進單一的計算塊。例如,一旦將卷積神經網絡訓練好後,可在推理階段將以上三項操作壓縮進單個計算塊,以降低用於實現卷積神經網絡的硬件的複雜性。例如,為了將單元830、836和838壓縮到單個計算塊,可以將批量歸一化操作836替換為符號函數,並且可以將批量歸一化的運行平均值參數γ和運行方差參數β歸入二值化卷積的濾波器832的激活值中。
因此,二值化卷積單元830在輸入特徵圖801上執行卷積運算並輸出一組被稱為第二特徵圖的特徵圖802,該組特徵圖可以被稱為第二特徵圖。同時,增強單元820對輸入的特徵圖801執行增強操作。例如,增強操作可以是根據縮放因子822執行的縮放操作。增強單元輸出一組可以被稱為第三特徵圖的特徵圖803。
級聯器840將第二特徵圖802與第三特徵圖803級聯,從而生成一組包含第二特徵圖804-2和第三特徵圖804-3的輸出特徵圖804。第二特徵圖和第三特徵圖可以以任何順序級聯。例如,如圖8所示,可將第三特徵圖放置在前面,將第二特徵圖放置在其後面,反之亦然。
儘管圖8示出的級聯,其中由增強單元輸出的所有特徵圖804-3保持在一起以及由二值化卷積單元輸出的所有特徵圖804-2保持在一起,但根據本公開的級聯並非僅限於此。二值化卷積單元和增強單元的輸出可以逐通道進行級聯(即,逐特徵圖),而不是將每個單元的所有通道並在一起。因此,例如,級聯器可以輸出增強單元的第一輸出通道,接著輸出二值化卷積單元的第一輸出通道,之後輸出增強單元的第二輸出通道,等等。可以將增強單元和二值化卷積單元的各個輸出通道按任何順序或組合進行級聯,就像洗一副紙牌一樣。在不同實施例中,可以隨機地或根據預定方案來確定通道組合的順序。
圖9所示為增強二值化卷積模塊800處於卷積模式用於實現卷積神經網絡的卷積層時的操作示例。在本實施例中,設置卷積參數包括濾波器930和步幅,其中步幅在該示例中被設置為1。在此實施例中,增強操作是將縮放因子設置為1的縮放操作,因此增強操作複製輸入特徵圖910。
為便於卷積操作,可以對輸入特徵圖910進行填充。填充涉及在輸入特徵圖910的外圍添加額外單元以增加特徵圖的尺寸。例如,在圖9中,輸入特徵圖910原本尺寸為6×6,通過在外圍添加值為1的單元,使得填充後的輸入特徵圖920具有7×7的尺寸。在其他實施例中,可以通過添加值為0的單元進行填充。通過特徵圖填充增加了濾波器930可以在特徵圖上移動的範圍,並且可以允許更準確的特徵分類或提取。
然後,將填充後的輸入特徵圖920與濾波器930進行卷積。由於特徵圖920和濾波器930都被二值化,所以卷積是二值化卷積。在卷積的每個步驟中,濾波器930在特徵圖920上每一步移動的單元數量與步幅相等,在圖9所示的實施例中,該步幅設置為1。圖9中的虛線示出了當濾波器在特徵圖920上移動時所進行的三步卷積操作。在卷積運算的每一步中,濾波器的每個單元的值與特徵圖的每個單元的相應值相乘,並將所有乘積結果相加,作為輸出特徵圖940的單個單元的值。因此,卷積運算中的每一步將提供輸出特徵圖940中單個單元的值。在一個實施例中,輸入特徵圖910對應於圖8的第一特徵圖801,輸出特徵圖940對應於圖8的第二特徵圖802。由於填充,濾波器930可以在特徵圖920上一共移動6步,因此在該實施例中,輸出特徵圖940的尺寸為6×6,其與輸入特徵圖的尺寸相同。
在圖9所示的實施例中,由於縮放因子被設置為1,因此在操作過程中將輸入特徵圖910進行複製(例如,該複製的特徵圖對應於圖8中的第三特徵圖803)。將複製的輸入特徵圖910與輸出特徵圖940進行級聯950。相級聯的特徵圖910、940對應於圖8中的輸出特徵圖804。
因此,可以理解的是,在一些實施例中,在卷積模式中,二值化卷積單元被配置為其輸出特徵圖的尺寸與其輸入特徵圖的尺寸相同。這可以通過選擇適當尺寸的濾波器,選擇適當步幅和/或對輸入特徵圖進行適當填充來實現。在其他實施例中,卷積神經網絡的構架可以包括卷積層,其輸出特徵圖的尺寸小於其輸入特徵圖的尺寸,在這種情況下,當實現此類層時,可將二值化卷積單元配置為輸出小於其輸入特徵圖的尺寸的特徵圖。
在降採樣模式下,增強二值化卷積模塊執行降採樣操作,該操作減小了輸入特徵圖的尺寸。常規的卷積神經網絡使用最大池化或平均池化執行降採樣。然而,如圖10A所示,當對輸入特徵圖進行二值化時,平均池化和最大池化可能導致資訊丟失。例如,儘管圖10A中的特徵圖1001和1002彼此不同,但是當對二者採用2 x 2單元的平均池化時,將產生0.5和1的輸出值,如果將0.5的值舍入到最接近的二進制值,那麽輸出將是相同的。同時,特徵圖1003和1004很不同,但是當應用最大池化操作時,兩者的輸出值皆為1。
本發明的實施例通過對至少部分降採樣的操作使用二值化卷積從而避免或減少資訊丟失。圖10B示出了一個示例,其中對輸入特徵圖1010進行填充,並且將填充後的特徵圖1020與濾波器1030進行卷積以產生輸出特徵圖1040,與圖9所示的操作類似。濾波器可以被設置為針對降採樣的濾波器,其與用於二值化卷積操作的濾波器可以相同或不同。可以將步幅設置為適用於降採樣的值。在一些實施例中,可將步幅設置為等於或大於2的整數值。通常,步幅越大,輸出特徵圖1040的尺寸就越小。
因此,當執行降採樣操作時,二值化卷積單元可被配置為其輸出特徵圖的尺寸小於其輸入特徵圖的尺寸。輸出特徵圖的大小取決於是否進行了填充,濾波器的尺寸以及步幅的大小。因此,通過選擇合適的濾波器和步幅,二值化卷積單元可以被配置為其輸出特徵圖的尺寸小於其輸入特徵圖的尺寸。
在圖10B所示的實施例中,增強操作是縮放操作,但縮放因子被設置為零的。這使得增強單元(也可以稱為旁路單元)的輸出為空。在這種情況下,由於輸出包括二值化卷積單元輸出的特徵圖1040而並沒有來自增強單元的特徵圖,因此輸出通道的數量將會減少。由此參照圖8,在增強單元的輸出為空輸出的情況下,由增強二值化卷積模塊輸出的特徵圖804將僅包括第二特徵圖804-2。
因此可以理解,在一些實施例中,當增強二值化卷積模塊執行降採樣操作時,增強單元可被配置為輸出空輸出至級聯器。這將有助於減少從降採樣層輸出的輸出通道的數量。
儘管圖10B所示實施例中的增強單元在降採樣模式下輸出為空值,圖10C示出了另一實施例,其中增強單元在降採樣模式下輸出實際值(即非空)。圖10C中的二值化卷積單元的操作與圖10B中的相同,並且相同的附圖標記表示相同的特徵,即,對輸入特徵圖1010進行填充1020,並且與濾波器1030進行卷積以生成輸出特徵圖1040。輸出特徵圖1040可以對應於諸如圖8中的輸出特徵圖802。但是,與圖10B不同的是,在圖10C中,增強單元的輸出與輸出特徵圖1040級聯1050。
增強單元可以執行任何增強操作,但是,為了說明的目的,在圖10C的實施例中,增強單元將執行與圖9中類似的恒等操作。看待這點的一種方式是,在圖10B中,增強單元執行的是縮放因子為0的縮放操作(輸出空輸出),而在圖10C中,增強單元執行的是縮放因子為1的縮放操作(即恒等操作)。在一些其他實施例中,縮放係數在降採樣模式下可以具有其他非零值。例如,在一些實施例中,降採樣模式下的縮放因子可以大於0但小於1。
增強單元(亦可稱為旁路單元)可以在將其輸入到增強單元的特徵圖轉發給級聯器之前執行裁剪或採樣操作以減小該特徵圖的大小。通過此方式,當執行降採樣操作並且增強單元的輸出不為空時,可以將增強特徵圖裁剪為與從二值化卷積單元輸出的特徵圖1040相同的大小。例如,在圖10C中,增強單元複製尺寸為6×6的輸入特徵圖1010,但是將特徵圖裁剪為3×3,以使其與從二值化卷積單元輸出的特徵圖1040具有相同的大小。以這種方式,從增強單元和二值化卷積單元輸出的特徵圖具有相同的大小並且可以被級聯。
可以理解,在圖6、9、10B和10C的實施例中僅示出了一個輸入特徵圖,而圖8的實施例示出了多個輸入特徵圖801。實際上,在許多情況下都是將多個特徵圖(也稱為多個輸入通道)輸入至增強二值化卷積模塊或共享邏輯模塊。例如,卷積神經網絡的輸入可以包括二維圖像的RGB值,其可以由三個輸入特徵圖(即,三個輸入通道,各用一個特徵圖表示紅色,綠色和藍色的值)表示。在某些情況中,卷積神經網絡可以包括解碼模塊,其可以輸出多個特徵圖至增強二值化卷積模塊。此外,當實現卷積神經網絡的降採樣層中的卷積操作時,共享邏輯或增強二值化卷積模塊的輸出可以包括多個輸出特徵圖(輸出通道),這些輸出特徵圖可以輸入回共享邏輯模塊或增強二值化卷積模塊中,以實現卷積神經網絡的下一層操作。
因此,儘管圖6、9、10B和10C示出了單個輸入特徵圖和二維濾波器,應當理解,當存在多個輸入特徵圖時,濾波器可以具有與輸入特徵圖數量相同的深度,並且濾波器可以一次應用於所有輸入特徵圖。例如,如果有五個輸入通道,則濾波器的深度可為五層,並且濾波器的每一層都具有相同的值(也稱為激活或激活值)。因此,濾波器與從第一個輸入通道到最後一個輸入通道中的輸入通道切片相重疊,並且點積的總和用於為輸出通道提供激活。在卷積的每個步驟中,可以將每個輸入通道與濾波器的點積相加,以產生輸出通道的單個單元。因此,可以理解的是,不管輸入通道(輸入特徵圖)的數量如何,二值化卷積單元中的每個濾波器都生成單個輸出通道(輸出特徵圖)。因此,來自二值化卷積單元的輸出通道的數量等於濾波器的數量。
來自增強單元的輸出通道的數量取決於所執行的增強操作的數量。增強操作的數量可以由增強參數和/或來自控制器或控制接口的控制信號來控制。在一些實施例中,在卷積模式下,增強單元被配置為產生與二值化卷積單元的輸出通道的數量相同的輸出通道數量。例如,如果二值化卷積單元具有十個輸出通道,則增強單元亦具有十個輸出通道,這樣,增強二值化卷積模塊或者說共享邏輯模塊將總共有二十個輸出通道。
在一些實施例中,在降採樣模式下,共享邏輯模塊(例如,增強二值化卷積模塊)被配置為其輸出通道數量少於其輸入通道數量。以這種方式,降採樣層不僅可以減小輸入特徵圖的尺寸,亦可以減小輸出通道的數量。這將有助於防止卷積神經網絡變得太大或太複雜。一種減少輸出通道數量的方式是使增強單元的輸出為空,例如,由於縮放因子為零。
因此,在一些實施例中,在降採樣模式下,增強單元被配置為提供空輸出,使得在降採樣模式下共享邏輯模塊的輸出僅包括二值化卷積單元的輸出。
在卷積神經網絡中,二值化有時會導致數據丟失,從而引致更深層的運算結果逐漸趨向於零。在本公開的一些實施例中,在卷積模式下,可以通過將增強單元的輸出與增強單元的輸出進行級聯從而將來自先前層的特徵圖的資訊提供給卷積神經網絡的後續層。這將有助於防止或減少此類資訊的丟失。在一些實施例中,增強操作是一恒等操作。在其他實施例中,增強操作可以對輸入特徵圖引入較小的修改(例如,通過縮放,旋轉,翻轉或鏡像操作等),這可以幫助增強卷積神經網絡在輸入數據的較小變化時的不變性。
圖11所示為實施例1100,其闡述了通過級聯的方式如何使得資訊能夠被保留並通過卷積神經網絡的一層或多層進行傳播。
在方框1110中,將一組特徵圖輸入到卷積神經網絡。在此實施例中,輸入特徵圖包括三個尺寸為32 x 32的通道,其在圖11中表示為32 x 32 x 3。
在方框1120中,執行卷積操作,產生64個尺寸為32×32的輸出通道。卷積操作可以由諸如解碼模塊執行。
在方框1130中,可以對卷積操作1120輸出的特徵圖進行二值化。因為一共有64個特徵圖,並且它們的尺寸為32 x 32,可將這些特徵圖表示為32 x 32 x 64。這組特徵圖在圖11中被稱為①。這些特徵圖①可以輸入到共享邏輯模塊或增強二值化卷積模塊。
在方框1140中,將來自方框1130的特徵圖①輸入到增強二值化卷積模塊的二值化卷積單元中,並使用8個尺寸為3 x 3的相異濾波器執行第一二值化卷積操作。該第一二值化卷積操作生成8個特徵圖(由於有8個濾波器),每個特徵圖的尺寸為32 x 32。
在方框1150中,二值化卷積單元輸出由第一二值化卷積操作生成的8 x 32 x 32的特徵圖。這組特徵圖在圖11中稱為②。
在方框1160中,將來自第一二值化卷積操作的特徵圖②與輸入到增強二值化卷積模塊的特徵圖①相級聯。例如,增強單元可以執行恒等操作,並將輸入的特徵圖①轉發到級聯單元。然後,級聯單元將特徵圖①與從二值化卷積單元輸出的特徵圖②進行級聯。級聯的特徵圖在圖11中被稱為③,其包括72個通道(特徵圖),因為這是來自方框1130的64個特徵圖①和來自方框1150的8個特徵圖②的總和。級聯特徵圖③具有尺寸32 x 32,因此在圖11中被表示為32 x 32 x 72。之後,將級聯特徵圖③輸出到下一個處理階段。例如,級聯特徵圖③可以被再次輸入回增強二值化卷積模塊的二值化卷積單元和增強單元中。
在方框1170中,使用尺寸為3 x 3的8個不同的濾波器對特徵圖③執行第二二值化卷積操作。這8個濾波器可以與方框1140中使用的濾波器相同。因此,第一二值化卷積運算中的濾波器可以在第二二值化卷積運算中重複使用。因此,第二二值化卷積運算亦產生8個尺寸為32 x 32的輸出特徵圖(因為有8個過濾器)。
在方框1180中,二值化卷積單元輸出由第二二值化卷積運算產生的8個32 x 32的特徵圖(表示為32 x 32 x 8)。這組特徵圖在圖11中稱為④。
在方框1190中,將從第二二值化卷積操作輸出的特徵圖④與在方框1160中輸入到增強二值化卷積模塊的特徵圖③進行級聯。例如,增強單元可執行恒等操作並將輸入特徵圖③轉發至級聯單元,之後級聯單元可以將特徵圖③與特徵圖④級聯。在圖11中將級聯的特徵圖④,③稱為特徵圖⑤。因為特徵圖⑤是72個特徵圖③和8個特徵圖④的總和,因此有80個輸出特徵圖⑤(即80條通道)。特徵圖⑤具有32×32的尺寸,因此在圖11中表示為32×32×80。
至此,已經描述了兩個增強二值化卷積操作。第一增強二值化卷積操作對應於方框1140至1160,第二增強二值化卷積操作對應於方框1170至1190。此後的增強二值化卷積操作可以由增強二值化卷積模塊以相同的方式執行。在圖11所示的實施例中,總共有八個這樣的增強二值化卷積運算,而第三至第八個運算將由方框1190和方框1195之間的虛線表示。
方框1195所示為八次二值化卷積運算結束時的輸出,為32 x 32 x 128,即128個輸出特徵圖(通道),每個特徵圖具有32 x 32的尺寸。有128個輸出通道是因為有經由級聯轉發的64個輸入通道,以及經過方框1140、1160等中的第一至第八個二值化卷積運算生成的8 x 8 = 64個輸出通道,得到總共64 + 64 = 128個輸出通道。
每個二值化卷積運算都可以使用如方框1140和1170中使用的相同的一組8個濾波器。通過採用這種方式,節省存儲資源,因為在執行64個二值化卷積運算並生成128個輸出通道的操作過程中,僅需要在存儲器中保存8個濾波器,因為這些過濾器在每個重複反覆運算中被反複使用。與此相異的,用於實現具有128個輸出通道的卷積神經網絡構架的常規卷積處理模塊將需要存儲128個濾波器的存儲空間(每個輸出通道對應一個濾波器)。
因此,可以理解,根據本發明的某些實施例,二值化卷積單元可被配置為將一連串n個濾波器應用X次以產生X * n個輸出通道。在本文中,n是濾波器的數量(例如,在圖11的實施例中為8),X是應用該連串濾波器的次數(例如,在圖11的實施中為8次)。以這種方式重複使用同一連串過濾器可以大大減少實現卷積神經網絡所需的內存。
將增強單元的輸出與二值化卷積操作的輸出相級聯可以進一步增加輸出通道的數量,同時亦不會顯著增加所需的存儲資源。此外,如上所述,增強單元和級聯操作可以幫助避免或減少在二值化卷積神經網絡中可能發生的資訊丟失。
圖12所示為根據本發明可以由方法、處理器或邏輯芯片實現的二值化卷積神經網絡的構架示例1200。例如,圖12的構架可以通過以上參考圖1-11所描述的本發明的任一實施例來實現。
如圖12中第1210行所示,卷積神經網絡接收32 x 32 x 3的輸入,即3個尺寸為32 x 32的輸入通道。
後續行對應於卷積神經網絡的層,其中第一列表示該層的類型,第二列表示該層的輸出尺寸,第三列表示由該層所執行的操作。每一層的輸出形成下一層的輸入。
因此,行1220顯示卷積神經網絡的第一層是卷積層,該卷積層接收32 x 32 x 3的輸入(上一層的輸出)並輸出特徵圖32 x 32 x 64(即64個尺寸為32 x 32的輸出通道)。例如,該層可以由諸如圖3A所示的解碼模塊310A來實現。在一些實施例中,第一卷積層的輸入1210可以沒有被二值化,而第一卷積層1210的輸出將被二值化。例如,解碼模塊可以在卷積操作之後應用二值化函數對輸出特徵圖進行二值化操作。行1220可以由上述圖11中的方框1110至1120實現。
行1230至1260對應於卷積神經網絡的二值化卷積層和降採樣層,其可以由諸如以上實施例所述的共享邏輯模塊或增強二值化卷積模塊來實現。
行1230對應增強卷積層。它通過將增強操作的輸出與二值化卷積操作的輸出進行組合(例如級聯)來執行增強卷積操作。它將一連串8個尺寸為3×3的卷積濾波器應用於輸入特徵圖,並將二值化卷積的輸出與增強單元的輸出級聯。該操作被重複8次。增強卷積層的輸出為32 x 32 x 128。圖12中的行1230可以由上述圖11的方框1130至1195來實現。
行1240為降採樣層。降採樣層1240的輸入是來自前一增強卷積層1230的32 × 32 × 128輸出。在該實施例中,降採樣層應用64個尺寸為3×3的濾波器,以生成16 x 16 x 64的輸出。此操作由二值化卷積單元執行,稱為降採樣卷積。應當理解的是,在該實施例中,輸出特徵圖的尺寸是輸入特徵圖的尺寸的一半(從32×32減小到16×16)。在該實施例中,增強單元在實現降採樣層時其輸出為空。由於來自增強單元的輸出為空,因此該層的輸出僅包括二值化卷積操作所輸出的64個通道。因此,與輸入通道的數量相比,輸出通道的數量減半(64個輸出通道相較於128個輸入通道)。
至此,已經描述了二值化卷積層的實施例和降採樣層的實施例。卷積神經網絡的構架中可能包括另外的二值化卷積層和降採樣層。由參考數字1250所指的虛線用來表示根據卷積神經網絡的期望特性來實現的這些另外的層的存在。
行1260對應於最終的增強卷積層。在該處,可以通過層1250之中的各種降採樣層將輸入特徵圖的尺寸減小到2×2。增強卷積層1260應用8個尺寸為3×3的濾波器來對輸入進行二值化卷積並且重複該濾波器序列8次。輸出的尺寸為2 x 2 x 128。
行1270對應於分類層。分類層可以由諸如圖3A所示的全連接層模塊360A來實現。在此實施例中,分類層包括具有512個輸入節點(對應於上一層輸出的2 x 2 x 128個節點)和10個輸出節點的全連接神經網絡。這10個輸出節點對應於針對輸入卷積神經網絡的特徵圖1210的10種可能的分類。可能性分類的數量等於分類層的輸出節點數。在其他實施例中,可存在更多或更少的可能性分類,於是全連接神經網絡亦具有更多或更少的輸出節點。
應當理解,圖11所示的方法和圖12所示的架構僅是示例。在其他實施例中,可能存在不同數量的層,不同數量,大小和順序的過濾器,每個層具有不同的輸出以及分類層具有不同數量的輸入節點和輸出節點。
還應當理解,二值化卷積的輸出並不一定被二值化(例如,如圖9所示),但可以經由激活二值化操作(例如,如圖8所示)對其進行二值化處理。此外,可以將二值化激活功能集成到二值化卷積單元中。與此同時,增強操作的輸出通常會進行二值化處理,這是因為在恒等操作中,特徵圖沒有改變,在許多其他種類的增強操作中,值的位置變化到不同的單元,但單元值本身保持不變。然而,如果增強操作是縮放操作,並且縮放因子為非零值且不等於1,則增強操作的輸出可以不被二值化。在那種情況下,可以通過二值化激活操作來對增強操作的輸出進行二值化處理。
在調整濾波器權重(濾波器的激活值或濾波器值)的訓練階段中,可將激活值前向傳播以計算針對訓練數據的損失,之後將其反向傳播以基於梯度下降來調整濾波器權重。在一些實施例中,前向傳播的過程中可以使用二值化濾波器權重來計算針對訓練數據的損失,而後向傳播的過程中可以首先反向傳播實際的非二值化梯度以調整原始濾波器的權重,然後在執行下一次反覆運算之前對調整後的濾波器權重進行二值化。在推理階段,對濾波器權重以及二值化卷積和增強運算的輸出進行二值化處理。
圖13所示為根據本發明實施例的設計二值化卷積神經網絡和用於實現二值化卷積神經網絡的邏輯芯片的示例方法1300。
在方框1310中,獲得原始數據以用作訓練和驗證數據。
在方框1320中,執行數據分析和預處理以將原始數據轉換為適合用作訓練和驗證的數據。例如,某些數據可能會被丟棄,某些數據可能會被過濾或細化。
在方框1330中,設計卷積神經網絡的構架。例如,該構架可以包括多個卷積層和降採樣層以及這些層的操作細節和輸出,例如圖12所示的實施例。
在方框1340中,使用訓練數據訓練設計好的卷積神經網絡,以設置過濾器的激活權重,並在訓練完成後,使用驗證數據進行驗證。該訓練和驗證操作可以在計算機服務器上執行,該服務器使用處理器可執行的機器可讀指令模塊來實現二值化卷積神經網絡。也就是說,可以在軟件中模擬多個卷積層和降採樣層,以執行如上所述的示例中的共享邏輯模塊或增強二值化卷積模塊的操作。
如果在方框1340中的驗證結果不夠滿意,則可以返回方框1330來調整或重新設計構架。如果結果令人滿意,則訓練階段結束。在此種情況下,該方法將前進到方框1350對模型進行量化和壓縮以便在硬件上實現該模型。在一個實施例中,這個處理模塊可以被表示成一種適合於硬件邏輯門實現的形式,並且,可以將二值化激活操作和批量歸一化操作與二值化卷積等操作集成到同一處理塊中。
在方框1360中,在硬件上實現卷積神經網絡。例如,可以在諸如FPGA或ASIC是一個或多個邏輯芯片上實現卷積神經網絡。一旦訓練完成並且卷積神經網絡的激活和設計業已設置好,邏輯芯片將用於推理階段以實踐應用卷積神經網絡。
圖14所示為由處理器對特徵圖進行分類的方法1400。特徵圖可以是諸如圖像,音頻,視頻或其他類型的數據。在一些實施例中,圖像可能是由實施了本方法的設備上的相機所捕獲的。在其他實施例中,圖像可能是被轉換成可做卷積神經網絡處理的圖像格式的數據。
在方框1410中,處理器接收第一特徵圖,該第一特徵圖對應於要分類的圖像。
在方框1420中,處理器接收第一組參數,該第一組參數包括至少一個濾波器,至少一個步幅和至少一個增強變量。
在方框1430中,處理器使用至少一個濾波器和至少一個步幅參數對輸入特徵圖執行二值化卷積運算以產生第二特徵圖。
在方框1440中,處理器使用至少一個增強變量對輸入特徵圖執行增強操作以產生第三特徵圖。
在方框1450中,處理器將第二特徵圖和第三特徵圖進行組合。
在方框1460中,處理器接收第二組參數,其包括至少一個濾波器,至少一個步幅和至少一個增強變量。
在方框1470中,使用第二組參數代替第一組參數並且使用組合的第二和第三特徵圖代替第一特徵圖,重複方框1330至1360的步驟。
第一組參數的值被選擇用於實現二值化卷積神經網絡的二值化卷積層,第二組參數的值被選擇用於實施二值化卷積神經網絡的降採樣層。另外,亦可以將以上實施例的任何特徵整合到上述方法中。
該方法可以由上述實施例所描述的任一處理器或邏輯芯片來實現。該方法可以在包括處理器的通用計算機或服務器或雲計算服務上實現,或者可以在諸如ASIC或FPGA等專用硬件邏輯芯片上實現。通過在邏輯芯片上實現該方法,使得在資源受限的設備上實現卷積神經網絡成為可能,例如智慧手機,相機,平板電腦或嵌入式設備,例如將用於實現卷積神經網絡的邏輯芯片嵌入到無人機,電子眼鏡,汽車或其他車輛,手錶或家用設備中等。
裝置可以包括物理傳感器以及用於實現如以上任何實施例中所述的卷積神經網絡的處理器或邏輯芯片。例如,邏輯芯片可以是FPGA或ASIC芯片,並且可以包括如以上任何實施例中所述的共享邏輯模塊或增強二值化卷積模塊。例如,該裝置可以是可擕式裝置,包括但不限於,智慧電話,平板電腦,照相機,無人機,手錶,可穿戴裝置等。物理傳感器可被配置為收集物理數據。處理器或邏輯芯片可被配置為針對上述方法對數據進行分類。物理傳感器例如可以是用於生成圖像數據的照相機,處理器或邏輯芯片可以被配置為將圖像數據轉換為二值化特徵圖用於通過卷積神經網絡進行分類。在其他實施例中,物理傳感器可以收集諸如音頻數據之類的其他類型的數據,其亦可被轉換為二值化特徵圖並由處理器或邏輯芯片實現的卷積神經網絡進行分類。
以上實施例僅通過示例的方式進行描述。在不脫離如所附申請專利範圍中限定的本公開的範圍的情況下,許多變化是可能的。
為瞭解釋清楚,在一些情況下,本技術被呈現為包括單獨的功能塊,這些功能塊包括包含設備、設備組件、以軟件體現的方法中的步驟或常式的功能塊,或者硬件和軟件的組合。
根據上述示例的方法可以使用存儲的或以其他方式從計算機可讀介質可用的計算機可執行指令來實現。這樣的指令可以包括例如指令和數據,其導致或配置通用計算機、專用計算機或專用處理設備以執行特定功能或功能組。使用的部分計算機資源可以通過網絡訪問。計算機可執行指令可以是例如二進制、中間格式指令,例如匯編語言、固件或源代碼。可用於存儲指令、使用的資訊和/或在根據所描述的示例的方法期間創建的資訊的計算機可讀介質的示例包括只讀存儲器、隨機存取存儲器、磁盤或光盤、閃存等。
實現根據這些公開的方法的設備可以包括硬件、固件和/或軟件,並且可以採用多種形式因素中的任一種。此類外形因素的典型示例包括膝上型電腦、智慧手機、小型個人電腦、個人數字助理、邏輯芯片等。作為進一步的例子,這樣的功能也可以在不同芯片或在單個設備中執行的不同過程之間的電路板上實現。
指令、用於傳送此類指令的介質、用於執行它們的計算資源以及用於支持此類計算資源的其他結構是用於提供在這些公開中描述的功能的裝置。
本說明書(包括任何所附申請專利範圍、摘要和附圖)中公開的所有特徵和/或如此公開的任何方法或過程的所有步驟可以以任何組合方式組合,除非組合中至少有一些這些特徵和/或步驟是相互排斥的。
除非另有明確說明,否則本說明書(包括任何隨附的申請專利範圍、摘要和附圖)中公開的每個特徵可以被用於相同、等同或相似目的的替代特徵替換。因此,除非另有明確說明,所公開的每個特徵僅是等同或相似特徵的一般系列的一個示例。
儘管使用各種示例和其他資訊來解釋所附申請專利範圍內的方面,但不應基於此類示例中的特定特徵或佈置來暗示對申請專利範圍的限制,因為普通技術人員將能夠使用這些例子來推導出各種各樣的實現。此外,雖然一些主題可能已經以特定於結構特徵和/或方法步驟的示例的語言進行了描述,但是應當理解,所附申請專利範圍中定義的主題不一定限於這些描述的特徵或動作。例如,這樣的功能可以不同地分佈或在不同於本文所標識的組件中執行。相反,所描述的特徵和步驟被公開為所附申請專利內的系統和方法的組件的示例。
1:輸入 1B,1C,111B,111C,201,202,301,302,401,610,630,718,801,802,803,804,804-2,804-3,910,920,940,1001,1002,1003,1004,1010,1020,1040:特徵圖 100,300B,450:卷積神經網絡 110,120,130,140,150,252,254,320B,330B,340B,350B,452,454:層 110B:濾波器,內核 180:輸出 200,400:處理器 220,320A,320D,420,700,800:共享邏輯模塊;增強型二值化卷積模塊 224:模塊參數 250:卷積神經網絡,CNN 300,300A,300C,300D:邏輯芯片 310A:解碼模塊 310B:第一卷積層 310C:第一卷積模塊 320C:第二卷積模塊 322A,710:存儲器 324A,324D:可調參數 326A,850:控制器 326D:控制信號 330C:第一池化模塊 340C:第三卷積模塊 350C:第二池化模塊 360A:全連接層模塊 360B,360C:分類層 422,820:增強單元 424,830:二值化卷積單元 426:組合單元 430:虛線 500A,500B,1300,1400:示例方法 510A-560A,510B-560B,1110-1190,1195,1310-1360,1410-1470:方框 600:二值化卷積 620,716,832,930,1030:濾波器 712:旁路參數 714,834:步幅 720:旁路單元 730:增強型二值化卷積單元 740,840,950,1050:級聯器 750:控制接口 822:縮放因子 836:批量歸一化操作 838:二值化啟動操作 1100:實施例 1200:構架示例 1210-1270:行
在附圖中,除非另外規定,否則貫穿多個附圖相同的附圖標記表示相同或相似的部件或元素。這些附圖不一定是按照比例繪製的。應該理解,這些附圖僅描繪了根據本發明公開的一些實施方式,而不應將其視為是對本發明範圍的限制。
圖1A所示為一個卷積神經網絡示例;
圖1B所示為一個卷積運算示例;
圖1C所示為一個最大池化操作示例;
圖2所示為根據本發明實施例的用於執行卷積神經網絡的處理器示例;
圖3A所示為根據本發明實施例的用於執行卷積神經網絡的邏輯芯片示例;
圖3B所示為根據本發明實施例的一個卷積神經網絡示例;
圖3C所示為用於執行卷積神經網絡的邏輯芯片的卷積設計;
圖3D所示為根據本發明實施例的用於執行卷積神經網絡的邏輯芯片示例;
圖4所示為根據本發明實施例的用於執行卷積神經網絡的處理器示例;
圖5A所示為根據本發明實施例的執行卷積神經網絡的一個卷積層的示例方法;
圖5B所示為根據本發明實施例的執行卷積神經網絡的降採樣層的示例方法;
圖6所示為根據本發明實施例的二值化卷積運算示例;
圖7所示為根據本發明實施例的一種增強型二值化卷積模型示例;
圖8所示為根據本發明實施例的一種增強型二值化卷積模型示例;
圖9所示為根據本發明實施例的一種增強型二值化卷積模型在卷積模式下執行的操作示例;
圖10A所示為一種二元平均池化操作以及一種二元最大池化操作的示例;
圖10B所示為根據本發明實施例的一種增強型二值化卷積模型在降採樣模式下執行的操作示例;
圖10C所示為根據本發明實施例的一種增強型二值化卷積模型在降採樣模式下執行的另一種操作示例;
圖11所示為根據本發明實施例的一種增強型二值化卷積模型在卷積模式下執行的操作示例;
圖12所示為根據本發明實施例的一種卷積神經網絡的構架示例;
圖13所示為根據本發明實施例的一種設計卷積神經網絡的方法示例;
圖14所示為根據本發明實施例的一種將特徵圖分類的方法示例。
200:處理器
201,202:特徵圖
220:共享邏輯模塊;增強型二值化卷積模塊
224:模塊參數
250:卷積神經網絡,CNN
252:層、卷積層
254:層、降採樣層

Claims (20)

  1. 一種用於實現二值化卷積神經網絡(BCNN)的處理器,所述二值化卷積神經網絡包括多個層,所述多個層包括二值化卷積層和降採樣層; 其中,所述二值化卷積層和所述降採樣層均由所述處理器的共享邏輯模塊執行,所述共享邏輯模塊包括: 增強單元,用於基於增強參數對輸入到所述共享邏輯模塊的特徵圖進行增強; 二值化卷積單元,用於基於卷積參數對輸入到所述共享邏輯模塊的特徵圖進行二值化卷積運算;和 組合單元,用於將所述增強單元的輸出與所述二值化卷積單元的輸出進行組合; 其中,通過調節所述增強參數和所述卷積參數中的至少一個,所述共享邏輯模塊可在卷積模式和降採樣模式之間切換。
  2. 如請求項1所述的處理器,其中,所述組合單元用於將所述增強單元的輸出與所述二值化卷積單元的輸出進行級聯。
  3. 如請求項1所述的處理器,其中,所述增強單元用於通過執行選自以下操作群組中的至少一個增強操作來增強所述特徵圖:恒等功能,縮放功能,鏡像功能,翻轉功能,旋轉功能,通道選擇功能和裁剪功能。
  4. 如請求項1所述的處理器,其中,所述增強單元用於對所述特徵圖執行縮放功能,並且所述增強參數是縮放因子。
  5. 如請求項4所述的處理器,其中,在所述卷積模式下,所述縮放因子被設置為非零值,並且在降採樣模式下,縮放因子被設置為零值。
  6. 如請求項1所述的處理器,其中,所述卷積參數包括濾波器和步幅。
  7. 如請求項6所述的處理器,其中,在所述降採樣模式下,所述步幅是等於或大於2的整數。
  8. 如請求項1所述的處理器,其中,在所述卷積模式下,所述二值化卷積單元用於輸出特徵圖,所述輸出特徵圖與輸入所述二值化卷積單元的特徵圖的尺寸相同。
  9. 如請求項1所述的處理器,其中,在所述降採樣模式中,所述二值化卷積單元用於輸出特徵圖,所述輸出特徵圖的尺寸小於輸入所述二值化卷積單元的特徵圖的尺寸。
  10. 如請求項1所述的處理器,其中,在所述降採樣模式下,所述共享邏輯模塊輸出的通道數量小於輸入所述共享邏輯模塊的通道的數量。
  11. 一種用於實現二值化卷積神經網絡的邏輯芯片,所述邏輯芯片包括: 共享邏輯模塊,其能夠對特徵圖執行二值化卷積操作和降採樣操作兩者; 存儲器,用於存儲所述共享邏輯模塊的可調參數,其中,所述可調參數用於確定所述共享邏輯模塊執行二值化卷積操作或降採樣操作;和 控制器或控制接口,其通過調整所述共享邏輯模塊的所述可調參數來控制所述共享邏輯模塊執行至少一項二值化卷積操作然後執行至少一項降採樣操作。
  12. 如請求項11所述的邏輯芯片,進一步包括解碼模塊,用於接收非二值輸入,將所述非二值輸入轉換成二值化特徵圖並將二值化特徵圖輸出到所述共享邏輯模塊。
  13. 如請求項11所述的邏輯芯片,其中,所述共享邏輯模塊包括: 二值化卷積單元,旁路單元和級聯器; 其中,所述共享邏輯模塊接收輸入特徵圖; 所述二值化卷積單元對所述輸入特徵圖執行二值化卷積操作; 所述旁路單元將所述輸入特徵圖轉發給所述級聯器;和 所述級聯器將所述二值化卷積單元的輸出與所述旁路單元的輸出級聯。
  14. 如請求項13所述的邏輯芯片,其中,所述旁路單元用於在將所述輸入特徵圖轉發給所述級聯器之前,對所述輸入特徵圖執行增強操作。
  15. 如請求項13所述的邏輯芯片,   其中當所述共享邏輯模塊執行降採樣操作時,所述旁路單元用於向所述級聯器提供空輸出。
  16. 如請求項13所述的邏輯芯片,其中,所述旁路單元在將所述特徵圖轉發給所述級聯器之前,用於執行裁剪或採樣操作以減小輸入到所述旁路單元的特徵圖的大小。
  17. 如請求項13所述的邏輯芯片,其中,所述二值化卷積單元用於執行n×n二值化卷積操作,然後執行批量歸一化和二值化激活操作。
  18. 如請求項13所述的邏輯芯片,其中,所述二值化卷積單元將一連串n個濾波器應用X次以產生X * n個輸出通道。
  19. 一種方法,其經由實施二值化卷積神經網絡的處理器對圖像進行分類,所述方法包括: a)由所述處理器接收與待分類圖像相對應的第一特徵圖; b)由所述處理器接收第一組參數,其包括至少一個濾波器,至少一個步幅和至少一個增強變量; c)由所述處理器使用所述至少一個濾波器和所述至少一個步幅對所述第一特徵圖執行二值化卷積操作以產生第二特徵圖; d)由所述處理器使用所述至少一個增強變量對所述第一特徵圖執行增強操作以產生第三特徵圖; e)由所述處理器將所述第二特徵圖和所述第三特徵圖進行組合; f)接收第二組參數,其包括至少一個濾波器,至少一個步幅和至少一個增強變量; g)使用第二組參數代替第一組參數,並使用組合的所述第二和第三特徵圖代替第一特徵圖,重複步驟c)至e)。
  20. 如請求項19所述的方法,其中,所述第一組參數用於實現二值化卷積神經網絡的二值化卷積層,並且所述第二組參數用於實現二值化卷積神經網絡的降採樣層。
TW110125803A 2020-07-14 2021-07-14 用於二值化卷積神經網絡的處理器,邏輯芯片及其方法 TW202207090A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063051434P 2020-07-14 2020-07-14
US63/051,434 2020-07-14

Publications (1)

Publication Number Publication Date
TW202207090A true TW202207090A (zh) 2022-02-16

Family

ID=79292633

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110125803A TW202207090A (zh) 2020-07-14 2021-07-14 用於二值化卷積神經網絡的處理器,邏輯芯片及其方法

Country Status (3)

Country Link
US (1) US20220019872A1 (zh)
TW (1) TW202207090A (zh)
WO (1) WO2022013722A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
CN108416434B (zh) * 2018-02-07 2021-06-04 复旦大学 针对神经网络的卷积层与全连接层进行加速的电路结构
CN110766127B (zh) * 2018-07-25 2022-09-23 赛灵思电子科技(北京)有限公司 神经网络计算专用电路及其相关计算平台与实现方法
CN110458279B (zh) * 2019-07-15 2022-05-20 武汉魅瞳科技有限公司 一种基于fpga的二值神经网络加速方法及系统

Also Published As

Publication number Publication date
WO2022013722A1 (en) 2022-01-20
US20220019872A1 (en) 2022-01-20

Similar Documents

Publication Publication Date Title
US11508146B2 (en) Convolutional neural network processing method and apparatus
Feng et al. Computer vision algorithms and hardware implementations: A survey
CN109389078B (zh) 图像分割方法、相应的装置及电子设备
CN110050267B (zh) 用于数据管理的系统和方法
Wu et al. Shift: A zero flop, zero parameter alternative to spatial convolutions
EP3514735B1 (en) A device and a method for image classification using a convolutional neural network
US20200104690A1 (en) Neural processing unit (npu) direct memory access (ndma) hardware pre-processing and post-processing
US11989645B2 (en) Event-based extraction of features in a convolutional spiking neural network
KR102545128B1 (ko) 뉴럴 네트워크를 수반한 클라이언트 장치 및 그것을 포함하는 시스템
US20180089564A1 (en) Information processing apparatus, information processing method, and program
CN110223304B (zh) 一种基于多路径聚合的图像分割方法、装置和计算机可读存储介质
CN112561027A (zh) 神经网络架构搜索方法、图像处理方法、装置和存储介质
US11487998B2 (en) Depth-first convolution in deep neural networks
CN114821058A (zh) 一种图像语义分割方法、装置、电子设备及存储介质
CN116863194A (zh) 一种足溃疡图像分类方法、系统、设备及介质
Fan et al. HFPQ: deep neural network compression by hardware-friendly pruning-quantization
US10747845B2 (en) System, method and apparatus for computationally efficient data manipulation
TW202207090A (zh) 用於二值化卷積神經網絡的處理器,邏輯芯片及其方法
Oyama et al. Fully convolutional densenet for saliency-map prediction
CN112889072A (zh) 用于降低功率消耗的系统、方法和装置
CN113892115A (zh) 用于二值化卷积神经网络的处理器,逻辑芯片及其方法
CN110610227B (zh) 人工神经网络调整方法及神经网络计算平台
Chu et al. Mixed-precision quantized neural network with progressively decreasing bitwidth for image classification and object detection
EP3764283A1 (fr) Système et procédé de génération de descripteurs d'une scène
CN111831207A (zh) 一种数据处理方法、装置及其设备