k210 hc-05 智慧课堂 人脸识别签到
基于k210開發板的智能課堂簽到設計
李佳奇,李佳,李敏,武林,王俊海
??????????????????????????????(淮北師范大學,計算機科學與技術學院,淮北,團隊ID:383717)
摘要:
基于k210開發板的智能課堂簽到設計可以快速實現對課堂同學的考勤簽到,并通過APP實時將數據信息傳送給老師,系統基于yolo2神經網絡的人臉識別、軟件設計、硬件設計、數據庫等技術,實現了動態無感課堂數據采集、考勤確認、考勤統計等功能,真正實現人工智能取代落后的人工點名。
關鍵字:
人臉識別、人工智能、數據庫、k210硬件設計、智慧課堂、嵌入式開發。
引言:
隨著信息產業的高速發展,教學系統信息化已被廣泛應用于各大院校的教學實踐,比如我們日常接觸到的:掃描二維碼完成簽到、線上完成老師布置的作業、網上選課等等。如何在人工智能應用及信息化的基礎上,提高課堂的管理效率,減少學校設備投資成本,構建智能化課堂管理,一直是困擾各高校的首要難題。因此,開展人工智能時代下的智能課堂簽到系統的研究與設計,具有重大價值和現實意義。
近年來,隨著信息技術的不斷發展,現代化科技手段已經融入各行各業,而人們對肖像權概念越來越淡化,隨時隨地拍照錄像已經成為生活的一部分。教室攝像頭的安裝已經成為標配,同學們已經習以為常,然而在課堂上獲取的視頻化數據被利用的概率確很低,在同學們的不經意之間,若能能將這些視頻數據利用在課堂的考勤上,具有重要意義,而近些年來新興起的k210芯片,具有極強的算力,在人臉識別能力上獨樹一幟,另,由python語言作為編程語言的k210,不僅應用場景設計難度較小,且代碼的開源性較強,要實現課堂的智能簽到設計,k210開發板可以說是最佳的選擇。
第一部分:產品介紹
硬件篇:
一、K210開發板介紹:
K210全稱為堪智K210,是嘉楠科技自主研發的一款采用RISC-V處理器架構,具備視聽一體、自主IP內核與可編程能力強三大特點,支持機器視覺與機器聽覺多模態識別,可廣泛應用于智能家居、智能園區、智能能耗和智能農場等場景。堪智K210使用臺積電超低功耗的28納米先進制程,具有雙核64位處理器,總算力可達1TOPS,內置多種硬件加速單元(KPU、FPU、FFT等),并且擁有較好的功耗性能、穩定性與可靠性。
K210功耗僅為0.3w,典型設備工耗為1W,算力為1TOPS(比樹莓派、Jetson Nano要高),但是1TOPS≠1TFlops。TOPS,(Tera Operations Per Second),1TOPS代表處理器每秒鐘可進行一萬億次(10^12)操作。TFlops/s,(Tera Floating Point Operations Per Second),可以簡單寫為T/s, 是數據流量的計數單位,意思是”1萬億次浮點指令每秒”。
?
?
二、k210實現人臉識別:
1、數據的收集。
2、運行人臉檢測模型,在圖片中找到人臉位置并框出人臉。
3、將裁出的人臉圖片轉換成kpu接收的格式。
4、運行人臉5點關鍵點模型,獲取到左眼、右眼、鼻子、左嘴角、右嘴角的位置。
5、對原始圖片人臉圖片進行仿射變換,變換為正臉圖像,將正臉圖像轉為kpu格式。
6、使用人臉196維特征值模型計算正臉圖片的196維特征值,計算得到最終的人臉特征feature。
再將得到的人臉特征與之前保存過的人臉特征進行對比得到一組分數,選擇其中最大的一個分數,且該分數超過65分(可以自己設置)就認為識別出該人,并根據對應下標從names列表中得到該人的姓名。
具體操作如下:
1.訓練模型并燒錄到開發板中:
模型獲取:首先通過手機拍攝一小段10s左右的視頻,通過視頻轉圖片平臺(www.img2go.com)將視頻轉換為(224*224)的圖片
緊接著,將圖片文件移至Maixhub(官方模型訓練平臺),完成對數據的整理與標注,進行訓練。
上圖為數據的整理過程
上圖為數據的標注過程
上圖為數據的訓練過程
訓練平臺選擇nncase平臺;模型網絡選擇transfer_learning;主干網絡選擇mobilenet_0.75;照片尺寸選擇224*224,以上選擇均為適應k210正常運行的選擇。
將燒錄得到的模型經過解壓,得到運行在MaixPy IDE上的代碼以及燒錄進kflash_gui的模型,運行結果如下顯示:
2.1編程環境的搭建:
???????????????????????????????
首先介紹集成開發環境(MaixPy Integrated Development Environment);
MaixPy IDE是搭配k210開發的應用程序,集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務。
???????用于連接開發板
如果需要將訓練的模型在k210的flash中存儲并運行,需要通過此軟件將模型燒錄進k210的flash中。
- HC-05藍牙模塊介紹&&pyIOT-BLE TLS01
?????????????????
圖() hc-05外觀圖
圖() hc-05 原理圖 ???
相關參數介紹
1.引腳
6根引腳,名稱與功能如下;
VCC 接電源的正極,電壓的范圍為3.3v到5.0v
vdd 為外接供電電源輸入端
GND 地線
TXD:模塊串口發送引腳(TTL電平,不能直接接RS232電平),可直接接單片機的RXD引腳
RXD:模塊串口接收引腳(TTL電平,不能直接接RS232電平),可直接接單片機的TXD引腳
KEY:用于進入AT狀態:
LED:這個引腳是用來檢測藍牙模塊是否已經連接上了其他藍牙設備
HC-05通過TX和RX引腳,支持使用標準AT命令。為此,用戶必須在設備啟動時進入特殊命令模式。啟動進入數據模式,這樣它就可以與其他設備進行無線通信。
1.優點:
麻雀雖小,五臟俱全,hc-05不僅價格實惠(在某魚上八快就能拍到),而且數據傳輸速率并不影響,支持的波特率有9600,19200,38400,57600,115200,230400,460800,體積小,重量輕,非常適合搭配同級別的便攜式硬件k210。唯一的缺點是信號接收范圍較小,僅有15米(假設無障礙)左右,為此,為了項目能搭配更多的應用場景,即滿足距離上的要求,我們選擇使用k210官方設計的pyIOT-BLE TLS01藍牙模塊,可接收60米左右范圍內信號(假設無障礙)。
?????????????
圖() pyIOT-BLE TLS-01外觀圖
蜂匯物聯科技推出的 TLS-01 藍牙無線透傳模塊是基于 TELINK 公司的TLSR8266F512 芯片研發的低功耗 BLE 射頻模塊,模塊能夠以非常低的總材料成本實現與藍牙設備的通信,具有功耗低、體積小、抗干擾能力強等特點。TLS-01 藍牙模塊可以實現模塊與手機數據透傳,通過簡單的 IO 控制便可以快速使用 BLE 技術。模塊作為從角色,可使用 AT 指令控制, 通過串口即可設置IO 引腳狀態、串口波特率、修改模塊的廣播名稱,修改廣播間隔和連接間隔等參數。
圖() pyIOT-BLE TLS-01原理圖 圖() pyIOT-BLE TLS-01 功能圖
1.優點?:k210官方推出的藍牙模塊,擁有和k210一樣任意配置引腳的特點,通過串口即可設置IO 引腳狀態、串口波特率、修改模塊的廣播名稱,修改廣播間隔和連接間隔等,這是優于hc-05的特點,在本項目中,使用該藍牙模塊僅是為了利用其信號接收和傳播范圍廣的優點,其他優點,暫且不展開闡述。
1.攝像頭介紹(OV2640攝像頭)
OV2640是Omni Vision公司生產的一顆1/4寸的CMOS UXGA(1632*1232)圖像傳感器,如圖1.1 OV2640攝像頭所示。該傳感器體積小、工作電壓低,提供單片 UXGA 攝像頭和影像處理器的所有功能。通過 SCCB 總線控制,可以輸出整幀、子采樣、縮放和取窗口等方式的各種分辨率 8/10 位影像數據。該產品 UXGA 圖像最高達到 15 幀/秒(SVGA 可達 30 幀,CIF 可達 60 幀)。用戶可以完全控制圖像質量、數據格式和傳輸方式。所有圖像處理功能過程包括伽瑪曲線、白平衡、對比度、色度等都可以通過 SCCB 接口編程。Omni Vision圖像傳感器應用獨有的傳感器技術,通過減少或消除光學或電子缺陷如固定圖案噪聲、拖尾、浮散等,提高圖像質量,得到清晰的穩定的彩色圖像。
OV2640優點:
高靈敏度、工作電壓低適合嵌入式應用;
通過 SCCB 總線控制,標準的 SCCB 接口,類似 IIC 接口,SDA數據線和SCL時鐘線;
支持圖像壓縮,即可輸出壓縮后的JPEG圖像數據,大大減少數據量;
支持 RawRGB、RGB(RGB565/RGB555)、GRB422、YUV(422/420)和 YCbCr (422)輸出格式;
支持自動曝光控制、自動增益控制、自動白平衡、自動消除燈光條紋等自動控制功能,對圖像進行處理;
自帶嵌入式微處理器;
支持圖像縮放、平移和窗口設置。
UXGA最高15幀/秒,SVGA可達30幀,CIF可達60幀。UXGA,即分辨率位1600*1200的輸出格式,類似還有SXGA(1280*1024)、XVGA(1280*960)、WXGA(1280*800)、XGA(1024*768)、SVGA(800*600)、VGA(640*480)、CIF(352*288)和QQVGA(160*120)等。
圖() 圖像濾波操作函數庫
通過圖像濾波處理,可以使得機器應對不同的環境。
圖()2.8寸顯示屏(320x240) 圖()杜邦線若干 usb數據線1條
核心代碼:
import sensor,image,lcd,time import KPU as kpu from machine import UART from fpioa_manager import fm import utime lcd.init() lcd.rotation(1)sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) #sensor.set_vflip(1) #flip camera; maix go use sensor.set_hmirror(0)sensor.set_hmirror(1) sensor.set_vflip(True) sensor.run(1)clock = time.clock()li=[] classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'] task = kpu.load(0x800000) anchor = (1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52) a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)fm.register(7, fm.fpioa.UART1_TX, force=True) fm.register(6, fm.fpioa.UART1_RX, force=True) uart = UART(UART.UART1, 9600, read_buf_len=4096)\uart.write("歡迎使用丟了湯圓隊設計的智能課堂系統"+'\r\n')uart.write("輸入以下數字:跳轉到各班人臉數據庫"+'\r\n') uart.write("1-->智能科學班"+'\r\n') uart.write("2-->大數據科學與技術班"+'\r\n') uart.write("3-->網絡工程班"+'\r\n') uart.write("4-->信息安全班"+'\r\n') uart.write("5-->計算機科學班"+'\r\n') while True:text=uart.read()if text==b'1':uart.write("21級智能科學與技術班共計90人,正在加載數據庫,請稍后....")lcd.draw_string(60, 120, "Loading.....",lcd.BLACK, lcd.WHITE)utime.sleep(2)lcd.display(image.Image("zhike.bmp"))utime.sleep(1)break;while(True):lcd.rotation(3)clock.tick()img = sensor.snapshot()code = kpu.run_yolo2(task, img)print(clock.fps())if code:for i in code:a=img.draw_rectangle(i.rect())a = lcd.display(img)for i in code:lcd.draw_string(i.x(), i.y(), classes[i.classid()], lcd.RED, lcd.WHITE)lcd.draw_string(i.x(), i.y()+12, '%f1.3'%i.value(), lcd.RED, lcd.WHITE)if classes[i.classid()] not in li:li.append(classes[i.classid()])uart.write(classes[i.classid()]+"已簽到"+'\r\n')else:a = lcd.display(img) a = kpu.deinit(task)?沒有班級人臉數據庫,沒有權限,所以用的是官網模型庫里的20種物體識別模型。
效果展示:
總結
以上是生活随笔為你收集整理的k210 hc-05 智慧课堂 人脸识别签到的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (3)Python3笔记之变量与运算符
- 下一篇: 汉三水属国(北地属国、安定属国)