FlowNetPytorch, 通过Dosovitskiy等实现FlowNet的Pytorch实现

分享于 

6分钟阅读

GitHub

  繁體 雙語
Pytorch implementation of FlowNet by Dosovitskiy et al.
  • 源代码名称:FlowNetPytorch
  • 源代码网址:http://www.github.com/ClementPinard/FlowNetPytorch
  • FlowNetPytorch源代码文档
  • FlowNetPytorch源代码下载
  • Git URL:
    git://www.github.com/ClementPinard/FlowNetPytorch.git
    Git Clone代码到本地:
    git clone http://www.github.com/ClementPinard/FlowNetPytorch
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/ClementPinard/FlowNetPytorch
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    FlowNetPytorch

    通过Dosovitskiy等实现FlowNet的Pytorch实现。

    这个库是由 Alexey Dosovitskiy 等 Torch 实现的 FlowNet插件的一个。 在PyTorch中。请参见这里的Torch 实现

    这段代码主要来自官方的 imagenet示例。 它还没有针对多个GPU进行测试,但是它应该像原始代码一样工作。

    代码提供了一个训练示例,使用的飞椅子数据集,数据增强。 可以在未来添加场景数据流数据集的实现。

    目前提供了两种神经网络模型:

    • FlowNetS
    • FlowNetSBN

    当前没有FlowNetC的实现作为特定的相关层模块需要编写( 可以随意作出贡献) !

    Pretrained模型

    感谢 Kaixhin,你可以在这里下载 FlowNetS ( 来自 caffe,而不是 pytorch ) 的pretrained版本。 这里文件夹还包含从零开始经过训练的网络。

    网络载入时的注意事项

    直接将下载的网络提供给脚本,即使你的桌面环境告诉你,也不需要解压缩它。

    来自caffe的网络上的注释

    这些网络期望在 [-0.5,0.5] ( 与pytorch中的RGB相比) 范围内输入 BGR。 但是,BGR顺序并不是很重要。

    先决条件

    
    pytorch> = 0.3
    
    
    tensorboard-pytorch
    
    
    tensorboardX
    
    
    scipy
    
    
    argparse
    
    
    
    

    基于的飞椅数据集

    首先,你需要下载的飞椅数据集。 它是 ~64GB 大的,我们建议你把它放在硬盘驱动器里。

    main.py 中提供的默认HyperParameters与caffe培训脚本中的相同。

    FlowNetS的示例用法:

    
     python main.py/path/to/flying_chairs/-b8 -j8 -a flownets
    
    
    
    

    如果你使用DataAugmentation来避免数据加载缓慢,则建议你将( 数据线程数) 设置为高。

    有关更多帮助,你可以键入

    
    python main.py -h
    
    
    
    

    可视化训练

    tensorboard pytorch 用于日志记录。 若要可视化结果,只需键入

    
    tensorboard --logdir=/path/to/checkoints
    
    
    
    

    培训结果

    模型可以下载到这里的: 在文件夹里。

    模型使用默认选项进行训练,除非指定。 未使用颜色翘曲。

    Arch学习速率批次大小filename文件名验证 EPE
    FlowNetS1e-482700flownets_EPE1.951.pth.tar1.951
    FlowNetS BN1e-332695flownets_bn_EPE2.459.pth.tar2.459

    注:took训练时间长,结果 worse。 强烈建议不要将它用于飞椅子数据集。

    验证示例

    预测由FlowNetS制作。

    光流量精确编码-> 彩色地图可以在这里找到,这里。

    输入预测 GroundTruth

    转换函数的注释

    为了在输入和目标之间进行相干转换,我们必须定义新的转换。

    流转换

    为了允许数据增加,我们考虑了输入的旋转和翻译及它的目标流图的结果。 为了达到适当的数据增加,这里有一组事情需要处理。

    流映射直接链接到 img1

    如果在img1上应用转换,必须对流映射应用相同的方法,以获得流的相干源点。

    在img1和img2之间进行转换

    给定一个应用于img2的翻译 (tx,ty),我们将

    
    flow[:,:,0] += tx
    
    
    flow[:,:,1] += ty
    
    
    
    
    比例

    在img1和img2上应用缩放参数 alpha的缩放将以相同的量乘以流

     
    flow *= alpha
    
    
    
     
    旋转适用于图像

    通过角度 theta 对两个图像应用的旋转也以相同角度旋转流矢量( flow[i,j] )

    
    for_all i,j flow[i,j] = rotate(flow[i,j], theta)
    
    
    
    rotate: x,y,theta -> (x*cos(theta)-x*sin(theta), y*cos(theta), x*sin(theta))
    
    
    
    
    在img2上的旋转

    我们考虑角度 theta 足够小到线性化 cos(theta) 到 1和 sin(theta)theta

    x 流图( flow[:,:,0] ) 将得到与中心水平轴 j-h/2 距离成比例的偏移

    y 流图( flow[:,:,1] ) 将得到与中心垂直轴 i-w/2 距离成比例的偏移

    
    for_all i,j flow[i,j] += theta*(j-h/2), theta*(i-w/2)
    
    
    
    

    IMP  Implementation  FLOW  DOS  
    相关文章