ICCV 2019 | 视频综合理解:行为识别、场景识别以及视频综述

2023-05-16

点击我爱计算机视觉标星,更快获取CVML新技术


本文经作者授权转载自知乎:

https://zhuanlan.zhihu.com/p/91986833

未经许可,禁止二次转载。

导语:计算机视觉领域顶级会议 ICCV 2019 于11月2日在韩国首尔完美落下帷幕。来自世界各地的企业、学生、顶级学者等共计7500人共同参加了这次盛会。其中在 Comprehensive Video Understanding in the Wild (简称:CoVieW) Workshop举办的挑战赛中,新华智云研发的视频综合理解系统取得了第一名的成绩。

我们邀请了智云团队的领队--北京 AI LAB 负责人蒋宇东详细介绍了本次挑战赛中智云针对视频综合理解问题所提出的解决方案。
这是我们的论文地址:

http://openaccess.thecvf.com/content_ICCVW_2019/papers/CoView/Jiang_Comprehensive_Video_Understanding_Video_Summarization_with_Content-Based_Video_Recommender_Design_ICCVW_2019_paper.pdf

问题

在视频理解领域,我们设计了很多的任务用来让计算机“看懂”视频。如:行为分类、场景分类、事件检测、视频综述、视频描述等。特别是在行为分类领域,在Kinetics、Youtube-8M 这样的大规模数据集的驱动下,涌现出了非常多的优秀工作。

多数的工作都聚焦在行为分类或者场景分类等某一个独立的问题上,而没有很好的考虑场景和行为直接存在着内在的联系。同样,视频摘要也与分类存在着非常紧密的联系,如何能够在充分理解一个人在做什么,在哪里发生的行为,同时还能概括出视频中描述的关键信息,是非常重要的问题。


CoVieW 2019 挑战赛提出了这个非常具有挑战性的问题:对视频进行多角度的综合理解,同时完成行为分类、场景分类、视频综述三个任务。

数据集

整个数据集采集自Youtube-8M, 包含了1500段长视频,按照每5秒钟一个片段切割成了67615条片段。每个片段都标注了场景/行为标签,一共包含99个行为类别,79个场景类别。同时每个片段都都会经过重要度的打分,分数取值0~2,0代表不重要,2代表非常重要。每个片段的重要性都经过了20个人的评分,所有人评分的均值作为该片段最终的重要性得分。

值得一提的是,之前被广泛使用的视频综述数据集:TVSum包括50个视频,SumMe包含25个视频,MED包含160个视频,OVP包含50个视频。之所以视频综述的数据集都非常小,是因为标注这样的数据集需要非常多的人力成本,笔者粗略估算一下,仅就CoVieW2019的重要性标注来讲,需要人工标注1,352,300次视频片段的重要程度,大概相当于 620(天/人) 的工作量。在视频综述领域,CoVieW2019 是最大规模的数据集。

评价指标


视频分类的评价指标采用 Top-K hamming 得分:

其中 L=2, K=5, 当A和B的label一致时 AND(A,B)=1,否则AND(A,B)=0。

视频重要性得分采用如下定义:
 其中Score(k,GT_i) 代表了第k个video中按重要性排序的第i个片段的Ground truth summary得分,Score(k, sub_i) 代表了按提交重要性排序的第i个片段的Ground truth summary得分。

视频分类解决方案


首先采用了 I3D+Non-local Attention 方法进行视频分类。分成2种情况,(1)场景和行为分类做为2个分支共享同一个backbone。(2)每个任务做一个独立的模型。


另外,我们采一些公开数据集进行数据的补充,对于行为识别任务使用了来自HMDB、Kinetics、UCF-101的数据;对于场景识别,采用了Places360,Sun数据集。由于场景识别采用了图像数据,所以我们也使用了 ResNet50 + Avg Pooling的方案训练了基于图像训练的视频场景识别分类器。最终,我们将所有的模型进行了集成,做为提交结果。


