<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 互連技術(shù) > 正文

如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

發(fā)布時(shí)間:2023-05-15 來(lái)源:亞德諾半導體 責任編輯:lina

【導讀】本文重點(diǎn)解釋如何使用硬件轉換卷積神經(jīng)網(wǎng)絡(luò )(CNN),并特別介紹使用帶CNN硬件加速器的人工智能(AI)微控制器在物聯(lián)網(wǎng)(IoT)邊緣實(shí)現人工智能應用所帶來(lái)的好處。


AI應用通常需要消耗大量能源,并以服務(wù)器農場(chǎng)或昂貴的現場(chǎng)可編程門(mén)陣列(FPGA)為載體。AI應用的挑戰在于提高計算能力的同時(shí)保持較低的功耗和成本。當前,強大的智能邊緣計算正在使AI應用發(fā)生巨大轉變。與傳統的基于固件的AI計算相比,以基于硬件的卷積神經(jīng)網(wǎng)絡(luò )加速器為載體的智能邊緣AI計算具備驚人的速度和強大的算力,開(kāi)創(chuàng )了計算性能的新時(shí)代。這是因為智能邊緣計算能夠讓傳感器節點(diǎn)在本地自行決策而不受5G和Wi-Fi網(wǎng)絡(luò )數據傳輸速率的限制,為實(shí)現之前難以落地的新興技術(shù)和應用場(chǎng)景提供了助力。例如,在偏遠地區,傳感器級別的煙霧/火災探測或環(huán)境數據分析已成為現實(shí)。這些應用支持電池供電,能夠工作很多年的時(shí)間。本文通過(guò)探討如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換來(lái)說(shuō)明如何實(shí)現這些功能。


采用超低功耗卷積神經(jīng)網(wǎng)絡(luò )加速器的人工智能微控制器


MAX78000是一款有超低功耗CNN加速器的AI微控制器片上系統,能在資源受限的邊緣設備或物聯(lián)網(wǎng)應用中實(shí)現超低功耗的神經(jīng)網(wǎng)絡(luò )運算。其應用場(chǎng)景包括目標檢測和分類(lèi)、音頻處理、聲音分類(lèi)、噪聲消除、面部識別、基于心率等健康體征分析的時(shí)間序列數據處理、多傳感器分析以及預測性維護。


圖1為MAX78000的框圖,其內核為帶浮點(diǎn)運算單元的Arm? Cortex?-M4F內核,工作頻率高達100 MHz。為了給應用提供足夠的存儲資源,MAX78000還配備了512 kB的閃存和128 kB的SRAM。該器件提供多個(gè)外部接口,例如I2C、SPI、UART,以及用于音頻的I2S。此外,器件還集成了60 MHz的RISC-V內核,可以作為一個(gè)智能的直接存儲器訪(fǎng)問(wèn)(DMA)引擎從/向各個(gè)外圍模塊和存儲(包括閃存和SRAM)復制/粘貼數據。由于RISC-V內核可以對AI加速器所需的


如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

圖1.MAX78000的結構框圖


傳感器數據進(jìn)行預處理,因而Arm內核在此期間可以處于深度睡眠模式。推理結果也可以通過(guò)中斷觸發(fā)Arm內核在主應用程序中執行操作,通過(guò)無(wú)線(xiàn)傳輸傳感器數據或向用戶(hù)發(fā)送通知。


具備用于執行卷積神經(jīng)網(wǎng)絡(luò )推理的專(zhuān)用硬件加速器單元是MAX7800x系列微控制器的一個(gè)顯著(zhù)特征,這使其有別于標準的微控制器架構。該CNN硬件加速器可以支持完整的CNN模型架構以及所有必需的參數(權重和偏置),配備了64個(gè)并行處理器和一個(gè)集成存儲器。集成存儲器中的442 kB用于存儲參數,896 kB用于存儲輸入數據。不僅存儲在SRAM中的模型和參數可以通過(guò)固件進(jìn)行調整,網(wǎng)絡(luò )也可以實(shí)時(shí)地通過(guò)固件進(jìn)行調整。器件支持的模型權重為1位、2位、4位或8位,存儲器支持容納多達350萬(wàn)個(gè)參數。加速器的存儲功能使得微控制器無(wú)需在連續的數學(xué)運算中每次都要通過(guò)總線(xiàn)獲取相關(guān)參數——這樣的方式通常伴有高延遲和高功耗,代價(jià)高昂。CNN加速器可以支持32層或64層的網(wǎng)絡(luò ),具體層數取決于池化函數。每層的可編程圖像輸入/輸出大小最多為1024 × 1024像素。


