深度学习之视频分类项目小记

news2025/1/19 17:12:47

写在前面,最近一阵在做视频分类相关的工作,趁有时间来记录一下。本文更注重项目实战与落地,而非重点探讨多模/视频模型结构的魔改

零、背景

  1. 目标:通过多模态内容理解技术,构建视频层级分类体系
  2. 原技术方案:
    a. 分别用 inception-Resnetv2/bert/vggish处理视觉/文本/音频特征,再用 netvlad 处理时序特征,再用 AFM/self-attention融合各模态信息
    b. 方案缺点很明显,1)模块太多,维护成本太高;2)各模块独立训练,用每个模块最优的模型组合起来未必效果最好,如何选择各合适的模块不好确定
  3. 新技术方案:
    a. attenion 一把梭,各种模态的信息直接送入类 bert 去处理,利用对比学习模型 cn-clip 提升视觉与文本对齐能力,采用 mlm、itc 、itm、mmm等多种预训练任务增强模态间交互,结合 rdrop、fgm等训练算法提升泛化性能,使用知识蒸馏与难例挖掘等手段提升样本标出率,借助 class balance 与 label smoothing 改善类别不均衡问题
    b. 新方案效果提升明显,模块也少,维护起来成本也低
    c. 新方案为 2022 某视频分类比赛第 8 名

一、技术手段

1、模型方面

在这里插入图片描述

1)单流模型

  1. 结构:模型一

    1. 文本过embedding层,视频过zn_clip的vit,然后拼接起来送入bert,最后mean pooing后接分类层
  2. 优点:

    1. 架构简单、预训练好做,参数少

    服务性能:a10卡,vit + bert 的 qps =9 左右

2)双流模型:

  1. 结构:
    1. 模型二:文本过bert,视频过clip,然后将视频向量和文本向量拼接起来,再过一个transformer,mean pooing后接分类层
    2. 模型三,文本过bert,视频过clip,得到视频向量和文本向量,然后做cross attention,即对于视频向量,用文本向量作为Q进行注意力加权,而对于文本向量,用视频向量作为Q进行注意力加权,最后mean pooing后接分类层
  2. 优点:
    1. 相当于一种后融合,先让每个模态单独学更好的特征,再去做融合,效果理论上也会更好

3)训练 tricks

  1. 训练手段

    1)r-drop: acc 上升 71%—>71.7%

    2)swa:平均最高 3 个 checkpoints权重,模型准确率略有提升(71.7%->71.8%)

    4)ema:acc 71.879% -> 71.975%

    5)fgm对抗训练,acc 71.975% -> 72.206%

    6)word-base:acc 72.206% -> 72.4%

    7)ensemble:model1(72.638%) + model2(72.785%)—> acc 73.601%

    8)训练帧数增加:帧数从 10—>30,acc 67.308 -> 67.782

    9)图片尺寸:resize224x224 —> centercrop,acc 72.4—>73

  2. loss 改进

    1. 类别不均衡问题:label smoothing 和 class balanced loss 融合,acc 71.750% -> 71.879%
    2. 层级分类问题:细粒度分类+粗粒度分类、细粒度分类映射、hmc los

4)预训练

  1. mlm、mfm、itm、itc、mmm、mma
    在这里插入图片描述

2、数据方面

1)数据准备

  1. 类别关系映射 + 大量人标注,累计积累了 103 w 数据
  2. 基于初版模型,根据top1&top2 的预测分数,捞取边界数据,提升标出率

2)数据清洗

  1. N 折交叉验证
  2. 训练早停,筛选 diff 数据

3)伪数据构造

  1. 知识蒸馏
    1. 标注数据上,使用更多帧、更大模型(clip-large)、不同模型架构,训练n 个模型
    2. 使用 i 得到的 n 个模型ensemble 为无标注数据打伪标签
    3. 在 ii 的伪标签数据上做预训练,预训练任务及伪标签分类,预训练时随机使用10/30帧的视频,以缓解预训练和微调过程不一致
    4. 重复 ii、iii,用最后得到的模型做微调初始化
    5. 在有标注数据上进行微调
  2. 基于检索的伪标签
    1. 标注数据上,训练 DML 模型并提取特征
    2. 无标记数据检索有标记数据,对 top10 样本进行类别投票,生成伪标签

3、后处理方面

  1. 不同类别给予不同的缩放系数,大类为 1,效率大于 1,使用粒子群优化算法pso搜一个也行
  2. 模型能力总归是有限的,根据业务需要,结合人审,制定合适的送审策略也是重要的

4、外部信号

1)结合先验特征,比如作者主垂类信息、作者兴趣点、作者认证信息、同作者发布内容等

2)结合后验信号,视频评论,点赞、完播率等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/967081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pyecharts数据可视化(二)

目录 1.绘制散点图 2.绘制饼图 2.1绘制实心饼图 2.2 绘制圆形饼图 2.3 绘制玫瑰图 3.绘制漏斗图 4.绘制仪表盘 5.绘制组合图表 本文主要介绍如何利用Pyecharts来绘制一些常用的可视化图形,比如散点图、饼图、漏斗图等等,具体的绘制方法请见下文。 …

通讯软件014——分分钟学会Matrikon HDA Explorer

本文介绍如何使用Matrikon HDA Explorer工具软件进行OPC HDA通讯调试。相关软件可登录网信智汇(wangxinzhihui.com)下载。 1、连接OPC HDA Server数据源“Kepware.KEPServerEX HAD.V6”。 2、添加标签:右键点击“Kepware.KEPServerEX HAD.V6”…

[管理与领导-66]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 乌卡时代(VUCA )的团队管理思维方式的转变

