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

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

零、背景

  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.rhkb.cn/news/123934.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09-JVM垃圾收集底层算法实现

上一篇:08-JVM垃圾收集器详解 1.三色标记 在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。 这里我们引入“三色标记”来给大家解释下,把Gcroots可达性…

golang 通用的 grpc http 基础开发框架

go-moda golang 通用的 grpc http 基础开发框架仓库地址: https://github.com/webws/go-moda仓库一直在更新,欢迎大家吐槽和指点 特性 transport: 集成 http(echo、gin)和 grpc。tracing: openTelemetry 实现微务链路追踪pprof: 分析性能config: 通用…

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击?三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类?5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …

IDEA集成Apipost Helper实现一键部署接口(避免参数注释)

先说好处: 1.一次性导入所有接口,不要一个一个扒。 2.对于字段的注释不要一个一个的去手写,映射实体类,自己上传(最重要)。 3.目录自动归类划分,避免接口混乱。 安装插件 首先,我们打…

Apache nginx解析漏洞复现

文章目录 空字节漏洞安装环境漏洞复现 背锅解析漏洞安装环境漏洞复现 空字节漏洞 安装环境 将nginx解压后放到c盘根目录下: 运行startup.bat启动环境: 在HTML文件夹下有它的主页文件: 漏洞复现 nginx在遇到后缀名有php的文件时,…

基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能

概述 本例子基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能。 详细 一、准备工作 1、首先注册两个邮箱,一个发送邮箱,一个接收邮箱。 2、发送邮箱开启IMAP/SMTP/POP3服务&#xff0c…

【嵌入式开发 Linux 常用命令系列 7.1 -- awk 过滤列中含有特定字符的行】

文章目录 awk 过滤列中字符串 上篇文章:嵌入式开发 Linux 常用命令系列 7 – awk 常用方法详细介绍 awk 过滤列中字符串 cat test.log | awk -F $31 {print $0}说明: -F 以什么分隔列,这里是以空格为分隔符;$3代表第3列;$3…

2023 年全国大学生数学建模B题目-多波束测线问题

B题目感觉属于平面几何和立体几何的问题,本质上需要推导几何变换情况,B题目属于有标准答案型,没太大的把握不建议选择,可发挥型不大。 第一问 比较简单,就一个2维平面的问题,但有点没理解,这个…

学习笔记——Java入门第二季

1.1 介绍类与对象 类和对象的关系: 时间万物皆对象。对象是具体的事物,是类的具体事例 类是抽象的概念,是对象的模板。 new关键字是创建实例对象最重要的标志 Dog duoduonew Dog(); Dog luckynew Dog(); 这样就创建了两个对象并且在java内…

尚硅谷大数据项目《在线教育之离线数仓》笔记007

视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第12章 报表数据导出 P112 01、创建数据表 02、修改datax的jar包 03、ads_traffic_stats_by_source.json文件 P113 P114 P115 P116 P117 P118 P119 P120 P121 P122【122_在…

LeetCode每日一题:1123. 最深叶节点的最近公共祖先(2023.9.6 C++)

目录 1123. 最深叶节点的最近公共祖先 题目描述: 实现代码与解析: dfs 原理思路: 1123. 最深叶节点的最近公共祖先 题目描述: 给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先 。 回想一下&…

钉钉消息已读、未读咋实现的嘞?

前言 一款app,消息页面有:钱包通知、最近访客等各种通知类别,每个类别可能有新的通知消息,实现已读、未读功能,包括多少个未读,这个是怎么实现的呢?比如用户A访问了用户B的主页,难道…

文字转语音TTS bark SpeechT5 mms

bark GitHub - suno-ai/bark: 🔊 Text-Prompted Generative Audio Model microsoft SpeechT5 https://github.com/microsoft/SpeechT5 使用 SpeechT5 进行语音合成、识别和更多功能 - 掘金 Facebook mms https://github.com/facebookresearch/fairseq/tree/mai…

私有化部署即时通讯平台,完美替代飞书和钉钉的SaaS系统

在当今快速发展的数字化时代,企业对于安全、灵活、可定制的即时通讯平台需求不断增长。作为一家领先的品牌,WorkPlus专注于提供私有化部署的即时通讯平台,完美替代飞书和钉钉的SaaS系统。本文将重点介绍WorkPlus如何通过创新的解决方案&#…

【C刷题训练营】第三讲(c语言入门训练)

前言: 大家好,我决定日后逐渐更新c刷题训练营的内容,或许能帮到入门c语言的初学者,如果文章有错误,非常欢迎你的指正! 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈&…

CSAPP的Lab学习——Archlab(Architecture Lab)

文章目录 前言一、A部分sum .ys:迭代求和链表元素写一个Y86-64的程序和。rsum .递归求和链表元素copy.ys 复制将源块复制到目标块 二、B部分三、C部分实现iaddq指令 总结 前言 一个本硕双非的小菜鸡,备战24年秋招。刚刚看完CSAPP,真是一本神…

C++信息学奥赛1190:上台阶

#include <iostream> using namespace std;long long arr[80]; // 用于存储斐波那契数列的数组int main() {int n;arr[1]1; // 初始化斐波那契数列的前三个元素arr[2]2;arr[3]4;for(int i4;i<71;i) { // 计算斐波那契数列的第4到第71个元素arr[i]arr[i-1]arr[i-2]…

【Linux权限管理】文件:毁灭我与我无关

一.预备知识 1.LInux用户分类 一台Linux机器的用户分为两类&#xff1a; 超级用户和普通用户。 注意我这里说的用户的并不是一个固定的人&#xff0c;例如你本身就有root账号&#xff0c;但你也可以使用自己创建普通账号。当你使用root账号时&#xff0c;你就是一个超级用户…

二叉查找树(binary search tree)(难度7)

C数据结构与算法实现&#xff08;目录&#xff09; 答案在此&#xff1a;二叉查找树&#xff08;binary search tree&#xff09;&#xff08;答案&#xff09; 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节…

android framework之Applicataion启动流程分析(四)

本文主要学习并了解Application的Activity启动流程。 这边先分析一下Launcher是如何启动进程的Acitivity流程。从Launcher启动Acitivity的时候&#xff0c;它是把启动任务丢给instrumentation模块去协助完成&#xff0c;由它进一步调用AMS的startActivity()方法 去启动&#xf…