git://www.github.com/yjxiong/action-detection.git
git clone http://www.github.com/yjxiong/action-detection
$ svn co --depth empty http://www.github.com/yjxiong/action-detection
Checked out revision 1.
$ cd repo
$ svn up trunk
这个 repo 包含 ICCV 2017上提供的SSN框架的代码和模型。
Temporal Yuanjun,Limin,Dahua,Venice,Venice,Temporal,Temporal,Temporal,Temporal,Temporal,Venice,Venice,Venice,Venice,Venice 。
SSN框架的前身是在
Pursuit Pursuit Pursuit,Limin,Dahua,arXiv,,,。
电子邮件内容使用指南为了便于使用,在PyTorch中的培训和测试是在中实现的。 我们需要以下软件来运行 SSN 。
其他次要 python 模块可以通过运行
pip install -r requirements.txt
实际上,我们建议在运行SSN之前设置 temporal-segment-networks ( TSN ) 插件项目。 但这将有助于处理DenseFlow的许多依赖问题,但是这是可选的,因为我们只使用DenseFlow工具。
对于光流提取和运行SSN来说,需要 gpu 。 node 中通常 4至 8的gpu可以保证平滑的训练体验。
从现在开始,假设你已经设置了 PyTorch,并且已经从 TSN 项目准备好了DenseFlow工具。
用git克隆这里 repo,请记住使用 --recursive
git clone --recursive https://github.com/yjxiong/action-detection
我们支持两个公开的数据集,用于时间动作检测: THUMOS14 & ActivityNet v1.2.下面是下载这两个数据集的一些步骤。
下载每个数据集的视频后,将它们解压缩到文件夹 SRC_FOLDER
。
我们提供标准PyTorch格式的pretrained参考模型和初始化模型。 不需要手动下载初始化模型。 在必要时,torch.model_zoo
工具会下载它们。
为了运行训练和测试,我们需要将视频分解为帧。 同时,时间流网络需要光流或者扭曲光流图像来输入。
我们建议使用 TSN repo 插件中的工具提供程序。 下面的说明来自 TSN repo 。
这些可以通过脚本 scripts/extract_optical_flow.sh
实现。 脚本有三个参数
SRC_FOLDER
指向你放置视频数据集的文件夹OUT_FOLDER
指向 根目录,其中提取的帧和光学图像将被放入其中NUM_WORKER
指定并行用于流提取的GPU数,必须大于 1用于运行光流提取的命令如下所示
bash scripts/extract_optical_flow.sh SRC_FOLDER OUT_FOLDER NUM_WORKER
web服务模型的培训和测试依赖于文件调用"建议列表"。 它记录视频时间操作建议的信息和groundTruth动作实例的信息。
在不同机器上的解码器可能输出不同数量的帧的意义。 我们以标准化形式提供提案列表。 要开始训练和测试,需要将建议列表调整到为每个视频提取的实际帧数。 要执行这里操作,请运行
python gen_proposal_list.py DATASET FRAMES_PATH
由于对标签训练的大量查询,我们提供了列举二进制actionness分类器的列表,并生成建议。
首先,我们生成一系列滑动窗口的建议。
python gen_sliding_window_proposals.py validation rgb FRAME_PATH data/thumos14_sw_val_proposal_list.txt --dataset thumos14 python gen_sliding_window_proposals.py testing rgb FRAME_PATH data/thumos14_sw_test_proposal_list.txt --dataset thumos14
python gen_sliding_window_proposals.py training rgb FRAME_PATH data/activitynet1.2_sw_train_proposal_list.txt --dataset activitynet --version 1.2 python gen_sliding_window_proposals.py validation rgb FRAME_PATH data/activitynet1.2_sw_val_proposal_list.txt --dataset activitynet --version 1.2
利用上述建议,我们可以训练一个二进制actionness分类器。
python binary_train.py thumos14 MODALITY -b 16 --lr_steps 20 40 --epochs 45
或者
python binary_train.py activitynet1.2 MODALITY -b 16 --lr_steps 3 6 --epochs 7
python binary_test.py DATASET MODALITY SUBSET TRAINING_CHECKPOINT ACTIONNESS_RESULT_PICKLE
THUMOS14
python gen_bottom_up_proposals.py ACTIONNESS_RESULT_PICKLE --dataset thumos14 --subset validation --write_proposals data/thumos14_tag_val_proposal_list.txt --frame_path FRAME_PATH python gen_bottom_up_proposals.py ACTIONNESS_RESULT_PICKLE --dataset thumos14 --subset testing --write_proposals data/thumos14_tag_test_proposal_list.txt --frame_path FRAME_PATH
ActivityNet1.2
python gen_bottom_up_proposals.py ACTIONNESS_RESULT_PICKLE --dataset activitynet --subset training --write_proposals data/activitynet1.2_tag_train_proposal_list.txt --frame_path FRAME_PATH python gen_bottom_up_proposals.py ACTIONNESS_RESULT_PICKLE --dataset activitynet --subset validation --write_proposals data/activitynet1.2_tag_val_proposal_list.txt --frame_path FRAME_PATH
其中 ACTIONNESS_RESULTS_PICKLE
可以是多个( 比如 。 来自两个流的actionness预测
使用pretrained模型评估时间动作检测有两个步骤。
首先,我们将通过运行以下命令提取所有建议的检测分数
python ssn_test.py DATASET MODALITY TRAINING_CHECKPOINT RESULT_PICKLE
然后使用建议分数,通过运行
python eval_detection_results.py DATASET RESULT_PICKLE
这个脚本将报告在不同IoU阈值下的平均平均精度的检测性能。
我们在机器上提供训练的模型,以便在实际训练任何型号之前测试它们。 你可以在性能section中看到参考模型的性能。
若要使用这些模型,请运行以下命令
python ssn_test.py DATASET MODALITY none RESULT_PICKLE --use_reference
Addtionally,我们提供了使用动力学pretraining训练的模型,以使用它们,运行
python ssn_test.py DATASET MODALITY none RESULT_PICKLE --use_kinetics_reference
在本文中,我们在ImageNet上使用pretraining报告。 所以我们先迭代这个案例。
使用以下命令训练 SSN
python ssn_train.py thumos14 MODALITY -b 16 --lr_steps 20 40 --epochs 45
python ssn_train.py activitynet1.2 MODALITY -b 16 --lr_steps 3 6 --epochs 7
在这里,MODALITY
可以是 RGB
和 Flow
。 DATASET
可以是 thumos14
和 activitynet1.2
。 你可以通过运行以下命令来查找有关这里脚本的详细信息
python ssn_train.py -h
培训后,将有一个检查点文件,它的名称包含数据集。架构和模式的信息。 这里检查点文件包含经过训练的模型权重,可以用于测试。
另外,我们在动力学数据集上提供了初始化模型 pretrained 。 这个pretraining过程可以提高检测性能。 更多细节可以在上找到pretrained模型网站。
使用以下pretrained模型,向训练命令添加一个选项 --kin
,如
python ssn_train.py thumos14 MODALITY -b 16 --lr_steps 20 40 --epochs 45 --kin
和
python ssn_train.py activitynet1.2 MODALITY -b 16 --lr_steps 3 6 --epochs 7 --kin
系统将使用pytorch实用程序的model_zoo
来下载你的pretrained模型。
我们提供了一套参考时间动作检测模型。 它们在基准数据集上的性能如下。 这些结果也可以在项目网站上找到。 你可以下载
BNInception | 16.18 | 22.50 | 27.36 |
BNInception ( 动力学 Pretrained ) | 21.31 | 27.93 | 32.50 |
InceptionV3 | 18.28 | 23.30 | 28.00 ( 29.8* ) |
InceptionV3 ( 动力学 Pretrained ) | 22.12 | 30.51 | 33.15 ( 34.3* ) |
在 *的分类模型中,利用的分类模型对检测结果进行过滤,只保留那些来自于预测行为类的。
BNInception | 24.85 | 21.69 | 26.75 |
BNInception ( 动力学 Pretrained ) | 27.53 | 28.0 | 28.57 |
InceptionV3 | 25.75 | 22.44 | 27.82 |
InceptionV3 ( 动力学 Pretrained ) |
如果你觉得SSN对你的研究有用的话,请参考下面的文章
@inproceedings{SSN2017ICCV,
author = {Yue Zhao and
Yuanjun Xiong and
Limin Wang and
Zhirong Wu and
Xiaoou Tang and
Dahua Lin},
title = {Temporal Action Detection with Structured Segment Networks},
booktitle = {ICCV},
year = {2017},
}
有关任何问题,请提交问题或者联系
Yue Zhao: thuzhaoyue@gmail.com
Yuanjun Xiong: bitxiong@gmail.com