2019独角兽企业重金招聘Python工程师标准>>>

Attention Cluster 模型

视频分类问题在视频标签、监控、自动驾驶等领域有着广泛的应用,但它同时也是计算机视觉领域面临的一项重要挑战之一。

目前的视频分类问题大多是基于 CNN 或者 RNN 网络实现的。众所周知,CNN 在图像领域已经发挥了重大作用。它具有很好的特征提取能力,通过卷积层和池化层,可以在图像的不同区域提取特征。RNN 则在获取时间相关的特征方面有很强的能力。

Attention Cluster 在设计上仅利用了 CNN 模型,而没有使用 RNN,主要是基于视频的以下几个特点考虑:

图 1 视频帧的分析

首先,一段视频的连续帧常常有一定的相似性。在图 1(上)可以看到,除了击球的动作以外,不同帧几乎是一样的。因此,对于分类,可能从整体上关注这些相似的特征就足够了,而没有必要去特意观察它们随着时间的细节变化。

其次,视频帧中的局部特征有时就足够表达出视频的类别。比如图 1(中),通过一些局部特征,如牙刷、水池,就能够分辨出『刷牙』这个动作。因此,对于分类问题,关键在于找到帧中的关键的局部特征,而非去找时间上的线索。

最后,在一些视频的分类中,帧的时间顺序对于分类不一定是重要的。比如图 1(下),可以看到,虽然帧顺序被打乱,依然能够看出这属于『撑杆跳』这个类别。

基于以上考虑,该模型没有考虑时间相关的线索,而是使用了 Attention 机制。它有以下几点好处:

1. Attention 的输出本质上是加权平均,这可以避免一些重复特征造成的冗余。

2. 对于一些局部的关键特征,Attention 能够赋予其更高的权重。这样就能够通过这些关键的特征,提高分类能力。

3. Attention 的输入是任意大小的无序集合。无序这点满足我们上面的观察,而任意大小的输入又能够提高模型的泛化能力。

当然,一些视频的局部特征还有一个特点,那就是它可能会由多个部分组成。比如图 1(下)的『撑杆跳』,跳、跑和着陆同时对这个分类起到作用。因此,如果只用单一的 Attention 单元,只能获取视频的单一关键信息。而如果使用多个 Attention 单元,就能够提取更多的有用信息。于是,Attention Cluster 就应运而生了!在实现过程中,百度计算机视觉团队还发现,将不同的 Attention 单元进行一次简单有效的『位移操作』(shifting operation),可以增加不同单元的多样性,从而提高准确率。

接下来我们看一下整个 Attention Cluster 的结构。

整个模型可以分为三个部分:

1. 局部特征提取。通过 CNN 模型抽取视频的特征。提取后的特征用 X 表示,如公式(1)所示:

(1)。X 的维度为 L,代表 L 个不同的特征。

2. 局部特征集成。基于 Attention 来获取全局特征。Attention 的输出本质上相当于做了加权平均。如公式(2)所示,v 是一个 Attention 单元输出的全局特征,a 是权重向量,由两层全连接层组成,如公式(3)所示。实际实现中,v 的产生使用了 Shifting operation,如公式(4)所示,其中α和β是可学习的标量。它通过对每一个 Attention 单元的输出添加一个独立可学习的线性变换处理后进行 L2-normalization,使得各 Attention 单元倾向于学习特征的不同成分,从而让 Attention Cluster 能更好地学习不同分布的数据,提高整个网络的学习表征能力。由于采用了 Attention clusters,这里会将各个 Attention 单元的输出组合起来,得到多个全局特征 g,如公式(5)所示。N 代表的是 clusters 的数量。

3. 全局特征分类。将多个全局特征拼接以后,再通过常规的全连接层和 Softmax 或 Sigmoid 进行最后的单标签或多标签分类。

用 PaddlePaddle 训练 Attention Cluster

PaddlePaddle 开源的 Attention Cluster 模型,使用了 2nd-Youtube-8M 数据集。该数据集已经使用了在 ImageNet 训练集上 InceptionV3 模型对特征进行了抽取。

如果运行该模型的样例代码,要求使用 PaddlePaddle Fluid V1.2.0 或以上的版本。

