加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于CNN(卷積神經(jīng)網(wǎng)絡(luò))的智能垃圾分類及遠程監(jiān)控系統(tǒng)

07/23 11:47
1158
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

一、項目名稱

基于CNN的智能垃圾分類及遠程監(jiān)控系統(tǒng)

二、項目概述

本項目旨在利用LPC55S69芯片雙核計算資源,運用圖像識別、智能控制技術(shù)實現(xiàn)智慧垃圾投放和監(jiān)測系統(tǒng)。core0內(nèi)核和powerquad將用來處理圖像分類中的計算,并通過mailbox發(fā)送結(jié)果給core1內(nèi)核;core1內(nèi)核則負責實時監(jiān)測垃圾桶狀態(tài)。具體功能如下。

1)系統(tǒng)基于神經(jīng)網(wǎng)絡(luò)算法開發(fā)板中實現(xiàn)圖像識別,并結(jié)合機械裝置對垃圾進行精確投放。2)監(jiān)測垃圾桶的多維屬性,如垃圾桶編號及滿溢程序投入垃圾的種類、數(shù)量以及網(wǎng)絡(luò)接入等狀態(tài),同時系統(tǒng)將周期性地將數(shù)據(jù)經(jīng)由WIFI上傳并在LCD屏上顯示。

項目的想法是由最近國內(nèi)大火的垃圾分類給出的靈感,目前大部分垃圾分類還都是由人工進行垃圾分類,這就導致了高昂的代價。所以我就想著能不能將深度學習加到垃圾分類中,這其中走了很多彎路。在項目初期,由于對深度學習還沒有十分理解,這也導致在之后的模型訓練以及移植到MCU里用了不少時間。

三、項目圖

圖3.1 整體實物圖

? ?

圖3.2 整體實物點亮圖

項目使用了LPC55S69一塊、SG90舵機一個、OV7670攝像頭一個、HCSR04超聲波傳感器一個、LCD屏幕一塊、ESP8266-wifi模塊一個。

這三張圖是三個設(shè)備的連線圖,網(wǎng)絡(luò)號對應(yīng)與LPC55S69-EVK的網(wǎng)絡(luò)號。另外攝像頭使用了小板先轉(zhuǎn)換為灰度圖片,然后通過串口與開發(fā)板通信,使用USART0;ESP8266模塊通過串口與開發(fā)板通信,使用USART2。

四、項目功能

圖4.1 總流程圖

整體流程為M4內(nèi)核采集圖像并進行圖像推理,最后將數(shù)據(jù)經(jīng)由mailbox發(fā)送給M0內(nèi)核。而在M4內(nèi)核處理大量運算和數(shù)據(jù)時,由于雙核的使用,M0內(nèi)核可以一直讀取傳感器數(shù)據(jù)并進行發(fā)送,當M4內(nèi)核處理完一次數(shù)據(jù)后M0內(nèi)核也能及時更新所需要發(fā)送的信息,大大提高了系統(tǒng)的實時性。在這里只加入了一個超聲波傳感器,沒有再將溫度、煙霧等傳感器加進來,一是因為傳感器代碼的編寫都是大同小異的,二是3V3引腳有點不夠用了(XD)。

1、雙核的使用

M4內(nèi)核進行圖像采集以及圖像推理功能。

由于我一直覺得官方的SPI函數(shù)有一點問題(就像LPC55S69-evk上P8的RX和TX引腳標反了,SCTIMER來寫PWM最低只有1KHz),所以我寫了一個GPIO模擬SPI的程序驅(qū)動的LCD。程序很穩(wěn)定,缺點就是刷新率低。

core1內(nèi)核控制各種模塊,接收core0內(nèi)核推理后的結(jié)果,將結(jié)果和其他傳感器數(shù)據(jù)經(jīng)由wifi打包發(fā)送給上位機。

圖4.2 上位機數(shù)據(jù)

