【实战】用ModelArts实现人脸情绪识别案例分享

举报
孔皮皮 发表于 2019/10/21 00:38:32 2019/10/21
【摘要】 【实战】用ModelArts实现人脸情绪识别案例分享主讲人:任如意(ruyi.ren@yahoo.com),帆一尚行(上汽集团云计算中心)AI系统架构师 华为云MVP 本次公开课的内容提纲为下图中这六个部分。为什么要进行这次的分享1. 一方面是任如意本人和华为的很多缘起,另一方面任如意在帆一尚行在开发一个类似于ModelArts的汽车垂直行业的AI平台,在开发过程中,他了解了...

【实战】用ModelArts实现人脸情绪识别案例分享

image.png

主讲人:任如意(ruyi.ren@yahoo.com),

帆一尚行(上汽集团云计算中心)AI系统架构师     华为云MVP

 

本次公开课的内容提纲为下图中这六个部分。

image.png

为什么要进行这次的分享

1.     一方面是任如意本人和华为的很多缘起,另一方面任如意在帆一尚行在开发一个类似于ModelArts的汽车垂直行业的AI平台,在开发过程中,他了解了AI平台开发的难点,了解了传统公司使用AI的痛点,调研了业界AI平台。被ModelArts圈粉,它相比其他云平台在通用性、简易程度上更能起到一个普惠的AI平台的作用。

2.     呼吁AI云化开发的重要性:AI对算力、存储、网络的要求大,把资源集中到公有云或行业云,使用云化开发是趋势和经济的做法。

3.     AI平台化的必要性:AI的开发不仅是算法的开发,甚至算法的开发只占一小部分,更多的包括数据的收集、标签、筛选、存储,模型的训练、部署等工程化开发。这需要一个流程化的开发和配套设施的支持。

4.     为什么是ModelArtsModelArtsAI流程的IaaSPaaSSaaS全线打通

人脸情绪识别的简单综述

image.png

早在16年,任如意的女朋友在用户调研时会抓拍人脸,根据被访者的情绪做反馈。在那时任如意就了解了人脸情绪分类这个任务。最基本的情绪有6种。

做传统的情绪分类时,会定义每种情绪的特征,然后根据这些特征进行分类。如下图所示:

image.png

不论是传统的机器学习还是现在的deeplearning,本质上都是按下图这样一个流程来的。首先是对数据进行预处理:数据增广(旋转、拉伸等),对脸进行detection框出人脸外轮廓的位置,传统的方法还会把特征框定提取出来,对特征进行分析,然后用分类器做分类和识别。而现代的方法更多的是对预处理的图片经过一层层的神经网络进行特征提取。

image.png

人脸情绪识别传统方法(基于特征、先验知识、专家系统):

·       静态图像的特征提取

基于几何特征:对主要面部组件的位置关系进行编码(AAMASM等),并对位置进行统计和分类。

基于外貌特征:对整个面部图像或局部人脸区域使用图像滤波器滤波,并提取与表情相关的特征(Gabor滤波器,LBPLDP等)这里的滤波可以看成是卷积,但是这些卷积核的参数多数是根据先验知识得出的,而非训练得到的。用到的分类器,如SVM、早期的神经网络。

image.png

·       动态图像序列的特征提取(视频)

反映了人脸表情的一个动态变化过程(光流法,特征点跟踪法等)

现代方法(端到端):

深度学习是端到端的,暴力出奇迹,不需要人为规定很多规则,从海量数据中学到更通用和强大的特征。里面有几百兆参数,有的信息甚至不被人理解。通过神经网络对Tensor进行卷积,一层层得到一层层的特征,越到后面可能会有更高级更抽象的特征提取出来。卷积层后面是softmax等分类器。全连接层的参数往往很大,如VGG16全连接层的参数占到了总参数的90%以上,因此会有一些方法减少全连接层的参数。

image.png

人脸情绪识别数据集的发展:

