深度学习

理解和使用深度学习网络

Edge AI与树莓派在GHC19,格蕾丝霍珀庆祝女性在计算

深度学习爱好者们好!我的名字是Sara Nadeau,我很高兴能代表MathWorks Grace Hopper庆祝团队写这篇客座博客!的格蕾丝·霍珀庆典是世界上最大的女性技术专家聚会。MathWorks是GHC19的白金赞助商和AnitaB.org的合作伙伴。MathWorks GHC团队有5次机会在GHC19上主持会议,包括一个演讲、一个小组和三个研讨会。

图为MathWorks GHC团队

这篇文章涵盖用树莓派Edge AI由深度学习代码生成团队的软件开发经理Jaya Shankar开发的研讨会;Louvere Walker-Hannon,为客户提供深度学习和数据分析的应用工程师;彭妮·安德森,软件工程总监。该研讨会是2019年加入大会的全新硬件赛道的一部分。

图中(从左到右):卢韦尔、贾亚和佩妮

准备研讨会

在软件开始与硬件混合的领域,你会经常听到这样的话:“硬件很难!”作为一名具有电气工程背景的工程师,我总是担心这种说法可能会阻碍人们在不同的环境中部署他们的设计,甚至是探索模拟电路的美丽。然而,我必须承认,有一个地方是不可否认的:准备和后勤!
工作坊团队依赖于一个小型的幕后志愿者队伍,其中包括我自己,MathWorks GHC团队的其他几个成员,以及MathWorks的许多制作者。使用硬件与软件的不同之处在于,每个车间的设置在物理上都是唯一的,必须单独测试和设置。团队举办了许多董事会设置和练习派对。这是其中一张照片。

图中(从左到右):Chinmayi, Sarah, Sara和Louvere每人拿着一个树莓派板

从左到右,您可以看到Chinmayi Lanka,一位在代码开发和测试中提供了巨大帮助的质量工程师;Sarah Mohamed, MathWorks GHC团队的软件工程师,Pocket AI和物联网研讨会的主讲人;我自己,有一个可爱的头发一天;和Louvere,这些都是我们设置和测试的板子。
即便如此,在班加罗尔嵌入式目标团队的软件开发人员里诺·约瑟夫(Reeno Joseph)的帮助下,设置硬件的任务变得简单多了,他编写了脚本,帮助最大限度地减少每个志愿者设置一块电路板所需的步骤。
除了准备物理板,硬件研讨会还提出了一个有趣的交流挑战:我们需要指导参与者——不管他们的硬件经验如何——通过他们自己的笔记本电脑以无头模式操作树莓派板。作为团队中的技术作者,我起草并测试了几个迭代的研讨会说明。最终的产品非常有用,以至于IBM的一位工程师在研讨会结束后留下来感谢我们的指导。

车间硬件设置在打印的车间说明书旁边

车间运输

GHC19发生在奥兰多,这意味着MathWorks GHC团队必须协商从马萨诸塞州纳蒂克运输所有所需硬件的物流问题。我们可以运输多少硬件,我们将如何运输?房间里有什么样的电源接入?我们能从电池组运行树莓派板吗?后勤方面的挑战似乎无穷无尽,但Edge AI团队成功地顺利完成了任务,将80块树莓派板运往佛罗里达州,然后在研讨会之前对每一块板都进行了测试。这是佩妮,她拿着研讨会上提供的几盒树莓派、以太网电缆、充电宝、USB电缆和以太网适配器。

这张照片:佩妮拉着一辆装满硬件的手推车

即使在我们把所有硬件都运到奥兰多而没有损坏一块电路板之后,团队仍然必须在与会者开始到达工作室之前为所有80块电路板设置好硬件配置。所有可用的团队成员都在迅速地准备房间。

MathWorks GHC团队为车间设置硬件站

工作坊的预注册名额已经满了,交付的当天几乎没有空位了。兴奋的参与者首先在MATLAB Online中对图像进行面部和年龄检测,然后使用生成的代码部署在树莓派上。

车间的全景显示全勤

MATLAB中的人脸和年龄检测

为了开始研讨会并探索问题空间,所有参与者都对一张图像进行了面部和年龄检测,特别是一张图片GHC18深度学习与物联网研讨会该队也有罗维埃。
im = imread('GHC18.jpg');Im = imresize(Im, [416,416]);out = detectAge(im);图imshow(出);

图为MATLAB在线脚本输出,显示图像中检测到的人脸和年龄

