国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于K210開發(fā)板的卷積神經(jīng)網(wǎng)絡(luò)教學(xué)設(shè)計*

2022-06-25 17:52:06穆明
中國教育技術(shù)裝備 2022年17期
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò)機器學(xué)習(xí)人工智能

摘? 要? 以人工智能課程中的卷積神經(jīng)網(wǎng)絡(luò)算法為例,設(shè)計基于人工智能開發(fā)板的應(yīng)用案例進行實驗教學(xué),在幫助學(xué)生掌握算法理論的同時,有效培養(yǎng)其工程實踐能力。

關(guān)鍵詞? 人工智能;卷積神經(jīng)網(wǎng)絡(luò);K210開發(fā)板;機器學(xué)習(xí);邊緣智能

中圖分類號:G633.67? ? 文獻標識碼:B

文章編號:1671-489X(2022)17-0031-03

0? 引言

目前,人工智能課程教學(xué)已在中小學(xué)普遍實施,因課程專業(yè)理論體系涉及數(shù)學(xué)、計算機軟硬件等課程基礎(chǔ),給課程的有效落地實施帶來一定難度。日常教學(xué)如單純等同于一般計算機語言教學(xué),則會使學(xué)生感覺枯燥乏味;在教學(xué)實踐中如恰當引入開源硬件單片機實驗教學(xué),則會使課程實施達到事半功倍的效果。機器學(xué)習(xí)系統(tǒng)的訓(xùn)練通常在電源充足和計算性能強勁的遠程服務(wù)器中及云端進行,當訓(xùn)練完成后,機器學(xué)習(xí)系統(tǒng)就可以依據(jù)經(jīng)驗自動分析新的數(shù)據(jù)即推演。機器學(xué)習(xí)系統(tǒng)的推演過程通常在本地即在邊緣設(shè)備完成。為此,為增強機器學(xué)習(xí)課程教學(xué)實效,突出工程實踐性教學(xué),教學(xué)中在通俗講解機器學(xué)習(xí)課程算法基礎(chǔ)和模型實現(xiàn)的基礎(chǔ)上,增設(shè)邊緣智能實驗的教學(xué)設(shè)計環(huán)節(jié),從而極大對提高學(xué)生學(xué)習(xí)的興趣和課堂教學(xué)質(zhì)量。以下從經(jīng)典的深度學(xué)習(xí)模型卷積神經(jīng)網(wǎng)絡(luò)算法分析入手,基于K210開發(fā)板進行邊緣智能實驗設(shè)計。

1? 卷積神經(jīng)網(wǎng)絡(luò)算法分析

通常數(shù)學(xué)卷積的卷積核需要翻轉(zhuǎn),而卷積神經(jīng)網(wǎng)絡(luò)的卷積是提取圖像特征進行加權(quán)求和,不翻轉(zhuǎn),稱為互相關(guān),也稱為不翻轉(zhuǎn)卷積,其卷積核是根據(jù)數(shù)據(jù)訓(xùn)練學(xué)習(xí)的參數(shù),不是給定的,無論翻轉(zhuǎn)與否,對應(yīng)的都是待學(xué)習(xí)的未知參數(shù)。卷積神經(jīng)網(wǎng)絡(luò)(CNN)與全連接神經(jīng)網(wǎng)絡(luò)(DNN)都屬于前饋神經(jīng)網(wǎng)絡(luò),其正向傳播的算法原理大致相同,整個網(wǎng)絡(luò)可看作一個復(fù)合函數(shù)。按照現(xiàn)有經(jīng)典著作講解卷積神經(jīng)網(wǎng)絡(luò)計算損失函數(shù)關(guān)于權(quán)重參數(shù)梯度的常規(guī)算法非常煩瑣。為此,借鑒計算機進行矩陣運算轉(zhuǎn)為向量運算這一思想,將卷積核和卷積層矩陣平鋪拼接為向量形式,就得到類似全連接神經(jīng)網(wǎng)絡(luò)的前向傳播公式,相應(yīng)的反向傳播求導(dǎo)就可以簡化。

1.1? 卷積圖像轉(zhuǎn)為列向量(求傳播誤差)

1.1.1? 前向傳播