深度学习的发展和数据集的发展是绑定在一起的,有多少数据集就可能有多少奇迹。早期的数据集比较少,后面诞生了几万甚至几十万的数据集。

image.png

 

本次分享的论文和算法介绍

本次的算法使用左面的数据集识别情绪,使用右面的数据集识别任务的性别。

image.png

image.png

一般来说,参数越多计算量消耗越多。对全连接层参数减少有一些通用的做法如:全局池化。在这个算法中也使用了全局池化。

大部分的卷积是对通道tensor的操作,现在也有些卷积进行了拆分,分成了pixcel-wisechanel-wise的卷积操作,极大的减少了卷积的参数量却并没有太降低模型的精度。这也是本算法采取的操作。

 

下图是算法识别结果和识别的混淆矩阵。

image.png

下图是神经网络最后一层学习出的特征。高阶时会把人脸情绪的外围轮廓识别出来,然后进入分类器。

image.png

ModelArts的简介

image.png

ModelArts是在整个的流程提供了支持,还提供模型集市,可以在上面发布和购买模型。

上云会比自建平台便宜不少。

image.png

演练:使用ModelArts实现人脸情绪识别实践

ModelArts有很多任务模式,有训练作业模式、开发模式。今天重点介绍开发模式。

开发模式:在华为云上做AI开发,需要上传大量的数据,云上开发一般会采取对象存储的方式,7GB基本半小时能传完,还是比较方便的。代码可以使用jupyter形式或者obs客户端上传。云上开发模式可能开始有点不习惯,但是我们还是要更多的尝试Web IDE

另外有趣的一点是,可以在环境下使用nvidia-smi跟踪GPU的使用量等。

image.png

任如意之前训练好的一个实验结果如上图,不过遗憾的是有个性别错了。这个模型训练的时间比较短,用到的数据集也比较少。

建议大家多关注ModelArts的社区,任如意也是在社区里慢慢参与才慢慢积累起来影响力的。

Q&A

1.      Tensorflow如果占满了GPU会怎么样?

里面有cuda core,算力的占满是不可怕的。但是如果显存占满了会触发OOM,遇到这种问题,一般可能是batch-size设大了。

2.      本地习惯了pycharm,改成云化的jupyter很不习惯?

建议在本地调试好代码,到云上就抓紧时间做一些端到端的打通和验证。写一个启动的脚本,挂载到ModelArts。

3.      用ModelArts做情绪探测器,最高能做到什么程度?

没有不经过训练的模型能管到任意场景的。可以达到95%以上。

4.      华为的ModelArts和百度的paddlepaddle比有何区别?

Paddlepaddle更像caffe一样的框架,而ModelArts是一个平台。

基本所有的框架都是支持多GPU的

5.      去哪里找数据集

数据集是非常昂贵的,标注一张图片基本是10块的成本。行业的数据集可以基于其他的数据集,用开源的数据集做预训练。真正行业的数据集只能买或者自己标。

6.      数据的拓充是怎么做的?

有少量数据的情况下,数据增广的手段:拉伸、旋转、平移、裁切拼接。

7.      很多靠算力来支撑,算力昂贵,没有那么多算力如何做开发?

一方面传统的机器学习对算力要求没那么大,很多场景都能用机器学习的方法做。

另一方面对于深度学习,现在也有很多研究方向在考虑把人的先验知识加进去来减少运算。但是在行业里,其实反而是在用越来越多的算力和数据。算力可能越来越暴力,但不一定越来越贵,好多公司在做AI芯片,可以看到里面的巨大前景和聪明才智。现在没有很多的选择,只有英伟达,但之后会下降。

 

欢迎汽车领域垂直行业的人通过邮箱与主讲人交流。

 

视频链接:https://huaweicloud.bugu.mudu.tv/watch/lm06bdmv

以上文字内容由【内容众创兴趣小组-孔皮皮】整理。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200