深度学习之视频分类项目小记
写在前面,最近一阵在做视频分类相关的工作,趁有时间来记录一下。本文更注重项目实战与落地,而非重点探讨多模/视频模型结构的魔改
零、背景
- 目标:通过多模态内容理解技术,构建视频层级分类体系
- 原技术方案:
a. 分别用 inception-Resnetv2/bert/vggish处理视觉/文本/音频特征,再用 netvlad 处理时序特征,再用 AFM/self-attention融合各模态信息
b. 方案缺点很明显,1)模块太多,维护成本太高;2)各模块独立训练,用每个模块最优的模型组合起来未必效果最好,如何选择各合适的模块不好确定 - 新技术方案:
a. attenion 一把梭,各种模态的信息直接送入类 bert 去处理,利用对比学习模型 cn-clip 提升视觉与文本对齐能力,采用 mlm、itc 、itm、mmm等多种预训练任务增强模态间交互,结合 rdrop、fgm等训练算法提升泛化性能,使用知识蒸馏与难例挖掘等手段提升样本标出率,借助 class balance 与 label smoothing 改善类别不均衡问题
b. 新方案效果提升明显,模块也少,维护起来成本也低
c. 新方案为 2022 某视频分类比赛第 8 名
一、技术手段
1、模型方面
1)单流模型
-
结构:模型一
- 文本过embedding层,视频过zn_clip的vit,然后拼接起来送入bert,最后mean pooing后接分类层
-
优点:
- 架构简单、预训练好做,参数少
服务性能:a10卡,vit + bert 的 qps =9 左右
2)双流模型:
- 结构:
- 模型二:文本过bert,视频过clip,然后将视频向量和文本向量拼接起来,再过一个transformer,mean pooing后接分类层
- 模型三,文本过bert,视频过clip,得到视频向量和文本向量,然后做cross attention,即对于视频向量,用文本向量作为Q进行注意力加权,而对于文本向量,用视频向量作为Q进行注意力加权,最后mean pooing后接分类层
- 优点:
- 相当于一种后融合,先让每个模态单独学更好的特征,再去做融合,效果理论上也会更好
3)训练 tricks
-
训练手段
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
-
loss 改进
- 类别不均衡问题:label smoothing 和 class balanced loss 融合,acc 71.750% -> 71.879%
- 层级分类问题:细粒度分类+粗粒度分类、细粒度分类映射、hmc los
4)预训练
- mlm、mfm、itm、itc、mmm、mma
2、数据方面
1)数据准备
- 类别关系映射 + 大量人标注,累计积累了 103 w 数据
- 基于初版模型,根据top1&top2 的预测分数,捞取边界数据,提升标出率
2)数据清洗
- N 折交叉验证
- 训练早停,筛选 diff 数据
3)伪数据构造
- 知识蒸馏
- 标注数据上,使用更多帧、更大模型(clip-large)、不同模型架构,训练n 个模型
- 使用 i 得到的 n 个模型ensemble 为无标注数据打伪标签
- 在 ii 的伪标签数据上做预训练,预训练任务及伪标签分类,预训练时随机使用10/30帧的视频,以缓解预训练和微调过程不一致
- 重复 ii、iii,用最后得到的模型做微调初始化
- 在有标注数据上进行微调
- 基于检索的伪标签
- 标注数据上,训练 DML 模型并提取特征
- 无标记数据检索有标记数据,对 top10 样本进行类别投票,生成伪标签
3、后处理方面
- 不同类别给予不同的缩放系数,大类为 1,效率大于 1,使用粒子群优化算法pso搜一个也行
- 模型能力总归是有限的,根据业务需要,结合人审,制定合适的送审策略也是重要的
4、外部信号
1)结合先验特征,比如作者主垂类信息、作者兴趣点、作者认证信息、同作者发布内容等
2)结合后验信号,视频评论,点赞、完播率等
相关文章:

深度学习之视频分类项目小记
写在前面,最近一阵在做视频分类相关的工作,趁有时间来记录一下。本文更注重项目实战与落地,而非重点探讨多模/视频模型结构的魔改 零、背景 目标:通过多模态内容理解技术,构建视频层级分类体系原技术方案:…...

pandas(四十三)Pandas实现复杂Excel的转置合并
一、Pandas实现复杂Excel的转置合并 读取并筛选第一张表 df1 pd.read_excel("第一个表.xlsx") df1# 删除无用列 df1 df1[[股票代码, 高数, 实际2]].copy() df1df1.dtypes股票代码 int64 高数 float64 实际2 int64 dtype: object读取并处理第二张表…...

42、springboot 的 路径匹配 和 内容协商
springboot 的 路径匹配 和 内容协商 对于路径匹配,自己的总结就是: 以前路径匹配时默认不检查后缀,http://localhost:8080/aaa.json 可以直接访问到 RequstMapping(“/aaa”) 的方法。现在不行了。现在会检查后缀了。 内容协商的理解总结&…...

