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

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 数据集上的指标为:

参数取值:

评估精度:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容