深度学习

理解和使用深度学习网络

活动分类演示

每年1月,我们公司都会举办一年一度的“启动活动”:让销售、营销和面向客户的人员有机会在波士顿会面,了解2020年他们相关产品领域的所有新的和令人兴奋的功能。作为深入学习营销团队的一员,我们决定通过让每个人都有机会与神经网络进行互动(有些是第一次!)

从深度学习文档的一个例子开始。

以下是我们希望演示的工作方式:每个团队竞赛,在10分钟内正确地分类尽可能多的活动。每队有一台笔记本电脑和网络摄像头。他们记录团队成员执行活动的小视频,然后将视频发送到网络进行分类。

演示要求

我承认,有时候我非常关注深度学习模型,而不是整个系统。这个项目为我提供了一个学习整合整个应用程序的机会:从前端到部署。
  • 与神经网络交互,无论技术背景
  • 很多人可以同时跑步
  • 网络预测速度相当快(可能需要GPU支持)万博1manbetx
Heather(@heathergorr)和我花了大约1周的时间从头到尾把这个演示组装在一起//www.tianjin-qmedu.com/help/deeplearning/examples/classify-videos-using-deep-learning.html)并对网络进行再培训,以识别30项活动。

创建模型

doc中的示例很好地介绍了网络如何识别视频流中的活动,方法是首先使用GoogleNet从视频文件中提取激活,然后使用LSTM网络将这些激活分类为它们的活动类。
激活代码如下所示:
对于i=1:numFiles fprintf(“读取文件%d,共%d…。\n”,i,numFiles)video=readVideo(文件(i));video=centerCrop(视频,输入大小);序列{i,1}=激活(netCNN,视频,层名称,'OutputAs','columns');结束
LSTM网络如下所示:
layers=[sequenceInputLayer(numFeatures,'Name','sequence')bilstmLayer(2000,'OutputMode','last','Name','bilstm')dropoutLayer(0.5,'Name','drop')fullyConnectedLayer(numClasses,'Name','fc')softmaxLayer('Name','softmax')classificationLayer('Name','classification');
培训内容如下:
miniBatchSize=16;NumAbservations=numel(sequencesTrain);NumAbservations=floor(NumAbservations/miniBatchSize);options=trainingOptions('adam',…'miniBatchSize','miniBatchSize','InitialLearnRate',1e-4,'GradientThreshold',2,…'Shuffle','every-epoch','ValidationData',{sequencesValidation,labelsValidation},…'ValidationFrequency',numIterationsPerEpoch,…'Plots','training-progress',…'Verbose',false);[netLSTM,info]=trainNetwork(sequencesTrain,labelsTrain,layers,options);有51项活动的原始模型的准确度还有很多需要改进的地方,准确度为67.8%。查看培训数据集,您可以了解原因:活动执行者之间存在很大差异,更多数据可能也会有所帮助。
旁注:我们没有看到超参数调优在精度方面有太多的改进。文档示例似乎已经设置了参数以提供最高精度的模型。
然后,我们进行了20项活动(71%)的培训,最后是8项活动,最终达到了大约80%的准确率。我们根据我们认为在游戏分配的10分钟内可以完成的内容选择了8项活动,并提供了获得高分类准确率的最佳机会。

8级模型的准确性。过度拟合?

前端,在应用程序设计器中创建(视频概述链接://www.tianjin-qmedu.com/videos/app-designer-overview-1510748719083.html),有意简化,允许用户快速选择活动、录制小视频并接收分类结果。

Heather和Johanna向演示参与者演示应用程序!

以下是正在运行的应用程序和网络:

部署应用程序

现在–有300人的房间:如何让他们访问文件并运行应用程序?
进来MATLAB在线:产品信息如下://www.tianjin-qmedu.com/s manbetx 845products/matlab-online.html您可以在此处在线运行MATLAB:https://matlab.mathworks.com/
如果您可以访问MATLAB,您可以访问MATLAB Online,这是一种从标准设置中运行MATLAB的便捷方式。我们惊喜地发现,网络预测速度非常快:每次预测不到5秒,而不需要GPU,这非常适合我们的要求。
我们还考虑了一些其他选择:
  • MATLAB Web应用程序(链接://www.tianjin-qmedu.com/help/compiler/webapps/install-matlab-web-app-server.html)这可以满足让办公室中的每个人都从浏览器运行web应用程序的需要,而不考虑MATLAB访问。这非常适合在内部运行web应用程序。将此应用程序带到会议中心并不是服务器的预期用途,我们不想冒任何需要VPN的风险。
  • 有一个MATLAB编译器(//www.tianjin-qmedu.com/s manbetx 845products/compiler.html)–你可以创建一个可以在每个人的本地计算机上运行的应用程序(无需在最终计算机上使用internet或MATLAB许可证)。就游戏而言,我们不希望人们需要在这么短的时间段内安装一个应用程序。
由于我们决定使用MATLAB Online,我们可以共享应用程序的链接,这使得共享应用程序和代码更加容易。您也可以查看代码并运行应用程序!只读代码的链接是在这里.
游戏是成功的:我们有人们尝试这些活动的有趣图片。但是模型相当挑剔(在第一节课中,每个人都被认为是“吸烟”,不管实际活动如何),但随后的课程能够在10分钟内纠正8项活动中的6项。我们还意识到,当你把手靠近脸时,通常会被归类为吸烟或刷牙!这对于不太熟悉深度学习的人来说是一个很好的机会,他们可以亲身体验与神经网络的互动,这也促使参与者之间讨论了为什么深度学习并非总是100%准确。

演示日成功!!我们的房间里挤满了表演所有8项活动的人。

总的来说,很高兴能想到整个软件包。不仅是模型,还有模型的使用方法:关注一个供人们交互的应用程序,以及人们访问模型的方式。我鼓励你本周在线试用MATLAB,让我知道你的想法。
P.S.R2020a在今年春天即将发布,从我们上周的会议来看,它看起来是一个伟大的版本。请继续关注!
|
  • 打印
  • 发送电子邮件

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。