Edge AI与树莓派在GHC19, Grace Hopper庆祝计算机领域的女性
深度学习爱好者们好!我是Sara Nadeau,我很高兴能代表MathWorks Grace Hopper Celebration团队写这篇客座博客文章!的霍珀庆祝是世界上最大的女性技术人员聚会。MathWorks是GHC19的白金赞助商,也是AnitaB.org的合作伙伴。MathWorks GHC团队有5次机会在GHC19上领导会议,包括一个演讲、一个小组和三个研讨会。
邮件涵盖了Edge AI与树莓派深度学习代码生成团队软件开发经理Jaya Shankar开发的工作坊;Louvere Walker-Hannon,为客户提供深度学习和数据分析的应用工程师;和Penny Anderson,软件工程总监。该研讨会是2019年大会新增的全新硬件轨道的一部分。
准备车间
在软件开始与硬件融合的地方,你总是会听到这样的话:“硬件很难!”作为一名有电气工程背景的工程师,我总是害怕这样的想法,即这种克制可能会阻碍人们尝试在不同的环境中部署自己的设计,甚至探索模拟电路的美丽。然而,我必须承认,有一点是毋庸置疑的:准备和物流! 工作坊团队依赖于一小群幕后志愿者,其中包括我、MathWorks GHC团队的其他几名成员,以及MathWorks的许多制作者。使用硬件与软件的工作不同,因为每个车间的设置在物理上都是独一无二的,必须分别进行测试和设置。该团队举办了许多董事会设置和锻炼派对。这是其中一张照片。 从左到右,你可以看到Chinmayi Lanka,他是一位质量工程师,在代码开发和测试方面提供了巨大的帮助;MathWorks GHC团队的软件工程师、Pocket AI和IoT研讨会的演讲者Sarah Mohamed;我自己,有一个可爱的头发的一天;和卢浮宫,所有的木板都是我们设置和测试过的。即便如此,在班加罗尔嵌入式目标团队的软件开发人员Reeno Joseph的帮助下,设置硬件的任务变得简单得多。他编写了脚本,帮助每个志愿者最小化设置单个板所需的步骤。除了准备物理板,硬件研讨会还提出了一个有趣的交流挑战:我们需要指导参与者——不管他们的硬件经验如何——通过他们自己的笔记本电脑在无头模式下操作树莓派板的过程。作为团队中的技术作者,我起草并测试了几个迭代的工作场所指导。最终的产品非常有用,以至于IBM的工程师在研讨会结束后留下来,以感谢我们的指导。运输车间
GHC19发生在奥兰多,这意味着MathWorks GHC团队必须协商从马萨诸塞州纳蒂克运输所有所需硬件的物流。我们可以运输多少硬件,我们会怎么做?房间里有什么样的电源接入?我们能把树莓派板从蓄电池组里拿出来吗?后勤方面的挑战看似无穷无尽,但Edge AI团队却顺利完成了任务,将80块树莓派板运到了佛罗里达州,并在研讨会之前对每一块板进行了测试。这是Penny,拿着几盒Raspberry pi、以太网电缆、电源、USB电缆和为研讨会提供的以太网适配器。 即使我们在没有损坏任何一块板的情况下将所有的硬件送到奥兰多,团队仍然需要在与会者开始到达工作室之前设置所有80块板的硬件配置。所有可用的团队成员都迅速地准备房间。 由于提前登记,车间座无虚席,在交付当天几乎没有空座位。兴奋的参与者首先在MATLAB Online中对图像进行人脸和年龄检测,然后使用生成的代码部署在树莓派上。基于MATLAB的人脸和年龄检测
为了开始研讨会并探索问题空间,所有参与者都对一幅图像进行了面部和年龄检测,特别是一幅图片GHC18深度学习和物联网研讨会这个团队也以卢浮宫为特色。我= imread(“GHC18.jpg”);Im = imresize(Im, [416,416]);= detectAge (im);图imshow(出);年龄检测网络是使用一个相对较小的名人图像数据集训练的。边缘人工智能与树莓派研讨会的重点是通过一个有趣的演示来解释深度学习和硬件概念。尽管如此,考虑训练数据影响分类结果的方式还是很有趣的。正如你可能已经猜到的,面部和年龄检测的深度学习魔法发生在detectAge函数。该函数加载一个预先训练的YOLOv2网络来检测输入图像中的人脸。
faceDetector = coder.loadDeepLearningNetwork(“trained_face_detector_yolov2_mobilenetv2.mat”);%……我= imresize (, [416416]);[face_boxes, ~, labels1] = faceDetector.detect (im,“阈值”,0.5);%……的detectAge函数然后将检测到的面孔输入MobileNetV2深度学习分类器,以预测图像中检测到的每个面孔的年龄。
ageDetector = coder.loadDeepLearningNetwork(“ageDetector_Mobilenetv2.mat”);%……For k = 1:size(face_boxes,1)%对每个检测到的人脸运行年龄分类器: face_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]);撅嘴= ageDetector.predict (faceout);使用返回的概率计算年龄加权和年龄= [0:100];p_age =圆(和((+ 1岁)。*撅嘴)1);%……结束参与者在他们自己的图像上运行MATLAB代码,并很快继续讨论如何将网络移动到边缘。
在边缘部署训练有素的网络
接下来的研讨会讨论了代码生成作为部署深度学习网络的关键工具。由于时间的限制,参与者实际上并没有生成代码,也没有将文件移动到树莓派的板上。MathWorks GHC团队在研讨会之前就做好了这一步,这样参与者就可以专注于理论。研讨会的负责人向与会者介绍了用于生成部署c++代码的脚本。%从人脸检测器应用程序生成代码cfg = coder.config(“自由”);cfg。TargetLang =“c++”;dlcfg = coder.DeepLearningConfig(“arm-compute”);dlcfg。ArmArchitecture =“v7”;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团队来说,在我们离开会议返回纳蒂克之后,这些研讨会的工作远没有结束。我们希望与尽可能多的人分享学习的机会和乐趣。举个例子,看看这篇博客关于如何与路易斯安那大学拉斐特科学日的参与者分享GHC18 Hands on with Deep Learning and IoT workshop。如果你有兴趣在你的机构提供边缘人工智能与树莓派研讨会,联系Louvere Walker-Hannon,网址:lwalker@mathworks.com。我们已经在支持一个将在俄亥俄州金宝app立大学举办研讨会的小组。想要了解MathWorks在GHC19的更多乐趣,请查看这个Twitter的时刻.要开始深度学习,免费学习深度学习斜坡弯道.关注#shelovesmatlab标签,看看了不起的女科学家和工程师的工作!
|
- 类别:
- 深度学习
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。