英伟达公开课|详解迁移式学习下的实时目标检测模型训练与部署

主讲人 | 何琨 英伟达 量子位编辑 | 公众号 QbitAI

2月27日,英伟达图像处理系列公开课第一期线上开播,跟数百位开发者同学共同探讨了如何利用 NVIDIA 迁移式学习工具包和Deepstream实现实时目标检测。

应读者要求,将分享内容整理成文,与大家分享,文末附有实战notebook。

大家好,今天要给大家介绍的工具是NVIDIA Transfer Learning Toolkit(迁移式学习工具包,简称TLT)和DeepStream SDK。

这张图很好的诠释了深度学习的框架,从应用角度来说,视觉、语音识别、NLP、情感与推荐系统等是目前发展较快的领域。市面上有很多框架支持这些深度学习的应用,如Caffe、TensorFlow、PyTorch等,而支撑起这些框架的基础是强大的计算能力。

NVIDIA提供了大量的GPU、边缘设备等,为深度学习框架、推理训练提供了强大的支撑能力。在英伟达CUDA生态系统上,建立了cuDNN、TensorRT、DeepStream SDK、cuBLAS等一系列工具,都是中层的框架应用的基础的内容。

今天要介绍的迁移式学习工具包,串联起了下面一层的工具(最后一个除外),是一个非常好用的工具。

今天的分享主要介绍TLT,以及将训练出的模型放到DeepStream SDK上。

DeepStream SDK

DeepStream SDK是为大规模创建和部署基于AI的视频分析应用程序解决方案而设计的,涵盖了视频处理部署阶段的所有模块,它提供了完整的框架和所有基本构建模块。可以让开发者专注于自己的核心深度学习网络和IP,而不是从头开始设计端到端解决方案。

最新的DeepStream 已经成为一个通用的工具,支持多平台、跨平台的应用,支持多系列显卡,也可以放到嵌入式平台,对内存的管理方面节约了计算资源,减少接口使用,编解码加速等方面也有所提升。

下面展示一个例子,以下两个视频都是基于Yolo v3网络,我们将Batch Sizing都设为1。

上图是未优化的,结果是大概1帧每秒的推理速度,而下图是仅用DeepStream优化过,已经达到了4.5帧每秒,也就是说达到了4倍的优化效果。

DeepStream推理加速的核心是TensorRT,一个GPU推理引擎工具,我们制作了很多讲解的视频和官方案例,大家可以在优酷搜索“英伟达中国”查看。

迁移式学习工具包

另一个工具是英伟达Transfer Learning Tooklkit。TLT是一个基于Python的工具包,它提供了大量预先训练的模型,并提供一系列的工具,使流行的网络架构适应开发者自己的数据,并且能够训练、调整、修剪和导出模型,以进行部署,大大提高深度学习工作流的效率。

TLT还有一个功能是,在异构多GPU环境下模型训练或调整效果非常好,并且训练处的模型可以直接部署到Tesla、Jetson等产品上。

目标检测实战

接下来我们一步一步介绍从安装到出模型到推理的使用方式。

这里列举了30多种常用模型,大家可以在代码中找到。为应用在计算机视觉领域的深度学习工作流程,提供了全方位的便利。

首先我们需要在NGC(https://www.nvidia.cn/gpu-cloud/)下载工具和模型,并进行初步训练、剪枝、再训练。输出的模型直接放在TensorRT。

接下来在服务器上部署TLT,我们推荐了一些硬件。

其中,Ubuntu使用16.04LTS以上即可,GPU driver需要v410及以上版本,DeepStream推荐使用4.0以上版本。

首先需要安装docker,生成API Key,这个Key很重要,生成后一定要保存起来。

接下来在服务器上运行TLT镜像。

标红处需要用v1.0.1_py2。

进入操作界面后,我们需要在Server端训练模型、优化、评估、数据预处理、模型转换等流程,在Jetson端部署利用引擎。

* 接下来详解了代码的部署。受限于文字描述,我们将操作流程Notebook上传至网盘,同时可下载直播回放、PPT等资料,正在学习的小伙伴可以直接下载查看:

提取链接:https://pan.baidu.com/s/1o_5yA8DYGTk3rz5i2oJmeQ

提取码:nveu

接下来的课程,我们也将分享更多能实际运行的代码。也欢迎访问英伟达开发者社区,获取更多资源:https://developer.nvidia-china.com。