R-C3D 视频活动检测的经典算法
R-C3D 视频活动检测的经典算法
- 目录
- 论文信息
- 主要贡献
- 存在问题
- 基本思想
- 关键原理
- 实验结果
- Experimentson THUMOS'14
- Experimentson ActivityNet
- Experimentson Charades
- 结论
目录
论文信息
论文地址:
https://arxiv.org/pdf/1703.07814.pdf
代码:
http://ai.bu.edu/r-c3d/
主要贡献
- 论文提出了活动检测模型,即R-C3D,这是一种端到端活动检测模型,结合活动建议和分类阶段,可以检测任意长度的活动。
- 通过在建议生成(proposal generation)和网络分类部分之间共享全卷积的C3D特性,实现快速检测速度(比当前方法快5倍);
- 对三个不同的活动检测数据集进行了大量的评估,证实了该文提出的模型具有普遍适用性。
存在问题
连续视频中的活动检测是一个具有挑战性的问题,不仅需要识别,还需要及时准确地定位活动。当前存在的方法在处理连续视频流的活动检测时,存在以下问题:
- 这些现成的表示可能不适合在不同视频域中进行定位活动,从而导致性能的地下。
- 现有方法依赖外部建议或全面的滑动窗口,导致计算效率地下。
- 滑动窗口无法轻松的预测灵活的活动边界。
基本思想
受目标检测方法FasterR-CNN的启发,论文中提出了一种区域卷积3D网络(RegionConvolutional 3D Network,R-C3D)如上图,该方法先进行3D全卷积网络对视频帧进行编码处理,之后提取活动时序片段(actionproposal segments),最后在分类子网络(action classificationsubnet)并对结果进行分类和细化。
关键原理
该网络可以用于连续视频流中进行活动检测。其网络结构图如下,由3各部分组成,共享的3D ConvNet特征提取器,时间建议阶段(temporalproposal stage)以及活动分类和细化阶段。
为了实现高效的计算和端到端训练,建议和分类子网共享C3D特征映射。这里的一个关键创新是将Faster R-CNN中的2D RoI pooling扩展到3D RoI pooling,这样做的好处就是,该文的模型能够提取各种分辨率的可变长度建议框的特征。
论文中通过共同优化两个子网的分类和回归任务来训练网络,Softmax损失函数用于分类,平滑L1损失函数用于回归,所以本文的目标函数结合两部分损失函数为:
Loss=1Ncls∑iLcls(ai,ai∗)+λ1Nreg∑iai∗Lreg(ti,ti∗)Loss=\frac {1} {N_{cls}}\sum_{i} L_{cls}(a_i,a^*_i)+\lambda \frac{1} {N_{reg}}\sum_{i}a^*_{i}L_{reg}(t_i,t^*_i)Loss=Ncls1i∑Lcls(ai,ai∗)+λNreg1i∑ai∗Lreg(ti,ti∗)
上式中NclsN_{cls}Ncls和NregN_{reg}Nreg分别代表批量大小和anchor/proposal段的数量,λ\lambdaλ为损失权衡参数,设置为1,为预测概率,ti={δci^,δli^}t_i=\lbrace {\delta\hat{c_i},\delta\hat{l_i}} \rbraceti={δci^,δli^}表示anchor或proposals的ground truth的坐标变换。其变换如下:
{δci=(ci∗−ci)/liδli=log(li∗/li)\left \{ \begin{array}{c} \delta c_i=(c^*_i-c_i)/l_i \\ \delta l_i=log(l^*_i/l_i) \\ \end{array} \right. {δci=(ci∗−ci)/liδli=log(li∗/li)
实验结果
Experimentson THUMOS’14
Table1是在THUMOS’14上的活动检测结果。在表1中作者在IoU阈值0.1~0.5(表示为a)上对当前存在的方法和R-C3D进行活动检测性能的评估比较。在单向缓冲设置(one-way buffer)的R-C3D,其mAP@0.5为27.0%比当前最先进方法高3.7%。双向缓冲设置(two-waybuffer)的R-C3D的mAP在所有IoU阈值下都有了提高,其中mAP@0.5达到28.9%。
Table2展示了R-C3D与其他方法在数据集THUMOS’14上的每一类的AP(Average Precision)。表中可以看出R-C3D在大多数类别中的AP优于其他方法,在一些活动中甚至超过了20%,比如Basketball Dunk, Cliff Diving等。图(a)显示了在数据集THUMOS’14上的两个视频的定性结果。
Experimentson ActivityNet
表3是在数据集ActivityNet上的检测结果。表3.活动网上的检测结果,以mAP@0.5(百分比)表示。 从表中可以看出,R-C3D方法在验证集和测试集上分别优于UPC4.3%和4.5%(在mAP@0.5下)。当训练集和验证集都用来训练时,R-C3D方法的检测结果要比只用训练集训练时高1.6%。
图(b)展示了R-C3D在数据集ActivityNet中具有代表性的结果。
Experimentson Charades
表4是关于在数据集Charades上的活动检测结果。如表4所示,该文的模型优于文献[25]中提出的异步时域模型以及在该文章中报告的不同基准线。
按照标准做法,论文中按照mAP@0.5评估了模型,结果为9.3%,性能与在其他数据集中测试的性能结果不同。这个原因可能是数据集Charades固有的问题,比如室内场景光照强度低,或者数据的标签过多等。
图©展示了R-C3D在数据集Charades中具有代表性的结果。
结论
- 引入了R-C3D模型,用来活动检测的第一个端对端时间建议分类网络;
- 在3个大规模的数据集中对该文提出的方法进行了评估,结果展示该文的方法比当前基于3D卷积的模型更快且更准确;
- R-C3D还可以假如其他一些特性,以进一步提高活动检测结果。
更多技术干活请关注
R-C3D 视频活动检测的经典算法相关推荐
- R-C3D 视频活动检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文为52CV群友RoseVam投稿,介绍了视频活动检测经典模型 ...
- 《异常检测——从经典算法到深度学习》5 Opprentice——异常检测经典算法最终篇
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》20 HotSpot:多维特征 Additive KPI 的异常定位
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》9 异常检测资料汇总(持续更新抛砖引玉)
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》18 USAD:多元时间序列的无监督异常检测
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》7 基于条件VAE异常检测
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
- 《异常检测——从经典算法到深度学习》8 Donut: 基于 VAE 的 Web 应用周期性 KPI 无监督异常检测
<异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...
最新文章
- 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序
- Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...
- oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法
- 题解报告:hdu1219AC Me
- [转载]WPF – 使用触发器
- linux cp命令使用
- java basic类似的地方_java – Shiro使用HTTP Basic Auth或匿名访问相同的URI
- 了解java.nio.file.Path – 2
- mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
- Java关闭窗口和刷新
- 蓝电电池测试系统工步编辑软件,CT2001A
- H3C IRF2的三种配置情况「转载」
- word转PDF时,英文单词的字母间距问题
- c#实现Udp通信(四)--UPD大数据量接收(异步接收)
- python读取txt文件中的数字_python从txt文件读取数据
- qml 滚动控件Scroll ScrollBar ScrollIndicator ScrollView
- oppo系统android版本下载,oppo手机助手安卓版
- Linux常用命令——modprobe命令
- zip直链生成网站_调优-WEB资讯专栏-DMOZ中文网站分类目录
- 微信小程序 echarts.js过大 导至错误( Error: 代码包大小为 xxxxkb,上限为 2048 kb,请删除文件后重试)
热门文章
- HTML`CSS_网站页面不同浏览器兼容性问题解决
- 使用PHP搞定支付宝、微信扫码支付
- 我应该在CSS中使用px或rem值单位吗?
- 如何找到数字数组的总和
- 如何在保留订单的同时从列表中删除重复项?
- 针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案
- Android开发笔记——常见BUG类型之内存泄露与线程安全
- 《C语言程序设计:问题与求解方法》——1.4节本章习题
- VS2010 ,工程文件减肥
- 陶哲轩实分析定理17.3.8(三)