英伟达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分钟开始~
- 江行智能CTO樊小毅:AI+边缘计算驱动能源产业变革 | 量子位·视点分享回顾2022-03-15
- 天云数据CEO雷涛:从软件到数件,AI生态如何建立自己的“Android”?| 量子位·视点分享回顾2022-03-23
- 火热报名中丨2022实景三维创新峰会成都站将于4月13日召开!2022-03-21
- 从软件到数件,AI生态如何建立自己的“Android”?天云数据CEO直播详解,可预约 | 量子位·视点2022-03-11