APP下载

采用树莓派4B识别新疆苹果品种的人工智能案例

2022-03-21郭钊汝徐金郭恒言张太红张泽宇孟晓艳

计算机时代 2022年3期
关键词:树莓派卷积神经网络人工智能

郭钊汝 徐金 郭恒言 张太红 张泽宇 孟晓艳

摘  要: 介绍在树莓派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

猜你喜欢

树莓派卷积神经网络人工智能
2019:人工智能
人工智能与就业
数读人工智能
基于深度卷积神经网络的物体识别算法
智能安全防盗探测小车
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
下一幕,人工智能!
基于卷积神经网络的树叶识别的算法的研究
基于嵌入式技术的农村医疗系统设计