R-C3D:用于时间活动检测的区域3D网络

简介: 论文原称:R-C3D: Region Convolutional 3D Network for Temporal Activity Detection(2017)

主要贡献:


1.提出一个包括活动候选区和任意长度活动的分类的端到端模型。如下图所示


image.png

2.提出在候选区生成和分类部分共享全卷积C3D特征,实现了比当前模型快5倍的速度。


   论文主要从Faster R-CNN受启发而来,论文大部分idea都是Faster R-CNN中提出的(看这篇论文的时候,我真是深感生不逢时啊),作者将2D目标检测的方法用到了时间卷积网络,因此出现了R-C3D。


R-C3D模型框架


image.png

 如上图所示,R-C3D由3部分组成,一个共享的3D ConvNet特征提取器,一个时间候选段(temporal proposal stage)生成部分,一个活动分类及调整部分。


   模型输入是3xLxHxW的RGB视频帧,先经过3D ConvNet特征提取网络,再由temporal proposal stage 生成候选区域,候选区域的连续帧将进行分类,并调整候选区域。


   关于共享的3D ConvNet特征提取器没有过多介绍,主要采取C3D网络的五层卷积层,第五层输出的尺寸是512x (L/8) x (H/16) x (W/16)。512是feature map 的通道数,H和W是112,L是任意长度的,受内存限制。


Temporal Proposal Subnet


  这个部分的主要内容是实现模型对任意长度候选段的预测。


   由于第五层输出了长度为L/8的时间位置(temporal locations)(指的是时间维度上的长度), 这里每个位置产生K个anchor片段(对anchor不懂的,直接理解为K个片段也可以),每个anchor片段都有固定但不同的比例,即总共产生的anchor片段是L/8*K个。


   然后,通过大小为(1xH/16xW/16)的3D最大池化对空间维度上进行下采样(从H/16xW/16  到1x1 )产生时间特征图Ctpn (R512xL/8 x1x1),Cptn中每个位置的512维的向量用来预测一个中心位置和每个anchor片段长度{Ci, Li}的相对偏移{$Ci, $Li}, i属于{1, ...., K}


   候选段的偏移和得分是通过在Cptn的顶端增加两个1x1x1的卷积层来预测的。


   在训练阶段,通过两种方式来确定正样本,


   1)与一些ground-truth活动的IoU值大于0.7;


   2)与一些ground-truth活动的IoU值最大。


   若IoU低于0.3,则直接认为是负样本。最后正负样本的比例为1:1.


Activity Classification Subnet


  对上个阶段产生的anchor proposal片段(由于比例不一样,因此长度不一)通过3D RoI池化来抽出固定长度的候选段(长度都一样),然后对候选段进行分类和边界回归。


   对于那些生成的anchor 候选段,互相覆盖率比较高的,且置信度比较低的,使用非极大值抑制(NMS)直接去除,NMS的阈值设为0.7。


   关于3D RoI,其作用就是从任意的L,H,W的图输出一个固定大小的图。

   例如,输入的图的尺寸是 LxHxW,  需要输出的大小为Ls x Hs xWs。只需要一个大小为L/Ls, H/Hs, W/Ws的最大池化操作即可。


   回到本文,在经过3D RoI池化后输入两个全连接层,经过两个全连接层后进入分类和候选段回归部分,分类和回归又是各自两个全连接层。(具体看图2)


Optimization

 

分类使用softmax, 回归使用smooth-L1 loss ,


关于smooth-L1 loss如下:


image.png

因此整个模型的目标函数为:


image.png

前面部分是分类的部分。后面的部分是回归。


   关于回归部分,ti表示预测的相对偏移量,ti*表示ground truth片段转到anchor片段的转移坐标(这句话比较难理解,这里anchor片段指的是对时间维度进行了卷积操作后(变了长度)的部分而ground truth指的是原视频的片段,(感觉这个anchor不是yolo里的那个anchor了,yolo里的anchor指的是原图片下的点))。


其坐标 ti={$Ci, $Li },ti 和ti* 计算如下:


image.png


带*的Ci是ground truth的中心,Ci是anchor 的中心,带*的Li是ground truth的长度,Li是anchor的长度。


   为防止这部分没讲清楚,把论文原文相关部分贴在下面


image.png


到此,R-C3D的主要内容就讲完了,剩下的是一些实验,如IoU阈值取多少合适,论文进行了不同阈值效果对比,发现取0.5比较好,然后还测试了阈值取0.5时在THUMOS14数据集上各个类别的AP值,以及与其他模型取得的AP值对比。


   最后是R-C3D与其他SOTA模型的一些map与速度对比。具体如下:


image.png


image.png

如有错误或不合理之处,欢迎在评论中指正。


相关文章
|
29天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目DWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取分为区域残差化和语义残差化两步,提高了特征提取效率。它引入了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,优化了不同网络阶段的感受野。在Cityscapes和CamVid数据集上的实验表明,DWRSeg在准确性和推理速度之间取得了最佳平衡,达到了72.7%的mIoU,每秒319.5帧。代码和模型已公开。
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
|
16天前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
71 5
|
1月前
|
机器学习/深度学习 搜索推荐 安全
深度学习之社交网络中的社区检测
在社交网络分析中,社区检测是一项核心任务,旨在将网络中的节点(用户)划分为具有高内部连接密度且相对独立的子群。基于深度学习的社区检测方法,通过捕获复杂的网络结构信息和节点特征,在传统方法基础上实现了更准确、更具鲁棒性的社区划分。
55 7
|
29天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2融合DWRSDWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取方法分解为区域残差化和语义残差化两步,提高了多尺度信息获取的效率。网络设计了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,分别用于高阶段和低阶段,以充分利用不同感受野的特征图。实验结果表明,DWRSeg在Cityscapes和CamVid数据集上表现出色,以每秒319.5帧的速度在NVIDIA GeForce GTX 1080 Ti上达到72.7%的mIoU,超越了现有方法。代码和模型已公开。
|
3月前
|
机器学习/深度学习 安全 网络安全
利用机器学习优化网络安全威胁检测
【9月更文挑战第20天】在数字时代,网络安全成为企业和个人面临的重大挑战。传统的安全措施往往无法有效应对日益复杂的网络攻击手段。本文将探讨如何通过机器学习技术来提升威胁检测的效率和准确性,旨在为读者提供一种创新的视角,以理解和实施机器学习在网络安全中的应用,从而更好地保护数据和系统免受侵害。
|
3月前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
252 5
|
2月前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
44 0
|
4月前
|
计算机视觉
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
这篇文章讨论了在yolov5项目中,如何避免使用网络摄像机而改用自带的本地摄像机进行实时目标检测,并提供了解决摄像头打开错误的具体步骤和代码示例。
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
|
4月前
|
机器学习/深度学习 运维 监控
|
4月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
99 0