机器之心报道
机器之心编辑部
为了推动 AI 技术的应用创新 , 促进人工智能领域的学术交流、人才培养 , 打造人工智能的人才交流平台与产业生态圈 , 中国人工智能学会联合杭州市余杭区人民政府联合发起了首届全球人工智能技术创新大赛 , 并得到了阿里云、OPPO 等头部科技企业的积极参与和支持 。 阿里云天池平台为本次大赛提供平台和算力支撑 。AI 青年说是大赛主办方为提升青年开发者对 AI 的认识而主办的系列活动 , 该活动邀请知名青年学者 , 探讨理论研究与应用实践中的热点话题 。 本文对 AI 青年说系列活动第三期「未来五年的计算机视觉」核心内容进行了总结回顾 。
十年来 , 计算机视觉领域蓬勃发展 , 深度学习技术突破让机器在很多视觉任务上超越了人类 。 计算机视觉也是目前应用最多、落地最广的人工智能技术 。 与此同时 , 也有一些计算机视觉技术应用引发了争议和担忧 , 比如人脸识别的隐私问题、换脸假视频 。
计算机视觉的终极目标是什么?未来 5 年计算机视觉的研究重点将是什么?伴随着「深度学习进入瓶颈期」论调的出现 , 2021 年 , 入行计算机视觉还有「前途」吗?这些都成为了最受关注的问题 。
为了推动 AI 技术的应用创新 , 促进人工智能领域的学术交流、人才培养 , 打造人工智能的人才交流平台与产业生态圈 , 中国人工智能学会联合杭州市余杭区人民政府联合发起了首届全球人工智能技术创新大赛 , 并得到了阿里云、OPPO 等头部科技企业的积极参与和支持 。 阿里云天池平台作为本次大赛的官方竞赛平台 , 为大赛提供平台和算力支撑 。
为扩大大赛影响力与社会关注度 , 推进人工智能技术发展与交流 , 主办方特在大赛期间发起「AI 青年说」系列活动 , 邀请知名青年学者 , 面向人工智能与前沿科技从业者与泛科技人群 , 探讨理论研究与应用实践中的热点话题 。
文章图片
在「AI 青年说」系列第三期活动中 , 两位计算机视觉领域的青年学者纪荣嵘和林巍峣分别以《神经网络的压缩及加速》和《视觉目标理解与压缩》进行了精彩的主题分享 , 围绕「未来五年的计算机视觉」等话题给出了自己的真知灼见 。
机器之心在不改变原意的基础上 , 对两位专家的分享进行了整理 。
纪荣嵘:《神经网络的压缩与加速》
同学们好 , 我是厦门大学的纪荣嵘 , 很高兴参加今天的「AI 青年说」 。 我汇报的主题是神经网络的压缩与加速 。
深度神经网络的发展离不开海量数据 , 也离不开强大的计算硬件设备 , 但更重要的是计算机视觉使得深度神经网络的发展出现了无限可能 。 然而 , 深度神经网络参数量非常巨大 , 且计算效率相对低下 。 因此 , 在各种场景里面 , 研究者都面临深度神经网络加速与压缩的相关需求 。
一方面我们希望把模型参数量减少(对应压缩模型) , 另一方面我们希望把每张图片通过神经网络出结果的浮点(float)运算次数减少(对应模型加速) 。 因此神经网络的加速和压缩 , 近来已经成为的计算机视觉与机器学习领域的热门主题 , 各种各样的硬件实现设备和软件算法在企业界和在学术界已广泛使用 。
文章图片
因此神经网络的加速与压缩 , 近年来已经成为计算机视觉与机器学习领域非常热门的主题 , 有各种各样的硬件实现设备和软件算法在企业界和学术界被使用 。
文章图片
例如上图是我们所研发的基于深度神经网络的紧致化计算板卡 , 这个板卡几乎以实时的状态跑在 8 路摄像头上 , 可以达到传统大规模深度神经网络所达到的计算性能与效率 。
文章图片
这个问题的背后带来了大量的研究 。 可以从下图看到 , 在计算机视觉领域顶级会议(CVPR、ICCV、ECCV 等)以及各机器学习的顶会上(NeurIPS 等) , 近几年来深度神经网络加速与压缩的论文呈现爆发趋势 。
接下来我介绍几个深度神经网络加速与压缩的主要研究方向
文章图片
第一种思路是把神经网络里面的参数共享 。 例如 ICML 2015 年的 HashedNets 算法 , 提出将神经网络两层之间的差数用一个哈希学习算法做映射 , 映射之后的结果抛弃了它原来的实时的参数 , 只保留了它的 indexing , 因此可以用这种 indexing 把参数的网络给压缩掉 。 这之后有大量技术围绕此类方法对神经网络进行参数的共享 。
例如我们能够想到的各种量化算法 , 比如 ICLR 2015 的乘积量化(PQ)算法 , 也是基于乘法量化的方法对深度网络的参数进行压缩;还有将网络压缩成三值化的方法 TTQ , 基于训练的三值量化的方法 , 可以设计非对称的可学习的量化参数 , 对于传统的神经元分配 00、01、10 的三比特元素进行学习 。
第二种方法来自于深度神经网络的裁剪 。 我们都知道如果把网络看成树的话 , 裁剪网络的一种很好的方法是剪枝 。 剪枝算法也有很多的类似方法 , 比如说 BMVC 2015 的文章里面提出一个比较简单的方法是数据无关(Data-free) , 这种数据无关的方法主要去思考每一个神经元是否有存在跟它相似的神经元 , 如果有的话就把这个神经元删掉 , 作者把这个方法叫做基于显著性对称矩阵的神经元裁剪方法 。
还有斯坦福大学的韩松博士提出的组合式压缩方法 , 将网络的裁剪、网络的量化以及霍夫曼编码合在一起 , 构成了当时效果很好的网络压缩技术 。
另外一种思路是用结构化技术学习对神经网络参数进行裁剪 。 我们知道一个卷积核里面的卷积 , 或者一个通道里面的参数 , 如果一起不为 0 的话 , 我们就不得不做卷积或者通道的滤波 。 因此它限定所有参数一起为 0 , 或者一起不为 0 , 就可以利用我们之前在稀疏表示里面的结构化稀疏或者主稀疏的技术进行压缩 。 由此衍生出了各种各样优化的方法 , 去解决结构化稀疏与主稀疏的学习 。 比如说 FBS 的方法、L1 范数等等 。 其中 L1 范数是一个很典型的基于数据统计的滤波器的裁剪 , 它要计算每个滤波的 L2 范数 , 做排序 , 去裁剪前 m 个范数值最小的滤波 , 并删除对应的 fmaps 和 channel , 以此基础上再做更新 。
此外 ICCV 2017 年的 ThiNet 方法 , 通过通道选择的策略去选择最利于压缩的前 n 个通道进行裁剪 , 其核心的 trick 也是放在如何学到在最优的 n 个通道的组合上 。
我们在 CVPR 2020 文章里有一些相关的工作 , 例如基于高秩特征图的卷积核裁剪方法 , 发现由单个的滤波器生成特征图的平均秩几乎不变 。 我们在数学上证明了低秩的特征图所对应的滤波器信息量较小 。 实验选取了 500 个左右的特征图 , 可以看到它所对应的秩的期望值几乎是不变的 。 基于相关的方法 , 我们在 ImageNet 2012 和 ResNet-50 模型上都做了对应的评估 , 得到了当时最好的效果 。
文章图片
在去年 IJCAI 2020 的文章里 , 我们提出了一种基于自动化结构搜索的卷积核剪枝算法 。 之前的工作只考虑滤波的重要性 , 而忽略网络的结构 , 因此容易陷入局部最优解 , 且搜索开销巨大 。 我们提出的方法直接搜索用于做裁剪的整体结构表示 , 可以更优地达到整体的裁剪 。
但是这种方法是 NP-hard 的 , 因此我们设计了一系列技术 , 将这种 NP-hard 的组合式问题 , 通过缩小解空间的方式 , 获取更好的方法 , 并且利用人工蜂群在内的计划学习算法去优化目标解 。 下图是我们在 ImageNet 2012 和 ResNet-50 模型上所得到的效果 。 可以看到 , 在相同加速比的情况下 , 我们提出的这种裁剪方法可以获得更高的准确率 。
文章图片
第三种思路主要是进行参数的量化 , 主要是将原来的实值参数通过各种组合的方式量化成更低的比特位 , 或者把参数的组合放在一起当作一个向量 , 将向量做量化 。
我们去年与海思合作的 PAMS 方法 , 实际上是第一次实现了较高性能的基于参数量化的超分辨率网络 。 我们当时的主要动机在于 , 传统超分辨率重建的网络一般来说很难做量化 。 为什么呢?因为它们移除了 back to normalization(BN)这个层 , 使特征图的分布离散 , 而且极值很大 , 不利于量化截断参数的选取 。 虽然之前有各种各样的方法 , 比如 Dorefa-Net、PACT 等可以部分地解决量化的 super-resolution network 重建问题 。 但是我们认为里面还有很多具体可以改进的地方 , 在 ECCV 的文章里面 , 我们首先设计了一个模块 PAMS Block , 它利用可学习的参数去寻找最优的量化截断 。
我们不仅对这个 Block 做量化 , 同时也对 ShortCut 做了量化 , 有利于模型的快速部署 。 我们在各层之间都做了学习 , 这个学习是基于结构化知识迁移的损失 , 将浮点模型的结构化知识传递给低 bit 量化模型 , 因此加强了原始模型跟低 bit 模型之间的量化损失差异 , 从而有利于模型的收敛 。
此外 , 我们设计了特殊反向传播算法 , 设置了特殊的初始化结果 , 使得我们的方法可以有效地提升 super-resolution network 对应的超分辨结果 。 我们可以看到 PAMS 方法可以有效地提高低 bit 模型的精度 , 在 Int8 模型上的精度几乎等于传统浮点模型的 super-resolution network , 同时在 Int4 模型上的精度只有轻微的下降 。
下图是一些可视化结果 。 相对于 Dorefa-Net 等传统方法 , 我们的算法可以较大程度地保留超分辨率重建任务的细节 。
文章图片
此外就是 ECCV 2016 的工作 , 第一次提出「我们怎样去直接学一个二值化的参数网络」 。 沿着这条线下去 , 其实有不少的工作直接去研究如何学一个二值化的网络 。
因为我们知道 , 一旦网络的权值只有 0 和 1 , 我们可以设计快速的计算方法来对神经网络进行学习和计算 。 比如说 ECCV 2016 的 XNOR-Net , 它不仅把自身的参数做成 0 和 1 , 而且把输入做成 0 和 1 , 因此它的卷积被进化成了一个 0、1 之间的异或运算 。 所以这个方法就是异或网络可以快速加速它对应的学习 。 细节如下:
文章图片
此外我们还可以通过把参数的分布值调成一些特定的分布 , 比如波动率分布趋近于 0.5 的时候 , 它的相关信息最大 , 使得量化损失降到很小等等 。 还有一些类似的工作 , 此处不再赘述 。
我们在 AAAI 2020&IJCV 2020 的文章中提出了直接做二值化神经网络(Binary Neural Networks)架构搜索的方法 。 传统 NAS 方法往往无法直接用于搜索 1bit 网络结构 , 该方法是首次使用 NAS 去搜索二值化神经网络 , 在可微 NAS 框架的基础上 , 引入通道采样和减小搜索空间 , 显著降低了搜索开销 , 搜索到的网络性能堪比全精度神经网络 。
我们的主要贡献是在可微 NAS 框架的基础上 , 引入通道采样和减小搜索空间 , 显著降低了搜索开销 。 我们观察到 , 训练初始时表现较差的结构最终表现也会很差 。 基于上述观察 , 我们取原始搜索空间中结构参数较差的一半操作为新的搜索空间去采样 , 带来了性能上的大量提升 。
文章图片
此外 , 我们在去年 NeurIPS 上提出的二值网络量化、传统方式的量化结果 。 如果以参数集合一个向量的角度来说的话 , 可以看成只是对于向量做缩放 , 但向量之间还存在角度的变化 。 我们提出了旋转权重向量 , 去进一步减少角度的误差 。 此外的话我们的方法还提出了新的训练感知梯度、近似的函数以及新的初始化方法 , 进一步提升了在 CIFAR-10、ImageNet 上对应的性能 。
第四种思路为参数张量的分解 , 这个方法非常直接 。 果把层之间参数的矩阵看成一个矩阵的话 , 我们可以用各种各样的张量分解方法对这个参数的网络做低秩分解 。 比如说我可以把它做 Tensor 分解 , 我也可以做相关的其他形式的分解 。
我们在 TPAMI 2018 的文章中提出了一种统一的框架 , 解决全连接层跟卷积层的计算与存储问题 。 我们克服了误差的累积 , 也缓解了梯度的消失 , 在我们的方法里面 , 对卷积层和全连接层用同一个闭式解 , 在数学上叫做 formulation 。 基于此 , 我们进一步提出了基于层级之间的局部损失去做知识蒸馏的方法 , 这套知识迁移跟知识蒸馏方法在性能上实现了很好的提升:压缩 ResNet-50 ,LRDKT 获得了 2.57 倍的压缩比 , 2.02 倍的 CPU 实际加速比 , 且降低的 Top5 精度仅有 0.38% 。 此外我们也在对应的 arm 平台上验证了算法的有效性 。
文章图片
最后一种思路主要来自于知识蒸馏 。 知识蒸馏来自于大网络跟小网络之间输入输出的对齐 , 它可以有效保留大网络的信息 , 因此一种非常直接的方法就是把知识蒸馏用在模型压缩里面 , 这就是我们在 CVPR 2019 的方法 。 我们基于生成对抗学习的方法 , 用知识蒸馏去寻找最优结构的网络剪枝 , 我们把网络剪枝的学习 formulate 成学习一个 musk , musk 上每次被掩掉的模板 , 表示这一块要被裁剪掉 。
【视觉|现在入行CV还有前途吗?AI青年学者这样看「未来五年计算机视觉」】因此 , 我们可以建立对应的目标函数 , 比如对抗损失、数据对齐的损失 , 也包括分类的损失 。 基于这三类的损失 , 我们不仅可以做快的裁剪 , 也可以做分枝的裁剪 , 还可以做通道的裁剪 , 方法是普适的 。 我们在对应的 ImageNet 和 ResNet-50 上的结果 , 达到了当时的 SOTA 性能 。
文章图片
以上是我们组的在过去几年里在网络裁剪与网络压缩上的相关工作 , 大多数文章的代码都已经开源了 , 大家可以在 GitHub 上找到 。
在这里也感谢我们组的同学们 , 包括几位博士生和几位相关的硕士生:林绍辉博士 , 郑侠武博士、林明宝博士、李与超硕士、李慧霞硕士、颜晨倩硕士、唐浪硕士、陈宇航硕士、吴德成硕士、许子涵硕士、李少杰硕士、张玉鑫硕士、陈柏宏硕士、张少坤硕士、吴宇航硕士这几位同学 。
林巍峣:《视觉目标的理解与压缩》
今天很高兴有机会在这里介绍一下我们的工作 。 我报告的题目是《视觉目标的理解与压缩》 , 主要是介绍我们在计算机视觉领域做的一些工作 。
我先说一下我的报告的一个大致脉络 。 我们是把计算机视觉和数据的传输结合起来 , 甚至把计算机视觉和整个数据的理解、传输、通讯放在这样一个大的环境当中 , 去考虑这个问题 。
这里面其实有两条路:
文章图片
第一条路 , 比如输入一个视频 , 对视频本身进行数据压缩(因为它非常大 , 所以要进行压缩) 。 数据压缩好之后 , 我们就可以把码流保存下来 , 或者把它传输给另外一端的用户 。
第二条路 , 就与计算机视觉紧密相关了 。 首先我们从视频中去理解它的内容 , 得到它的语义信息 , 即目标、位置、关系、行为等信息 , 然后压缩这些信息 , 形成一个语音数据的码流进行保存和传输 。
传统视频或媒体的传输主要还是走的第一条路 , 即把视频直接压缩再传输出去 。
随着计算机视觉、AI 技术的发展 , 第二条路的重要性逐渐上升 。 它的第一个好处在于可以节省重复计算的计算量 。 比如我们想把视频传到手机上做一些智能应用(如特效) , 如果只是传输视频 , 我们就要重新进行视频的分析和计算 , 一万台手机就要重复一万次相同的操作 。 但如果遵循第二条路所示的做法 , 我们就可以在云端或服务器端把所需要的语义信息提取出来 , 然后把这些信息传输给客户端 , 这样的话一万台手机都不需要做重复工作 , 因为我们已经在云端或服务器端计算过了 。 我们可以直接把两个流的信息结合起来 , 得到我们想要的特效、智能交互等功能 。 这是第一点 。
第二点在于 , 有些场景下 , 我们可能面临一些隐私问题 , 无法直接把原始视频传输出去 。 比如在医疗场景下 , 病人的信息属于隐私 , 但我们要分析病人的一些动作 , 这种情况下我们就可以去掉第一条路的信息 , 直接传输第二条路的信息 , 通过这种方式进行远程诊疗、判断或分析 。
所以从各个方面来说 , 第二条路所示的方法是非常重要的 。 我今天所要介绍的东西也主要集中在这条路上 , 主要关注目标理解和语义信息压缩及编码 。
首先 , 我们的工作可能更偏行为 , 从行为出发来下沉 , 涉及行为所包含的目标检测和跟踪等问题 。
下图是视频行为理解的一些主要类型
文章图片
左上角是基于轨迹的行为分析 。 比如在交通领域 , 我们有很多车辆的 GPS 信息(位置信息) , 这些信息可以帮助我们进行交通事态的分析 , 发现堵车、擦碰等异常行为 。 此外 , 我们还可以把这种位置传感器绑在动物(比如鸟类)身上 , 根据其位置信息的变化来研究动物迁徙、互动的情况 。 这是第一类行为理解类型 。
这类行为可以跟视频相关 , 比如我们可以把视频中的目标检测出来 , 然后分析他们的轨迹 。 如果目标是人 , 我们可以把他们骨架(如四肢)上的关键点找出来 , 然后分析他们的轨迹信息 。 这类行为也可以跟视频没有关系 , 比如上面提到的用 GPS 信号得到的轨迹信息做识别 。
右上角是第二个类型 , 即给定一段视频 , 我们去理解其中的行为或内容 。 这里的视频可以是任意类型 , 我们根据它的信息来做识别 。 这是目前在学术研究领域最常见的类型 , 叫视频分类或视频理解 , 应用最多(数据最多)的是互联网场景 , 短视频、长视频对此都有很大的需求 。
比如在短视频领域 , 我们需要做推荐 , 其中很重要的一部分就是对短视频本身内容的理解 , 然后基于这些理解推荐类似信息 。 在这个领域 , 大部分内容都是摆拍 , 比如化妆 , 上传者往往把想要表达的内容放在画面中非常显眼的位置 , 所以一般不需要做太多的分割或目标检测 , 它们和行为理解的关系不是很大 。 在这个领域 , 更重要的是在一段较长的视频中找出它的关键位置 , 我们叫时域分割 , 比如在一段很长的视频中找出化妆片段 , 然后对其进行分类 。
最后一个类型就是上图下面一排所示的面向监控视频的行为识别 。 这个领域和右上角那个领域有很多技术是相通的 , 但是也有很大的不同 。 最大的不同就是 , 这里面发生的行为是非配合的 。 刚刚说到 , 右上角很多场景是摆拍的 , 但监控场景很多是无意中拍到的 。 比如说有人打架 , 它可以发生在任意的位置 , 而且目标可能非常小 , 甚至不是画面中的主要场景(主要场景可能是其他人走来走去) 。 而且 , 打架的人也不一定是正面对着你 , 他们的姿势可能是任意的 , 地点是隐蔽的 。
在这种场景中 , 我们要怎么去理解视频或者说把感兴趣的行为找出来 , 这是一个问题 。 所以在这个领域 , 把感兴趣目标的空间、时间位置找出来非常重要 。 这点在前面的工作中可能不是那么重要 , 但在这个领域非常重要 , 不然可能跟画面中的主要部分或其他行为发生混淆 。
这就是我们主攻的三个领域类型 。 基于这些问题 , 特别是下面一排的问题 , 我们会发现 , 目标的检测、跟踪也是非常重要的 。 只有完成目标的感知、理解 , 我们才能准确地定位目标的行为 。
文章图片
当然 , 目标检测和跟踪在前两种类型的行为理解中也会有一些应用 。 比如说 , 如果把目标检测出来 , 我们就可以更深层次地去理解画面中的行为(如目标之间的交互) , 这对于行为理解也是很有帮助的 。
所以 , 在后面的演讲中 , 我先简要介绍一下我们在目标检测、跟踪方面的工作 , 然后再介绍我们在行为方面的一些工作 。
在目标检测方面 , 我们主要专注于在不增加检测器复杂度的情况下提升它的效果或者说准确率 。 具体细节参见以下论文:
Tiny-DSOD: lightweight object detection for resource-restricted usages, BMVC, 2018
AP loss for Accurate One-Stage Object Detection, TPAMI, 2020
Towards accurate one-stage object detection with AP-loss, CVPR, 2019
Kill two birds with one stone: boosting both object detection accuracy and speed with adaptive patch-of-interest composition, 2017.
第一个工作的最终结果就是我们设计了一个方法 , 能够在准确率比较高的情况下缩小网络规模 , 同时运行速度也很快(超过 100 帧 / 秒) 。 这是我们优化的一个非常快的检测器 。
第二和第三个工作也是致力于在不增加目标检测复杂度的情况下提升它的效果 。 在这篇论文中 , 我们提出了一个更优的损失函数来解决训练过程中样本不平衡的问题 。 我们知道 , 在一张图像中 , 正样本是比较少的 。 比如画面当中有一只长颈鹿 , 正样本只有长颈鹿 , 但负样本非常多 , 非长颈鹿的位置都是负样本 。 这样的样本不平衡会导致我们构建的模型准确率下降 。 所以我们就提出了一个新的损失函数 , 对训练过程进行控制 , 以解决这样一个问题 。 这个工作的好处在于 , 我们只在构建模型的阶段进行一些改变 , 在真正使用这个模型做检测的时候 , 它的复杂度是不变的 。 也就是说 , 它的运行速度跟原来是一样的 , 但是效果得到了提升 , 因为它的构建方法更好 。
第三个工作是我们在监控场景中所做的一些尝试 。 在这类场景中 , 我们发现图像的大小或细节与处理速度之间会出现一个矛盾 。 也就是说 , 我们的画面非常大 , 会呈现很多细节 , 但是我们很难处理这么大的画面 。 如果我们把图像压缩得很小再输入检测器 , 它的细节就损失掉了 。 如果想保留细节 , 速度就会非常慢 。 所以我们就在想 , 有没有什么方法帮助我们在其中取得一个平衡 。 这就是我们所做的工作 。 具体来说 , 我们先把画面当中可能出现目标的区域给找出来 , 把一些小的、局部的区域找出来 , 然后把这些区域拼成一个小的画面(如下图右下角所示) , 这样我们就可以去掉画面中那些无关的区域 。 最后 , 把这样一张图像输入检测器 。
也就是说在一个很大的画面当中找到可能出现目标的区域 , 然后把局部小的区域拼成一个小的画面 , 这样的话就可以去掉这个画面中与背景无关的区域 , 之后通过拼接的方式把它移到一个固定的画面中 , 最后拼接结果就像下图的右下角 , 它其实是来自不同的局部区域 。 将这张图像输入检测器 , 因此图像输入检测器的模型很小 , 但是保留了原始视频中的分辨率或者细节 。 经过验证 , 这个方法是不影响检测的效果的 。
文章图片
当然 , 我们也有一些新的研究和应用 , 比如旋转目标检测 , 在很多场景夏 , 比如像无人机这种都是从山顶上往下拍 , 导致很多目标并不是横平竖直的 , 此时如果你还用横平竖直的框 , 会导致框与框之间有很大的遮挡 , 会包含很多与目标不相关的东西 , 所以更理想的方式是把这个目标斜过来框 , 就需要有一个具备这个功能的检测器 。
我们设计了一个新的方法 , 能够检测旋转的目标 。 当然 , 除了无人机 , 超市货架检测中也会有类似的情况 , 因为超市货架与货架之间间隔很近 , 有可能人来拍的时候只能侧面拍 , 就会导致目标斜过来 。
同时超市货架里面的货物有可能就是斜着放的 , 也会导致斜过来的情况 , 所以在这个领域怎么去做检测也是非常重要的一个应用 。 这就是我们另外的一个场景 , 即能否做三维的检测 , 除了二维框 , 还能不能能通过视频框出三维的、立体的框 , 这个在自动驾驶车辆辅助中有很多的应用 。
在车辆自动驾驶中 , 可能输入的是是一种雷达传感器 , 三维点云的传感器 。 那在辅助驾驶中 , 我们希望做低成本的三维感知 , 所以可能还是一个传统的二维图像 , 从二维的图像中估计出目标的或者车辆的三维框 , 这样的话我才能知道实际距离 , 并做一些车辆规避或者车速控制 。 检测出目标后 , 我们就需要把目标把它关联起来 , 也就是把不同帧中检测的目标关联起来 。 我们要知道这一帧的目标和下一帧目标是同一目标 , 最后连起来形成一个轨迹 , 得到轨迹以后 , 我们就可以对目标进行长时间分析 , 或者对行为进行分析 。 这是我们的一些工作 , 具体我就不展开了 。
其实在这个领域 , 如果场景类似是斜着 45 度往下拍的目标之间的遮挡 , 哪怕有比较严重的遮挡 , 只要数据足够多 , 现在的方法总体来说还是能够取得比较好的效果 , 基本上也可以达到甚至 95% 以上的准确率 。 当然特别密集场景是不行的 , 或者说遮挡极为严重的场景是是比较困难的 。
除此以外 , 还有一个比较重要的领域就是跨相机的关系 , 也就是说 , 一个摄像机不太可能包含整个场景中的事态和信息 , 所以可能需要有多个相机的联动 。
这个情况下是不是能够做跨相机的关系?也就是 Re-identification , 也就事从一个相机中的目标得知另外一个相机的目标和本目标是同一个目标 , 这是我们在这个领域一些工作 , 细节同样也不展开了 , 有兴趣的话可以了解一下细节 。 我们做了个体目标的再识别 , 我们也做了组群目标的再识别 , 看一群人到另外一个场景中是不是能够对应起来 。
这方面的一个应用是野生动物的保护 , 我们在野外设置不同的相机 , 相机距离很远 , 可能是几十公里或者几百公里 。
文章图片
在这一篇论文中 , 某一个相机抓拍到了东北虎 , 如果在另外一个相机中也抓拍到了一只东北虎 , 我们就可以利用多相机跟踪的技术判断是否为同一只老虎 , 如果是的话就可以由此了解老虎的习性 , 比如它某年某月在这个地方出现了 , 过了几天它可能在另外一个区域出现了 , 由此去勾勒出东北虎的野外运动的事态 , 去观测它的活动范围变化 , 后续可以加以生态保护 。
下面是我们构建的一个数据集 , 主要面向有些场景下检测和跟踪技术的局限性 , 这些就是很好的例子 , 在这样的场景下目标检测、跟踪是非常困难的 。 比如说地铁场景中人是极度密集的 , 食堂场景中遮挡是非常严重的 , 而且大小变化非常大 。
文章图片
那么除了检测以外 , 我们是不是能得到目标的骨架?在这个场景下非常困难 , 能不能在这个事情上做到非常好的效果 , 就是我们要面临的新挑战 。
文章图片
Challenge 网页:http://humaninevents.org/ (8 月重新开放)
相关论文:
https://arxiv.org/abs/2005.04490
针对这个问题 , 我们构建了一个包含各种复杂行为和实际场景的数据集 , 在去年也基于数据集举办了一次挑战赛 , 有很多参赛队参加并取得了不错的名次 。 现在这个数据集已经开放了 , 它包含了行为识别、目标检测跟踪和骨架提取等不同任务 , 而且是作为一个长时间的任务来开放 。 如果各位对这个挑战有兴趣 , 也欢迎大家来使用我们的数据集来评测我们的方法 。
接下来介绍一些行为识别的技术 , 同样地 , 具体细节我们就不进行展开了 。 那么行为识别的方法包括就是说在不考虑空间信息的情况下对整段视频进行分类 , 这是我们做的一些工作(任意行为、多尺度特征、时空异步关联) , 具体细节就不展开了 。
? Action recognition with coarse-to-fine deep feature integration and asynchronous fusion, AAAI, 2018.
文章图片
? Cross-stream Selective Networks for Action Recognition, CVPR workshop, 2019.
文章图片
同样针对一段视频 , 我们不但要判别出这个视频中「发生了什么」 , 还想知道发生的时间位置和空间位置 , 也就是说同时做识别以及时空位置的检测与定位 , 这就是我们的一些相关工作:
第一项工作是《Finding Action Tubes with an Integrated Sparse-to-Dense Framework(AAAI 2020)》
文章图片
文章图片
第二项研究是《CFAD: Coarse-to-Fine Action Detector for Spatiotemporal Action Localization(ECCV 2020)》
文章图片
文章图片
在这个领域 , 我们的工作能达到目前比较好的效果 , 甚至是最好的效果之一 。 传统方法复杂度高、速度慢 , 我们的方法复杂度非常低 , 达到每秒 100 帧以上的处理速度 , 且效果达到最好 。
如果将该技术进一步扩展 , 是不是能做音视频定位?给一段视频、音频 , 从图像中准确定位目标发出的声音 , 或者找到发出声音目标的空间位置 , 诸如此类的任务 。
举一些我们做的工作的例子 , 比如摔倒检测技术 , 现在很多企业也都在做 , 但是我们做的比较早 , 这个任务相对来说比较简单 , 摔倒行为都是单一目标行为 , 基本上不可能多个目标一起摔倒 。 而且它的模态比较比较容易区分 , 因为倒下和站着有很大的区别 , 这是我们做的各种姿态摔倒的场景:
文章图片
然后是打架 , 这和前面的技术相比就有很大区别 , 难度呈指数型增大 。 因为打架是多人混合的 , 是比较复杂的运动 , 同时它的模态跟摔倒就有很大的区别 。 不同的人打架、不同场景下打架都不太一样 , 甚至可能跟剧烈运动相混淆 。 由于打架的时候很多人扭在一起 , 目标检测和分析任务也有很大的区别 , 有时候遮挡非常严重 , 有些打了一半就摔倒了 , 有些可能一直在扭打 , 模态很难把握 。
文章图片
我们针对这个问题做了一套系统 , 打架和摔倒这两件事 , 虽然看上去是类似 , 实际上底层的识别技术是完全不一样的 。
最后介绍一下我们在视频压缩方面的一些工作 。 如下图所示 , 左边是一个视频 , 我们分析一下这个视频中视频数据量中语音数据量分别是多少 , 我们来看视频压缩到底有没有意义:右图蓝色部分是视频压缩以后 , 可以看出压到了很小 , 特别是监控视频还可以压得更小 , 因为它背景是固定的 。
文章图片
视频当中的目标位置信息如果不做压缩 , 可以看到其数据量非常大 , 与压缩后的视频数据量差不多同样数量级 , 这个数据量非常大 , 相当于又保存了一个视频 。 图 b 中右边一列的红色部分是经过我们方法压缩以后的结果 , 可以看出可以大大降低了数据量 , 所以说语义压缩是一个非常重要的领域 。
在这个领域我们做了一些工作 , 针对关键点序列 , 包括骨架序列、人脸关键点序列 , 以及三维框序列数据集 , 下面展示了我们的研究效果:基本上可以去掉 70% 的数据量 , 也就是说压缩到原来的 30% 。 当然语义压缩并不仅限于此 , 也可以包含目标之间的复杂交互甚至目标属性等 。 随着我们提取的视频中的信息越来越多 , 语义数据肯定也是越来越多的 , 所以如何去压缩也是非常重要的一个问题 。
文章图片
如果大家想了解关于我们工作的细节 , 也可以看我们的主页(
https://weiyaolin.github.io) , 以上所有论文的地址可在该页面找到 。
圆桌论坛:未来五年的计算机视觉
Q1:这次圆桌主题是未来 5 年的计算机视觉 , 在技术飞速发展的今天 , 预测未来 5 年甚至是 3 年都是非常有难度的事情 , 但我们还是可以做一些基础的推演 , 非常期待两位老师的看法!
不过在展望未来 5 年的计算机视觉之前 , 有一个更加长远、更加根本的问题需要弄清楚 , 就是计算机视觉的终极目标是什么?或者说我们想要构建一个怎样的计算机视觉系统?这个系统具有哪些功能呢?
纪荣嵘:我觉得从 David Marr 开始 , 计算机视觉的主要目的不仅是帮助计算机学会像人一样去看 , 而且需要像人一样去思考 。 其实 David Marr 介绍了各种分层的专业视觉组成的架构 , 现在无论是深度学习还是传统方法 , 都只是实现其计算机视觉体系里面很小的一部分 。 因此我觉得未来一定会有远比现在更灵活、更主动、更自然、更低成本的视觉分析系统 , 更容易更接近 。
林巍峣:我觉得可以从计算机视觉定义来看 , 其实就是希望计算机能像人一样 , 看到我们外界的东西 , 然后对它进行完全的理解 。 现在计算机视觉在某些领域 , 比如说人脸识别、目标检测领域的精度是比较高的 , 但是在还有很多的场景 , 比如说综合理解方面的效果就不那么理想 。 这可能是未来计算机企业的一个非常重要的目的 。
Q2:这里有一个延伸的问题 , 现在有很多传感器 , 比如红外线、紫外线这些都是能够超越人类视觉的 。 刚才两位老师都提到 , 计算机视觉的终极目标是像人类一样 , 其实现在机器已经可以在很多方面超越人类的视觉了 , 这个也算是计算机视觉系统的终极目标吗?
林巍峣:有些传感器本质上还是相当于弥补视频的不足 。 比如很多目标之间如果有遮挡和很复杂的关系 , 人一看到就能理解他们之间的关系 , 但是如果拍成视频以后 , 计算机从视频当中就很难找出之间的的关系 。 引入传感器本质上也就是使得新传感器能够知道它们之间的遮挡关系 。 一部分是弥补 , 另外一部分是超越人类 , 比如说红外线传感器在夜晚比人的视觉感知能力是更强的 。 不过它的理解能力并不是比人类更强 。
纪荣嵘:我觉得现在并不是计算机视觉的传感设备能超越人类 。 回想一下 , 其实人用极其少量的能源开销 , 只用双目甚至单目就能实现非常智能、复杂的分析系统 , 这肯定是在长期进化过程中演变的 。
刚才也提到 , 系统的目标首先是更低成本 , 要能够识别上千种物体 , 且不会因为「少吃一碗饭」而减掉效果;第二 , 只用少量样本就可以学到一个新的样本类别 。 比如给小朋友看一辆消防车的卡通图像 , 他马上就能学会真实消防车的识别跟分类 , 而现在的计算机视觉系统不得不堆大量的计算资源、标注数据和传感器去达成一些目标 。
所以我觉得 , 现在还不能叫做超越 , 就像就计算器加减法做得很好 , 但并不代表计算器有智能 。
Q3:为了实现这样一个系统 , 未来 5 年的计算机视觉研究重点将是什么呢?
林巍峣:这个问题可以看一下 5 年前和现在的对比 ,
在数据来源上 , 5 年前更多是基于图像、视频等信息 , 后来加入了三维点云、深度这些信息 , 相当于在感知的数据源上有了更多突破;在功能上 , 5 年前更多是采集大量数据 , 以获得更好的模型效果 , 现在更多学者偏向于做自监督或少样本的研究;还有一些在各个根据各个应用领域计算机需求也做了一些突破 。
从这个方面来说 , 未来 5 年我预测在传感或输入数据来源上会有一些新的变化 。 这些数据来源如果更加精准或更有区分度 , 可能会让计算机视觉的性能有一些提升 。 当然过去五年计算机视觉的发展是基于深度学习的浪潮 , 我们也可以思考:在深度学习之外 , 会不会有一些新的突破性技术出现?
纪荣嵘:我觉得有很多新的方向 。 第一点 , 低功耗的视觉系统 , 我们可不可以用小的算力、小模型、低成本设备 , 实现与传统深度学习服务器上深度神经网络模型一样的效果?
第二个方向 , 也是我最近非常感兴趣的 , 就是可不可以把 AI 算法工程师从不同场景里面抽象出来 , 他们不再去设计模型?这就对应自动机器学习以及神经网络自动架构搜索 。 让机器去设计模型、算法、新的 AI 场景 , 这是我觉得很有意思的 。
第三个方向叫做多任务 , 现在每个深度学习模型只能干一件事 , 未来有可能一个模型既能做视觉任务又能做语言任务 。 多个研究领域的模型或许有融合的可能性 , 人脑只有一个模型即可做无数的事情 , 多任务(multitask)是值得期待的 。
第四个方向 , 随着计算机视觉系统逐渐走进安防的相关的领域 , 模型鲁棒性、安全性必然是政府和工业界非常关心的问题 。 除了模型精度和大小之外 , 模型的靠谱程度也值得我们去认真分析 。
以上几点是我认为计算机视觉或者深度学习未来可能变得更热门的方向所在 。
Q4: 本届大赛第二道赛题是 Panda 大场景多对象跟踪检测 , 要求参赛队伍关注动态、大场景 , 多对象数据处理算法的研究 , Panda 是由清华大学牵头建设的 , 是全球首个大规模 10 亿像素级别的视频数据集 , 该赛道的初赛任务是对行人和车辆进行多目标检测 , 复赛任务则是对视频中的多个行人进行轨迹跟踪 。
2017 年 , 林老师的团队跟中兴通讯合作 , 在多目标跟踪上面取得突破 , 在保证实施处理的情况下 , 大幅提升了跟踪的效果和精准度 。 您对这道赛题有什么样的看法?
林巍峣:这个赛道里面 , 我们觉得主要是两点 。
第一点是场景特别大 , 所以如何有效处理视频是很困难的 。 因为是 10 亿像素级 , 用传统方法将整个视频或者整个图像放到网络里直接处理是很困难的 , 把它变小以后 , 原来清晰的就看不见了 。 所以高性能处理超大视频是非常困难的 , 其实处理一张图像都很困难 , 更不要说是整个连续的视频 。
第二点就是有的参赛队并不能像企业一样 , 针对某个场景采集海量的数据 , 然后有海量的工程师或者员工来做海量的标注 , 数据本身也是具有局限性的 。 就是说在非常有局限性、数据并不能应有尽有的情况下 , 把效果做好也是非常困难的 。
第三点是因为 10 亿像素可能涵盖各种场景 , 有视角的变化 , 各种情况密集遮挡都会有 。 那么在一个场景中怎么用一个模型或少量的几个模型去做这样一个任务 , 难点可能在这里 。
纪荣嵘:我觉得这是一个很有挑战性的问题 。 其实如果用线性便利 scanning、multi skills scanning 的方法 , 效率是上不去的 。 图像不用说 , 更何况是视频 。 所以我觉得这里面一定要引入某些注意力的机制 , 虽然我没有参加比赛 , 但可以想象出来 , 一定要有对应的选择注意力机制去感受关键的目标 。
再回到这个问题 , 就像人的视觉系统有很多选择注意力机制去发现关键目标 , 也不是在所有地方都呈清晰的像素去观察的 。 我们自己没有感觉到 , 但我们真正 focus 的地方非常小 , 剩下的地方其实都是模糊的 。 所以如果没有高效的选择注意力机制去捕捉场景关键信息的话 , 这种 10 亿像素的分析几乎也是不可能的 。
像本次大赛的赛道技术 , 有很多可以应用的地方 , 例如如果能处理 10 亿像素的目标检测与跟踪的问题 , 在小样本情况下 , 它自然而然可以延伸到各种安防监控场景中的行人分析与识别 。 未来有很多场景 , 一旦要做实时分析 , 也需要这种高速的检测技术进行支撑 。
Q5:说到应用计算机视觉 , 想请教一下两位老师 , 最看好的计算机视觉应用是什么?未来 5 年最有潜力的计算机视觉应用是什么?
林巍峣:未来我们相对比较重视的首先是多传感器融合 , 第二个是对视频本身的处理 , 第三个是少样本的学习 。
纪荣嵘:我也想从技术角度去讲这个问题 , 其实我一直觉得过去五年年计算机视觉研究的方式还是处于非常分散的情况 , 不同的任务有不同人做不同的模型 , 我认为未来会统一起来 。 此外就是模型小型化、模型自动部署、小样本学习、迁移学习等趋势 , 值得关注 。
Q6:从 2012 年开始 , 计算机视觉一直火到现在 , 但眼下人才招聘市场上有一个越来越强烈的声音:计算机视觉人才已经有一定程度的饱和 , 内卷非常严重 , 学计算机视觉专业面临着毕业即失业的风险 。 二位怎么看?
纪荣嵘:可能跟以前的程序员很像 。 人才充裕之后 , 低水平的学生肯定很难找到工作 , 这个是毋庸置疑的 。 那如何能让自己的技能跟别人不一样?
我讲两个笑话 , 第一个就是网上很多的《一周之内学会深度学习》之类的 , 这个并不是梦想 , 是有可能的对吧?如果深度学习到了谁都可以快速入门的程度 , 首先说明它很热门 , 大家都想学;其次说明它太好上手了 , 意味着这不是一个硬核问题 。 如果你的职业没有技术壁垒 , 确实会面临着很大的失业可能性 。
所以着要求我们去把握自己到底要学什么 , 而不是研究生第一年只会调参 , 第三年毕业还只会调参 , 肯定是不行的 , 这是我想说的第一个观点 。 第二个观点是找到有自己差异化的研究点 , 会用和精通是两码事 。
林巍峣:从我们实验室的情况来说 , 博士生找工作还是很容易的 , 我没有感觉到内卷或非常困难 , 如果你在这个领域非常精通 , 无论在工业界或者学术界 , 还是很有发展前途的 。 我们所说的内卷或者竞争激烈 , 更多还是在本科生硕士生 , 不过工业界或者学界目前还是有很多的需求 , 应该是不用太过担心这个问题 。
在这个领域 , 针对新问题快速理解、快速上手的能力非常重要 , 这个领域可能你以前并不熟悉 , 但通过看论文找资料就能在很短时间内理解相关工作 。 如果有这个能力 , 实际上你还是具备很强的竞争力 。 这也是为什么博士生比硕士生在该领域更吃香的原因之一 。 因为博士生已经证明了他在很多个领域已经做过相关工作 , 有很好的经验 , 而且哪怕是新的问题 , 凭借以前的经验也可以快速上手 。
推荐阅读
- 测评|【横评】5年前的老机型测评 苹果华为三星小米魅族一加现在卡吗
- 视觉|超高色准打破行业天花板,创维S82还原真实世界
- 记忆|为什么现在的年度听歌报告,越来越好哭了?
- 视觉|下瓦房“钻石壹号”品牌区 ——全新升级 耀世登场
- 最新消息|乐视经营利润和现金流双平衡 现在都有钱做电梯广告了
- Windows|微软正为Windows 11开发新Mica视觉效果
- 硬件|瑞芯微智能视觉芯片RV1126荣获CPSE安博会最高殊荣:金鼎奖
- Linux|新Linux补丁已实现在苹果M1/T2平台启用Wi-Fi支持
- 安全|为什么我们现在不再需要杀毒软件了?
- 用户|苹果 iPhone 现在也可以使用谷歌 Fit 测量心率和呼吸频率