將待卷積圖像矩陣(按行向量優(yōu)先)轉(zhuǎn)為列向量X(活性值)、卷積核W(按行向量優(yōu)先)拼接為行向量(與待卷積圖像矩陣元素不相關(guān)的對應(yīng)位置處以0為間隔拼接),以卷積子圖像數(shù)為矩陣行數(shù)轉(zhuǎn)換成新矩陣A,由矩陣相乘再加偏置向量b得到卷積后列向量Y(凈活性值),等價于卷積圖像與卷積核W做互相關(guān)運算(特稱為正向卷積,為窄卷積)。卷積神經(jīng)網(wǎng)絡(luò)l層的前向傳播公式變?yōu)椋篩=AXl+b,Xl=f(Yl-1)。

1.1.2? 反向傳播

卷積操作通過仿射變換(Y=AX)可實現(xiàn)由高維特征到低維特征的轉(zhuǎn)換,也可以轉(zhuǎn)置A實現(xiàn)低維到高維的反向映射。如果對上述卷積核經(jīng)鋪開拼接得到的矩陣A進行轉(zhuǎn)置,然后與低維輸入向量Y做矩陣乘法即反向映射,得到高維輸出向量X,等價于卷積核W與正向卷積的輸出圖像做數(shù)學(xué)卷積運算(稱為轉(zhuǎn)置卷積或反卷積,為寬卷積)[1]。

1.2? 卷積核轉(zhuǎn)為列向量(求參數(shù)梯度)

1.2.1? 前向傳播? 將卷積核矩陣所有行拼接為一個列向量(W),將輸入圖像X每個卷積子圖像(按照行優(yōu)先)拼接為一個行向量,所有卷積子圖像形成的行向量按原定的卷積順序組合形成矩陣A(矩陣行數(shù)為卷積子圖像數(shù)),前向傳播公式等價為:Y=AW+b。

1.2.2? 反向傳播

同樣可以借助轉(zhuǎn)置卷積,此轉(zhuǎn)置卷積等價于輸入卷積圖像與卷積輸出圖像做互相關(guān)運算(為窄卷積)。根據(jù)卷積核或卷積圖像轉(zhuǎn)為列向量的前向傳播公式對偏置向量求導(dǎo),為便于與對W求偏導(dǎo)數(shù)相統(tǒng)一,借助將卷積核轉(zhuǎn)為列向量的前向傳播公式Y(jié)=AW+b求導(dǎo)。

1.3? 匯聚層求導(dǎo)

因匯聚層為下采樣操作,當?shù)趌層為匯聚層時,采取上采樣由l層的損失函數(shù)誤差得到第l-1層的損失函數(shù)誤差。上采樣之后,由于匯聚是一個線性函數(shù)的過程,因此要求針對上一層的Yl-1的梯度,中間只有一個上一層的Yl-1到Xl的激活函數(shù)。匯聚層下采樣有平均匯聚和最大匯聚兩種方法。

2? 邊緣智能實驗設(shè)計

剖析卷積神經(jīng)網(wǎng)絡(luò)模型算法原理后,便可以借助TensorFlow等深度學(xué)習(xí)開發(fā)框架進行模型訓(xùn)練和測試,通常將由TensorFlow保存的HDF5模型轉(zhuǎn)換為TFLite格式,在正式進入邊緣智能實驗之前,由于NNC模型量化工具對TFLite格式支持較好,故需在電腦上將訓(xùn)練完成的模型轉(zhuǎn)換為TFLite格式后再進行量化,生成KModel格式模型(由NNCase

工具轉(zhuǎn)換)供K210單片機調(diào)用。K210芯片架構(gòu)包含一個自研的神經(jīng)網(wǎng)絡(luò)硬件加速器KPU以便進行卷積神經(jīng)網(wǎng)絡(luò)運算。KPU支持主流訓(xùn)練框架按照特定限制規(guī)則訓(xùn)練出來的定點化模型。教學(xué)實踐中以亞博智能K210開發(fā)板為載體,下載已在外部設(shè)備訓(xùn)練好的普適模型,基于開發(fā)板自帶傳感設(shè)備采集的數(shù)據(jù)進行測試預(yù)測,從而實現(xiàn)一定功能。以下以亞博智能K210開發(fā)板(技術(shù)資料參考亞博智能K210開發(fā)板套件)為例,搭建基于C(亞博智能K210開發(fā)板隨機資料只提供C語言學(xué)習(xí)代碼)和Python兩種嵌入式開發(fā)環(huán)境系統(tǒng),調(diào)用卷積神經(jīng)網(wǎng)絡(luò)模型對人臉識別案例進行實驗設(shè)計教學(xué)。

