视频分类论文“Towards Good Practices for Very Deep Two-Stream ConvNets”程序运行过程

论文:Towards Good Practices for Very Deep Two-Stream ConvNets

论文原代码:https://github.com/bryanyzhu/two-stream-pytorch

原代码环境:Ubuntu 16.04, Python: 3.5, CUDA: 8.0, OpenCV3, dense_flow其中OpenCV3指的是C++版的,dense_flow用于提取视频光流信息以及对视频分帧)

视频数据库以及下载地址:UCF-101, http://crcv.ucf.edu/data/UCF101.php

 

一、视频分帧和提取光流

这一步中最重要的是使用dense_flow来分帧以及提取光流。

原代码中的dense_flow是基于OpenCV3的,由于OpenCV3中不包含某些需要的文件,所以需要下载附加模块opencv_contrib(这一步的环境配置对我来说有点复杂,一直配不好导致dense_flow无法正常的使用。然后我注意到括号中的话,使用opencv-2.4.13可以无需下载opencv_contrib,但是后续有可能会出错,由于dense_flow主要是来提取光流信息,所以我想在windows环境下搭建opencv-2.4.13来使用dense_flow提取数据,然后将数据转到ubuntu下训练,虽然这个方法比较笨拙,但是总算成功的提取了光流和帧数据)

 

 

windows下使用dense_flow可以参考博客:http://www.bubuko.com/infodetail-1727891.html

 

使用dense_flow时遇到的几个问题:

1.warning: Error opening file(../../module/highgui...hpp:545)

could not initialize capturing

这是因为视频路径不对,检查传入的视频路径是否准确。

2.程序可以运行但是没有图片

  这有可能是因为要存放图片的文件夹事先没有创建,也有可能是存放图片的路径不准确。有时候路径就是一些微小细节,比如前面的斜杠号的方向和有无。为了避免这种路径细节错误,我一般会使用绝对路径。

 

在能使用dense_flow之后,对UCF-101中的数据进行批量处理,CPU上处理整个数据库可能需要很长很长的时间:

一些命令参数需要看具体代码,主要还是路径的问题。

 

二、训练网络

原论文研究的是卷积双流网络,双流表示空间流和时间流,分别由两个独立的网络训练,然后进行融合。因此在训练时,要单独训练空间流(输入的是单帧的RGB图片)和时间流(输入的是连续的光流图)。

在这里出现了一个问题让我解决了很久,后来发现这个问题真的很弱鸡,之前忘记截图了,具体报错是could not load the file /文件路径/。后来设置断点调试了之后,发现我之前用dense_flow提取的图片命名是四位的,比如:img_0112.jpg,而代码中搜索的路径是武威,比如:img_00112.jpg。

 

所以在直接跑原论文代码时,一定一定要注意路径问题。

 

三、测试

因为一开始看完论文就直接跑代码了,具体代码实现细节还没有认真研究过,测试部分后续研究完代码再进行补充。

 

 

 

猜你喜欢

转载自www.cnblogs.com/jessie-zheng/p/9371354.html