一文讲解Linux内核内存管理架构
内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高的要求。本文从内存管理硬件架构、地址…...
教你如何使用API接口获取数据
随着互联网技术的发展和应用的普及,越来越多的系统和应用提供API接口供其他系统和应用进行数据交互。通过API接口,我们可以获取到各种各样的数据,例如天气预报、股票行情、新闻摘要等等。本文将介绍如何使用API接口获取数据,并附有…...

集美大学计算机改考408!福建省全面改考,仅剩一个自命题院校
9月5日,集美大学发布通知,0835软件工程、0854电子信息2024考试科目发生变更!由822数据结构调整为408计算机学科专业基础 https://zsb.jmu.edu.cn/info/1532/4701.htm 直接由一门改为考四门,难度升级不小。 目前福建省内计算机考…...

Hololens2部署很慢可能是unity工程选择不对
这样就很快,几分钟就完成了。(虽然又遇到新问题了) 第一次使用时如下,直接运行了一个多小时还没有完...
群论学习记录
群论学习记录 1. 2023.09.07 1. 2023.09.07 群论 (Group Theory) 终极速成 / 物理系零基础火箭级 notes https://zhuanlan.zhihu.com/p/378039151 https://zhuanlan.zhihu.com/p/164653537 群的定义重排定理子群陪集定理:由重排定理可推出1.4-(2&#x…...

Fiddler安装与使用教程(2) —— 软测大玩家
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…...

ChatGPT集锦
目录 1. 一条指令让ChatGPT变的更强大2. 对ChatGPT提问时,常见的10种错误描述3. Custom instructions如何设置1. 一条指令让ChatGPT变的更强大 在使用GPT的过程中,如何让AI更清晰地了解你的需求很重要?今天分享一个指令,可以让GPT成为你的好同事,与你一起分析和解决问题,…...

CRM系统中的工作流管理及其重要性
工作流是CRM系统中较为常见的功能,它可以有效减少重复工作、提高销售效率。如果您想深入了解,本文就来详细说说,CRM工作流是什么?工作流的作用? 什么是CRM工作流? CRM工作流是指在CRM系统中,根…...

Go framework-go-zero
一、Go Go天然适配云原生,而云原生时代已经到来,各个应用组件基础设施等都应该积极的去拥抱云原生。 不要让框架束缚开发。 1、go-zero介绍 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,…...

【Python】【Fintech】用Python和蒙特卡洛法预测投资组合未来收益
【背景】 想利用蒙特卡洛方法和yahoo,stooq等财经网站上的数据快速预测特定portfolio的收益。 【分析】 整个程序的功能包括 读取json中的portfolio组合创建蒙特卡洛模拟预测收益的算法创建从财经网站获得特定投资组合数据,并根据2的算法获得该Index或Portfolio收益预测结…...

网络层重点协议-IP协议(结构分析)
IP协议数据报格式 一.4位版本号 用来表示IP协议的版本,现有的IP协议只有两个版本IPv4和IPv6 二.4位首部长度 IP协议数据报报头的长度 三.8位服务类型 3位优先权字段(已经弃用),4位TOS字段,和1位保留 字段(必…...

windows使用vim编辑文本powershell
windows使用vim编辑文本 1、安装 chocolatey 包 以管理员身份打开 PowerShell 进行安装 Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString(https://chocolatey.org/install.ps1))2、管理员身份打开 PowerShell 并使…...

学单片机有前途吗?
学单片机有前途吗? 个人认为学习任何一门技术都比不学的强,针对学单片机有前途吗?那么比较对象当然就是在整个IT行业做对比。因此我们可以从职业前景、钱景、这几方面综合考量。 学单片机有前途吗?我觉得重要的一点就是是否适合职业生涯发展,总说程序…...

【计算机网络】 子网划分
文章目录 IP地址分类子网掩码网关广播地址非默认子网掩码子网划分常见问题 IP地址分类 学会十进制和二进制的相互转换可以很快速的有规律的记住 子网掩码 又叫网络掩码,地址掩码,子网络遮罩,就是说把子网络遮起来,不让外界窥探到…...
vscode ros配置
【ROS】VSCODE ROS 配置方法(保姆级教程,总结了多篇)_ros vscode_晴明大大的博客-CSDN博客...

【权限提升-Windows提权】-UAC提权之MSF模块和UACME项目-DLL劫持-不带引号服务路径-不安全的服务权限
权限提升基础信息 1、具体有哪些权限需要我们了解掌握的? 后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等 2、以上常见权限获取方法简要归类说明? 后台权限:SQL注入,数…...

【C++】—— 特殊类设计
目录 序言 (一)设计一个不能被拷贝的类 (二)设计一个只能在堆上创建对象的类 (三)设计一个只能在栈上创建对象的类 (四)设计一个不能被继承的类 总结 序言 特殊类设计是指在面…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...

鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...

C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...