数据准备:首先请使用 Youtube-8M 官方提供的链接下载训练集和测试集,或者使用官方脚本下载。数据下载完成后,将会得到 3844 个训练数据文件和 3844 个验证数据文件(TFRecord 格式)。为了适用于 PaddlePaddle 训练,需要将下载好的 TFRecord 文件格式转成了 pickle 格式,转换脚本请使用 PaddlePaddle 提供的脚本 dataset/youtube8m/tf2pkl.py。

训练集:http://us.data.yt8m.org/2/frame/train/index.html

测试集:http://us.data.yt8m.org/2/frame/validate/index.html

官方脚本:https://research.google.com/youtube8m/download.html

模型训练:数据准备完毕后,通过以下方式启动训练(方法 1),同时我们也提供快速启动脚本 (方法 2)

# 方法 1

# 方法 2

用户也可下载 Paddle Github 上已发布模型通过--resume 指定权重存放路径进行 finetune 等开发。

数据预处理说明: 模型读取 Youtube-8M 数据集中已抽取好的 rgb 和 audio 数据,对于每个视频的数据,均匀采样 100 帧,该值由配置文件中的 seg_num 参数指定。

模型设置: 模型主要可配置参数为 cluster_nums 和 seg_num 参数。其中 cluster_nums 是 attention 单元的数量。当配置 cluster_nums 为 32, seg_num 为 100 时,在 Nvidia Tesla P40 上单卡可跑 batch_size=256。

训练策略:

采用 Adam 优化器,初始 learning_rate=0.001

训练过程中不使用权重衰减

参数主要使用 MSRA 初始化

模型评估:可通过以下方式(方法 1)进行模型评估,同样我们也提供了快速启动的脚本(方法 2):

# 方法 1

# 方法 2

使用 scripts/test/test_attention_cluster.sh 进行评估时,需要修改脚本中的--weights 参数指定需要评估的权重。

若未指定--weights 参数,脚本会下载已发布模型进行评估

模型推断:可通过如下命令进行模型推断:

模型推断结果存储于 AttentionCluster_infer_result 中,通过 pickle 格式存储。

若未指定--weights 参数,脚本会下载已发布模型 model 进行推断

模型精度:当模型取如下参数时,在 Youtube-8M 数据集上的指标为:

参数取值:

评估精度:

转载于:https://my.oschina.net/u/3968773/blog/3022943

百度 PaddlePaddle开源视频分类模型Attention Cluster,曾夺挑战赛冠军相关推荐

  1. AIADATA 独家深度解密:百度XuperChain开源区块链基础平台

    AIADATA 独家深度解密:百度XuperChain开源区块链基础平台 百度超级链Xuperchain正式宣布开源.根据官网显示,链内并行技术.可插拔共识机制.一体化智能合约等四大技术支撑开源,让区 ...

  2. 【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [paddlepaddle速成]paddlepaddle图像分类从模型自定义到测试 这是给大家准备的paddlepaddle与visualdl速成例子 ...

  3. 冯仕堃:预训练模型哪家强?百度知识增强大模型探索实践!

    作者 | 冯仕堃 百度 主任架构师 来源 | DataFunTalk 导读:近年来,预训练语言模型在自然语言处理领域发展迅速,并获得广泛应用.本文将介绍百度基于知识增强的语义理解ERNIE的实践探索, ...

  4. 百度人工智能开源大赛784支团队角逐大奖

    点击左上方蓝字关注我们 "人工智能会像机械技术.电气技术一样,持续渗透和变革人们生产.生活的方方面面,成为科技革命和产业变革的核心驱动力量."9月28日, AIIA 2020人工智 ...

  5. 基于容器的AI系统开发——百度PaddlePaddle解析

    作者来自百度PaddlePaddle团队:王鹤麟.于洋.王益 责编:何永灿(heyc@csdn.net),本文来源于<程序员>,未经允许不得转载. 基于深度学习的AI系统是由深度学习框架. ...

  6. 基于stm32f429的手写识别_关注智能手机老年用户:百度输入法手写模型迎来重磅升级...

    智能手机的快速普及让很多人都已经习惯于任何事情都用手机办理,不仅外出买东西.乘坐公共交通可以使用智能手机支付,同时一些与工作.政务相关的事情也可以在智能手机端完成,而社交工具更是让人们几乎已经不再使用 ...

  7. PaddlePaddle开源平台的应用

    最近接触了百度的开源深度学习平台PaddlePaddle,想把使用的过程记录下来. 作用:按照这篇文章,能够实现对图像的训练和预测.我们准备了四种颜色的海洋球数据,然后给不同颜色的海洋球分类为0123 ...

  8. 百度paddlepaddle七天打卡之青你实战

    心得 七天虽短,但是在知识迅速增加的今天显得十分必要.七天的课程总体来说,阶段性的进步让我们有机会在短时间内接触到先进的知识体系.这离不开百度paddlepaddle的努力,课程阶梯难度的设置效果很好 ...

  9. 百度paddlepaddle入门讲解第一周内容

    Baidu AI Studio 相关网站:https://aistudio.baidu.com/aistudio/education/group/info/1297 day0 0810 两个课程推荐: ...

  10. 前沿|PaddlePaddle开源项目DeepNav“无人船”炼成记(二)

    前言:本篇继续讲述DeepNav自动驾驶船项目,本次讲解无人船的设计思路和硬件搭建过程.文章素材来源于百度美国研究院王益老师的知乎专栏,欢迎小伙伴们持续关注. 同时,对项目理论基础感兴趣的小伙伴,可以 ...