为了加速视频训练的速度,我们采用了异步数据加载的解决方案。可以部署在不同机器上的Producer负责数据的IO,视频解析抽样,数据的augmentation,最终将数据处理成可直接载入GPU的形式,写入GPU服务器上的内存队列中。视频训练Consumer直接从内存中读取训练数据,然后加载到GPU中进行训练,省去了等待IO和CPU处理的时间,提升了GPU的使用效率。在实验中,GPU的利用率始终保持在90%以上,大大的提升了视频训练的效率。


视频综述解决方案


视频综述就是从一段长视频中提取出对用户最有意义的片段或关键帧信息。我们采用基于内容的视频推荐方案来解决该问题。整个系统的流程如图1所示

图1 系统整体框架与流程

采用特征提取器对原始的视频片段进行特征提取,包括基于帧级别的高层语义特征、基于帧序列的高层语义特征、基于视觉底层的特征、音频特征等。系统对每一个片段建立输入特征与用户反馈(重要性分数)的关系进行建模,对视频片段在整个视频序列中的重要性进行预测。


因为判断某个视频片段是否重要取决于两部分的信息:1. 视频片段本身是否具有吸引力 2. 整个视频所描述的信息与该视频片段的关系。因此系统采用了对片段和整个视频序列进行显式建模的方案,提出了如图2所示的网络结构:

图2 视频综述网络结构

SegNet负责对输入的视频特征进行融合与建模,将每一个视频片段都embedding到一个n维的特征空间中。VideoNet负责对整个长视频进行建模,将SegNet编码的视频片段序列输入到系统中,VideoNet对序列进行学习后将该序列embedding到一个m维的向量空间中。

片段特征与视频整体特征进行concate后,输入到HighlightNet中,预测该片段的重要性。其中SegNet采用2D卷积神经网络实现,VideoNet采用双向GRU实现,HighlightNet采用双层全连接实现。

缓解过拟合

由于数据量比较小,并且视频的重要性存在比较大的主观性因素,模型在训练时非常容易出现过拟合状况。为了防止过拟合在训练中过早的发生,我们采用了一些Tricks。

Tricks1: 自学习

在训练VideoNet过程中,假设一个更加鲁棒的视频建模网络可以区分出视频片段的先后顺序是否是正确的。我们选取一小部分的视频片段随机打乱顺序,让VideoNet对打乱顺序的片段位置进行预测,同时假定部分视频片段的顺序发生变化不应该影响对综述任务的判定。该方法有如下的好处:1. 通过多任务训练可以有效的抑制过拟合的提早发生。2. 自学习的方式可以采用辅助数据对模型进行预训练。3. 随机的打乱视频中片段的顺序实际上相当于做了数据增强处理。通过实验发现,这样的操作让模型表现从80.69%提升到了81.64%。

图3 Trick1 自学习

Tricks2: 数据增强

从每个视频片段中只采样一部分的信息组成整个视频的信息输入到VideoNet中,这样同样一段视频就可以生成多种向量编码。采用平均池化操作将多种编码压缩成一个特征编码,做为视频的最终编码。该操作可以帮助模型带来0.29%的提升。

图4 Trick2 数据增强

总结与展望

个人感觉,因为主办方采用的重要性平均的评价方法导致比赛中所说的视频综述问题实际上变成了Highlight Detection问题,算法并不需要考虑所选择视频片段间的多样性、代表性等内在结构问题。而1500条长视频的数据集虽然在综述领域已经是最大规模的数据集了,但是对于这样一个复杂的问题仍然太小。

此外,由于该问题与用户的行为息息相关,搜集更多的用户行为数据并引入更多的推荐系统相关技术对研究是非常必要的。

我们正在尝试解决视频理解领域更多有挑战性的问题,如果感兴趣,欢迎你的加入!
加入我们,请联系 hr@shuwen.com 。


视频理解交流群