CNN硬件轉換:功耗和推理速度比較


CNN推理是一項包含大型矩陣線(xiàn)性方程運算的復雜計算任務(wù)。Arm Cortex-M4F微控制器的強大能力可以使得CNN推理在嵌入式系統的固件上運行。但這種方式也有一些缺點(diǎn):在微控制器上運行基于固件的CNN推理時(shí),計算命令和相關(guān)參數都需要先從存儲器中檢索再被寫(xiě)回中間結果,這會(huì )造成大量功耗和時(shí)延。


表1對三種不同解決方案的CNN推理速度和功耗進(jìn)行了比較。所用的模型基于手寫(xiě)數字識別訓練集MNIST開(kāi)發(fā),可對視覺(jué)輸入數據中的數字和字母進(jìn)行分類(lèi)以獲得準確的輸出結果。為確定功耗和速度的差異,本文對三種解決方案所需的推理時(shí)間進(jìn)行了測量。


如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

表1.手寫(xiě)數字識別的CNN推理時(shí)間和推理功耗,基于MNIST數據集


方案一使用集成Arm Cortex-M4F處理器的MAX32630進(jìn)行推理,其工作頻率為96 MHz。方案二使用MAX78000的CNN硬件加速器進(jìn)行推理,其推理速度(即數據輸入與結果輸出之間的時(shí)間)比方案一加快了400倍,每次推理所需的能量也僅為方案一的1/1100。方案三對MNIST網(wǎng)絡(luò )進(jìn)行了低功耗優(yōu)化,從而最大限度地降低了每次推理的功耗。雖然方案三推理結果的準確性從99.6%下降到了95.6%,但其速度快了很多,每次推理只需0.36 ms,推理功耗降也低至僅1.1 μW。兩節AA堿性電池(總共6 Wh能量)可以支持應用進(jìn)行500萬(wàn)次的推理(忽略系統其它部分的功耗)。


這些數據說(shuō)明了硬件加速器的強大計算能力可以大大助益無(wú)法利用或連接到連續電源的應用場(chǎng)景。MAX78000就是這樣一款產(chǎn)品,它支持邊緣AI處理,無(wú)需大量功耗和網(wǎng)絡(luò )連接,也無(wú)需冗長(cháng)的推理時(shí)間。


MAX78000 AI微控制器的使用示例


MAX78000支持多種應用,下面本文圍繞部分用例展開(kāi)討論。其中一個(gè)用例是設計一個(gè)電池供電的攝像頭,需要能檢測到視野中是否有貓出現,并能夠通過(guò)數字輸出打開(kāi)貓門(mén)允許貓進(jìn)入房屋。


圖2為該設計的示例框圖。在本設計中,RISC-V內核會(huì )定期開(kāi)啟圖像傳感器并將圖像數據加載到MAX78000的CNN加速器中。如果系統判斷貓出現的概率高于預設的閾值,則打開(kāi)貓門(mén)然后回到待機模式。


如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

圖2.智能寵物門(mén)框圖


開(kāi)發(fā)環(huán)境和評估套件


邊緣人工智能應用的開(kāi)發(fā)過(guò)程可分為以下幾個(gè)階段:

第一階段:AI——網(wǎng)絡(luò )的定義、訓練和量化


第二階段:Arm固件——將第一階段生成的網(wǎng)絡(luò )和參數導入C/C++應用程序,創(chuàng )建并測試固件


