视频打标签算法探讨

article/2025/8/22 15:56:35

随着内容时代的来临,多媒体信息,特别是视频信息的分析和理解需求,如图像分类、图像打标签、视频处理等等,变得越发迫切。目前图像分类已经发展了多年,在一定条件下已经取得了很好的效果。本文因实际产品需求,主要探讨一下视频打标签的问题。

查阅了部分资料,笔者拙见,打标签问题无论是文本、图像和视频,涉及到较多对内容的“理解”,目前没有解决得很好。主要原因有以下一些方面,标签具有多样性,有背景内容标签,细节内容标签,内容属性标签,风格标签等等;一些标签的样本的实际表现方式多种多样,样本的规律不明显则不利于模型学习;标签问题没有唯一的标准答案,也存在一定的主观性,不好评估的问题则更不利于模型学习。

依然笔者拙见,视频打标签问题目前还没有很好的解决办法,也处于探索阶段。方法上主要有以下一些思路:可以从视频角度出发,可以从图像角度出发;可以利用caption生成的思路,可以转化为多分类问题。

直接从视频角度出发,即从视频整体的角度出发,提取图像帧,甚至字幕或者语音信息,进一步处理得出视频标签的结果。Deep Learning YouTube Video Tags,这篇文章提出一个hybrid CNN-RNN结构,将视频的图像特征,以及利用LSTM模型对标签考虑标签相关性和依赖性的word embeddings,联合起来,网络结构如下图。

640?wx_fmt=jpeg

Large-scale Video Classification with Convolutional Neural Networks提出了几种应用于视频分类的卷积神经网络结构,在网络中体现时空信息。single frame:就是把一帧帧的图像分别输入到CNN中去,和普通的处理图像的CNN没有区别;late fution:把相聚L的两帧图像分别输入到两个CNN中去,然后在最后一层连接到同一个full connect的softmax层上去;early fution:把连续L帧的图像叠在一起输入到一个CNN中去;

slow fution:通过在时间和空间维度增加卷积层,从而提供更多的时空全局信息。如下图所示:

640?wx_fmt=png

另一方面,为了提高训练速度,这篇文章还提出Multiresolution CNNs,分别将截取中间部分的图像和缩放的图像作为网络的输入,如下图所示:

640?wx_fmt=jpeg

这篇文章主要研究了卷积神经网络在大规模视频分类中的应用和表现。通过实验,文章总结网络细节对于卷积神经网络的效果并不非常敏感。但总的来说,slow fusion网络结构的效果更好。

从图像角度出发,即从视频中提取一些帧,通过对帧图像的分析,进一步得出视频标签的结果。对图像的分析,也可以转化为图像打标签或者图像描述问题。Visual-Tex: Video Tagging using Frame Captions,先从视频中提取固定数量的帧,用训练好的image to caption模型对图像生成描述。然后将文本描述组合起来,提取文本特征并用分类方法进行分类,得到tag结果。这篇文章对生成的描述,对比了多种不同的特征和多种不同的分类方法。可见,图像打标签对视频打标签有较大的借鉴意义。另一种思路,CNN-RNN: A Unified Framework for Multi-label Image Classification可以看作将图像打标签问题转化为多分类问题。将卷积神经网络应用到多标签分类问题中的一个常用方法是转化为多个单标签的分类问题,利用ranking loss或者cross-entropy loss进行训练。但这种方法往往忽略了标签之间的联系或者标签之间语义重复的问题。这篇文章设计了CNN-RNN的网络结构里,并利用attention机制,更好地体现标签间的相关性、标签间的冗余信息、图像中的物体细节等。网络结构主要如下图所示,主要包括两个部分:CNN部分提取图像的语义表达,RNN部分主要获取图像和标签之间的关系和标签之间的依赖信息。

640?wx_fmt=png

针对空间部分短视频数据,笔者设计了一个简单的视频打标签的方案,并进行了实验。由于预处理和算法细节的很多进一步改进和完善工作还没有进行,在此只是提出一种思路和把实验结果简单地做个分享。

方法介绍:

整体思路:图片打标签 => 视频打标签

也就是说,对视频提取帧,得到视频中的图片;然后对图片进行打标签;最后将视频中帧图片的标签进行整合,得到视频标签。

