版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章
K210和YOLOV3介紹Contents01.K21002.YOLOv301K210K210是由一家叫做嘉楠科技的公司推出的一款MCU(MicrocontrollerUnit,微控制單元,又稱單片微型計算機或者單片機),其特色在于芯片架構中包含了一個自主研發的神經網絡硬件加速器KPU(KnowledgeProcessingUnit),可以高性能地進行卷積神經網絡運算。K210是一款基于RISC-V(V:表示第五代RISC)精簡指令集的MCU(也就是我們通常所說的單片機),在其眾多特色中,最大的特色便是芯片架構包含了一個自主研發的神經網絡硬件加速器KPU,可以高性能地進行卷積神經網絡運算。在MCU的AI計算方面,K210芯片的算力也是非常優秀的,根據嘉楠科技官網的描述,K210的KPU算力能夠達到0.8TFLOPS(Floating-pointOperationsPerSecond,每秒所執行的浮點運算次數),這相當于什么水平呢?我們舉個例子對比一下:最新樹莓派4B的算力不到0.1TFLOPS,而以神經網絡處理為賣點的JetsonNano擁有128個CUDA單元,其算力也僅僅是0.47TFLOPS。通過以上的簡單對比可見,至少在AI計算方面K210的算力算是非常可觀的。K210介紹除了KPU優秀的算力之外,K210芯片還有一些其他的特色。K210芯片內部是雙核CPU,指令集為64位RISC-V,每個核心內置獨立FPU(FloatPointUnit,浮點運算單元),可以單獨進行浮點運算。為了更好地在機器視覺和聽覺.上發揮作用,K210芯片自帶計算卷積人工神經網絡加速器KPU,以及處理麥克風陣列的APU(AcceleratedProcessingUnit,加速處理器),能夠進行高性能機器視覺和聽覺處理。不僅如此,K210還內置快速傅里葉變換加速器,可以進行復數FFT(FastFourierTransform,快速傅里葉變換)計算。在性能強勁的前提下,K210芯片還很注重安全性,內置了AES(AdvancedEncryptionStandard,高級加密標準)和SHA256(SHA256是安全散列算法SHA(SecureHashAlgorithm)系列算法之一,其摘要長度為256bits,即32個字節,故稱SHA256)算法加速器,為用戶的數據安全提供有效保障。K210介紹另外K210芯片還具有豐富的外設單元,這些外設單元有:DVP、JTAG、OTP、FPIOA、GPIO、UART、SPI、RTC、I2S、I2C、WDT、TIMER、PWM,這些外設在實際使用中發揮巨大的作用,基本滿足大部分MCU外設的需求。K210還擁有高性能、低功耗的SRAM,總共8M,其中2M專用于Al計算,另外6M用于程序;專用外置Flash接口,增加自身的儲存空間;數據傳輸可使用功能強大的DMA(DirectMemoryAccess,直接存儲器訪問),在數據吞吐能力方面性能優異。K210介紹K210芯片架構圖下面我們一起來認識一下K210開發板,如右圖所示:1-Type-C接口:供電、下載固件和串口調試等。2-狀態指示燈:指示開發板的3.3V、1.8V電壓是否正常,正常則亮燈。以及ESP模塊狀態。3-ESP模塊串口和按鍵:可用于燒錄ESP模塊的固件或者和K210串口通信。4-撥輪開關keypad:三通道撥輪開關。5-RESET鍵:K210芯片的復位鍵。6-觸摸板接口:用于連接觸摸板排線,排線金手指向上。7-顯示器接口:用于連接顯示器排線,排線金手指向上。8-K210芯片:開發板主芯片,整個板子的核心處理器。9-外擴排針:開發板已經把K210所有10口引出,可以供外部設備連接使用。10-12C接口:可外接12C從機設備進行通信。11-RGB燈:設置三個10口電平,點亮不同顏色。12-麥克風:收錄聲音。13-LED燈:LED0和LED1。14-麥克風陣列接口:用于連接麥克風陣列。15-BOOT鍵:也可以作為自定義功能按鍵使用。K210介紹關于開發板套件正面的介紹,右圖所示開發板套件(正面)。1-揚聲器:播放聲音。2-攝像頭接口:連接攝像頭。3-Wi-Fi模塊:ESP8285,Wi-Fi模塊,可以聯網實現1oT功能。4-CH340芯片:下載固件和串口調試功能。5-電源開關:開發板電源總開關,撥向ON為開,撥向0FF為關。6-flash芯片用于保存程序固件和數據。7-六軸姿態傳感器內部是一個三軸陀螺儀和一個三軸加速度計組成。8-TF卡槽需要自己插入TF卡,金手指朝向開發板。K210介紹用Type-C數據線將K210開發板和電腦進行連接,然后依次右擊桌面的“此電腦”→“屬性”→“設備管理器”→“端口(COM和CPT)”,就會識別到相應的CH340(USB轉串口Windows驅動程序的安裝包)端口(如圖7-4所示)。這里需要注意的是:因為每臺電腦的端口號可能會不一樣,所以只要是識別到了CH340,那就是我們需要的端口。如果識別不出來,這個時候就需要我們手動安裝了,這里就不做過多介紹了。驅動安裝成功后,就可以識別到K210開發板了,下面我們對其開發環境進行搭建。K210是支持好幾種編程環境的,從最基本的CMake命令行開發環境,到IDE開發環境,再到Python腳本式開發環境它都支持。在Win10系統下,官方是提供的有IDE的,官方的IDE是基于VisualStudioCode開發的。在這里我們介紹如何通過VSCode編輯器搭建K210的開發環境,以下是需要用到的工具及簡介。K210開發環境搭建CMake:CMake是眾多Make工具的一種,具有跨平臺、跨編譯器等特性,它可以用簡單的語句來描述所有平臺的安裝(編譯過程),是一種非常實用的工具。CMake官方下載網址:https://cmake.org/download/,K210開發環境搭建Toolchain:交叉編譯器Toolchain是用于調試開發板的工具和相關庫組合起來的集合,也稱為工具鏈。一般內附有程式編譯器(compiler),如GCC,可以進行程式編譯、或跨平臺編譯工作。VSCode:VSCode是Microsoft出品的一款開源代碼編輯器,支持多種插件,可擴展性強,具有代碼高亮,自動補全等功能。VSCode官方下載地址:https://code.visualstudio.com/Download,如圖7-6所示??梢愿鶕约合到y版本選擇,Windows用戶下載后為exe文件,可以直接安裝,并且可以給所有用戶使用。K210開發環境搭建K210-SDK:K210官方出的SDK,是開發K210的基礎,里面自帶有芯片的各種驅動。K210官方提供兩個SDK,一個是裸機版SDK,另一個是FreeRTOS系統SDK。K210裸機版SDK下載地址:https://github.com/kendryte/kendryte-standalone-sdk,如圖7-7所示。點擊右邊的Code(有的此處顯示的是Cloneordownload),DownloadZIP下載SDK。K210-SDKGitHub下載頁K-Flash:K210芯片燒錄程序的工具下載地址:https://github.com/kendryte/kendryte-flash-windows/releases,如圖所示,下載最新版即可。K210開發環境搭建K210基礎功能部分在這里我們介紹發光模塊、串口通信模塊、雙核并行這三部分。LED(LightEmittingDiode)也稱為發光二極管,是一種能夠將電能轉化為可見光的固態的半導體器件,它可以直接把電轉化為光。LED的內部是一個半導體晶片,晶片的一端附在一個支架上,一端是負極,另一端連接電源的正極,使整個晶片被環氧樹脂封裝起來。只需要給正極輸入正極電壓,負極接地,形成回路就可以點亮LED。半導體晶片由兩部分組成,一部分是P型半導體,在它里面空穴占主導地位,另一端是N型半導體,在這邊主要是電子。但這兩種半導體連接起來的時候,它們之間就形成一個P-N結。當電流通過導線作用于這個晶片的時候,電子就會被推向P區,在P區里電子跟空穴復合,然后就會以光子的形式發出能量,這就是LED燈發光的原理。而光的波長也就是光的顏色,是由形成P-N結的材料決定的。K210基礎功能K210開發板出廠默認已經焊接好LED0和LED1。LED0連接的是100,LED1連接的是1017。LED0為紅燈,LED1為綠燈,如圖7-9所示。兩顆LED燈都是低電平點亮,高電平熄滅。K210基礎功能K210開發板LED燈K210開發板RGB燈內部分別是由紅色、綠燈和藍色的LED組成(如圖7-10所示),所以發光原理與LED是一樣的。不同的是三顆LED燈靠得很近,這樣就可以設置不同的顏色,來達到展示不同顏色的功能。RGB燈可以點亮紅色、綠色、藍燈等顏色,再根據紅色綠色藍色的不同亮度組合成其他顏色,例如黃色、紫色等。K210基礎功能K210的串口支持全雙工通信,也就是使用一根線發送數據的同時,用另一根線接收數據。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗,對于兩個通信的端口,這些參數是必須設置為相同的。在前面樹莓派章節我們有簡單的介紹過串口通信,這里就不做過多的介紹了。K210開發板上面的Type-C接口是連接到串口芯片上面的,具有供電和串口傳輸數據的功能,下載程序也是通過串口傳輸數據的功能把固件傳輸到K210芯片上的。Type-C接口是目前主流的數據傳輸連接接口,如圖所示,市面上很多智能手機也是使用Type-C接口給手機充電和傳輸數據。Type-C接口是可以正反插的,不用擔心反向拿反而插不進的問題。K210基礎功能K210開發板Type-C接口K210開發板上面還有一個CH340串口芯片,CH340串口芯片是一個USB總線的轉接芯片,可以實現USB轉串口。具有全速USB設備接口,硬件全雙工串口,內置收發緩沖區,支持通信波特率為50Mbps~2Mbps,兼容USBV2.0等特點。K210開發板CH340K210是雙核CPU,那么什么是雙核CPU呢?雙核CPU是在一個CPU中擁有兩個一樣功能的處理器芯片,從而提高計算能力。K210的核心0和核心1都可以單獨工作,系統默認使用核心0,如果需要使用核心1需要手動開啟核心1的服務。K210芯片搭載基于RISC-VISA的雙核心64位的高性能低功耗CPU,如圖所示。FPU(浮點運算單元)是集成于CPU中的專用于浮點運算的處理器。K210核心0和核心1都具備獨立的FPU,滿足lEEE754-2008標準,計算流程以流水線方式進行,具備很強的運算能力,每個FPU都具備除法器和平方根運算器,支持單精度和雙精度浮點硬件加速運算。K210基礎功能KendryteK210具備機器視覺能力,是零門檻機器視覺嵌入式解決方案。它可以在低功耗情況下進行卷積神經網絡計算。該芯片可以實現以下機器視覺能力:(1)基于卷積神經網絡的一般目標檢測。(2)基于卷積神經網絡的圖像分類任務。(3)人臉檢測和人臉識別。(4)實時獲取被檢測目標的大小與坐標。(5)實時獲取被檢測目標的種類。在前面我們提到嘉楠科技的K210芯片架構中包含了一個自主研發的神經網絡硬件加速器KPU。KPU是通用的神經網絡處理器,它可以在低功耗的情況下實現卷積神經網絡計算,實時獲取被檢測目標的大小、坐標和種類,對人臉或者物體進行檢測和分類。使用KPU時,必須結合model—compiler。K210高級功能KPU的特點支持主流訓練框架按照特定限制規則訓練出來的定點化模型,對網絡層數無直接限制。支持每層卷積神經網絡參數單獨配置,包括輸入輸出通道數目、輸入輸出行寬列高。支持兩種卷積內核1x1和3x3。支持任意形式的激活函數。實時工作時最大支持神經網絡參數大小為5.5MiB到5.9MiB。非實時工作時最大支持網絡參數大小為(Flash容量-軟件體積)。K210高級功能02YOLOv3YOLO(YouOnlyLookOnce)v3的算法是在YOLOv1和YOLOv2的基礎上形成的,在介紹YOLOv3之前我們簡單介紹一下YOLOv1和YOLOv2。YOLOv1將輸入圖像分成S×S個格子,若某個物體Groundtruth的中心位置的坐標落入到某個格子,那么這個格子就負責檢測出這個物體。每個格子預測B個Boundingbox及其置信度(confidencescore),以及C個類別概率。bbox信息(x,y,w,h)為物體的中心位置相對格子位置的偏移及寬度和高度,均被歸一化。置信度反映是否包含物體以及包含物體情況下位置的準確性。YOLOv1網絡借鑒了GoogLeNet分類網絡結構。不同的是,YOLO未使用inceptionmodule,而是使用1×1卷積層(此處1×1卷積層的存在是為了跨通道信息整合)+3×3卷積層簡單替代。YOLOv1網絡在最后使用全連接層進行類別輸出,因此全連接層的輸出維度是S×S(B×5+C)。YOLOv1網絡比VGG16快(浮點數少于VGG的1/3),準確率稍差。YOLOv3介紹YOLOv1還是有缺陷的,比如:輸入尺寸固定:由于輸出層為全連接層,因此在檢測時,YOLO訓練模型只支持與訓練圖像相同的輸入分辨率。其他分辨率需要縮放成該分辨率。占比較小的目標檢測效果不好:雖然每個格子可以預測B個Boundingbox,但是最終只選擇10U最高的Boundingbox作為物體檢測輸出,即每個格子最多只預測出一個物體。當物體占畫面比例較小,如圖像中有畜群或鳥群時,每個格子包含多個物體,但卻只能檢測出其中一個。YOLOv3介紹為提高物體定位精準性和召回率,YOLO作者提出了《YOLO9000:Better,Faster,Stronger》(JosephRedmon,AliFarhadi,CVPR2017,BestPaperHonorableMention),相比v1提高了訓練圖像的分辨率,引入了FasterRCNN中anchorbox的思想,對網絡結構的設計進行了改進,輸出層使用卷積層替代YOLO的全連接層,聯合使用COCO物體檢測標注數據和ImageNet物體分類標注數據訓練物體檢測模型。相比YOLO,YOLO9000在識別種類、精度、速度和定位準確性等方面都有大大提升。YOLO與FastR-CNN相比有較大的定位誤差,與基于regionproposal的方法相比具有較低的召回率。因此YOLOv2主要改進是提高召回率和定位能力。下面是改進之處:BatchNormalization:v1中也大量用了BatchNormalization,同時在定位層后面用dropout,v2中取消了dropout,在卷積層全部使用BatchNormalization。高分辨率分類器:v1中使用224×224訓練分類器網絡,v2擴大到448用于檢測網絡。v2將ImageNet以448×448的分辨率微調最初的分類網絡,迭代10epochs。YOLOv3介紹AnchorBoxes:v1中直接在卷積層之后使用全連接層預測bbox的坐標。v2借鑒FasterR-CNN的思想預測bbox的偏移。移除了全連接層,并且刪掉了一個pooling層使特征的分辨率更大一些。另外調整了網絡的輸入(448→416)以使得位置坐標是奇數只有一個中心點(YOLOv1使用pooling來下采樣,有5個size=2,stride=2的maxpooling,而卷積層沒有降低大小,因此最后的特征是416/(2^5)=13)。v1中每張圖片預測7×7×2=98個box,而v2加上AnchorBoxes能預測超過1000個。檢測結果從69.5mAP,81%recall變為69.2mAP,88%recall。細粒度特征(finegrainfeatures):在FasterR-CNN和SSD均使用了不同的featuremap以適應不同尺度大小的目標。YOLOv2使用了一種不同的方法,簡單添加一個passthroughlayer,把淺層特征圖(26×26)連接到深層特征圖(連接到新加入的三個卷積核尺寸為3×3的卷積層最后一層的輸入)。通過疊加淺層特征圖相鄰特征到不同通道(而非空間位置),類似于Resnet中的identitymapping。這個方法把26×26×512的特征圖疊加成13×13×2048的特征圖,與原生的深層特征圖相連接,使模型有了細粒度特征。此方法使得模型的性能獲得了1%的提升。YOLOv3介紹Multi-ScaleTraining:和YOLOv1訓練時網絡輸入的圖像尺寸固定不變不同,YOL0v2(在cfg文件中random=1時)每隔幾次迭代后就會微調網絡的輸入尺寸。訓練時每迭代10次,就會隨機選擇新的輸入圖像尺寸。因為YOLOv2的網絡使用的downsamples倍率為32,所以使用32的倍數調整輸入圖像尺寸{320,352,...608}。訓練使用的最小的圖像尺寸為320×320,最大的圖像尺寸為608×608。這使得網絡可以適應多種不同尺度的輸入。其次,如果訓練集中某一個groundtruth對應的Boundingbox中心恰好落在了輸入圖像的某一個gridcell中(如圖中的紅色gridcell),那么這個gridcell就負責預測此物體的boundingbox,于是這個gridcell所對應的objectnessscore就被賦予1,其余的gridcell則為0。此外,每個gridcell還被賦予3個不同大小的priorbox。在學習過程中,這個gridcell會逐漸學會如何選擇哪個大小的priorbox,以及對這個priorbox進行微調(即offset/coordinate)。但是gridcell是如何知道該選取哪個priorbox呢?在這里作者定義了一個規則,即只選取與groundtruthboundingbox的IOU重合度最高的哪個priorbox。YOLOv3介紹YOLOv3檢測物體上面說了有三個預設的不同大小的priorbox,但是這三個大小是怎么計算得來的呢?作者首先在訓練前,提前將COCO數據集中的所有boundingbox使用K-meansclustering分成9個類別,每3個類別對應一個scale,這樣總共3個scale。遵循的原則是特征圖的尺寸越小,則分配的anchorbox的尺寸越大。不同anchorbox對圖像感知視野的不同。這種關于box大小的先驗信息極大地幫助網絡準確的預測每個box的offset/coordinate,因為從直觀上,大小合適的box將會使網絡更快速精準地學習。YOLOv3主要的改進有:調整了網絡結構;利用多尺度特征進行對象檢測;對象分類用Logistic取代了Softmax。YOLOv3介紹使用預訓練模型進行檢測:使用預訓練的模型來檢測物體。如果尚未安裝Darknet,則應首先進行安裝。訓練YOLOv3模型然后下載預訓練模型的權重文件:wget/nedia/files/yolov3.weights。對單圖片進行檢測:./darknetdetectcfg/yo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026遵義醫院面試題目及答案
- 感恩父母老師同學主題班會課件
- 網絡科技年度個人述職報告
- 健康產品營銷策略
- 房建項目工程監理規劃
- 倉儲設備操作維護指南
- 食堂桶裝水管護考核辦法
- 路床整形施工方案(挖土、壓實)
- 手術體位并發癥及預防
- 文物保護工程從業資格考前押題卷(含答案)
- 統編人教版(2024)八年級上冊道德與法治全冊教案
- 2025中國五礦集團(黑龍江蘿北石墨園區)石墨產業有限公司招聘備考考試題庫附答案解析
- 物業人員管理及培訓方案
- 2025-2030脫硫石膏品質提升與高值化利用技術匯編
- 醫院病人跌倒事件魚骨圖分析
- 冷板液冷標準化及技術優化白皮書
- 養老院護士課件
- 電氣識圖培訓考核試題(附答案)
- 應急預案培訓計劃
- 人教版七年級下冊數學期末測試卷(含答案)
- 保安員考試題庫500道(含答案)
評論
0/150
提交評論