关注最新最前沿的视频理解技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:视频理解)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ICCV 2019 | 视频综合理解:行为识别、场景识别以及视频综述 的相关文章

  • Mac 关闭设置系统升级红点

    关闭系统更新提醒红点 xff1a 在终端输入 xff1a defaults write com apple systempreferences AttentionPrefBundleIDs 0 killall dock
  • 图像特征提取算法之Haar特征原理(一)

    文章目录 笔记截图问题积分图例子结论 笔记截图 用白色的特征值之和 黑色的特征值之和 61 这一个区域的特征值 你也可以理解为用卷积进行提取 xff0c 白色的区域为1 黑色的为 1 xff08 邪恶的黑色 xff09 然后进行相加既可以得
  • CAS方式实现单点登录

    单点登录 xff0c 英文是 Single Sign On xff0c 缩写为 SSO 多个站点 192 168 1 20X 共用一台认证授权服务器 192 168 1 110 xff0c 用户数据库和认证授权模块共用 用户经由其中任何一个
  • 双系统重装Ubuntu经验分享

    真的很喜欢ubuntu 但又没有恒心把它学通透 xff0c 毕竟不是相关专业 第一次重装是因为没多少经验 xff0c 安装qqforlinux的时候多了两个东西 xff0c 还自己生成了快捷方式 xff0c 就想点开看看是啥 xff0c 结
  • PCL三维点云拼接融合

    1 PCL三维点云拼接融合技术 2 PCL系列 拼接两个点云
  • ubuntu20版本忘记或重置密码的问题

    前段时间把ubuntu密码忘了 xff0c 进不去并且有些需要密码权限的功能也用不了 xff0c 在网上搜了一大堆 xff0c 都是什么从开始就摁shift或Esc xff0c 好家伙摁烂了也不行啊 解决如下 xff1a 首先 xff0c
  • 程序员申请加班调休被HR拒绝:996是行规,不想加班就滚?

    现如今 xff0c 很多公司为了不给员工加班费 xff0c 一般都会允许他们进行调休 也就是你加班了多少个小时 xff0c 等项目不忙的时候 xff0c 你们可以选择多休息几天 公司的这种做法 xff0c 大多数员工还是能接受的 xff0c
  • 博士生如何进行文献阅读和文献整理?

    一 阅读文献之前 先了解写文章的规则 SCI的架构 TITLE ABSTRACT main message INTRODUCTION why did you do this job METHODS how did you do it RES
  • 结构体之offsetof宏详细解析

    1 define offsetof TYPE MEMBER size t amp TYPE 0 gt MEMBER include linux stddef h 1 1 功能 xff1a 返回结构体TYPE中MEMBER成员相对于结构体首地
  • 解决curl: (7) Failed to connect to raw.githubusercontent.com port 443

    解决办法 xff1a 一 首先查询域名 raw githubusercontent com对应的ip地址 去这网址查询 xff1a https tools ipip net domain php 二 修改hosts文件 linux系统一般都
  • 关于使用Maix Bit所遇到的OSError: Reset Failed问题

    一 问题 今天在使用Maix Bit学习的时候遇到了这样一个问题 xff0c 我使用Maixpy连接上了Maix Bit xff0c 然后进行下载程序的时候 xff0c 下载失败 xff0c 弹出来一个OSError Reset Faile
  • 致小白的K210模型训练与运用

    致小白的K210模型训练与运用 文章目录 致小白的K210模型训练与运用 前言一 模型训练方法二 详细介绍1 使用MixHub平台进行训练2 使用Mx yolov3自己搭建平台进行训练3 V3模型4 V4模型 前言 由于我也是刚接触K210
  • 使用APP inventor来制作一个属于自己的蓝牙串口软件

    使用APP inventor来制作一个属于自己的蓝牙串口软件 本文主要讲述蓝牙的发送和接收功能的制作 一 准备 1 APPinventor的网址 xff1a http app gzjkw net 二 蓝牙APP界面的设置 首先我们新建一个项
  • 一起卷吧,arduino/mixly语音识别模块,10元,可以自定义,提供自制的mixly库

    一 效果演示 制作的语音风扇演示一起卷吧 xff01 语音识别 xff0c 10元 xff0c 串口通信 xff0c arduino可用 xff0c 提供自制的mixly库 操作简单 xff0c 可以语音播报 哔哩哔哩 bilibili 制
  • arduino/mixly红外发射接收模块

    一 资料 http 资料链接 xff1a https pan baidu com s 1idRcrVCxQ5zWLh59EFpi9g 提取码 xff1a n8ud 默认波特率9600 串口通信 xff0c 可以发送也可以接收 发送格式 二
  • openmv学习十三:特征点匹配

    适用于匹配多角度的物体 xff0c 需要现场提取之后才能使用 http docs openmv io library omv image html http docs openmv io library omv image html cla
  • arduino/Mixly使用TCS230颜色识别传感器

    一 器材 TCS230 arduino uno 二 接线 TCS230arduino unoGNDGNDVCC5VS0D2S1D3S2D4S3D5OE LEDD6OUTD7 三 程序 mixly程序 arduino程序 define tcs
  • arduino/Mixly心知天气

    一 准备 首先百度一下心知天气 xff0c 获取一下密钥 xff0c 具体的可以看这一篇Blynk中WebHook组件的使用方法 moshanghuaw的博客 CSDN博客 然后再准备一个esp8266或者esp32都可以 二 程序 mix
  • C For Linux之内存访问-内存简介

    1 内存 1 1 计算机为什么需要内存 存储器是计算机系统中非常重要的组成部分 计算机中的存储器分为两类 xff1a 内存储器的外存储器 xff08 也叫辅助存储器 xff09 所谓外存储器在PC机中一般指硬盘 U盘 光盘等 xff0c 而
  • 每天一分钟玩转golang:基础类型之字符串(四)

    大家好 xff0c 我是加摩斯 xff0c 觉得文章有帮助的小伙伴 xff0c 记得一键三连哟 xff5e 申明 xff1a 本系列两天更新一篇 xff0c 纯原创 xff0c 转载前请与我沟通 字符串类型也是一种基本类型 xff0c 底层