最新文章

  1. python openpyxl写入多行_Python openpyxl读写操作
  2. 封装getByClass(JS获取class的方法封装为一个函数)
  3. Zookeeper 的 ZAB 协议
  4. 5888. 网络空闲的时刻
  5. ros(5)service client实现
  6. ccmlt 2013 V2.0012
  7. 判断给定数字n是否为素数(质数)
  8. matlab将三维bar图保存为emf格式时分辨率很低
  9. 计算机EXE文件改参数,笔记本专用xp系统修改注册表参数导致exe格式文件无法打开怎么办...
  10. 计算机网络(自顶向下方法)读书笔记----吐血整理
  11. 前端面试官常问javaScript编程题,隔壁王大爷看了都会了
  12. ERP/MIS系统中集成命令行式的功能调用
  13. 20211212做实验时的感想
  14. 塑壳断路器用考虑启动电流么_塑壳断路器和微型断路器的区别
  15. Linux内核变量中per-CPU的使用
  16. Halcon中的测量工具(找边找圆等)——Metrology系列
  17. 欧洲杯爆冷:法国点球大战遭瑞士淘汰,本泽马3分钟2球,姆巴佩罚丢点球
  18. 工具化、产品化、运营化—「美团点评」运维的故事
  19. 2010年3月30日德国小红伞杀毒登陆中国,你关心吗?
  20. 函数/方法的局部作用域与for的作用域问题

热门文章

  1. Atitit 数据库 负载均衡 方法总结 目录 1. 对称模型负载均衡 vs 非对称模型 2 1.1. 业务分离法 2 1.2. App + db分布式分离法 2 2. 负载均衡算法 2 2.1.
  2. Atitit 源码语句解析结构 目录 1.1. 栈帧(stack frame).每个独立的栈帧一般包括: 1 1.2. 局部变量表(Local Variable Table) 2 2. ref 2
  3. Atitit 最近十年来until2018软件开发领域的趋势 艾龙总结 attilax大盘点总结历史与趋势 1. Keyword sec title 2 2. 语言本身: 2 2.1. 工业标准 2
  4. Atitit 组织架构的如何划分 划分方法attilax大总结
  5. paip.chrome使用ACTIVX 的总结
  6. 睿远基金副总经理傅鹏博:用实业思维做投资 在认知范围之内做选择
  7. 全球CT影像20秒诊断,阿里云为新冠AI辅助诊断系统加速 | 凌云时刻
  8. 进阶之路:深入解读 Java 堆外内存 | 凌云时刻
  9. 玩转混合云+边缘计算,且看ZStack Mini!
  10. plc简易电子计算机设计,PLC-电子计算器设计.doc