2.1? 基于C語言的環(huán)境搭建

人臉檢測技術(shù),一是判斷圖片中是否包含人臉區(qū)域;二是如果圖片中存在人臉,將人臉的位置預(yù)測出來。推薦在Win10系統(tǒng)下通過VSCode編輯器搭建K210的開發(fā)環(huán)境。

2.1.1? 人臉檢測技術(shù)代碼流程及代碼

1)系統(tǒng)內(nèi)部初始化:①系統(tǒng)時鐘初始化;②串口初始化;③硬件引腳初始化;④IO電壓設(shè)置; ⑤系統(tǒng)中斷初始化;⑥Flash初始化。

2)外部硬件初始化:①LCD初始化;②OV2640(攝像頭)初始化。

3)人臉檢測初始化:①模型加載;②人臉檢測層配置初始化。

4)人臉檢測業(yè)務(wù)邏輯層:①等待攝像頭采集完成;②傳入攝像頭采集的圖像到KPU運行模型;③等待KPU處理完成;④獲取KPU最終處理的結(jié)果;⑤把KPU處理的結(jié)果帶入?yún)^(qū)域?qū)佑嬎阕罱K

位置;⑥根據(jù)獲取的人臉個數(shù)進行逐一標記。

核心代碼:

int main(void)

{

sysclock_init();? ?/*系統(tǒng)時鐘初始化*/

uarths_init();? ? ?/*串口初始化*/

hardware_init();? ?/*硬件引腳初始化*/

io_set_power();? ? /*設(shè)置IO口電壓*/

plic_init();? ? ? ?/*系統(tǒng)中斷初始化*/

printf(“flash init\n”);

w25qxx_init(3, 0);? ? ? ? ? ?/*Flash init*/

w25qxx_enable_quad_mode();? ?/*Flash 四

倍模式開啟*/

/*KModel加載方式:1.分開燒錄模式;

2.直接與代碼合并編譯*/

#if LOAD_KMODEL_FROM_FLASH

model_data = (uint8_t*)malloc(KMODEL_

SIZE + 255);

uint8_t *model_data_align(uint8_t*)(((uintptr_t)model_data+255)&(~255));

#else

uint8_t *model_data_align = model_data;

#endif

ov2640_init();

/*加載KModel,需要與NNCase配合使用*/

if (kpu_load_kmodel(&face_detect_task, model_

data_align) != 0)

{

printf(“\nmodel init error\n”);

while (1);

}

2.1.2? 代碼編譯? 把K210隨機資料中的 face_

detection文件夾復(fù)制到SDK中的src目錄下,然后進入build目錄,刪除build目錄下所有文件,最后運行以下命令編譯:

cmake .. -DPROJ=face_detection -G “MinGW Makefiles”?make

編譯完成后在build文件夾下生成對應(yīng)文件名的待燒寫二進制文件。

2.1.3? 代碼燒錄

打開kflash下載程序?qū)⑸傻拇裏龑懚M制文件燒錄到K210開發(fā)板。

2.2? 基于MicroPython的環(huán)境搭建

下載MaixPy固件到K210開發(fā)板(相當于給開發(fā)板燒錄系統(tǒng)),MaixPy使用MicroPython腳本語法[2],不像C語言一樣需要編譯,要使用MaixPy IDE,開發(fā)板固件必須是V0.3.1版本以上,否則MaixPy IDE連接不上開發(fā)板,使用前盡量都更新到最新版以保障能正常使用。通常一個固件文件中至少有四個文件,以“maixpy_v0.5.0_31_gd3e71c0”固件為例,具體說明如下。

1)eif_maixpy_v0.5.0_31_gd3e71c0.7z:普通用戶不用關(guān)心,用于死機調(diào)試。

