人工智能

应用机器学习和深度学习

活动分类演示

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

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

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

演示要求

我承认,有时候我非常关注深度学习模型,而不是整个系统。这个项目为我提供了一个学习整合整个应用程序的机会:从前端到部署。
  • 与神经网络交互,而不考虑技术背景
  • 很多人可以同时跑
  • 网络预测相当快(这可能需要GPU支持)金宝app
Heather (@heathergorr)和我花了大约1周的时间来完成这个演示。我们从文档中的一个示例开始//www.tatmou.com/help/deeplearning/examples/classify-videos-using-deep-learning.html)并重新训练该网络识别30种活动。

创建模型

doc中的示例很好地讨论了网络如何识别视频流中的活动,首先使用GoogleNet从视频文件中提取激活,然后使用LSTM网络将这些激活分类到它们的活动类中。
激活代码看起来像这样:
for i = 1:numFiles fprintf("读取文件%d的%d…"\n", i, numFiles) video = readVideo(files(i));视频= centerCrop(视频,inputSize);sequences{i,1} =激活(netCNN,视频,layerName,'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;numObservations = numel(sequencesTrain);numIterationsPerEpoch = floor(numObservations / miniBatchSize);选项= trainingOptions('adam',…MiniBatchSize, MiniBatchSize,……“InitialLearnRate”,1的军医,…“GradientThreshold”,2,…“洗牌”、“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.tatmou.com/videos/app-designer-overview-1510748719083.html),目的是简单,让用户快速选择一个活动,录制一个小视频,并接收分类结果。

希瑟和约翰娜向一间房间的演示参与者演示应用程序!

下面是应用程序和网络的运行情况:

部署应用程序

现在——在一个300人的房间里:你如何让他们访问文件并运行应用程序?
输入MATLAB在线:有关产品的资料载于此://www.tatmou.com/下载188bet金宝搏products/matlab-online.html你可以运行MATLAB Online:https://matlab.mathworks.com/
如果你能访问MATLAB,你就能访问MATLAB在线,这是一种方便的方式来运行MATLAB,而不是标准的设置。我们惊喜地发现,网络预测的速度非常快:每次预测不到5秒,不需要gpu,这非常符合我们的要求。
我们还考虑了其他一些选择:
  • MATLAB Web应用程序(链接://www.tatmou.com/help/compiler/webapps/install-matlab-web-app-server.html),可以满足让办公室里的每个人都在浏览器上运行web应用程序的需求——不管MATLAB访问权限如何。这非常适合在内部运行web应用程序。把它带到会议中心并不是服务器的预期用例,我们不想冒任何需要VPN的风险。
  • 有MATLAB编译器(//www.tatmou.com/下载188bet金宝搏products/compiler.html) -你可以创建一个应用程序,可以在每个人的计算机上本地运行(不需要互联网或最终计算机上的MATLAB许可证)。出于游戏的目的,我们不希望人们需要在这么短的时间内安装应用。
由于我们决定使用MATLAB Online,我们可以共享应用程序的链接,这使得共享应用程序和代码变得更加容易。您还可以查看代码并运行应用程序!到只读代码的链接为在这里
这款游戏非常成功:我们看到了人们尝试这些活动的有趣画面。然而,这个模型相当挑剔(在第一个阶段,无论实际活动是什么,每个人都被认为是“吸烟”),但后来的阶段能够在10分钟内正确地判断8项活动中的6项。我们还发现,当你把手放在脸附近时,通常会被归类为吸烟或梳头!对于不熟悉深度学习的人来说,这是一个很好的机会,可以亲身体验与神经网络的交互,这也引发了参与者之间关于为什么深度学习并不总是100%准确的讨论。

演示日成功!!我们有一屋子的人表演所有8个活动。

总的来说,考虑整个方案是很好的。不仅是模型,还有模型的使用方式:专注于让人们与之交互的应用程序,以及人们访问模型的方式。我鼓励你们这周试用MATLAB Online,并让我知道你们的想法。
附注:R2020a即将在今年春天到来,从我们上周的会议来看,它看起来是一个很棒的版本。请继续关注!
|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。