1、从图片描述说起:

图片描述典型框架:利用deep convolutional neural network来encode 输入图像,然后利用Long Short Term Memory(LSTM) RNN decoder来生成输出文本描述。

640?wx_fmt=jpeg

2、在打标签任务中,我们把标签或类别组合,构造成“描述”:

一级类别+二级类别+标签(重复的词语进行去重)

3、利用预训练和强化学习,对训练样本图片和标签构造模型映射。

640?wx_fmt=jpeg

《Self-critical Sequence Training for Image Captioning》

网络模型有三种:fc model;topdown model;att2in model;模型细节见论文。

一般地,给定输入图像和输出文本target,,模型训练的过程为最小化cross entropy loss(maximum-likelihood training objective):

640?wx_fmt=png

利用self-critical policy gradient training algorithm:

640?wx_fmt=png

其中,是reward funtion

640?wx_fmt=png

通过根据每一个decoding time step的概率分布进行采样获得,是baseline output,通过最大化每一个decoding time step的概率分布输出获得,也就是a greedy search。论文里提到,利用CIDEr metric作为reward function,效果最好。

4、根据视频帧图片的标签,对视频打标签。具体有两种思路:

记录视频提取的所有帧图片中每一个出现的标签,以及标签出现的次数(有多少帧图片

被打上了这个标签)。按照出现次数排序。

1.将帧图片的最多前n个标签,输出为视频标签。

2.将帧图片中,出现次数大于阈值c的标签,,输出为视频标签。

数据示例:

640?wx_fmt=png

其中1class表示一级类别,2class表示二级类别。

实验结果示例:

截取一些实验结果展示如下,其中output指模型输出的结果,reference指人工标定的参考结果。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

总的来说,游戏类视频的数据量最大,效果较好;但具体不同英雄的视频数据如果不平衡,也会影响算法结果。其他类型视频数据不算太稀疏的效果也不错,长尾视频的效果不行。

总结:

数据预处理、模型结构、损失函数、优化方法等各方面,都还有很多值得根据视频打标签应用的实际情况进行调整的地方。后续再不断优化。方法和实验都还粗糙,希望大家多批评指导。



http://chatgpt.dhexx.cn/article/QKmE1JMu.shtml

相关文章

labelImg打标签教程

前言: 打标签的精度,会直接影响目标检测算法最终的识别准确率 安装: labelImg是图片标注软件,用于数据集的制作、标注等等。 在cmd中依次运行以下命令: pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install pyqt5-t…

Docker篇之镜像打标签tag

日常线上活动中,当我们对系统进行开发时,做容器化管理,因为每一个版本不同,可能随着业务量的产生,需求的迭代更新,不同版本所需要的环境不同。 因此,为了满足这样的问题,我们通常做的…

K8S给节点打标签和打污点

打标签 kubectl label node node名 key=value kubectl label node node1 env-role=prod查看标签 kubectl get nodes --show-labels打污点 kubectl taint node node名 key=value:污点三个可选值 NoSchedule : 一定不被调度 PreferNoSchedule : 尽量不被调度 NoExecute : 不…

机器学习 数据预处理之数据打标签

工作内容: 1.读取pdf文档内容 2.分页显示 3.每个数据后设置下拉框供手动打标签 4.数据录入txt文档 代码: import math import os import tkinter as tk from tkinter import * import tkinter.ttk as ttk from tkinter.messagebox import * import …

Excel中批量生成标签,批量打印标签。按指定模板批量打印标签

1.问题概述 工作中经常需要将产品明细表转换成标签,贴在送货单上,或者将学生成绩转换成标签打印出来发送给学生。 例如在下图中有若干产品的送货信息,要求按图2的模板批量打印。 图1 送货信息 图2 标签模板 要实现此类需求&…

SVN打标签方法及在此过程中的问题处理

所谓的“打标签”,我个人的理解是:项目取得了阶段性成果,需要保存在标签(tags文件夹)中,以备不时之需。我采用的打标签的方法是: 1、在SVN客户端打标签。前提是本地项目与SVN Server上的项目无…

