前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NVIDIA Deepstream笔记(五):迁移学习

NVIDIA Deepstream笔记(五):迁移学习

作者头像
GPUS Lady
发布2019-07-04 15:58:51
1.7K0
发布2019-07-04 15:58:51
举报
文章被收录于专栏:GPUS开发者GPUS开发者

今天是最后一节,我们谈论一下NVIDIA新产品---迁移学习工具箱。

深度学习是全球视频分析应用增长的动力,开发者们越来越多的在基于计算机视觉应用中使用深度学习了。在Github或者其他地方已经开始浮现公开的代码库和(网络)模型库(Model Zoos)。开发者当在应用中使用深度学习的时候,经常面临两个选择:他们可以使用第三方已经训练好的模型,或者他们可以自己从头训练一个新模型。 现在选用模型库中的预先训练好的模型,变得流行起来,但经常这些模型存在一些问题:

要么这些现成的模型在特定的应用领域中精度较低;要么这些模型太大了,它们的实际大小对于目前业内更关注的嵌入式部署领域,会暴露一些问题;要么他们可能没有对GPU优化过。这样从头开始自己训练,从另一角度说,可能就十分有效了。但自己训练依然有它自己的问题:

从头开始训练会使用掉大量的计算机资源;光搜集构建足够的训练用数据,就要花费大量时间;然后更需要花费足够的时间,从头将模型训练到足够的精确,能作为产品使用;它还需要你团队的领导,或者至少你的其他团队成员们,去学习深度学习框架,像是PyTorch,TensorFlow,或者其他的框架,学习到能成功的/有效的他们能自己写代码的程度。

使用一个预先训练好的模型,然后再加上一种工具,能将这模型微调到满足你的实际应用/用例的效果, 才是真正我们需要去追寻的目标。如果你能利用第三方的预先训练好的模型---这样你就不用自己从头训练了;同时又能轻松将它们调整到适合你产品的要求,例如管理和降低他们的内存占用大小,为GPU优化。则这样的结合了前面两者说法的,才是一种最佳的方案。NVIDIA的 迁移学习工具箱,就是这样的一种基于Python的SDK。它允许你和你的团队,轻松完成这个目标。

迁移学习SDK的用户们只需要简单修改配置文件,即可用自己的数据,来对将网络模型库(Model Zoo)中的预先训练好的模型进行适配。

大体上用户们或者开发者们先从英伟达网络模型库中,选择一个预先训练好的模型,然后他们再提供自己场景或者用例的数据,以后的事情就均将由迁移学习工具箱来负责完成了。SDK负责了简化网络模型工作,也就是一个维持网络精确性和性能基准测试,同时将网络压缩,减小它的大小的过程。 它还负责了场景适配(scene adaptation)的过程。这两步都是通过配置文件完成的。 这样场景适配,无非就是一个将现有的模型,适配到不同的摄像头和传感器配置的过程。迁移学习工具箱还提供了,基于配置文件方案,来给现有的模型增加新的类别的能力。例如假设你有一个能在停车场里检测现代、福特、丰田三种车的模型, 然后你觉得,能检测到特斯拉的车也很重要,你想叫特斯拉这种类别添加到进网络里。 迁移学习工具箱让这种改编,变得简单。迁移学习后得到得到的输出模型,可以直接交给其他程序使用,就像你能用其他的普通模型一样。迁移学习后得到的模型可以完美的在推理插件中使用。这样你通过迁移学习工具箱,加快/加速了你的深度学习训练,然后能直接抵达你深度学习应用/项目的部署阶段。

基本上DeepSteam的项目流程总体就是这样。你要用迁移学习工具箱构建一个,用于智能视频分析的神经网络,则可以从一个预先训练好的网络模型开始,加上新的数据来进一步的训练它,适配到具体场景,甚至如果必要的话,添加新类型,以及进行模型修剪。 最后再将模型导出,完成你的DeepStream应用,上述就是从头到尾的整体流程。

让我们将上面的深度学习整体流程再深入的看下: 最开头你可以用预先训练好的模型开始,然后,利用迁移学习工具箱,进行一次改编训练/适配训练的过程。然后再将新的模型创建输出,整合到DeepStream中, 利用TensorRT和里面的推理插件。 NV已经将迁移学习工具箱,打包成了一个极度易用)的容器了,放在了NGC上。 你直接从NGC上将docker容器下下来即可。部署很容易,同时模型也能和这些DeepStream插件无缝的配合,这样你可以加速你产品上市时间,节省计算资源。

总结一下迁移学习工具箱的主要功能亮点:

它提供给了你访问预先训练好的高效/优质模型,这些模型是使用大规模的公用数据集,通过GPU加速训练出来的。它还提供了更快的推理速度给你,这是通过精简模型,减小它们的大小,从而减小了模型的实际运行时间,从而达到了更快的推理速度。 它还能提供了易用的工具,能让你使用你自己的数据和多个GPU卡,来重新训练网络以适配你的应用场景和增加新的类别。它还给通过给你一个简单明了的接口,让你能管理配置文件,即可用上这些特性,这样你的团队不一定必须要有深度学习框架知识的需求。 它还是完全容器化的,可以直接用NGC访问到,容器里面全自动管理了所有的依赖关系。它还是和NV DeepStream充分整合的,这里导出的模型可以容易地被DeepStream中的推理插件所使用。

最后,我们看一下在NVIDIA Xavier上运行Deepstream的DEMO =

视频内容
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档