/TSN-pytorch

Pytorch impelementation for Temporal Segment Networks (TSN) in ECCV 2016

Primary LanguagePython

TSN-pytorch

Pytorch impelementation for Temporal Segment Networks (TSN) in ECCV 2016

原始版本实现,我只是稍微做了改动,自己训练了模型。

这个版本不需要光流,只用到了RGBDiff,需要训练光流的模态需要去使用dense flow提取光流。

增加了光流的实验(update)。

Dependency

pytorch 0.4 有无GPU都可以使用,但是无GPU可能会很慢。

python3

ffmpeg 可以直接 sudo apt-get install ffmpeg安装,用来把视频转换成图片存储,读写会快一些,代码,我使用的帧率是10FPS,为了节约存储空间的话可以调低一点。

UCF101 数据集,下好放在./raw/data/下面,如果外网比较慢的话,可以从我分享的百度云上下载。

Test on UCF101

训练和测试都只用到了split1,全都用上的应该能进一步提升。

Modality Top1 Accuracy Top5 Accuracy
RGB1 77.37% 93.55%
RGB2 78.19% 94.48%
RGBDiff1 71.53% 89.93%
RGBDiff2 72.11% 92.86%
Fusion RGB1+RGBDiff1 81.52% 95.70%
Fusion RGB2+RGBDiff2 82.37% 96.56%
Fusion RGB1+RGBDiff2 83.06% 96.17%
Fusion RGB2+RGBDiff1 80.15% 95.35%
Fusion RGB1+RGB2 77.48% 92.97%
Fusion RGBDiff1+RGBDiff2 34.55% 67.27%

因为双流结合有点类似于集成学习,为了对比到底是多模态起了作用还是集成模型起了作用,我增加了对比实验。从对比中可以看出,集成两个相同的模型反而正确率有所下降,特别是RGBDiff下降的十分厉害,这非常奇怪,其中的原因还有待进一步研究。说明RGB和RGBDiff这两个模态还是能互补的。

下一步将增加光流模态的对比和在更大数据集上的实验,如果哪位有Kinetics的百度云请分享一下,小弟感激不尽,自己去下载实在是太慢了。。。

update:新一轮的评估,支持了在视频的基础上直接操作,不用把视频先处理成图片。

Modality Top1 Accuracy Top5 Accuracy
RGB 79.46% 93.34%
RGBDiff interval=1 72.56% 90.77%
RGBDiff interval=2 76.87% 93.10%
FLow interval=1 66.51% 88.77%
FLow interval=2 66.77% 89.11%
RGB+RGBDiff 84.67% 96.67%
RGB+Flow 82.69% 95.98%

NOTE:Fusion的时候都是默认interval=2.interval的意思是在视频中取帧的间隔。

update:新一轮的评估,支持更大的数据集something something

Modality Top1 Accuracy Top5 Accuracy
RGB 21.6% 49.3%
RGBDiff 26.5% 55.6%
RGBDiff+RGB 32.2% 61.7%

环境配好了之后需要下载我的预训练模型:

RGB Model

RGBDiff Model

下载好了之后直接运行test.py ,python test.py 即可得到RGB和RGBDiff两个分支融合的结果。

也可以单独测试单个分支,python main.py --evaluate --resume [模型路径] --modality [RGB/RGBDiff],或者直接去对应的修改一下config.py里面的参数。

Train

只需要下载好对应的数据集,然后修改好合适的参数即可在自己的数据集上训练。

训练时间:UCF101 split1 ,GTX 2080Ti上大概两个小时。