人工智能入门:基于L i n u x 与P y
t h o n 的神经网络作者 W a l t e r T r o j
a n 译者 透镜
引 言
本文将讨论人工智能在深度学习中的工作方式㊂如果您想认真学习A I ,L i n u x 和P y
t h o n 是必不可少的工具㊂只有选择合适的开发工具,才能事半功倍㊂我学习过一些相关书籍和教程,并且进行了大量的编程测试㊂目前,我仍然有很多困惑,不过,至少可以给您一个概述,例如专用智能的神经网络(N N )
用到了哪些结构和方法㊂神经网络结构
神经网络(N N )
由几层组成,每层都有若干节点㊂在图1中,同一层中的节点垂直排列㊂理论上讲,网络内可
以有任意数量的层,每层可以有任意数量的节点㊂该体系结构由对应的任务确定,大小取决于计算机平台所拥有的资源㊂例如,如果神经网络(N N )
要按图片对接收到的对象进行分类,则第一层接管数据以完成任务,并提供相应数量的输入节点进行采集㊂假如低分辨率图像为28ˑ28像素,那么显示对应的灰度值需要784个节点㊂要获取彩图像,节点数量将增加三倍㊂在图像采集期间,每个输入节点都会接收对应像素的灰度值
图1 神经网络结构
图像分析的结果显示,在输出层中每个输出结果都有一个单独的节点㊂如果神经网络(N N )要识别1000个对
象,则该层需要有相同数量的输出节点㊂每个节点保存
0到1.0之间的概率来指示结果中的可靠性㊂例如,当采样家猫图像时,关联节点的值为0.85,
老虎 节点的值为0.1,其他节点的概率更低,这样结果将是显而易见的㊂在深度学习期间,实际的分析工作由隐藏层完成㊂根
据任务的不同,可以使用任意数量的隐藏层,一般会有
100到200个隐藏层在使用㊂除了上面显示的架构外,
还有反馈或中间滤波器等更复杂的结构用于提高精度㊂每
个隐藏层的节点数也是任意的㊂在上述用于对象检测的示例中,带有200个节点的3个隐藏层已经可以提供令人满意的结果㊂
假如在人脑中通过突触连接神经元来实现智力,那么
神经网络(N N )
中的节点也是彼此联系的㊂每个节点都与后续层的所有节点连接㊂每个连接(如图2中箭头所示)都包含一个权重,层之间的权重存储在矩阵中㊂因此,在深度学习领域,选择擅长矩阵操作的编程语言,可以轻松快速地完成任务
图2 节点内的计算
(h t t p s ://c o m m o n s .w i k i m e d i a .o r g
/w i k i /A r t i f i c i a l _n e u r a l _n e t w o r k )神经网络(N N )
如何达到预期的结果呢?每个节点都从前面图层的所有节点接收输入信号,在图2中标记为
x
㊂这些值乘以权重值w 并相加,得到净输入值:n e t =x 1*w 1+x 2*w 2+x 3*w 3
图3 常用的激活函数
净输入值与激活函数相乘,然后发送到输出(发送到
下一层的所有节点)
㊂同时节点的阈值还确定此节点是否 触发 ㊂图3中所示的激活函数分配给各层,确保输出值保持在所需范围内㊂例如,R e l u 函数抑制所有负值,
并且
限制S i g m o i d 在0到1之间㊂这些预防措施可确保N N 在一个清晰的数值范围内运行,不会 失控
㊂训 练
在记录了输入数据后,神经网络(N N )
多次迭代进行大量计算,并将结果输出,此过程称为 推理 ㊂如何得到预期的智能这就像教一个小孩,需要通过教育和培训来完成㊂对于未经训练的神经网络(N N )
,权重通常为-1到+1的随机数,因此只能得到随机结果㊂因此需要训练,将数据和已知的目标输出值
馈送到网络㊂用这些值进行计算后,将结果与设定值进行比较,并通过损失函数记录差异,这些学习过程也称为 反向传播 ㊂从最后一层开始,逐步调整权重以最大程度地减少损失㊂在使用不同的输入数据进行多次(通常数百万次)训练后,所有的任务都匹配了适合权重,而且神经网络(N N )也可以分析未训练过的新数据㊂
卷积神经网络是一种特别适用于图像和音频处理的体系结构,M a i x d u i n o 也能支持㊂在卷积神经网络中,神经元(至少在某些层中)是二维排列的,适合二维输入数据
(例如图像)㊂与图1所示的网络(其中神经元的活动取决于上一层的所有神经元(通过不同的加权因子))相比,在卷积神经网络情况下,依赖关系得到简化,并且受到局部
限制㊂神经元的活动仅取决于3ˑ3(举例)个神经元的值,这些值位于神经元之前的层中,并且加权因子相同㊂利用这样的网络可以很好地检测出如直线㊁曲线㊁点和其他图案的小规模结构㊂在随后的图层中,可以检测到更复杂的细节并最终检测出整个面部㊂
就编程而言,神经网络(N N )
类似于电子表格,预定义计算指令的单元格排列,在执行过程中使用权重访问多维矩阵㊂对新的输入数据进行分类时,会经过从输入到输出的所有层,并且输出对应节点上结果的相应概率㊂训练有素的神经网络(N N )可以达到0.9左右的值㊂在训练过程中,干扰会反向传播,从输入重新进行权重调整㊂乍一看很复杂,在实现过程中,有大量的工具和库可以使用㊂
L i n u x 与P y
t h o n 在处理A I 问题时,
必须做好学习准备㊂最简单的方法莫过于使用L i n u x 平台,因为L i n u x 上大多数工具都是
免费的,并且质量很高㊂此外,L i n u x 提供了与W i n d o w s
ubuntu使用入门教程相同的体验,只是软件打包方式不同(通常更好)㊂我更喜欢U b u n t u ,它具有L T S 版本(长期支持),至少技术支持4年㊂L i n u x 还具有其他发行版本(如D e b i a n ㊁M i n t 等)
,可以根据个人喜好进行选取㊂L i n u x 可以安装在W i n d o w s 以外的虚拟机中,因此不需要额外的计算机㊂
为什么选择P y t h o n 有些人会说,P y
t h o n 是一种解释性编程语言,运行很慢㊂但这种劣势被众多优势所抵消:P y t h o n 代码里消除了括号和分号,通过缩进来进行代码块构建;具有强大的数据结构,例如列表㊁元组㊁集合和字典;P y t h o n 完全集成了矩阵计算功能,具有大量高度模块化的A I 框架和库,可以完全或部分集成这些功能(这些模块主要用C ++编写,因此性能优异);通过简单的说
明文档,就可以轻松地安装使用㊂选择您喜欢的L i n u x 发行版,以及安装p i p 3和P y
t h o n 3吧!M a i x d u i n o 运行M i c r o P y
t h o n 在内存较少的系统上,可以选择M i c r o P y
t h o n 的轻便P y
t h o n 版本㊂它可以安装在M a i x d u i n o ㊁E S P 32等平台上㊂M i c r o P y
t h o n 包含基本的命令库和55个其他模块,可用于数学和系统开发㊂如果要添加新版本或A I 模型,
需要使用K f l a s h 工具刷新程序㊂
L i n u x 下安装K f l a s h
:①从网站链接[2]下载1.5.3或更高版本的k f l a s h _
g
u i _v 1.5.3_l i n u x .t a r .x z ;②解压缩到指定文件夹t a r x v f k f l a s h _g u i _v 1.5.3_
l i n u x .t a r .x z
;③进入文件夹/k f l a s h _g u i _v 1.5.2_l i n u x /k f l a s h _g u i ;④启动/k f l a s h _g u i ㊂启动K f l a s h 的图形界面如图4所示,
可以将固件或A I 模型加载到M a i x d u i n o 中
图4 K f l a s h
M a i x d u i n o 安装固件
虽然M a i x d u i n o 在交付时已经配备了M i c r o P y
t h o n ,
但仍推荐下载最新版本㊂编写这部分代码时,相应的固件
名为v 0.5.0,可以通过网站链接[3]下载㊂选择m a i x p y
_v 0.5.0_8_g 9c 3b 97f 或更高版本,
然后在下一页中选择m a i x p y _v 0.5.0_8_g 9c 3b 97f _m i n i m u m _w i t h _i d e _s u p p
o r t .b i n 或更高版本,此文件约为700K B ,包含对M a i x P y
I D E 的支持㊂
使用K f l a s h 快速安装新固件㊂点击
打开文件 按钮选择文件,然后设置开发板㊁端口㊁波特率和速度模式等,如图5所示㊂点击 下载 可以
看到加载进度条㊂完成之后,可以通过端口/d e v /t t y U S B 0在M a i x d u i n o 执行带有终端模拟器的P y t h o n 命令(如P u t t y )
㊂下面是一组命令:
>>>#P y t h o n P r o m p
t >>>i m p o r t a r r a y a s a r r #I m p o r t A r r a y M
o d u l e >>>a =a r r .a r r a y ('i ',[1,2,3])#C r e a t e a r r a y a w i t h i n t e g
e r s >>>b =a r r .a r r a y ('i ',[1,1,1])#C r e a t e a r r a y b w i t h i n t e g e r s >>>c =s u m (a +b )#C r e a t e s u m o
f a l l a r r a y v
a l u e s >>>p r i n t (a ,
b ,
c )#a n
d o u t p
u t i t a r r a y ('i ',[1,2,3])a r r a y ('i ',[1,1,1])9#o u t p
u t >>>
可以使用n u m p y
(在L i n u x 下)或u m a t l i b 库,乃至更多的库㊂
图5 M a i x P y I
D E 的用户界面安装M a i x P y I
D E 使用M a i x P y I
D E 开发环境,开发和调试软件会很方便㊂可以在M a i x d u i n o 上进行开发与调试,
以及加载和执行P y t h o n 程序㊂此外,如图5所示,还提供了用于图像分析的工具㊂安装过程如下:从网站链接[4]下载m a i x p y
i d e l i n u x x 86_640.2.4i n s t a l l e r -a r c h i v e .7z 或更高版本,复制到您选择的文件夹;通过命令t a r m a i x p y i
d e l i n u x x 86_640.2.4i n s t a l l e r a r c h i v e .7z 解压缩,
转到新文件夹m a i x p y i d e l i n u x x 86_640.2.4i n s t a l l e r -a r c h i v e
,进入并执行以下命令:./s e t u p
.s h ./b i n /m a i x p y
i d e .s h I D E 随即启动,所有用于实现A I 模型的工具随之启
动㊂接下来,就可以测试面部识别程序㊂
面部识别
经过训练的A I 模型用于面部识别,该A I 模型已经分析了数千张面部的特征,所使用的神经网络(N N )权重也进行了相应的调整㊂可以在网站链接[5]下载该模型,名称为f a c e _m o d e l _a t _0x 300000.k f p k g
㊂这里使用A I 框架Y o l o 2进行开发,它将图像对象划分为几个区域,分别进行分析,获得较高的识别率㊂A I 模型以k f p k g 格式打
包,必须下载到M a i x d u i n o 的地址0x 300000㊂可以用
K f l a s h 烧写㊂到对应的文件,
使用图4中的参数将其烧写到板卡上㊂M a i x P y I D E 用于编辑P y
t h o n 脚本㊂在此I D E 下,可以开发和调试程序,并下载到M a i x d u i n o ㊂图5中包括3个窗口:编辑器,通过语法高亮显示程
序输入;终端,显示程序输出;图像分析,进行图像显示以及将光谱分为红㊁绿和蓝显示㊂左下方有两个重要按钮: 回形针 用于通过端口 t t y U S B 0 建立(绿)或断开(红)与M a i x d u i n o 的连接㊂下面的绿三角形用于
启动脚本,启动后该按钮将变为带有 x  的红点,用于停止程序㊂
为了进行测试,笔者打印了两个著名人物(阿尔伯特㊃爱因斯坦和鲁迪㊃沃勒)的脸,然后固定在墙上㊂这个选择纯属巧合,据说两张脸有些相似㊂拍摄这些照片时,会立即识别出这些脸并用框标记㊂要确保图像以如图6所示的横向拍摄,否则识别率会明显下降
图6 用于面部识别的测试设置
程序F a c e d e t e c t .p y 可以在E l e k t o r 网站[6]
上下载㊂它的简洁再次证明该库的性能㊂首先,集成并初始化摄像
机㊁L C D 和K P U 所需的库㊂然后,将神经网络(N N )
从地址0x 300000开始加载到K P U 中㊂通过命令k p
u .i n i t _y
o l o 2初始化A I 模型,传输其他常量设置精度和优化选项㊂图像分类在w h i l e 大循环中进行,获取图像并馈送到神经网络(N N )
㊂如果检测到面部,则变量i 记录每个面部标记框的坐标和大小,然后将其绘制到图像上㊂最后,
输出图像(在L C D 面板上)和标记数据(在串行端口上)㊂有关K P U 命令的更多详细信息,请参见网站链接[7
]㊂
在M a i x P y I
D E 中,图片显示在右上角,相应的谱图则显示在下方㊂如果不需要此信息,可以取消激活按钮关闭右侧的图像窗口㊂为了更好地处理,将M a i x d u i n o 和
L C D 安装在小板上,并将摄像机对准前部(参见图6)㊂这样可以轻松捕获和分析真实的面孔㊁打印图像或屏幕内容㊂
可以在图7的L C D 面板上看到显示内容,
人员的相似之处没有显示出来
图7 M a i x d u i n o L C D 上的显示内容
Y o l o 2模型的背后是如何实现的神经网络具有24
个卷积层和2个完全连接的输出层(见图8)
㊂在它们之间有一些m a x p
o o l 层作为过滤器,以消除复杂性并减少 记忆 ㊂值得注意的是,3ˑ3的窗口主要用于细节识别㊂
确切地说,这是由K P U 硬件支持的,可以让M a i x d u i n o 最
大限度地支持此类任务㊂其他已知的神经网络(N N )结构甚至具有数百层,具有反馈路径或其他附加功能㊂这个领域的创造力没有上限,这在很大程度上也取决于计算机的计算能力㊂
继续前进!
强大的硬件环境与软件环境表明M a i x d u i n o 非常适
合人工智能㊂由于低功耗,也非常适合在已经训练好的神经网络移动设备中使用㊂后续我将向您展示如何开发㊁
图8 面部识别的网络架构(来源:h t t p s ://b i t .l y
/3c K 3D U R )练和执行自己的神经网络㊂与开发人员的接口是A I 框架
K e r a s
,也称为 乐高构建工具包 ㊂您还将学会如何在E S P 32开发板上编程,例如模拟量采集㊂保持好奇心,继续前进!
相关链接
[1]A I f o r B e g i n n e r s ,E l e k t o r M a y &J
u n e 2020:w w w.e l e k t o r m a g
a z i n e .c o m /20002302[2]K f l a s h :h t t p s ://g i t h u
b .
c o m /s i p
e e d /k
f l a s h _
g u i /r e l e a s e s [3]M a i x d u i n o F i r m w a r e :
h t t p ://d l .s
i p
e e d .c o m /MA I X /M a i x P y
/r e l e a s e /m a s t e r /[4]M a i x P y I D E :h t t p ://d l .s i p e e d .c o m /MA I X /M a i x P y
/i d e /_/v 0.2.4/m a i x p y
-i d e -l i n u x -x 86_640.2.4-i n s t a l l -e r -a r c h i v e .7z [5]A I m o d e l s :h t t p ://d l .s i p e e d .c o m /M A I X /M a i x P y
/m o d e l [6]P r o j e c t s o f t w a r e :w w w.e l e k t o r m a g a z i n e .c o m /200023B 04
[7]K P U C o mm a n d s :h t t p s ://m a i x p y .s i p
e e d .c o m /e n /l i b s /M a i x /k p
u .h t m l 本文授权来自本刊的合作伙伴E l e k t o r 媒体集团,
如果希望免费订阅E l e k t o r 的英文在线内容,请访问
h t t p s ://w w w .e l e k t o r m a g
a z i n e .c o m /㊂C e l e n o 入选海尔智家T e c h L i n k 挑战赛总决赛
智能㊁创新性W i F i 解决方案领先提供商C e l e n o C o mm u n i c a t i o n s 凭借其W i F i 多普勒成像技术入选颇具威望的海尔智家
T e c h L i n k 挑战赛的总决赛㊂海尔智家(H a i e r S m a r t H o m e )举办了一场创新挑战赛,对欧洲和以列顶级公司提交的近100项参
赛技术进行了评估,这些创新性智能传感技术将被应用于智慧家庭解决方案中㊂C e l e n o 的W i F i 多普勒成像解决方案是一项在事件识别和分析领域中具有突破性的技术,此次已被选中推广到海尔全球研发中心,以在其智能家电中实施先进的传感解决方案㊂
W i F i 多普勒成像技术利用C e l e n o 的W i F i 6芯片生成高分辨率的多普勒雷达图像,
以追踪目标物体并描绘其行为㊂该技术可以检测和追踪人㊁宠物和物体的移动和位置㊂这种非侵入性技术可以与标准W i F i 网络结合使用,也可以作为专用的低成本传感器进行部署㊂这两种使用方式都无需任何可穿戴设备,也无需使用可能危及隐私的摄像头,就可实现系统所需的洞察力㊂
该成像技术可以对诸如行走㊁跌倒㊁坐下㊁站立等运动和姿势进行分类㊂它还可以检测呼吸㊁手势和感知物体的存在㊂这些数据对于评估家庭成员的日常健康状况和活力水平具有极高的价值㊂

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。