開(kāi)發(fā)過(guò)程的第一階段涉及建模、訓練和評估AI模型等環(huán)節。此階段開(kāi)發(fā)人員可以利用開(kāi)源工具,例如 PyTorch 和 TensorFlow。MAX78000 的GitHub網(wǎng)頁(yè)也提供全面的資源幫助用戶(hù)在考慮其硬件規格的同時(shí)使用PyTorch構建和訓練AI網(wǎng)絡(luò )。網(wǎng)頁(yè)也提供一些簡(jiǎn)單的AI網(wǎng)絡(luò )和應用,例如面部識別(Face ID),供用戶(hù)參考。


圖3顯示了采用PyTorch進(jìn)行AI開(kāi)發(fā)的典型過(guò)程。首先是對網(wǎng)絡(luò )進(jìn)行建模。必須注意的是,MAX7800x微控制器并非都配置了支持所有PyTorch數據操作的相關(guān)硬件。因此,必須首先將ADI公司提供的ai8x.py文件包含在項目中,該文件包含MAX78000所需的PyTorch模塊和運算符?;诖丝梢赃M(jìn)入下一步驟構建網(wǎng)絡(luò ),使用訓練數據對網(wǎng)絡(luò )進(jìn)行訓練、評估和量化。這一步驟會(huì )生成一個(gè)檢查點(diǎn)文件,其中包含用于最終綜合過(guò)程的輸入數據。最后一步是將網(wǎng)絡(luò )及其參數轉換為適合CNN硬件加速器的形式。值得注意的是,雖然任何PC(筆記本、服務(wù)器等)都可用于訓練網(wǎng)絡(luò ),但如果沒(méi)有CUDA顯卡,訓練網(wǎng)絡(luò )可能會(huì )花費很長(cháng)的時(shí)間——即使對于小型網(wǎng)絡(luò )來(lái)說(shuō)也有可能需要幾天甚至幾周的時(shí)間。


開(kāi)發(fā)過(guò)程的第二階段是通過(guò)將數據寫(xiě)入CNN加速器并讀取結果的機制來(lái)創(chuàng )建應用固件。第一階段創(chuàng )建的文件通過(guò)#include指令集成到C/C++項目中。微控制器的開(kāi)發(fā)環(huán)境可使用Eclipse IDE和GNU工具鏈等開(kāi)源工具。ADI公司提供的軟件開(kāi)發(fā)套件(Maxim Micros SDK (Windows))也已經(jīng)包含了所有開(kāi)發(fā)必需的組件和配置,包括外設驅動(dòng)以及示例說(shuō)明,幫助用戶(hù)簡(jiǎn)化應用開(kāi)發(fā)過(guò)程。


如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

圖3.AI開(kāi)發(fā)過(guò)程


成功通過(guò)編譯和鏈接的項目可以在目標硬件上進(jìn)行評估。ADI開(kāi)發(fā)了兩種不同的硬件平臺可供選用:圖4為 MAX78000EVKIT ,圖5為 MAX78000FTHR ,一個(gè)稍小的評估板。每個(gè)評估板都配有一個(gè)VGA攝像頭和一個(gè)麥克風(fēng)。


如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

圖4.MAX78000評估套件


如何采用帶專(zhuān)用CNN加速器的AI微控制器實(shí)現CNN的硬件轉換

圖5.MAX78000FTHR評估套件


結論


以前,AI應用必須以昂貴的服務(wù)器農場(chǎng)或FPGA為載體,并消耗大量能源?,F在,借助帶專(zhuān)用CNN加速器的MAX78000系列微控制器,AI應用依靠單組電池供電就可以長(cháng)時(shí)間運行。MAX78000系列微控制器在能效和功耗方面的性能突破大大降低了邊緣AI的實(shí)現難度,使得新型邊緣AI應用的驚人潛力得以釋放。


免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。


推薦閱讀:

功率MOS管損壞的典型

符合汽車(chē)標準的MEMS麥克風(fēng) 汽車(chē)在細心聆聽(tīng)

Zeta拓撲電源原理及工作過(guò)程解析

銳思智芯:融合視覺(jué)傳感器解決傳統CIS的感知瓶頸

什么是磁力計?


特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>