R-C3D 视频活动检测的经典算法

  • 目录
    • 论文信息
    • 主要贡献
    • 存在问题
    • 基本思想
    • 关键原理
    • 实验结果
      • Experimentson THUMOS'14
      • Experimentson ActivityNet
      • Experimentson Charades
    • 结论

目录

论文信息

论文地址:
https://arxiv.org/pdf/1703.07814.pdf
代码:
http://ai.bu.edu/r-c3d/

主要贡献

  1. 论文提出了活动检测模型,即R-C3D,这是一种端到端活动检测模型,结合活动建议和分类阶段,可以检测任意长度的活动。
  2. 通过在建议生成(proposal generation)和网络分类部分之间共享全卷积的C3D特性,实现快速检测速度(比当前方法快5倍);
  3. 对三个不同的活动检测数据集进行了大量的评估,证实了该文提出的模型具有普遍适用性。

存在问题

连续视频中的活动检测是一个具有挑战性的问题,不仅需要识别,还需要及时准确地定位活动。当前存在的方法在处理连续视频流的活动检测时,存在以下问题:

  1. 这些现成的表示可能不适合在不同视频域中进行定位活动,从而导致性能的地下。
  2. 现有方法依赖外部建议或全面的滑动窗口,导致计算效率地下。
  3. 滑动窗口无法轻松的预测灵活的活动边界。

基本思想


受目标检测方法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=Ncls​1​i∑​Lcls​(ai​,ai∗​)+λNreg​1​i∑​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中具有代表性的结果。

结论

  1. 引入了R-C3D模型,用来活动检测的第一个端对端时间建议分类网络;
  2. 在3个大规模的数据集中对该文提出的方法进行了评估,结果展示该文的方法比当前基于3D卷积的模型更快且更准确;
  3. R-C3D还可以假如其他一些特性,以进一步提高活动检测结果。

更多技术干活请关注

R-C3D 视频活动检测的经典算法相关推荐

  1. R-C3D 视频活动检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文为52CV群友RoseVam投稿,介绍了视频活动检测经典模型 ...

  2. 《异常检测——从经典算法到深度学习》5 Opprentice——异常检测经典算法最终篇

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  3. 《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  4. 《异常检测——从经典算法到深度学习》20 HotSpot:多维特征 Additive KPI 的异常定位

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  5. 《异常检测——从经典算法到深度学习》9 异常检测资料汇总(持续更新抛砖引玉)

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  6. 《异常检测——从经典算法到深度学习》18 USAD:多元时间序列的无监督异常检测

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  7. 《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  8. 《异常检测——从经典算法到深度学习》7 基于条件VAE异常检测

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  9. 《异常检测——从经典算法到深度学习》8 Donut: 基于 VAE 的 Web 应用周期性 KPI 无监督异常检测

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

最新文章

  1. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序
  2. Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...
  3. oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法
  4. 题解报告:hdu1219AC Me
  5. [转载]WPF – 使用触发器
  6. linux cp命令使用
  7. java basic类似的地方_java – Shiro使用HTTP Basic Auth或匿名访问相同的URI
  8. 了解java.nio.file.Path – 2
  9. mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
  10. Java关闭窗口和刷新
  11. 蓝电电池测试系统工步编辑软件,CT2001A
  12. H3C IRF2的三种配置情况「转载」
  13. word转PDF时,英文单词的字母间距问题
  14. c#实现Udp通信(四)--UPD大数据量接收(异步接收)
  15. python读取txt文件中的数字_python从txt文件读取数据
  16. qml 滚动控件Scroll ScrollBar ScrollIndicator ScrollView
  17. oppo系统android版本下载,oppo手机助手安卓版
  18. Linux常用命令——modprobe命令
  19. zip直链生成网站_调优-WEB资讯专栏-DMOZ中文网站分类目录
  20. 微信小程序 echarts.js过大 导至错误( Error: 代码包大小为 xxxxkb,上限为 2048 kb,请删除文件后重试)

热门文章

  1. HTML`CSS_网站页面不同浏览器兼容性问题解决
  2. 使用PHP搞定支付宝、微信扫码支付
  3. 我应该在CSS中使用px或rem值单位吗?
  4. 如何找到数字数组的总和
  5. 如何在保留订单的同时从列表中删除重复项?
  6. 针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案
  7. Android开发笔记——常见BUG类型之内存泄露与线程安全
  8. 《C语言程序设计:问题与求解方法》——1.4节本章习题
  9. VS2010 ,工程文件减肥
  10. 陶哲轩实分析定理17.3.8(三)