未验证 提交 1f874ecb 编写于 作者: S SunGaofeng 提交者: GitHub

Merge pull request #2036 from SunGaofeng/video_classification

fix - and _ mismatch, fix python3 bug in nonlocal codes
......@@ -38,18 +38,18 @@
``` bash
export CUDA_VISIBLE_DEVICES=0
python train.py --model-name=STNET
python train.py --model_name=STNET
--config=./configs/stnet.txt
--save-dir=checkpoints
--save_dir=checkpoints
```
多卡训练:
``` bash
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python train.py --model-name=STNET
python train.py --model_name=STNET
--config=./configs/stnet.txt
--save-dir=checkpoints
--save_dir=checkpoints
```
视频模型库同时提供了快速训练脚本,脚本位于`scripts/train`目录下,可通过如下命令启动训练:
......
......@@ -32,11 +32,11 @@ Attention Cluster模型使用2nd-Youtube-8M数据集, 数据下载及准备请
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model-name=AttentionCluster
python train.py --model_name=AttentionCluster
--config=./configs/attention_cluster.txt
--save-dir=checkpoints
--log-interval=10
--valid-interval=1
--save_dir=checkpoints
--log_interval=10
--valid_interval=1
bash scripts/train/train_attention_cluster.sh
......@@ -56,9 +56,9 @@ Attention Cluster模型使用2nd-Youtube-8M数据集, 数据下载及准备请
可通过如下两种方式进行模型评估:
python test.py --model-name=AttentionCluster
python test.py --model_name=AttentionCluster
--config=configs/attention_cluster.txt
--log-interval=1
--log_interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test_attention_cluster.sh
......@@ -89,10 +89,10 @@ Attention Cluster模型使用2nd-Youtube-8M数据集, 数据下载及准备请
可通过如下命令进行模型推断:
python infer.py --model-name=attention_cluster
python infer.py --model_name=attention_cluster
--config=configs/attention_cluster.txt
--log-interval=1
--weights=$PATH_TO_WEIGHTS
--log_interval=1
--weights=$PATH_TO_WEIGHTS
--filelist=$FILELIST
- 模型推断结果存储于`AttentionCluster_infer_result`中,通过`pickle`格式存储。
......@@ -102,4 +102,3 @@ Attention Cluster模型使用2nd-Youtube-8M数据集, 数据下载及准备请
## 参考论文
- [Attention Clusters: Purely Attention Based Local Feature Integration for Video Classification](https://arxiv.org/abs/1711.09550), Xiang Long, Chuang Gan, Gerard de Melo, Jiajun Wu, Xiao Liu, Shilei Wen
......@@ -26,11 +26,11 @@ AttentionLSTM模型使用2nd-Youtube-8M数据集,关于数据部分请参考[
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model-name=AttentionLSTM
python train.py --model_name=AttentionLSTM
--config=./configs/attention_lstm.txt
--save-dir=checkpoints
--log-interval=10
--valid-interval=1
--save_dir=checkpoints
--log_interval=10
--valid_interval=1
bash scripts/train/train_attention_lstm.sh
......@@ -42,9 +42,9 @@ AttentionLSTM模型使用2nd-Youtube-8M数据集,关于数据部分请参考[
## 模型评估
可通过如下两种方式进行模型评估:
python test.py --model-name=AttentionLSTM
python test.py --model_name=AttentionLSTM
--config=configs/attention_lstm.txt
--log-interval=1
--log_interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test_attention_lstm.sh
......@@ -75,10 +75,10 @@ AttentionLSTM模型使用2nd-Youtube-8M数据集,关于数据部分请参考[
可通过如下命令进行模型推断:
python infer.py --model-name=attention_lstm
python infer.py --model_name=attention_lstm
--config=configs/attention_lstm.txt
--log-interval=1
--weights=$PATH_TO_WEIGHTS
--log_interval=1
--weights=$PATH_TO_WEIGHTS
--filelist=$FILELIST
- 模型推断结果存储于`AttentionLSTM_infer_result`中,通过`pickle`格式存储。
......@@ -90,4 +90,3 @@ AttentionLSTM模型使用2nd-Youtube-8M数据集,关于数据部分请参考[
- [Beyond Short Snippets: Deep Networks for Video Classification](https://arxiv.org/abs/1503.08909) Joe Yue-Hei Ng, Matthew Hausknecht, Sudheendra Vijayanarasimhan, Oriol Vinyals, Rajat Monga, George Toderici
- [Attention Clusters: Purely Attention Based Local Feature Integration for Video Classification](https://arxiv.org/abs/1711.09550), Xiang Long, Chuang Gan, Gerard de Melo, Jiajun Wu, Xiao Liu, Shilei Wen
......@@ -88,11 +88,11 @@ Non-local模型的训练数据采用由DeepMind公布的Kinetics-400动作识别
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model-name=NONLOCAL
python train.py --model_name=NONLOCAL
--config=./configs/nonlocal.txt
--save-dir=checkpoints
--log-interval=10
--valid-interval=1
--save_dir=checkpoints
--log_interval=10
--valid_interval=1
bash scripts/train/train_nonlocal.sh
......@@ -113,9 +113,9 @@ Non-local模型的训练数据采用由DeepMind公布的Kinetics-400动作识别
可通过如下两种方式进行模型评估:
python test.py --model-name=NONLOCAL
python test.py --model_name=NONLOCAL
--config=configs/nonlocal.txt
--log-interval=1
--log_interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test_nonlocal.sh
......
......@@ -14,11 +14,10 @@
import os
import numpy as np
import cPickle
import paddle.fluid as fluid
from ..model import ModelBase
import resnet_video
from . import resnet_video
from .nonlocal_utils import load_params_from_file
import logging
......
......@@ -21,7 +21,7 @@ import paddle.fluid as fluid
from paddle.fluid import ParamAttr
import numpy as np
import nonlocal_helper
from . import nonlocal_helper
def Conv3dAffine(blob_in,
......
......@@ -19,7 +19,7 @@ from __future__ import division
import paddle.fluid as fluid
from paddle.fluid.param_attr import ParamAttr
import resnet_helper
from . import resnet_helper
import logging
logger = logging.getLogger(__name__)
......
......@@ -30,11 +30,11 @@ StNet的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model-name=STNET
python train.py --model_name=STNET
--config=./configs/stnet.txt
--save-dir=checkpoints
--log-interval=10
--valid-interval=1
--save_dir=checkpoints
--log_interval=10
--valid_interval=1
bash scripts/train/train_stnet.sh
......@@ -62,9 +62,9 @@ StNet的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集
可通过如下两种方式进行模型评估:
python test.py --model-name=STNET
python test.py --model_name=STNET
--config=configs/stnet.txt
--log-interval=1
--log_interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test__stnet.sh
......@@ -92,10 +92,10 @@ StNet的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集
可通过如下命令进行模型推断:
python infer.py --model-name=stnet
python infer.py --model_name=stnet
--config=configs/stnet.txt
--log-interval=1
--weights=$PATH_TO_WEIGHTS
--log_interval=1
--weights=$PATH_TO_WEIGHTS
--filelist=$FILELIST
- 模型推断结果存储于`STNET_infer_result`中,通过`pickle`格式存储。
......
# TSM 视频分类模型
---
## 内容
- [模型简介](#模型简介)
- [数据准备](#数据准备)
- [模型训练](#模型训练)
- [模型评估](#模型评估)
- [模型推断](#模型推断)
- [参考论文](#参考论文)
## 模型简介
Temporal Shift Module是由MIT和IBM Watson AI Lab的Ji Lin,Chuang Gan等人提出的通过时间位移来提高网络视频理解能力的模块,其位移操作原理如下图所示。
<p align="center">
<img src="../../images/temporal_shift.png" height=250 width=800 hspace='10'/> <br />
Temporal shift module
</p>
上图中矩阵表示特征图中的temporal和channel维度,通过将一部分的channel在temporal维度上向前位移一步,一部分的channel在temporal维度上向后位移一步,位移后的空缺补零。通过这种方式在特征图中引入temporal维度上的上下文交互,提高在时间维度上的视频理解能力。
TSM模型是将Temporal Shift Module插入到ResNet网络中构建的视频分类模型,本模型库实现版本为以ResNet-50作为主干网络的TSM模型。
详细内容请参考论文[Temporal Shift Module for Efficient Video Understanding](https://arxiv.org/abs/1811.08383v1)
## 数据准备
TSM的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集。数据下载及准备请参考[数据说明](../../dataset/README.md)
## 模型训练
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model-name=TSM
--config=./configs/tsm.txt
--save-dir=checkpoints
--log-interval=10
--valid-interval=1
bash scripts/train/train_tsm.sh
- 可下载已发布模型[model](https://paddlemodels.bj.bcebos.com/video_classification/tsm_kinetics.tar.gz)通过`--resume`指定权重存放路径进行finetune等开发
**数据读取器说明:** 模型读取Kinetics-400数据集中的`mp4`数据,每条数据抽取`seg_num`段,每段抽取1帧图像,对每帧图像做随机增强后,缩放至`target_size`
**训练策略:**
* 采用Momentum优化算法训练,momentum=0.9
* 权重衰减系数为1e-4
## 模型评估
可通过如下两种方式进行模型评估:
python test.py --model-name=TSM
--config=configs/tsm.txt
--log-interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test_tsm.sh
- 使用`scripts/test/test_tsm.sh`进行评估时,需要修改脚本中的`--weights`参数指定需要评估的权重。
- 若未指定`--weights`参数,脚本会下载已发布模型[model](https://paddlemodels.bj.bcebos.com/video_classification/tsm_kinetics.tar.gz)进行评估
当取如下参数时,在Kinetics400的validation数据集下评估精度如下:
| seg\_num | target\_size | Top-1 |
| :------: | :----------: | :----: |
| 8 | 224 | 0.70 |
## 模型推断
可通过如下命令进行模型推断:
python infer.py --model-name=TSM
--config=configs/tsm.txt
--log-interval=1
--weights=$PATH_TO_WEIGHTS
--filelist=$FILELIST
- 模型推断结果存储于`TSM_infer_result`中,通过`pickle`格式存储。
- 若未指定`--weights`参数,脚本会下载已发布模型[model](https://paddlemodels.bj.bcebos.com/video_classification/tsm_kinetics.tar.gz)进行推断
## 参考论文
- [Temporal Shift Module for Efficient Video Understanding](https://arxiv.org/abs/1811.08383v1), Ji Lin, Chuang Gan, Song Han
# TSM 视频分类模型
---
## 内容
- [模型简介](#模型简介)
- [数据准备](#数据准备)
- [模型训练](#模型训练)
- [模型评估](#模型评估)
- [模型推断](#模型推断)
- [参考论文](#参考论文)
## 模型简介
Temporal Shift Module是由MIT和IBM Watson AI Lab的Ji Lin,Chuang Gan等人提出的通过时间位移来提高网络视频理解能力的模块,其位移操作原理如下图所示。
<p align="center">
<img src="../../images/temporal_shift.png" height=250 width=800 hspace='10'/> <br />
Temporal shift module
</p>
上图中矩阵表示特征图中的temporal和channel维度,通过将一部分的channel在temporal维度上向前位移一步,一部分的channel在temporal维度上向后位移一步,位移后的空缺补零。通过这种方式在特征图中引入temporal维度上的上下文交互,提高在时间维度上的视频理解能力。
TSM模型是将Temporal Shift Module插入到ResNet网络中构建的视频分类模型,本模型库实现版本为以ResNet-50作为主干网络的TSM模型。
详细内容请参考论文[Temporal Shift Module for Efficient Video Understanding](https://arxiv.org/abs/1811.08383v1)
## 数据准备
TSM的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集。数据下载及准备请参考[数据说明](../../dataset/README.md)
## 模型训练
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model_name=TSM
--config=./configs/tsm.txt
--save_dir=checkpoints
--log_interval=10
--valid_interval=1
bash scripts/train/train_tsm.sh
- 可下载已发布模型[model](https://paddlemodels.bj.bcebos.com/video_classification/tsm_kinetics.tar.gz)通过`--resume`指定权重存放路径进行finetune等开发
**数据读取器说明:** 模型读取Kinetics-400数据集中的`mp4`数据,每条数据抽取`seg_num`段,每段抽取1帧图像,对每帧图像做随机增强后,缩放至`target_size`
**训练策略:**
* 采用Momentum优化算法训练,momentum=0.9
* 权重衰减系数为1e-4
## 模型评估
可通过如下两种方式进行模型评估:
python test.py --model_name=TSM
--config=configs/tsm.txt
--log_interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test_tsm.sh
- 使用`scripts/test/test_tsm.sh`进行评估时,需要修改脚本中的`--weights`参数指定需要评估的权重。
- 若未指定`--weights`参数,脚本会下载已发布模型[model](https://paddlemodels.bj.bcebos.com/video_classification/tsm_kinetics.tar.gz)进行评估
当取如下参数时,在Kinetics400的validation数据集下评估精度如下:
| seg\_num | target\_size | Top-1 |
| :------: | :----------: | :----: |
| 8 | 224 | 0.70 |
## 模型推断
可通过如下命令进行模型推断:
python infer.py --model_name=TSM
--config=configs/tsm.txt
--log_interval=1
--weights=$PATH_TO_WEIGHTS
--filelist=$FILELIST
- 模型推断结果存储于`TSM_infer_result`中,通过`pickle`格式存储。
- 若未指定`--weights`参数,脚本会下载已发布模型[model](https://paddlemodels.bj.bcebos.com/video_classification/tsm_kinetics.tar.gz)进行推断
## 参考论文
- [Temporal Shift Module for Efficient Video Understanding](https://arxiv.org/abs/1811.08383v1), Ji Lin, Chuang Gan, Song Han
......@@ -25,11 +25,11 @@ TSN的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集。
数据准备完毕后,可以通过如下两种方式启动训练:
python train.py --model-name=TSN
python train.py --model_name=TSN
--config=./configs/tsn.txt
--save-dir=checkpoints
--log-interval=10
--valid-interval=1
--save_dir=checkpoints
--log_interval=10
--valid_interval=1
bash scripts/train/train_tsn.sh
......@@ -47,9 +47,9 @@ TSN的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集。
可通过如下两种方式进行模型评估:
python test.py --model-name=TSN
python test.py --model_name=TSN
--config=configs/tsn.txt
--log-interval=1
--log_interval=1
--weights=$PATH_TO_WEIGHTS
bash scripts/test/test_tsn.sh
......@@ -69,10 +69,10 @@ TSN的训练数据采用由DeepMind公布的Kinetics-400动作识别数据集。
可通过如下命令进行模型推断:
python infer.py --model-name=TSN
python infer.py --model_name=TSN
--config=configs/tsn.txt
--log-interval=1
--weights=$PATH_TO_WEIGHTS
--log_interval=1
--weights=$PATH_TO_WEIGHTS
--filelist=$FILELIST
- 模型推断结果存储于`TSN_infer_result`中,通过`pickle`格式存储。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册