英伟达CV公开课第2期:快速搭建情感识别系统

在计算机视觉领域,机器可通过采集面部表情、肢体动作等来识别人类情感。而其中,面部表情识别具有很大的应用价值,更是备受关注。

近期,英伟达x量子位发起了系列CV公开课,在第二期课程中,NVIDIA开发者社区的何琨老师分享了如何利用TLT 3.0、Triton等工具低门槛、快速搭建和部署情感识别系统

分享大纲如下:

· 情感识别任务介绍

· NVIDIA Transfer Learning Toolkit工具简介

· NVIDIA Triton工具介绍

· 实战演示:利用TLT和Triton快速搭建情感识别系统

· 下期直播报名

以下为分享内容整理:


大家好,我是来自NVIDIA开发者社区的何琨,很高兴与大家参与今天的直播。我主要负责与各位开发者朋友交流沟通,如果大家对我们的产品有什么建议、或者有哪些需求,也期待反馈给我们。

情感识别任务

今天分享的内容是“快速搭建情感识别系统”,即通过对人物的面部表情进行识别,判断出人物当前的情感状态。

在深度学习里,情感识别是一个比较简单的项目,但是仍然涉及到非常多的流程和步骤。今天我将通过这个案例,向大家分享如何利用NVIDIA的工具包快速、高效率地实现这一任务。

今天的任务将会用到两个工具包:Transfer Learning Toolkit 3.0和 Triton。

分享过程中,首先会为新来的朋友介绍下这两个工具,然后通过代码实例,向大家展示如何利用这两个工具,简单、高效地实现AI模型的训练与部署。

课程后大家可以利用我们提供的代码、亲手操作一遍。(课程中所需的代码见本文末)

Transfer Learning Toolkit

Transfer Learning Toolkit(TLT)是一个简单的、集成化的工具,可以帮助大家简化深度学习模型的开发流程。Develop like a pro with zero coding,利用TLT不需要太多编程的内容就可以实现AI模型训练、优化与导出。

Transfer Learning Toolkit强调的Transfer Learning,即迁移式学习,它的主要特点是为开发者提供了大量预训练模型。开发者可以结合自己的数据集,根据不同的使用场景和需求,在这些预训练模型的基础上进行模型训练、调整、剪枝,以及导出模型进行部署等。而且大家可以通过简单的几行代码来实现上述功能。

TLT有几个主要的特点:

第一,在异构的多GPU环境下进行模型调整与重新训练。只通过一两个命令,就能够对多GPU进行合理的利用和分配。

第二,丰富的预训练模型库。包含大量的常见任务模型,在视觉、语音等方面都有很多可以实际应用的模型。大家可以在NGC上免费下载(ngc.nvidia.com)。

第三,优化模型。一方面可以利用TLT修剪、缩小模型尺寸;另一方面,可以将模型转化成TensorRT、DeepStream、Triton等可以直接使用的深度学习推理引擎,方便部署。

Triton工具简介

Triton是我们今天完成课程任务需要的另一个工具。

Triton的前身是TensorRT Inference Server平台,是一个基于TensorRT的推理服务引擎。TensorRT是NVIDIA专门为GPU在深度学习推理阶段的加速而开发的引擎,能够让GPU发挥出更强大计算能力。

TensorRT主要通过5个步骤实现对GPU推理过程的优化:精度校正、动态Memory管理、多流的执行、Kernel参数的调优、网络层融合计算。通过这一系列步骤,在速度和吞吐量上对推理模型进行优化。

Triton推理服务器能够简化AI模型的大规模部署流程,开发者可以从本地存储或云平台的任何框架部署训练好的AI模型,或基于GPU、CPU的基础设施。

Triton更像是一个即时响应的、Web Request的工具。它的应用场景主要是网页端、远程的数据中心,当然也支持嵌入式平台。能够大幅简化模型部署流程,搭建好之后只需调用其中的接口,不需要再操心模型的训练及优化。

特点一:支持多种框架。Triton支持市面上几乎所有的框架,比如常见的TensorFlow、Pytorch、ONNX等,也支持一些自定义的框架。

特点二:高性能的推理能力。Triton的推理能力不仅速度快,吞吐量也很高。可以极大加快集群的运行效率和执行效率。

特点三:简化模型部署流程。上图是 Triton的架构,可以看到,Triton将深度学习处理的流程封装在一起了,部署在我们的服务器上。开发者只需几步即可完成部署:

第一,准备模型库。

第二,调用接口加载模型。启动Triton Inference Server时,模型的序列、参数、执行方案等一系列内容即可直接加载完成。

它的优点是,能够将模型库和使用这个模型的流程区分开。对于一些项目团队来说,有人擅长做算法,有人擅长做前端,但只要算法工程师将模型训练好,前端不需要懂得如何优化模型算法,只需要通过Triton调用接口就可以。

其次,在多线程执行时,Triton Server也能够自动分配好GPU的内存,减少安全隐患、降低能耗。

特点四:动态可扩展性。假设我们搭建好的两台服务器可以服务现有的10万用户,但是当用户量快速增加到100万时,我们只需要再增加几台服务器,直接通过Docker等方式扩展到新的服务器上。

实战演示:搭建情感识别系统

下面,我们将通过一份简单的代码,调用TLT和Triton工具来实现情感识别模型的训练与部署。

代码链接:

1、https://ngc.nvidia.com/resources/nvidia:tlt_cv_inference_pipeline_quick_start

2、https://github.com/triton-inference-server/server


接下来,何琨老师通过代码讲解,向大家展示了如何借助TLT和Triton完成面部情感识别系统的训练与部署。大家可观看视频、继续学习:

直播回放:

p.s.代码演示部分从第35分钟开始~

PPT下载链接
https://images.nvidia.cn/cn/webinars/2021/Jun02/%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BA%E6%83%85%E6%84%9F%E8%AF%86%E5%88%AB%E7%B3%BB%E7%BB%9F——%E5%88%A9%E7%94%A8%E6%9C%80%E6%96%B0%E7%9A%84NVIDIA%20Transfer%20Learning%20Toolkit%203.0%E5%92%8CTriton%E6%90%AD%E5%BB%BA%E6%83%85%E6%84%9F%E8%AF%86%E5%88%AB%E7%B3%BB%E7%BB%9F.pdf

版权所有,未经授权不得以任何形式转载及使用,违者必究。