FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 代码及环境配置

为了防止各位研究者在运用代码时出现像我一样的错误,本篇博客,粗讲网络结构,细讲网络代码环境配置过程。在湿胸的帮助下,以及在github上进行提问,终于用着别人的代码,实现了光流预测过程。

Flownet的网络结构

首先在《FlowNet: Learning Optical Flow with Convolutional Networks》这篇文章中,第一次提出用深度学习的方式来进行光流预测,当然因为第一篇,所以有很多的地方相比传统方法,比如deepflow还有epicflow,在效果上还有一定的举例,但因引用深度学习,依旧很受喜欢粗暴的研究者所喜欢,比如我。
Flownet文章中,主要介绍了两种网络。分别为FlowNetSimple(简称FlowNetS)和FlowNetCorr(简称FlowNetC)。

Flownet直接上网络结构图

FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 代码及环境配置
两个方法的最大区别在于,FlowNetSimple直接将第n帧和第n-1帧进行了重合,所以深度为6,也正如名字一般,属于简单方法。而FlowNetCorr则是首先对第n帧和第n-1帧采用卷积的方式提取高阶特征,之后采用块匹配的方式进行融合。至于区别对比文章还没细看,只看了网络结构,细看后更新,这次更新主讲代码环境配置。
Flownet的了解可以参考http://blog.****.net/u013010889/article/details/71189271这篇博客

Flownet2直接上网络结构图

FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 代码及环境配置
Flownet2是一个双塔结构,Flownet2上塔在Flownet的基础上,进行了Stacking过程,俗称堆积过程。就是把FlowNetS和FlowNetC进行堆叠,这是针对大位移的光流预测,至于下塔就是对小位移光流的一个预测网络。
Flownet2的一些讲解可以参看http://blog.****.net/lvhao92/article/details/72899761这篇博客。

得出结论

所以由此可得出结论。我大****真的是人才辈出!!哈哈,好接着进入所有程序猿最喜欢的时刻:

代码的实现!!!

代码下载:
tensorflow:https://github.com/sampepose/flownet2-tf
caffe:https://github.com/lmb-freiburg/flownet2
pytorch的代码github上有flownet的,但flownet2的代码貌似还正在搞,到现在为止至少还是不能用的。

tensorflow版本环境配置

=============================重点=============================
python使用2.7.12或者2.7.13版本都可以。至于2.7的其他版本就不知道了。
tensorflow-gpu一定要用tensorflow-gpu-1.2.1的版本(笔者采用的1.3.0版本的tensorflow一直报错 fatal error: cuda/cuda_config.h: No such file or directory,所以不要倔强,要想用这版代码,就换1.2.1的版本
最后就是cudnn要用 cudnn-8.0-linux-x64-v5.1.tgz.,一定要用v5.1的版本,v5.0版本的cudnn都编译不过去。至于v6.0版本的连tensorflow-gpu-1.2.1安装完都import不出来tensorflow。至于ubuntu的系统,读者采用的ubuntu16.04,在NVIDIA TITAN XP上跑的程序。以上就是flownet2的tensorflow代码实现,按照笔者方法,绝对没毛病!至于他给的权重建议用v*n进行下载,或者留言我,我再创建个百度云盘给你们下。

caffe版本环境配置

至于caffe版本的代码,没什么说的,下下来代码,照着网上配置caffe的流程,把makefile和makefile.config文件中的路径以及有个hdf5的地方改一下,就可以make all了,不过在make runtest的时候可能会报一些线程的错。没什么关系,直接按照里面的readme执行就好了,caffe这种鬼东西真的无力吐槽,祝愿你们在配caffe的时候一帆风顺!还是建议使用tensorflow,让caffe淘汰掉吧!

甩图

笔者愚钝,历经好几天终于实现了flownet2的代码,甩几张图作为结束:
FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 代码及环境配置
FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 代码及环境配置