圖4.2是調(diào)試助手中收到的數(shù)據(jù),每三個數(shù)據(jù)為一組,對應(yīng)開發(fā)板中程序。

2、CNN

程序中使用了卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)。AI這個東西,對于沒有接觸過的人就像黑匣子一樣,神秘莫測。但發(fā)展到如今這個階段,加上開發(fā)板性能的不端迭代提升,就算是做嵌入式開發(fā),也可以接觸和使用AI,讓AI為我們服務(wù)。

本次比賽也是我第一次將神經(jīng)網(wǎng)絡(luò)加入到嵌入式開發(fā)板中的嘗試,也學習了很多天,參考了不少代碼,最終形成了一套VS編寫的純C版本的CNN代碼和一套可以應(yīng)用在LPC55S69中的程序。在開發(fā)板中的程序只能進行推理,VS中的程序可以進行訓練和推理,代碼在文末我也都會給出。使用流程就是在VS訓練出模型,然后將模型移植到開發(fā)板中,開發(fā)板只需要按照模型進行推理就可以。所謂模型,其實就是我代碼中core0內(nèi)核程序的主函數(shù)中的一大堆的100K的數(shù)據(jù),推理的過程就是利用這些參數(shù)進行數(shù)學運算的過程,所以可能理解其中的數(shù)學公式比較難,但是了解神經(jīng)網(wǎng)絡(luò)的流程和使用,還是不困難的。我也借此機會將這些代碼分享出來。

圖4.3 全連接神經(jīng)網(wǎng)絡(luò)圖

圖4.3是一個最簡單的全連接神經(jīng)網(wǎng)絡(luò)的模型。中間兩層是各使用了4個神經(jīng)元,每一層之間進行全連接,最后得到輸出。右邊的公式就是神經(jīng)網(wǎng)絡(luò)中所應(yīng)用的數(shù)學公式。

圖4.4 垃圾分類CNN結(jié)構(gòu)

圖4.4是我的這套系統(tǒng)使用的模型的參數(shù)。模型是基于LeNet5模型修改的,比較粗糙。我也是AI路上的初學者,NXP官方有一套自己設(shè)計的微信CNN架構(gòu),使用了3層卷積,模型也只是90K左右,非常的厲害。

圖4.5 訓練集樣式

圖4.5是我自己拍的數(shù)據(jù)集,三類加起來一共也只有幾百張。處理數(shù)據(jù)集的過程十分繁瑣,所以一個好的數(shù)據(jù)集就很重要,自己弄出來的數(shù)據(jù)集在種類上、位置分布上、圖片質(zhì)量上都比不上那些標準數(shù)據(jù)集。

這三張圖就是實物拍攝的效果。其中電池和紙板的實測效果很好,瓶子效果一般。從實圖和訓練集中的圖不難看出,實際中的圖很黑、亮度都不高,這也是導致瓶子效果不好的原因。雖然卷積神經(jīng)網(wǎng)絡(luò)能夠很好的提取圖像特征,但是由于在開發(fā)板中的模型很小,加上攝像頭轉(zhuǎn)成灰度時圖像的處理過程失真嚴重,導致了瓶子效果不是很好(使用RGB效果更佳,但帶來的是模型的大小問題,沒有具體比較過)。

由于需要大量的計算,因此程序中也加入了powerquad的使用。但由于官方給出的powerquad函數(shù)精度只能為float,而我的模型計算的精度為double,因此我只能將powerquad應(yīng)用在了少數(shù)幾個函數(shù)上(開根號、指數(shù)運算)上。

圖4.6 powerquad函數(shù)使用測試

圖4.6是我對powerquad的第一次嘗試使用。我將運算量最大的點積運算改為powerquad,在實際使用中,速度提升了很多(不止10倍),但是精度的不匹配導致輸出結(jié)果錯誤。我也只能退而求其次將powerquad應(yīng)用在部分不很影響運算過程的函數(shù)中。

