郭釗汝 徐金 郭恒言 張太紅 張澤宇 孟曉艷


摘? 要: 介紹在樹莓派4B開發板上使用經新疆蘋果品種數據集訓練的Keras模型實時識別蘋果的過程。采用卷積神經網絡理論,將新疆蘋果品種數據集在MobileNetV2網絡模型上深度學習訓練得到模型文件,并運行在鋪設了TensorFlow框架和OpenCV計算機視覺庫的樹莓派開發板上,樹莓派4B通過調用攝像頭實時識別新疆蘋果品種。著重介紹樹莓派4B的環境搭建和實時識別過程,為Keras模型和嵌入式計算機——樹莓派相結合提供探究角度,促進人工智能在硬件方面的實踐與應用。
關鍵詞: 樹莓派; 卷積神經網絡; 人工智能; Keras模型; TensorFlow; 環境搭建
中圖分類號:TP311? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2022)03-32-04
Abstract: The real-time apple recognition process of using Xinjiang apple variety data set trained Keras model on Raspberry Pi 4B development board is introduced. Using Convolutional Neural Network theory, the model file is obtained by deep learning the Xinjiang apple variety data set on the MobileNetV2 network model, and runs it on the Raspberry Pi board installed with TensorFlow framework and OpenCV computer vision library. The Raspberry Pi 4B recognizes the Xinjiang apple varieties in real-time by calling the camera on it. This paper focuses on the environment construction and real-time recognition process of the Raspberry Pi 4B, provides an exploration angle for the combination of the Keras model and the embedded computer, the Raspberry Pi, which promotes the practice and application of artificial intelligence in hardware.
Key words: Raspberry Pi; Convolutional Neural Network; artificial intelligence; Keras model; TensorFlow; environment construction
0 引言
自從著名的AlexNet贏得2012年圖像網絡大規模視覺識別大賽圖像分類冠軍之后,卷積神經網絡就無處不在。在現實生活中,機器人、增強現實等應用不斷普及,許多應用需要借助于資源受限的邊緣設備實時完成。2017年,谷歌人工智能團隊提出適合移動和嵌入式視覺應用的MobileNet網絡模型,該模型用深度可分卷積(Depthwise Separable Convolution)代替了傳統標準機架(Standard Convolution),從而減少運算量。2019年,谷歌人工智能團隊對MobileNetV1做出進一步改進,提出MobileNetV2網絡模型[1]。
新疆是瓜果之鄉,常見的栽培蘋果品種有10余種,2019年,新疆農業大學計算機與信息工程學院采購紅富士、青香蕉、黃元帥蘋果各三十多公斤,采集圖像7932幅,制作新疆蘋果品種數據集,將該數據集在MobileNetV2網絡模型結構上訓練得到Keras模型。為進一步促進軟硬件相結合的人工智能課程,將訓練模型運行于嵌入式設備樹莓派上,帶領學生體驗完整的圖像識別案例。
2018年教育部印發的“高等學校人工智能創新行動計劃”指出要加強高等院校對人工智能創新教育的力度[2-4]。新疆農業大學計算機與信息工程學院響應國家重要發展戰略的號召,與教育環境實際相結合,推出一系列相關課程,促進學科發展和人才培養,以適應新一輪的科技革命和產業變革的人才需求[5]。
1 卷積神經網絡與MobileNetV2網絡
卷積神經網絡(CNN)是多層感知機(MLP)的變種,由生物學家休博爾和維瑟爾在早期關于貓視覺皮層的研究發展而來。CNN由紐約大學的Yann Lecun于1998年提出,其本質是一個多層感知機,成功的原因是采用了局部連接和權值共享的方式:一方面減少了權值的數量使得網絡易于優化,另一方面降低了模型的復雜度,也就是減小了過擬合的風險。該優點在網絡的輸入是圖像時,表現的更為明顯,使得圖像可以直接作為網絡的輸入,避免了傳統識別算法中復雜的特征提取和數據重建過程,在二維圖像的處理過程中有很大的優勢。
MobileNetV2網絡模型做出了4點改進(如圖1)[1]:
⑴ 在MobileNetV1的深度可分卷積之前增加了一個擴維卷積層。
卷積神經網絡中的Inception模塊是在普通卷積和深度可分卷積操作(深度卷積后逐點卷積)之間的一種中間狀態。故深度可分卷積可以理解為最大數量tower的Inception模塊,即在輸入的每個通道獨立執行空間卷積,然后進行逐點卷積,即1×1卷積,將深度卷積的通道輸出映射到新的通道空間[6]。
⑵ 取消了MobileNetV1逐點卷積層之后的Relu激勵層,使之變為線性瓶頸層。
由于逐深卷積層沒有改變通道數的能力,MobileNetV2在逐深卷積層前增加了一個逐點卷積層,用來升維。而線性瓶頸層就是去掉第二個逐點卷積的激活函數,棄用ReLU6激勵,并在輸出端進行降維,以期待激活函數在高維空間能夠有效地增加非線性。
⑶ 增加了后激勵等維短路連接,形成了所謂的反向殘差模塊。
MobileNetV2反向殘差模塊實際是一種等維殘差模塊,也就是X1和X2的通道維和空間維相同,故快捷短路不需要卷積調整,直接和干路逐元素相加。
⑷ 網絡由28層變為53層。
2 樹莓派環境搭建
2012年3月,為計算機編程教育而設計的樹莓派由英國劍橋大學埃本·阿普頓(Eben Epton)正式發售,是只有信用卡大小的微型電腦,其系統基于Linux。Python語言是樹莓派的主要編程語言,除此之外,還支持Java、C、Perl等多種編程語言。
樹莓派支持的主流操作系統多達十余種,樹莓派官方網站推薦安裝的系統軟件為Raspbian,在官網下載樹莓派系統鏡像,借助燒錄輔助工具balenaEtcher(燒錄成功率高)和格式化后的SD卡或U盤即可完成系統燒錄。
啟動樹莓派并連接無線網絡,初次連接網絡選擇中國上海地區,否則可能會出現網絡連接異常。接下來按照下列命令在樹莓派中鋪設新疆蘋果品種識別環境,主要包含:Python3.7、TensorFlow2.0.0、OpenCV4.1.0、Keras2.3.1和安裝虛擬環境等操作。
⑴ Python3.7
① 更新樹莓派系統(遇到[Y/n]時,輸入Y,回車):
sudo apt-get update
sudo apt-get upgrade
② 安裝python依賴環境:
sudo apt-get install build-essential libsqlite-dev sqlite3
bzip2 libz2 -dev
③ 下載python3.7版本源碼并解壓。
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar zxvf Python-3.7.1.tgz
④ 編譯安裝python
cd python-3.7.1
sudo ./configure
sudo make install
⑤ 檢查安裝
ls -al /usr/local/bin/python*
(返回python版本,則安裝成功)
⑥ 軟件源更新并升級安裝包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-pip python3-dev
⑵ 安裝虛擬環境
① 新建虛擬環境,安裝虛擬環境管理包。
sudo apt-get install virtualenv -y
② 建立虛擬環境(#‘/usr/bin/python3.7是python所在路徑,一般是這個目錄,CNN是虛擬環境的名字。)
virtualenv -p /usr/bin/python3.7 CNN
③ 開啟虛擬環境
source /home/pi/CNN/bin/activate
④ 驗證虛擬環境
python --version
⑤ 退出虛擬環境
deactivate
⑶ 開啟CNN虛擬環境,安裝TensorFlow2.0.0
提前下載好tensorflow-2.0.0-cp37-none-linux_armv7l并拷貝到樹莓派/home/pi目錄下。
① 安裝必要的依賴項:
sudo apt-get install -y libhdf5-dev libc-ares-
dev libeigen3-dev cython gcc gfortran
openmpi-bin libopenmpi-dev libatlas-base-dev
② 安裝依賴包:
pip install keras_applications==1.0.8
pip install keras_preprocessing==1.1.0
pip install h5py==2.9.0
pip install -U six wheel mock
③ 安裝TensorFlow2.0.0:
cd /home/pi
pip install tensorflow-2.0.0-cp37-none-linux
_armv7l.whl
④ 測試安裝結果:
python
import tensorflow as tf
(不報錯則表示安裝成功!)
⑷ 開啟CNN虛擬環境,安裝OpenCV4.1.0和Keras2.3.1
① 安裝OpenCV所依賴的各種工具和圖像視頻庫:
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libjpeg8-dev? libtiff5-dev libjasper-
dev libpng12-dev
② 視頻I/O包、gtk2.0包及gui界面:
sudo apt-get install libavcodec-dev libavformat-dev
libswscale-dev libv4l-dev
sudo apt-get install libgtk2.0-dev libatlas-base-dev
gfortran? libqtgui4
③ 安裝相關依賴軟件包:
sudo apt-get install python3-pyqt5
sudo apt-get install libqt4-test? libhdf5-dev
sudo pip3 install pillow lxml jupyter matplotlib cython
④ 安裝OpenCV:
pip3 install opencv-python
pip3 install opencv-contrib-python==4.1.0.25
sudo apt-get install protobuf-compiler
⑤ 測試OpenCV:
import cv2
cv2.__version__
(返回4.1.0,則安裝成功!)
⑥ 安裝keras 2.3.1:
pip install keras==2.3.1 -i https://pypi.douban.com/simple
⑸ 測試樹莓派的攝像頭
① 用nano編輯器打開modules文件
sudo nano /etc/modules
#在文件末尾添加:bcm2835-v4l2
(然后Ctrl+s保存 Ctrl+x退出)
② 連接攝像頭
vcgencmd get_camera
③ 捕捉圖片、命名為image
raspistill -o image.jpg
(此時,攝像頭打開捕捉圖片,圖片存儲在/pi/home路徑。)
3 新疆蘋果品種識別
將訓練好的Keras模型(MobileNet V2_TL.h5)拷貝在樹莓派/pi/home路徑下,利用Raspbian自帶的Python集成開發環境Thonny Python IDE,編寫并運行Python程序。實時識別界面如圖2所示。
樹莓派進入實時識別界面后,點擊鍵盤上s鍵,保存當前圖像,進行識別并顯示識別結果。可連續多次對圖像進行實時識別,點擊鍵盤上的q鍵,退出實時識別界面。
樹莓派實時識別核心代碼:
model=tf.keras.models.load_model("/home/pi/
MobileNetV2_TL.h5")
cap=cv2.VideoCapture(0)
num= ''
while True:
ret, frame=cap.read()
font=cv2.FONT_HERSHEY_SIMPLEX
k=cv2.waitKey(1)
if k==ord('s'):
cv2.imwrite('temp.png', frame)
x=img_pre()
classes=model.predict_classes(x)[0]
if classes==0:
num="hongfushi"
elif classes==1:
num="qingxiangjiao"
elif classes==2:
num="huangyuanshuai"
print(num)
print(classes)
elif k==ord('q'):
break
4 結束語
此案例融合卷積神經網絡理論將樹莓派的深度學習環境配置完成后,構建一個Python腳本,它可以從磁盤加載Keras模型訪問樹莓派相機模塊、USB網絡攝像頭,應用深度學習來實現實時識別新疆蘋果品種。
人工智能技術作為計算機學科的一個重要分支,發展迅速。將體積小、價格低、可編程的樹莓派與人工智能相結合應用于課堂,將大大激發學生的學習興趣,具有一定的使用和教學價值,作為一個范例希望給人工智能愛好者提供研究思路,將樹莓派玩轉起來,開發出更多有趣實用的應用。
但此系統識別精確度有待提升,需要不斷地調整,以期待達到更高的識別率。
參考文獻(References):
[1] 張太紅著.卷積神經網絡與圖像分類[M].未出版
[2] 夏小娜,戚萬學,禹繼國,等.學習分析視角下的課程群體協作行為——以“高級軟件工程”課程為例[J].現代教育技術,2018.28(9):48-54
[3] 王婷婷,任友群.人工智能時代的人才戰略——《高等學校人工智能創新行動計劃》解讀之三[J].遠程教育雜志,2018,36(5):54-61
[4] 張永梅,杜治蓉,馬禮.人工智能技術課程實踐教學改革[J].計算機時代,2021(2):83-85
[5] 袁廣林.人工智能時代高等教育變革[J].國家教育行政學院學報,2019(8):11-17
[6] 李慧穎,李薇,邢艷芳,等.基于TensorFlow的人臉識別系統設計[J].計算機時代,2020(9):61-63