Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练

由于课题组接了一个视频检测的项目,所以找到了这个模型,用于视频目标检测的同学可以有兴趣尝试。

FGFA-github上的源码:https://github.com/msracver/Flow-Guided-Feature-Aggregation

同时Flow-Guided-Feature-Aggregation与另一篇文章Deep Feature Flow非常相似,包括环境的配置等。

DFF-github上的源码https://github.com/msracver/Deep-Feature-Flow 

模型环境的安装配置与demo运行

     我只配了FGFA的环境,所以不保证DFF能够成功,但是核心方法应该是一样的,都是安装mxnet包。

     配置遇到的问题:之前在ubuntu16.04下配置了好久,ubuntu的环境是ubuntu16.04+cuda9.0 ,一直没有成功,根据readme的方法是下载mxnet的源码,更新源码,然后编译后与python绑定,但是这个方法我一直尝试到make -j4的时候就会报错(因为编译的文件很多,错误出现在中间,不太好找),导致后面运行demo的时候也会出错,报的是raise mxnetError, 查了好多信息,后来觉得可能是cuda版本的问题, 由于cuda版本不能轻易改动,所以放弃了在ubuntu下的配置。

    接下来介绍我的安装环境 win10+cuda10.0+vs2017。由于我的windows电脑原来用的是cuda 9.0所以删除了原本的cuda,安装了cuda10.0,具体的安装方法网上比较多,这里就不详细解释。

第一步 :具体环境

      打开FGFA的github上的readme, 先配置环境,使用Python2.7,为了方便大家,我直接上传了我的整个虚拟环境

 Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练

要注意,win10比ubuntu下多了一句For Windows users, Visual Studio 2015 is needed to compile cython module。

这一步我是只直接在虚拟环境里安装了cython,如果有多个vs版本的,设置一下默认的编译的版本,不需要其他的操作。这一步只要环境配置好,编译就不会有问题。

第二步:源码初始化

git clone下源码,然后放到一个文件夹中,进入这个文件,运行 .\init.bat,这一步应该也不会有问题,如果有也是环境配置的问题。

第三步:安装mxnet

这一步,按原网站的方法是,下载source文件,然后check out,更新。 再复制缺少的.h文件到mxnet源码后编译,但是我使用cuda9.0的情况下无法配置成功(不确定是不是个人原因)。 所以推荐使用直接pip安装mxnet的包(感谢issue里的同学提供的思路),最新的包里直接包含了所需要的.h文件,不需要cp -r那一步,也不需要后面的make , setup等步骤,非常方便! 

要求就是 例如我是cuda 10.0,我就pip install mxnet-cu100。  然后下载权重。 如果cuda版本对,这一步也没什么问题。

第四步:运行demo.py

demo.py的权重和train的权重我都上传到了百度网盘。下面是地址。

https://blog.****.net/weixin_42258492/article/details/105811423  

运行的时候除了环境报错缺少包以外。还会有一个错Symbol can not use “+=”,这个错误在issue里可以找到答案。

然后就能成功运行demo.py了。 

 

训练代码的运行

准备部分数据集与部分修改

这一步比较麻烦,因为数据集太大了,网上有对应的 ILSVRC2015 VID 的数据集,我只下载了这个,没有下载DET,一共接近80个G的压缩文件,我并没有全部下载完。  

建议大家先看一下数据集的介绍https://blog.****.net/weixin_43292354/article/details/100155303

注意到在目录Flow-Guided-Feature-Aggregation/data/ILSVRC2015/ImageSets/下,有4个文件,打开VID_train_15frames。

看到如下Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练

我个人理解是这个15就是对一个视频平均取15帧,例如对于 ILSVRC2015_train_00000000,一共300帧,隔20个取一帧。

因为取部分数据训练,所以我的方法是新建一个text,叫VID_train_15frames_part,然后在txt中复制一大段从 ILSVRC2015_train_00000000到ILSVRC2015_train_00010000的内容,因为我们的目的是跑通模型。

然后在下载好的VID数据集中,找到ILSVRC2015_train_00000000到00010000这一段对应的标签文件,图片文件和视频文件。

图片放在如下位置,大家可以按照这个图建好文件夹,实际上会自动创建。

Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练

这是xml文件的位置

Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练

这是视频文件的位置

Flow-Guided-Feature-Aggregation-的安装配置,demo运行,以及采用少量ILSVRC2015 VID数据集在其中训练

放好以后,需要修改Flow-Guided-Feature-Aggregation\experiments\fgfa_rfcn\cfgs下的fgfa_rfcn_vid_demo.yaml文件,

找到dataset下的image_set,改成之前新建的VID_train_15frames_PART。

这过程中可能会有其他的小Bug,有问题欢迎下方留言,

同时需要下载好train的训练权重https://blog.****.net/weixin_42258492/article/details/105811423  。

然后就可以运行了!!!!!!