随机推荐

  • 项目二:电子骰子

    项目二 xff1a 电子骰子 文章目录 项目二 xff1a 电子骰子一 导入 5分钟 xff09 学习目的 二 新授 65分钟 1 预展示结果 5分钟 2 本节课所用的软硬件 5分钟 3 硬件介绍 1分钟 4 图形化块介绍 1分钟 5 单个
  • 项目三:双人骰子

    项目三 xff1a 双人骰子 文章目录 项目三 xff1a 双人骰子一 导入 5分钟 xff09 学习目的 二 新授 65分钟 1 预展示结果 5分钟 2 本节课所用的软硬件 5分钟 3 硬件介绍 1分钟 4 图形化块介绍 1分钟 5 单个
  • 项目四:无极调光台灯

    项目四 xff1a 无极调光台灯 文章目录 项目四 xff1a 无极调光台灯一 导入 5分钟 xff09 学习目的 二 新授 65分钟 1 预展示结果 5分钟 2 本节课所用的软硬件 5分钟 3 硬件介绍 5分钟 4 图形化块介绍 10分钟
  • Windows10安装anaconda之后pip3不能使用

    1 在命令行中切换到你自己的anaconda环境中 xff0c 2 在命令行中 xff0c 切换到你的anaconda环境中的Scripts目录中像我是在 xff1a D software anaconda3 az envs py3 pyt
  • UE4蓝图通信-蓝图接口

    蓝图接口 除了最常用的cast to蓝图节点可以实现通信以外 xff0c 进阶的通信方式就是蓝图接口 目的 xff1a 与多个对象中的特定几个对象进行通信方式 xff1a 对检测到的对象发送消息消息 xff1a 发出的消息是接口消息 xff
  • UE4蓝图通信-事件分发器(Event Dispatcher)

    事件分发器在蓝图编辑器的我的蓝图选项卡中创建 在我的蓝图 xff08 My Blueprint xff09 面板中的 进行创建输入事件分发器的名称 xff0c 该字段显示在 我的蓝图 xff08 My Blueprint xff09 选项卡
  • UE4项目优化(帧数优化)相关知识

    控制台命令 r screenpercentage 0 100 0是百分之百 如果改了这个 游戏运行超级流畅说明瓶颈在GPU上stat fps 显示帧率 Frame Per Second 或者快捷键Crlt 43 Shift 43 H 显示帧
  • 计算机图形学【GAMES-101】2、光栅化(反走样、傅里叶变换、卷积)

    快速跳转 xff1a 1 矩阵变换原理Transform 旋转 位移 缩放 正交投影 透视投影 2 光栅化 反走样 傅里叶变换 卷积 3 着色计算 深度缓存 着色模型 着色频率 4 纹理映射 重心坐标插值 透视投影矫正 双线性插值MipMa
  • 计算机图形学【GAMES-101】10、材质(BRDF)(折射、菲涅尔项、微表面模型、各向异性材质)

    快速跳转 xff1a 1 矩阵变换原理Transform 旋转 位移 缩放 正交投影 透视投影 2 光栅化 反走样 傅里叶变换 卷积 3 着色计算 深度缓存 着色模型 着色频率 4 纹理映射 重心坐标插值 透视投影矫正 双线性插值MipMa
  • 【重心坐标插值、透视矫正插值】原理以及用法见解(GAMES101深度测试部分讨论)

    文章目录 1 Barycentric Coordinates xff08 重心坐标 xff09 1 1 重心坐标概念1 2 重心坐标计算方式1 3 重心坐标插值 2 重心坐标计算公式推导3 透视投影插值矫正3 1 透视矫正后的 96 深度插
  • gcc之inline函数探究

    1 引子 xff1a 内联函数 xff08 以下称为inline函数 xff09 的行为类似于宏 xff0c 但是会像函数一样进行参数的静态类型检查 因此gcc中很多地方倾向于使用inline函数来替代宏 但是inline函数在gcc中应该
  • Visual Studio中多个源文件、多个main()函数如何分开运行

    对于跟网课的小伙伴 xff0c 有些初学者可能像我以前一样 xff0c 想记录每一课的代码 xff0c 会一节课一个 sln解决方案 xff0c 这样非常不方便 如果一个 cpp放一个main函数 xff0c 再F5运行肯定报错咯 xff0
  • C++中的变参宏 #define MyMacro(...)(__VA_ARGS__)

    span class token macro property span class token directive hash span span class token directive keyword define span span
  • 使用premake帮助生成Visual Studio解决方案

    Premake xff1a https github com premake premake core Premake 是一个基于 Lua 脚本语言的构建系统工具 xff0c 用于生成项目文件和构建脚本 xff0c 能够帮助开发者快速创建和
  • Vulkan中renderpass、subpass、dependency的见解

    在Vulkan中 xff0c 渲染通道 Render Pass 是一个描述渲染过程中使用的附件的对象 xff0c 可以包含多个 subpass 和附件依赖关系 假设我们需要创建一个render pass xff0c 它包含2个附件 1个子通
  • string和char*互转以及c_str()的陷阱

    string类型和char char 的转换 string转const char 1 使用string的成员函数c str 2 使用string的成员函数data 3 注意事项 xff1a c str 和data 的不同之处在于 data
  • 机器人视觉场景理解挑战赛

    这是澳大利亚机器人视觉中心发起的一项比赛 xff0c 刚刚开始 xff0c 欢迎做机器人 SLAM 场景理解的朋友参与 1 主要特点 BenchBot xff0c 用于运行语义场景理解算法的完整软件堆栈 仅需几行Python代码即可在逼真的
  • OpenCV手部关键点检测(手势识别)代码示例

    点击我爱计算机视觉标星 xff0c 更快获取CVML新技术 前几日分享了learnopencv com博主Satya Mallick发表的关于OpenCV Mask RCNN实例分割的博文 xff08 详见 xff1a OpenCV4 0
  • 人群计数(Crowd Counting)研究综述

    52CV曾经报道过两篇关于人群计数的新出论文 xff08 可在精华文章汇总中找到 xff09 xff0c 皆获得不少关注 xff0c 今天的文章来自复旦大学计算机的在读博士老田和电闪雷鸣为我们介绍人群计数的相关技术和进展 xff0c 想对此
  • ICCV 2019 | 视频综合理解:行为识别、场景识别以及视频综述

    点击我爱计算机视觉标星 xff0c 更快获取CVML新技术 本文经作者授权转载自知乎 xff1a https zhuanlan zhihu com p 91986833 未经许可 xff0c 禁止二次转载 导语 xff1a 计算机视觉领域顶