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

2019-07-04 15:58:51 浏览数 (1)

今天是最后一节,我们谈论一下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 =

视频内容

0 人点赞