3、性能

LPC55S69的性能很強,由于雙核的使用,在主核心高速運算的同時從核心能夠同時獲取傳感器數(shù)據(jù)、處理部分任務(wù)。

在本系統(tǒng)中,最需要資源的就是主核心采集和推理圖片的過程,其他過程都是簡單的數(shù)據(jù)傳輸,因此在主核心需要處理圖片時,將開發(fā)板以150M全速前進,在處理完之后的部分時間內(nèi)以12M低速運行,來降低電量消耗。

在使用LPC55S69的過程中,可以很好的感受到其功耗優(yōu)勢。在同一個開發(fā)板上,同時接入五個設(shè)備(包含一個顯示屏)并且全速運行時,不會出現(xiàn)電壓跳變。雙核的運行也很穩(wěn)定,就算是主頻降低時,我在從核心中的CRC加密以及數(shù)據(jù)經(jīng)由wifi的傳輸都沒有出現(xiàn)掉幀的情況。

很遺憾的就是沒有用上trustzone,本系統(tǒng)中很多數(shù)據(jù)都是動態(tài)獲取的,最需要保存的就是神經(jīng)網(wǎng)絡(luò)的模型數(shù)據(jù)。但是神經(jīng)網(wǎng)絡(luò)太大,遠遠超過了trustzone的總大小。為了保證數(shù)據(jù)傳輸時的完整和安全,我在從核心代碼中給傳輸數(shù)據(jù)加入了CRC編碼。

五、演示視頻、項目文檔

演示視頻和LPC55S69項目工程

六、VS-純C版本CNN代碼

VS-CNN代碼

這份CNN代碼里不是垃圾分類的數(shù)據(jù)集,里面包含了一份讀入txt文件數(shù)據(jù)進行訓練的數(shù)據(jù)。txt文件已經(jīng)包含在工程中,打開工程即可運行,注意:請使用VS2019!

txt內(nèi)的文件為我從串口獲取的攝像頭拍攝到的圖片處理后的像素值,內(nèi)容是0,1,2,3四個數(shù)的數(shù)據(jù)集。具體格式為28*28像素,0為黑,255為白。垃圾分類的數(shù)據(jù)集還沒有采集完成,完成后我也會更新上來。? ?? ? 在某種程度上,神經(jīng)網(wǎng)絡(luò)理論上都是可以放進任何板子中的。這一套VS代碼輸出的數(shù)字集模型僅有27K,而垃圾分類系統(tǒng)中的模型使用了98K。通過對模型超參數(shù)的調(diào)整,再加上一個好的數(shù)據(jù)集,理論上都是可以以自己的需求,用多大的板子就訓練出多大的模型。而且深度學習的好處不僅僅只在于我給出的圖像識別方面,將數(shù)據(jù)集換成語音信號數(shù)據(jù)集等等也都是有效的。

VS代碼可直接移植到開發(fā)板中(模型大小最好不要超過開發(fā)板ram的一半,以防超內(nèi)存),具體使用見 五??中項目工程。

  • 基于CNN的智能垃圾分類及遠程監(jiān)控系統(tǒng).docx

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
PGA2505IDB 1 Texas Instruments Gain Range: 0dB, and 9dB to 60dB, in 3dB steps 24-SSOP -40 to 85

ECAD模型

下載ECAD模型
$13.32 查看
LM386N-1 1 National Semiconductor Corporation IC 0.325 W, 1 CHANNEL, AUDIO AMPLIFIER, PDIP8, DIP-8, Audio/Video Amplifier
$1.44 查看
TPA3116D2DADR 1 Texas Instruments 50-W stereo, 100-W mono, 4.5- to 26-V supply, analog input Class-D audio amplifier w/ SpeakerGuard™ 32-HTSSOP -40 to 85

ECAD模型

下載ECAD模型
$3.7 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