2)maixpy_v0.5.0_31_gd3e71c0_m5stickv:M5STACK環(huán)境。

3)maixpy_v0.5.0_31_gd3e71c0_minimum:MaixPy固件最小集合,不支持MaixPy IDE,不包含OpenMV的相關(guān)算法。

4)maixpy_v0.5.0_31_gd3e71c0.bin:完整版的MaixPy固件。

正常使用的完整版MaixPy固件,搭建步驟如下所示。

1)確定開發(fā)板:工具—選擇開發(fā)板—kendryte?KD233。

2)安裝驅(qū)動,選擇端口:工具—打開終端—串行端口—COM3—115200。

3)連接:圖標綠色變紅色表示已連接。

主要代碼為:

import sensor

import image

import lcd

import KPU as kpu

import time

from Maix import FPIOA, GPIO

import gc

from fpioa_manager import fm

from board import board_info

import utime

task_fd = kpu.load(0x300000)

task_ld = kpu.load(0x400000)

task_fe = kpu.load(0x500000)

lcd.init()

sensor.reset()

sensor.set_pixformat(sensor.RGB565)

sensor.set_framesize(sensor.QVGA)

sensor.set_hmirror(0)

sensor.set_vflip(0)

sensor.skip_frames()? ? /*跳過一些幀數(shù),因為攝像頭啟動時圖像沒穩(wěn)定*/

lcd.init(invert=1)

sensor.run(1)

3? 結(jié)束語

在機器學(xué)習(xí)課程中引入邊緣智能實驗教學(xué),可以彌補教學(xué)實施“重軟輕硬”(即重視基礎(chǔ)理論教學(xué),忽視實踐應(yīng)用教學(xué))的不足,引導(dǎo)一線教師重視邊緣智能實踐應(yīng)用教學(xué),有效提升人工智能課程的教學(xué)效益,為培養(yǎng)軟硬能力兼?zhèn)涞募夹g(shù)應(yīng)用人才奠定基礎(chǔ)。

參考文獻

[1] 邱錫鵬.神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)[M].北京:機械工業(yè)出版社,2020:115-129.

[2] 邵子揚.MicroPython入門指南[M].北京:電子工業(yè)出版社,2018:6-22.

*項目來源:2021年度山東省教育教學(xué)研究一般課題“中小學(xué)人工智能課程內(nèi)容設(shè)計與實施范例研究”(課題編號:2021JXY383)。

作者:穆明,淄博市基礎(chǔ)教育研究院,高級教師,研究方向為機器學(xué)習(xí)算法(255033)。

猜你喜歡
卷積神經(jīng)網(wǎng)絡(luò)機器學(xué)習(xí)人工智能
2019:人工智能
商界(2019年12期)2019-01-03 06:59:05
人工智能與就業(yè)
數(shù)讀人工智能
小康(2017年16期)2017-06-07 09:00:59
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識別算法
基于機器學(xué)習(xí)的圖像特征提取技術(shù)在圖像版權(quán)保護中的應(yīng)用
基于網(wǎng)絡(luò)搜索數(shù)據(jù)的平遙旅游客流量預(yù)測分析
時代金融(2016年27期)2016-11-25 17:51:36
前綴字母為特征在維吾爾語文本情感分類中的研究
深度學(xué)習(xí)算法應(yīng)用于巖石圖像處理的可行性研究
基于深度卷積網(wǎng)絡(luò)的人臉年齡分析算法與實現(xiàn)
軟件工程(2016年8期)2016-10-25 15:47:34
基于支持向量機的金融數(shù)據(jù)分析研究
高邮市| 威远县| 类乌齐县| 柳河县| 靖州| 马尔康县| 连城县| 城固县| 绥滨县| 北碚区| 嘉义市| 洪泽县| 恩施市| 钦州市| 昌江| 拜城县| 宁夏| 永济市| 林州市| 乐安县| 平度市| 洮南市| 铜陵市| 金昌市| 延长县| 濮阳县| 金山区| 孟村| 佛山市| 郓城县| 扎囊县| 微山县| 平利县| 苍南县| 许昌县| 岑溪市| 织金县| 望都县| 饶阳县| 扎赉特旗| 克什克腾旗|