程序员应知应会之视频描述算法

人工智能
机器翻译的基本思路是: 将输入的源语句和目标语句表示在同一向量空间内,首先使用编码器将源语句编码为一个中间向量,然后再通过解码器将中间向量解码为目标语句。

随着ChatGPT的火爆,人们对于人工智能领域的发展产生了极大的兴趣。很多专家认为,一个人工智能的时代将随着软硬件技术的快速发展即将到来。那么,作为信息技术领域的先锋队,对于程序员们来说,学习人工智能技术也就成了必然的课题。

通常来讲,人工智能可以分为三个研究方向:计算智能、感知智能和认知智能。

计算智能是人们比较熟悉的计算机的常规操作,例如数值运算、矩阵分解、微积分计算等。

感知智能是指将物理世界的信号通过摄像头、麦克风或者其他传感器的硬件设备,借助语音识别、图像识别等前沿技术,映射到数字世界,再将这些数字信息进一步提升至可认知的层次,比如记忆、理解、规划、决策等等。

认知智能则更类似于人类的思维理解、知识共享、行动协同或博弈等,也就是说基于获取的信息做出思考与决策。这一阶段需要运用计算智能、感知智能的数据清洗、图像识别等能力。除此之外,还需要拥有对于业务需求的理解以及对分散数据、知识的统筹治理能力,从而能够针对业务场景进行策略构建和决策。

目前来说,大量的人工智能工作集中在感知智能阶段,对于认知智能,则相对来说进展较为缓慢。

在认知智能领域,与人们生活最为接近的是视频描述技术。通过感知智能技术中的视频分类、物体检测等技术,我们可以对于视频中出现了什么物体进行识别。但是这并不能使人们理解视频到底描述了什么,只能机械的描述说,一个红脸的男人、一把刀和一匹红色的马之类的。

视频描述需要识别出视频中的物体,并理解物体之间的相互关系,同时理解场景的不同,物体运动和行为的不同,结合相应的已存储知识,作出符合实现的描述。这都在技术上带来了很大的挑战性。是一个整合了计算机视觉和自然语言处理的综合技术,类似于将一段视频翻译成一段话。不仅要正确理解视频内容,还要用自然语言表达出视频中物体之间的关系。

当前视频内容描述算法主要分为基于语言模板的方法、基于检索的方法和基本编码器解码器的方法。下面我们分别来介绍一下。

一、基于语言模板的方法

基于语言模板的方法首先通过视频分类或目标检测等方法检测出视频中目标、属性、动作以及目标之间的关系等,然后将检测到的物体,依据一定的规则,填入到事先制定好的语言模板中,从而形成一句完整的描述语句。

基于语言模板的方法简单直观,但是由于受到固定模板的限制,生成的句子语法结构单一,表达形式缺乏灵活性。同时这种方法必须进行前期细致的标注工作,为视频中包含的每个物体、动作、属性等制定统一的类别标签。而且该方法对于超出模板范围的视频,会给出差异很大的结果。

图片

二、基于检索的方法

基于检索的方法,首先需要建立一个数据库,数据库中每个视频都有对应的语句描述标签。输入待描述的视频,然后找到数据库中与之最相似的一些视频,经过归纳和重置,把该相似视频对应的描述语句迁移到待描述的视频。

通常来讲,基于检索的方法生成的描述语句更加贴近人类自然语言的表达形式,句子结构更加灵活。但是此方法严重依赖数据库的大小,当数据库中缺少与待描述视频类似的视频时,生成的描述语句将和视频内容存在较大的误差。上述两种方法都严重依赖视觉前期复杂的处理过程,且存在对后期生成句子的语言模型优化不足的问题。对于视频描述问题,这两类方法都难以生成描述准确、表达形式多样的高质量语句。

三、基于编码器解码器的方法

基于编码解码器的方法,是目前视频描述领域的主流方法。这主要受益于基于深度神经网络的编码解码模型在机器翻译领域取得的突破进展。

机器翻译的基本思路是: 将输入的源语句和目标语句表示在同一向量空间内,首先使用编码器将源语句编码为一个中间向量,然后再通过解码器将中间向量解码为目标语句。

视频描述问题本质上也可以看做是一个“翻译”问题,即把视频翻译成自然语言。此方法前期不需要对视频采取复杂的处理过程,能够直接从大量的训练数据中学习视频到描述语言的映射关系,实现端到端的训练,并且能够产生内容更加精确、语法灵活和形式多样的视频描述。

责任编辑:武晓燕 来源: 活在信息时代
相关推荐

2022-11-04 07:12:24

JavaScript基准测试

2022-09-04 19:43:05

程序员数据库

2022-12-02 07:16:29

MySQL函数日期

2011-05-31 09:22:39

程序员

2011-05-26 10:04:30

程序员

2011-05-24 13:47:25

程序员

2011-06-02 09:02:36

程序员

2011-06-02 09:56:21

程序员团队精神

2010-07-27 16:21:25

程序员

2011-05-31 09:37:53

程序员

2021-05-22 10:01:45

PythonPython列表Python程序开发

2011-05-31 10:50:36

程序员

2022-11-07 08:51:24

数据库开发笛卡尔积

2023-05-10 08:41:40

二叉树遍历算法

2019-01-30 14:14:16

LinuxUNIX操作系统

2022-07-20 00:03:10

Python列表字典推导

2014-06-09 16:43:11

程序员

2022-10-25 08:23:09

Reactor模式I/O

2024-03-14 12:17:00

数据库数据模型

2014-07-01 09:43:55

程序员算法
点赞
收藏

51CTO技术栈公众号