年龄检测网络使用相对较小的名人图像数据集进行训练。Edge AI与树莓派研讨会的重点是通过一个有趣的演示来解释深度学习和硬件概念。尽管如此,考虑训练数据影响分类结果的方式还是很有趣的。
正如你可能已经猜到的那样,面部和年龄检测的深度学习魔法发生在大脑中detectAge函数。该函数加载预先训练好的YOLOv2网络来检测输入图像中的人脸。
faceDetector = code . loaddeeplearningnetwork ('trained_face_detector_yolov2_mobilenetv2.mat');%……Im = imresize(in,[416,416]);[face_boxes,~,labels1] = faceDetector.detect(im,'Threshold',0.5);%……
detectAge函数然后将检测到的人脸输入到MobileNetV2深度学习分类器中,以预测图像中检测到的每张人脸的年龄。
ageDetector = code . loaddeeplearningnetwork ('ageDetector_Mobilenetv2.mat');%……如果k = 1:size(face_boxes,1)在每个检测到的人脸上运行age classifierFace_box_pt = face_boxes(k,:);Ymin = face_box_pt(1,2);Ymax = ymin + face_box_pt(1,4);Xmin = face_box_pt(1,1);Xmax = xmin + face_box_pt(1,3);Face = im(ymin:ymax, xmin:xmax);faceout(1:128,1:128,:) = imresize(face, [128,128]);pout = ageDetector.predict(faceout);使用返回的概率计算年龄的加权和年龄= [0:100];P_age = round(sum((年龄+1).*pout)-1);%……结束
参与者在自己的图像上运行MATLAB代码很开心,研讨会很快就开始讨论如何将网络移动到边缘。

在边缘部署训练有素的网络

接下来,研讨会将讨论代码生成作为部署深度学习网络的关键工具。由于时间限制,参与者并没有自己生成代码并将文件移动到树莓派板上。MathWorks GHC团队在研讨会之前就完成了这一步,这样参与者就可以专注于理论。研讨会负责人向与会者介绍了用于生成用于部署的c++代码的脚本。
从人脸检测应用程序生成代码CFG = code .config('lib');cfg。TargetLang = ' c++ ';dlcfg = code . deeplearningconfig ('arm-compute');dlcfg。ArmArchitecture = 'armv7';dlcfg。ArmComputeVersion = '19.02';cfg。DeepLearningConfig = dlcfg; cfg.GenCodeOnly = true; hw = coder.hardware('Raspberry Pi'); cfg.Hardware = hw; codegen -config cfg detectAge -args ones(416,416,3,'uint8') -d detectAgeCode -report
除了学习代码生成,参与者还学习了用于减少深度学习网络规模的技术,包括量化、网络优化和代码生成。

树莓派的面部和年龄检测

参与者使用VNC查看器和有线以太网连接,将自己的笔记本电脑连接到研讨会团队在会议之前设置的树莓派板上。在开始练习时,他们在GHC18研讨会团队的同一张图像上运行了部署的面部和年龄检测算法。然后,参与者很开心地将自拍转移到树莓派上,在他们自己的图像中进行面部和年龄检测。

研讨会参与者在一台显示树莓派年龄分类结果的笔记本电脑旁拍照

庆祝之后

MathWorks团队飞回了纳蒂克,带着与会者带来的所有正能量,以及关于如何成功举办硬件研讨会的许多经验教训。我们很感激有机会与如此有才华和多样化的女性分享研讨会。
回到MathWorks总部后,MathWorks GHC团队立即开始工作,手写了150多张感谢卡,感谢团队以外的人为所呈现的内容贡献了宝贵的时间、专业知识和想法。这些卡片中有许多是送给那些专门帮助Edge AI与树莓派工作室的人的。在此,我要再次感谢许多同事,他们自愿抽出时间,使研讨会取得成功!

GHC之外

对于MathWorks GHC团队来说,在我们离开会议回到Natick后,这些研讨会的工作还远远没有结束。我们希望与尽可能多的人分享学习的机会和乐趣。作为一个例子,检查这篇博文关于GHC18深度学习与物联网研讨会是如何与路易斯安那大学拉斐特分校的科学日参与者分享的。
如果你有兴趣在你的机构发布Edge AI与树莓派研讨会,请通过lwalker@mathworks.com联系Louvere Walker-Hannon。我们已经支持了一个小组,他们将金宝app在俄亥俄州立大学举办研讨会。
要在GHC19上看到MathWorks的更多乐趣,请查看这个Twitter的时刻.要开始学习深度学习,请使用免费的深度学习入口.关注#shelovesmatlab标签,看看了不起的女科学家和工程师的工作!
|
  • 打印
  • 发送电子邮件

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。