目录 一、乌卡时代人与公司的关系的转变 二、乌卡时代管理方式的转变 三、乌卡时代的管理与传统时代的管理比较 四、乌卡时代管理者的挑战 五、乌卡时代如何做好管理 六、个人能力要求 一、乌卡时代人与公司的关系的转变 在乌卡时代(指虚拟办公、远程工作等数…

3分钟:腾讯云免费SSL证书申请教程_免费HTTPS证书50张

2023腾讯云免费SSL证书申请流程,一个腾讯云账号可以申请50张免费SSL证书,免费SSL证书为DV证书,仅支持单一域名,申请腾讯云免费SSL证书3分钟即可申请成功,免费SSL证书品牌为TrustAsia亚洲诚信,腾讯云百科分享…

一些测试知识

博客主页: https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482 图片网上找的,文章看书或者是平常逛博客看到的,如有侵…

本地部署 Llama2-Code-Interpreter

本地部署 Llama2-Code-Interpreter 1. Llama2-Code-Interpreter 是什么2. Llama2-Code-Interpreter 主要特点3. 部署 Llama2-Code-Interpreter4. 运行 Llama2-Code-Interpreter5. 访问 Llama2-Code-Interpreter 1. Llama2-Code-Interpreter 是什么 该项目允许 LLM 根据整个流程…

设计模式系列-原型模式

一、上篇回顾 上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每 个组成部分的详细创建步骤可以是动态的变化的,但是每个对象的组…

C语言入门 Day_12 一维数组

目录 前言 1.创建一维数组 2.使用一维数组 3.易错点 4.思维导图 前言 存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量chinese_score,并给它赋值一个浮点数(float)。 float chinese_scoe…

服务器挂机赚钱之Traffmonetizer教程挂机,利用闲置的Vps赚钱

互联网VPS赚钱的项目traffmonetizer挂机,原理就是traffmonetizer通过共享闲置的带宽售卖给平台,然后平台将产生的收益就归你。如果你有闲置的vps服务器都可以通过traffmonetizer挂机赚钱。 VPS赚钱开始注册 实话实说吧,这个就是来拉人头的&…

使用 Python 和 dash 创建仪表板

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 介绍 在数据科学和分析领域,数据的力量不仅通过提取见解来释放,而且还通过有效地传达这些见解来释放;这就是数据可视化发挥作用的地方。 数据可视化是信息和数据的图形表示。它使用图表、图形和…

CC1310开发工具下载及环境搭建

目录 CC1310开发工具集 CC1310SDK下载安装注意事项 CCS下载安装注意事项 导入示例代码 CCS常用设置 CC1310是TI的一款sub1G射频模块,具体参数见数据手册吧(CC1310数据手册、用户手册下载:https://dev.ti.com/tirex/explore/node?nodeA_…

2024年java面试--多线程(2)

系列文章目录 2024年java面试(一)–spring篇2024年java面试(二)–spring篇2024年java面试(三)–spring篇2024年java面试(四)–spring篇2024年java面试–集合篇2024年java面试–redi…

leetcode 189. 轮转数组

2023.9.3 k的取值范围为0~100000,此时需要考虑到两种情况,当k为0时,此时数组不需要轮转,因此直接return返回;当k大于等于数组nums的大小时,数组将会转为原来的数组,然后再接着轮转,此…

Linux系统下的zabbix监控平台(单机安装服务)

目录 一、zabbix的基本概述 二、zabbix构成 1.server 2.web页面 3.数据库 4.proxy 5.Agent 三、监控对象 四、zabbix的日常术语 1.主机(host) 2.主机组(host group) 3.监控项(item) 4.触发器(trigger) 5.事件(event) 6.动作(a…

docker笔记4:高级复杂安装-mysql主从复制

1.主从搭建步骤 1.1新建主服务器容器实例3307 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORDroot \ -d…

java八股文面试[多线程]——虚假唤醒

阻塞队列中,如果需要线程挂起操作,判断有无数据的位置采用的是while循环 ,为什么不能换成if 肯定是不能换成if逻辑判断 线程A,线程B,线程E,线程C。 其中ABE生产者,C属于消费者 put阻塞代码&a…

UDP聊天室

1.头文件 /* * 文件名称&#xff1a;UDP.h * 创 建 者&#xff1a;crx * 创建日期&#xff1a;2023年09月3日 * 描 述&#xff1a; */ #ifndef _UDP_H #define _UDP_H#include <stdio.h> #include <sys/types.h> /* See NOTES */ #includ…

Day53|leetcode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

leetcode 1143.最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 视频链接&#xff1a;动态规划子序列问题经典题目 | LeetCode&#xff1a;1143.最长公共子序列_哔哩哔哩_bilibili 题目概述 给定两个字符串 text1 和 text2&…

【Flutter】Flutter 使用 percent_indicator 实现基于百分比显示进度

【Flutter】Flutter 使用 percent_indicator 实现基于百分比显示进度 文章目录 一、前言二、安装和基本使用三、圆形百分比指示器四、线性百分比指示器五、完整示例六、总结 一、前言 今天我要为你介绍一个非常实用的Flutter包——percent_indicator。这个包允许我们基于百分比…

STM32f103入门(9)编码器接口测速

TIM3 PA6 PA7 上拉输入 原理上也是PWM捕获输入 捕获两个输入 我们用中断处理读取CNT的值 读取完将CNT置0 这样我们就得到了旋转编码器的速度/s 中断配置代码 #include "stm32f10x.h" // Device headervoid Timer_Init(void) {RCC_APB1PeriphClockC…