图片打标签labelimg

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Windows安装二、使用步骤1.在cmd命令行中创建一个新的环境2.对图片打标签3.保存打标签的图片4.如何打开已经安装的labelimg 总结 前言 对图片打标签是数据…

使用Labelimg打标签

1.下载Labelimg (1)打开cmd命令行 用Windowr打开命令行,输入cmd命令。 (2)输入命令 pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple -i的后半部分是清华镜像源地址。 (3&#xff…

使用BarTender连接Excel打印标签

一、准备Excel内容 比如我这里设计的是产品信息表内容如下: 二、设计标签样式 详细的设计标签样式操作请参考:获取BarTender10.1和新建一个BarTender模板 三、连接Excel数据库 3.1、选中任意需要填充数据的组件,打开属性面板 3.2、选择属性面板中数据源下的组件名称,点…

使用labelme打标签,详细教程

做图像语义分割,打标签时需要用到labelme这个工具,我总结了它的详细使用教程。 目录 一、安装labelme工具二、文件位置关系三、labelme工具四、labelme工具的快捷键五、代码(将标签文件转为统一固定格式)六、总结 一、安装labelm…

深度学习中常见的打标签工具和数据集资源

深度学习中常见的打标签工具和数据集资源 一、打标签工具1. labelimg/labelme1.1 搭建图片标注环境(win10)(1) 安装anaconda3(2) 在anaconda环境python3下搭建labelImg环境 1.2 打标签1.2 搭建图片标注环境(ubuntu18.04)1.3 快捷键 一、打标签工具 1. l…

自训练数据集打标签注意事项及使用工具推荐

盘点自训练数据集如何打标签! 一、打标签规则 二、推荐工具 使用心得 前言 分享我在训练自己的数据集前期所碰到的一些问题,希望大家能及时避雷! 一、打标签规则 由于我使用YOLOv5模型,查询官方建议以及网上各路大神总结的经…

深度学习中常见的打标签工具和数据集集合

集大家之所长汇集于此,希望对有需要的你能有所帮助。 一、打标签工具 (1)labelimg/labelme 这两款工具简便易行,前者主要用于对目标进行大致的标定,用于常见的框选标定,后者主要用于较为细致的轮廓标定&…

C 语言开发环境

一.环境介绍 1.Mac 平台直接下载苹果商店Xcode,该集成开发工具使用的是clang 开源编译器 2.Windows 可以使用Code Blocks,当初笔者上学时使用的还是非常老旧的VC6.0,尤其是对于变量的定义是非常痛苦的一件事。code blocks 是一个集成开发环境,在安装过…

C语言开发环境,请查收

C语言开发环境的选择, 貌似是告诉我们,工欲善其事,必先利其器。 01、Visual Studio Visual Studio(简称 VS),它是 Windows 下的标准 IDE,VS系列为IDE(集成开发环境)&am…

vs配置C语言环境

vs配置C语言环境 仅仅粗略地记录我在配置过程中踩的坑 首先我是参考这篇博文配置的!VSCode配置C语言环境(完整版)VSCode配置C语言环境(完整版) 但是按照这个配置完毕后,按F5运行时,生成的echo …

Linux下C语言开发环境的搭建

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/liubing8609/article/details/82695528 GCC编译器简明教程(Linux下C语言开发环境的搭…

1-C语言开发环境的搭建

C语言开发环境的搭建 如果您想要进行C语言的开发学习,首要的是先在你的电脑上搭建一个C语言的开发环境。C语言的开发环境主要包括两个部分: 文本编辑器C编译器 文本编辑器 文本编辑器我们有很多选择,最常见的有Windows Notepad&#xff0…

C语言常用开发环境IDE

C语言常用开发环境IDE WindowsMACLinux跨平台Visual Studio CodeCodeBlocksQt 在windows,Mac,Linux等平台分别展开,C语言常用的开发环境IDE,在Windows中有Visual Studio;在Mac中有xcode;在Linux上,有vi,vim等等&#x…

c语言程序运行环境

目录 程序运行环境 翻译环境和执行环境 从源代码到可执行程序的几个阶段 翻译环境的执行中的编译和链接 预编译 编译 汇编 链接 运行环境 程序运行环境 在学习c语言中我们是否有这样的困惑,我们平常写代码,但是我们一开始就会很好奇,…