论文阅读 - TransNet and TransNet V2
文章目录
- 1 概述
- 2 模型结构简述
- 2.1 TransNet
- 2.2 TransNet V2
- 3 数据集的构建
- 4 模型效果
- 5 参考文献
1 概述
有些时候,一段视频是由多段短视频拼接而成的。拼接可以是直接拼接(硬拼接,见图2),也可以是由一个转场过渡拼接(软拼接,见图2)。我们希望拿到其中的每个小片段作为素材,这个时候就要做视频切割了。这样的视频切割有的做法的目标是找拼接的边界,故称之为shot boundary detection,也有做法的目标是找每个小片段,也称之为scene detection。
图1 硬拼接视频
图2 软拼接视频
基于传统方法去做,就是找相邻帧之间的差异,然后设定一个阈值去判断,pyscenedetect这个库就是做这个事的。这个库可以把大部分的硬拼接切割的比较好,但是存在两个问题:
- 对于高速运动的物体,且视频帧率不高时,相邻帧之间的差异就会很大,这就会被误判为是一个硬拼接
- 对于软拼接,效果是单纯的不好,特别是那些比较长的转场。
于是深度学习就出场了。TransNet以及TransNet V2都是为了解决以上这两个问题而出现的,后者是前者的升级版。
2 模型结构简述
2.1 TransNet
TransNet的结构由下图所示,其官方实现可见这里,其结构可见图3。这个模型的结构非常简单,输入为长度为NNN的序列帧,且被resize为48×2748 \times 2748×27,序列帧会经过4个Dilated 3D CNN,这四个Dilated 3D CNN的dilation rates在时间维度上是不同的。作者说这么做是因为相对于标准的3D CNN,要看到同样的感受野,这样的做法会减少训练参数量。然后把这些特征concat起来,这整个block叫做一个DDCNN cell。如果再加上一个max pooling,那就是SDDCNN block,这样的cell和block会堆叠多次,可以很深。最后经过两层全连接和softmax,输出N×2N \times 2N×2的一个向量,表示输入的每帧是否是shot boundary。
图3 TranNet结构图
2.2 TransNet V2
TransNet V2是TransNet的升级版,其官方实现可见这里,其结构可见图4。它是在TransNet的基础上进行改进的,主要的改进点有如下几个:
- 加入了batch normalization和残差网络结构。
- 在训练时加入了噪声。
- 将3D的k×k×kconvolutionk \times k \times k \ convolutionk×k×k convolution分解为了2D的k×kconvolutionk \times k \ convolutionk×k convolution和一个kernel size为kkk的1D temporal convolution。这个做法可以强迫模型去分别学习图像特征和时间维度的特征。
- 把连续帧的RGB color histogram和卷积输出的特征相似性作为特征,也就是图4中的两个红色方框。
- 增加了一个head,用于预测整个transition的frames,这个多加的head仅用于训练,不用于预测,另一个head还是和TransNet中保持一致。也就是在遇到软拼接的时候,原始的head只预测中间那一帧为shot boundary,新增加的head会预测整个transition的所有帧为shot boundary。
图3 TranNet V2结构图
3 数据集的构建
模型的结构就算不去深究它也没关系,因为说到底就是拿3D CNN去train一发,结构上的改进带来的提升也没有特别大。数据是我比较关心的一块,一个好的数据集,往往比一个好的结构有更棒的提升作用。在这个shot boudary detection的任务当中,有一个非常令人兴奋的事情就是,它的数据集几乎是零成本的。
我们只需要找到一大堆短视频,时长可以不要太长也不要太短,然后我们随意去硬拼接或者软拼接这些视频就有了我们的数据集。因为拼接是我们自己做的,因此shot boundary在哪里我们也是比谁都清楚的。唯一需要成本的就是测试集。为了检验数据的真实效果,测试集还是需要人工去标注一批的。
这里要注意的就是,我们使用的短视频需要是没有转场的镜头在里面的,不然就有脏数据了。
另一个值得一提的是,粗剪的时候,设计师希望把一些虚帧也给剪掉,这也有办法,我们把这些虚帧也作为转场标进去就可以了。不过这个可能得要人工去标注了。能不能合成,还真没调研过,能合成自然是最好的。
4 模型效果
最终的结果就是对每一帧打一个分,可见下图4。预测transition第一帧的head的概率值是图中的绿色柱子,预测整个transition的是图中的蓝色柱子。可以看一下软拼接部分这两者概率的不同。可以根据实际场景去使用,但基本还是只用绿色柱子。
图4 结果可视化图
数据集的构成是对模型的效果有一定影响的,在TransNet V2中,作者测试了人工标注的数据集和合成的数据集用于训练对模型最终效果的影响。real是人工标注的,cuts是合成的硬拼接,dissolves是合成的软拼接。从在三个数据集下测试的效果可以看出人工标注的训练集,并没有带来太多的提升,反而还是用合成的数据集更好。结果如下表1所示,其中的指标为f1-score。
表1 不同训练集的效果比较
不同模型的效果如下表2所示,其中的指标为f1-score。可见TransNet V2相对而言更好。
表2 不同训练集的效果比较
5 参考文献
[1] TransNet: A deep network for fast detection of common shot transitions
[2] TransNet V2: An e!ective deep network architecture for fast shot transition detection
[3] pyscenedetect
论文阅读 - TransNet and TransNet V2相关推荐
- 【论文阅读】目标检测中的分类回归特征解耦
论文来源:知网 以下仅仅是学习过程中的部分笔记,用作自己复习. 摘要 ..... 目标检测不仅需要判别图像中存在的目标的类别,还需要回归目标在图像中的位置. 特征耦合具体表现:分类和回归部分的网络共享 ...
- starGAN v2 论文阅读
StarGAN v2 文章目录 StarGAN v2 摘要 一.介绍 二.StarGANv2 1.网络结构 2.loss设置 三.实验结果展示 四.总结 Reference 摘要 优秀的图像-图像转换 ...
- SimCLR v2 论文阅读
SimCLR v2 论文阅读 Big Self-Supervised Models are Strong Semi-Supervised Learners 前言:这篇文章通过把NLP领域上的 大规模数 ...
- Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读
Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...
- 论文阅读——《Online Photometric Calibration of Auto Exposure Video for Realtime Visual Odometry and SLAM》
论文阅读--<Online Photometric Calibration of Auto Exposure Video for Realtime Visual Odometry and SLA ...
- 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势
2020年的今天,我们的专业是deep learning,但是我们要keep learning,每天早上一睁眼,arxiv每天更新上百篇的论文,著名微博博主@爱可可-爱生活保持也在推送最新的deep ...
- Quasi-globally Optimal and Near/True Real-time Vanishing Point Estimation in Manhattan World 论文阅读学习
论文阅读整理笔记 Quasi-globally Optimal and Near/True Real-time Vanishing Point Estimation in Manhattan Worl ...
- Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读
Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读 摘要 介绍 相关工作 方法 Dynamic Head 扩展到现存的检 ...
- 论文阅读笔记:《EIGENGAME: PCA AS A NASH EQUILIBRIUM》(特征博弈:主成分分析就是纳什均衡)
论文阅读笔记:<EIGENGAME: PCA AS A NASH EQUILIBRIUM>(特征博弈:主成分分析就是纳什均衡) 声明 摘要 1 简介 2 PCA as an Eigen-G ...
最新文章
- 面试题:mysql 一棵 B+ 树能存多少条数据?
- 探究oracle clob字段是怎样存储的
- PostgreSQL和Excel的数据合并
- Oracle的启动机制
- ALV中动态内表+行转化为列
- 图论--二分图最大匹配(匈牙利算法)--模板
- 薄如冈本,37°恒温发热超薄保暖内衣,既要风度也要温度
- plc控制可调节阀流程图_PLC控制的水箱液位控制系统毕业论文
- python---django中url路由分发
- maven 依赖版本管理— dependencyManagement
- 一起学爬虫——如何爬取通过ajax加载数据的网站
- kalman filter using python
- Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行——怎么将Unix/Mac系统下的文件转换到Windows系统下
- SpringCloud-Config通过Java访问URL对敏感词加密解密
- 一个C#控制台小游戏(源码解析)
- Linux C 基于epoll的多人聊天室
- 高效液相计算机审计追踪确认方案,药企GMP认证标准——审计追踪色谱工作站解决方案...
- 货币战争悲壮的英雄:帕潘德里欧
- php自动生成phpunit,PHP单元测试框架PHPUnit的使用
- 静坐常思己过,闲谈莫论人非。
热门文章
- android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网
- Flask 离线脚本
- git 远程仓库管理 分支创建、管理、查看、切换
- JSON(JavaScript Object Notation) 格式
- 互联网金融行业申请评分卡(A卡)简介
- Linux执行定时任务(crontab)遇到的坑
- appsettings 连接oracle数据库,ABP .net core集成访问Oracle数据库
- 在python中模块可以封装_python 制作python包,封装成可用模块教程
- Mysql索引类型分析
- uva 133解题报告