Implementation of "Efficient Regional Memory Network for Video Object Segmentation" (Xie et al., CVPR 2021).

Related tags

Deep Learning RMNet
Overview

RMNet

This repository contains the source code for the paper Efficient Regional Memory Network for Video Object Segmentation.

Language grade: Python Total alerts

Overview

Cite this work

@inproceedings{xie2021efficient,
  title={Efficient Regional Memory Network for Video Object Segmentation},
  author={Xie, Haozhe and 
          Yao, Hongxun and 
          Zhou, Shangchen and 
          Zhang, Shengping and 
          Sun, Wenxiu},
  booktitle={CVPR},
  year={2021}
}

Datasets

We use the ECSSD, COCO, PASCAL VOC, MSRA10K, DAVIS, and YouTube-VOS datasets in our experiments, which are available below:

Pretrained Models

The pretrained models for DAVIS and YouTube-VOS are available as follows:

Prerequisites

Clone the Code Repository

git clone https://github.com/hzxie/RMNet.git

Install Python Denpendencies

cd RMNet
pip install -r requirements.txt

Build PyTorch Extensions

NOTE: PyTorch >= 1.4, CUDA >= 9.0 and GCC >= 4.9 are required.

RMNET_HOME=`pwd`

cd $RMNET_HOME/extensions/reg_att_map_generator
python setup.py install --user

cd $RMNET_HOME/extensions/flow_affine_transformation
python setup.py install --user

Precompute the Optical Flow

Update Settings in config.py

You need to update the file path of the datasets:

__C.DATASETS                                     = edict()
__C.DATASETS.DAVIS                               = edict()
__C.DATASETS.DAVIS.INDEXING_FILE_PATH            = './datasets/DAVIS.json'
__C.DATASETS.DAVIS.IMG_FILE_PATH                 = '/path/to/Datasets/DAVIS/JPEGImages/480p/%s/%05d.jpg'
__C.DATASETS.DAVIS.ANNOTATION_FILE_PATH          = '/path/to/Datasets/DAVIS/Annotations/480p/%s/%05d.png'
__C.DATASETS.DAVIS.OPTICAL_FLOW_FILE_PATH        = '/path/to/Datasets/DAVIS/OpticalFlows/480p/%s/%05d.flo'
__C.DATASETS.YOUTUBE_VOS                         = edict()
__C.DATASETS.YOUTUBE_VOS.INDEXING_FILE_PATH      = '/path/to/Datasets/YouTubeVOS/%s/meta.json'
__C.DATASETS.YOUTUBE_VOS.IMG_FILE_PATH           = '/path/to/Datasets/YouTubeVOS/%s/JPEGImages/%s/%s.jpg'
__C.DATASETS.YOUTUBE_VOS.ANNOTATION_FILE_PATH    = '/path/to/Datasets/YouTubeVOS/%s/Annotations/%s/%s.png'
__C.DATASETS.YOUTUBE_VOS.OPTICAL_FLOW_FILE_PATH  = '/path/to/Datasets/YouTubeVOS/%s/OpticalFlows/%s/%s.flo'
__C.DATASETS.PASCAL_VOC                          = edict()
__C.DATASETS.PASCAL_VOC.INDEXING_FILE_PATH       = '/path/to/Datasets/voc2012/trainval.txt'
__C.DATASETS.PASCAL_VOC.IMG_FILE_PATH            = '/path/to/Datasets/voc2012/images/%s.jpg'
__C.DATASETS.PASCAL_VOC.ANNOTATION_FILE_PATH     = '/path/to/Datasets/voc2012/masks/%s.png'
__C.DATASETS.ECSSD                               = edict()
__C.DATASETS.ECSSD.N_IMAGES                      = 1000
__C.DATASETS.ECSSD.IMG_FILE_PATH                 = '/path/to/Datasets/ecssd/images/%s.jpg'
__C.DATASETS.ECSSD.ANNOTATION_FILE_PATH          = '/path/to/Datasets/ecssd/masks/%s.png'
__C.DATASETS.MSRA10K                             = edict()
__C.DATASETS.MSRA10K.INDEXING_FILE_PATH          = './datasets/msra10k.txt'
__C.DATASETS.MSRA10K.IMG_FILE_PATH               = '/path/to/Datasets/msra10k/images/%s.jpg'
__C.DATASETS.MSRA10K.ANNOTATION_FILE_PATH        = '/path/to/Datasets/msra10k/masks/%s.png'
__C.DATASETS.MSCOCO                              = edict()
__C.DATASETS.MSCOCO.INDEXING_FILE_PATH           = './datasets/mscoco.txt'
__C.DATASETS.MSCOCO.IMG_FILE_PATH                = '/path/to/Datasets/coco2017/images/train2017/%s.jpg'
__C.DATASETS.MSCOCO.ANNOTATION_FILE_PATH         = '/path/to/Datasets/coco2017/masks/train2017/%s.png'
__C.DATASETS.ADE20K                              = edict()
__C.DATASETS.ADE20K.INDEXING_FILE_PATH           = './datasets/ade20k.txt'
__C.DATASETS.ADE20K.IMG_FILE_PATH                = '/path/to/Datasets/ADE20K_2016_07_26/images/training/%s.jpg'
__C.DATASETS.ADE20K.ANNOTATION_FILE_PATH         = '/path/to/Datasets/ADE20K_2016_07_26/images/training/%s_seg.png'

# Dataset Options: DAVIS, DAVIS_FRAMES, YOUTUBE_VOS, ECSSD, MSCOCO, PASCAL_VOC, MSRA10K, ADE20K
__C.DATASET.TRAIN_DATASET                        = ['ECSSD', 'PASCAL_VOC', 'MSRA10K', 'MSCOCO']  # Pretrain
__C.DATASET.TRAIN_DATASET                        = ['YOUTUBE_VOS', 'DAVISx5']                    # Fine-tune
__C.DATASET.TEST_DATASET                         = 'DAVIS'

# Network Options: RMNet, TinyFlowNet
__C.TRAIN.NETWORK                                = 'RMNet'

Get Started

To train RMNet, you can simply use the following command:

python3 runner.py

To test RMNet, you can use the following command:

python3 runner.py --test --weights=/path/to/pretrained/model.pth

License

This project is open sourced under MIT license.

Comments
  • The problem of the precomputed optical flow

    The problem of the precomputed optical flow

    感谢开源。有一个问题想请教。 光流如果是precompute的话,应该是frame by frame的,即frame_step == 1。 当训练到后期的时候会动态增加frame_step,即可能输入第10,20,30帧数据送网络,frame_step==10,对应的光流输入的是10->20,20->30,但是此时实际输入的光流是19->20,29->30。 不确定是否您做了对应的处理我没看到相应的代码,还是我理解错了离线做光流数据的方式。

    good first issue 
    opened by cctgem 9
  • About training schedule

    About training schedule

    Thank you for your great work and code! I have a question about the training schedule. In the pre-training schedule, is the training protocol exactly identical to the main training stage? For example, the epoch is also 200 epochs for pre-training? Thank you very much!

    opened by chenz97 6
  • reg_att_map_generator.cu(114): error: type name is not allowed

    reg_att_map_generator.cu(114): error: type name is not allowed

    reg_att_map_generator.cu(114): error: a pointer to a bound function may only be used to call the function reg_att_map_generator.cu(114): error: type name is not allowed

    reg_att_map_generator.cu(114): error: expected an expression

    reg_att_map_generator.cu(114): error: a pointer to a bound function may only be used to call the function

    reg_att_map_generator.cu(114): error: type name is not allowed

    reg_att_map_generator.cu(114): error: expected an expression

    reg_att_map_generator.cu(115): error: a pointer to a bound function may only be used to call the function

    reg_att_map_generator.cu(115): error: type name is not allowed

    reg_att_map_generator.cu(115): error: expected an expression

    reg_att_map_generator.cu(115): error: a pointer to a bound function may only be used to call the function

    reg_att_map_generator.cu(115): error: type name is not allowed

    reg_att_map_generator.cu(115): error: expected an expression

    12 errors detected in the compilation of "/tmp/tmpxft_000076b2_00000000-6_reg_att_map_generator.cpp1.ii". error: command '/usr/local/cuda/bin/nvcc' failed with exit status 1

    opened by xjtuwh 4
  • "RuntimeError: Error compiling objects for extension" when compiling reg_att_map_generator

    I'm running python setup.py install with : pytorch 1.7.1, cuda 10.2 and gcc 7.5.0, but it failed with :

    python setup.py install
    running install
    running bdist_egg
    running egg_info
    writing reg_att_map_generator.egg-info/PKG-INFO
    writing dependency_links to reg_att_map_generator.egg-info/dependency_links.txt
    writing top-level names to reg_att_map_generator.egg-info/top_level.txt
    reading manifest file 'reg_att_map_generator.egg-info/SOURCES.txt'
    writing manifest file 'reg_att_map_generator.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-x86_64/egg
    running install_lib
    running build_ext
    building 'reg_att_map_generator' extension
    Emitting ninja build file /home/v-zhaojia/aml_project/DCVOS_rm/RMNet/extensions/reg_att_map_generator/build/temp.linux-x86_64-3.6/build.ninja...
    Compiling objects...
    Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
    [1/1] /usr/bin/nvcc -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/TH -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/THC -I/home/v-zhaojia/.conda/envs/RMNet/include/python3.6m -c -c /home/v-zhaojia/aml_project/DCVOS_rm/RMNet/extensions/reg_att_map_generator/reg_att_map_generator.cu -o /home/v-zhaojia/aml_project/DCVOS_rm/RMNet/extensions/reg_att_map_generator/build/temp.linux-x86_64-3.6/reg_att_map_generator.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=reg_att_map_generator -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_60,code=sm_60 -std=c++14
    FAILED: /home/v-zhaojia/aml_project/DCVOS_rm/RMNet/extensions/reg_att_map_generator/build/temp.linux-x86_64-3.6/reg_att_map_generator.o
    /usr/bin/nvcc -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/TH -I/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/THC -I/home/v-zhaojia/.conda/envs/RMNet/include/python3.6m -c -c /home/v-zhaojia/aml_project/DCVOS_rm/RMNet/extensions/reg_att_map_generator/reg_att_map_generator.cu -o /home/v-zhaojia/aml_project/DCVOS_rm/RMNet/extensions/reg_att_map_generator/build/temp.linux-x86_64-3.6/reg_att_map_generator.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=reg_att_map_generator -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_60,code=sm_60 -std=c++14
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/core/boxing/impl/boxing.h(100): warning: integer conversion resulted in a change of sign
    
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/core/op_registration/op_whitelist.h(39): warning: integer conversion resulted in a change of sign
    
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/core/builtin_function.h(97): warning: statement is unreachable
    
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/core/boxing/impl/boxing.h(100): warning: integer conversion resulted in a change of sign
    
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/core/op_registration/op_whitelist.h(39): warning: integer conversion resulted in a change of sign
    
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/core/builtin_function.h(97): warning: statement is unreachable
    
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {std::tuple<at::Tensor, at::Tensor, at::Tensor>}; bool <anonymous> = true; _Elements = {at::Tensor, at::Tensor, at::Tensor}]’:
    /usr/include/c++/6/tuple:626:248:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), at::Tensor, at::Tensor, at::Tensor>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {std::tuple<at::Tensor, at::Tensor, at::Tensor>}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), at::Tensor, at::Tensor, at::Tensor>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1396:58:   required from ‘constexpr std::tuple<typename std::__decay_and_strip<_Elements>::__type ...> std::make_tuple(_Elements&& ...) [with _Elements = {const at::Tensor&, const at::Tensor&, const at::Tensor&}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/ExpandUtils.h:93:58:   required from here
    /usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding ‘std::is_constructible<_Elements, _UElements&&>’
           return __and_<is_constructible<_Elements, _UElements&&>...>::value;
                                                                       ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_ImplicitlyMoveConvertibleTuple() [with _UElements = {std::tuple<at::Tensor, at::Tensor, at::Tensor>}; bool <anonymous> = true; _Elements = {at::Tensor, at::Tensor, at::Tensor}]’:
    /usr/include/c++/6/tuple:626:362:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), at::Tensor, at::Tensor, at::Tensor>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {std::tuple<at::Tensor, at::Tensor, at::Tensor>}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), at::Tensor, at::Tensor, at::Tensor>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1396:58:   required from ‘constexpr std::tuple<typename std::__decay_and_strip<_Elements>::__type ...> std::make_tuple(_Elements&& ...) [with _Elements = {const at::Tensor&, const at::Tensor&, const at::Tensor&}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/ExpandUtils.h:93:58:   required from here
    /usr/include/c++/6/tuple:489:65: error: mismatched argument pack lengths while expanding ‘std::is_convertible<_UElements&&, _Elements>’
           return __and_<is_convertible<_UElements&&, _Elements>...>::value;
                                                                     ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_NonNestedTuple() [with _SrcTuple = const std::tuple<at::Tensor, at::Tensor, at::Tensor>&; bool <anonymous> = true; _Elements = {at::Tensor, at::Tensor, at::Tensor}]’:
    /usr/include/c++/6/tuple:662:419:   required by substitution of ‘template<class ... _UElements, class _Dummy, typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), at::Tensor, at::Tensor, at::Tensor>::_NonNestedTuple<const tuple<_Elements ...>&>()), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(const std::tuple<_Args1 ...>&) [with _UElements = {at::Tensor, at::Tensor, at::Tensor}; _Dummy = void; typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), at::Tensor, at::Tensor, at::Tensor>::_NonNestedTuple<const tuple<_Elements ...>&>()), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1396:58:   required from ‘constexpr std::tuple<typename std::__decay_and_strip<_Elements>::__type ...> std::make_tuple(_Elements&& ...) [with _Elements = {const at::Tensor&, const at::Tensor&, const at::Tensor&}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/ExpandUtils.h:93:58:   required from here
    /usr/include/c++/6/tuple:495:244: error: wrong number of template arguments (4, should be 2)
           return  __and_<__not_<is_same<tuple<_Elements...>,
                                                                                                                                                                                                                                                        ^
    /usr/include/c++/6/type_traits:1558:8: note: provided for ‘template<class _From, class _To> struct std::is_convertible’
         struct is_convertible
            ^~~~~~~~~~~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_NonNestedTuple() [with _SrcTuple = std::tuple<at::Tensor, at::Tensor, at::Tensor>&&; bool <anonymous> = true; _Elements = {at::Tensor, at::Tensor, at::Tensor}]’:
    /usr/include/c++/6/tuple:686:422:   required by substitution of ‘template<class ... _UElements, class _Dummy, typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), at::Tensor, at::Tensor, at::Tensor>::_NonNestedTuple<tuple<_Elements ...>&&>()), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(std::tuple<_Args1 ...>&&) [with _UElements = {at::Tensor, at::Tensor, at::Tensor}; _Dummy = void; typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), at::Tensor, at::Tensor, at::Tensor>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), at::Tensor, at::Tensor, at::Tensor>::_NonNestedTuple<tuple<_Elements ...>&&>()), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1396:58:   required from ‘constexpr std::tuple<typename std::__decay_and_strip<_Elements>::__type ...> std::make_tuple(_Elements&& ...) [with _Elements = {const at::Tensor&, const at::Tensor&, const at::Tensor&}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/ATen/ExpandUtils.h:93:58:   required from here
    /usr/include/c++/6/tuple:495:244: error: wrong number of template arguments (4, should be 2)
           return  __and_<__not_<is_same<tuple<_Elements...>,
                                                                                                                                                                                                                                                        ^
    /usr/include/c++/6/type_traits:1558:8: note: provided for ‘template<class _From, class _To> struct std::is_convertible’
         struct is_convertible
            ^~~~~~~~~~~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {const c10::nullopt_t&}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:248:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {const c10::nullopt_t&}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = const c10::nullopt_t&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1067:8:   required from ‘struct std::__is_direct_constructible_new<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1075:8:   required from ‘struct std::__is_direct_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1115:8:   required from ‘struct std::__is_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1126:8:   required from ‘struct std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:339:77:   required by substitution of ‘template<class U, typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> > constexpr c10::optional<T>::optional(U&&) [with U = const c10::nullopt_t&; typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding ‘std::is_constructible<_Elements, _UElements&&>’
           return __and_<is_constructible<_Elements, _UElements&&>...>::value;
                                                                       ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_ImplicitlyMoveConvertibleTuple() [with _UElements = {const c10::nullopt_t&}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:362:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {const c10::nullopt_t&}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = const c10::nullopt_t&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1067:8:   required from ‘struct std::__is_direct_constructible_new<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1075:8:   required from ‘struct std::__is_direct_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1115:8:   required from ‘struct std::__is_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /usr/include/c++/6/type_traits:1126:8:   required from ‘struct std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, const c10::nullopt_t&>’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:339:77:   required by substitution of ‘template<class U, typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> > constexpr c10::optional<T>::optional(U&&) [with U = const c10::nullopt_t&; typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:489:65: error: mismatched argument pack lengths while expanding ‘std::is_convertible<_UElements&&, _Elements>’
           return __and_<is_convertible<_UElements&&, _Elements>...>::value;
                                                                     ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {const std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:248:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {const std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:314:67:   required from ‘constexpr c10::optional<T>::optional(c10::nullopt_t) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding ‘std::is_constructible<_Elements, _UElements&&>’
           return __and_<is_constructible<_Elements, _UElements&&>...>::value;
                                                                       ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_ImplicitlyMoveConvertibleTuple() [with _UElements = {const std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:362:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {const std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:314:67:   required from ‘constexpr c10::optional<T>::optional(c10::nullopt_t) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:489:65: error: mismatched argument pack lengths while expanding ‘std::is_convertible<_UElements&&, _Elements>’
           return __and_<is_convertible<_UElements&&, _Elements>...>::value;
                                                                     ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_NonNestedTuple() [with _SrcTuple = const std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:662:419:   required by substitution of ‘template<class ... _UElements, class _Dummy, typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NonNestedTuple<const tuple<_Elements ...>&>()), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(const std::tuple<_Args1 ...>&) [with _UElements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}; _Dummy = void; typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NonNestedTuple<const tuple<_Elements ...>&>()), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:314:67:   required from ‘constexpr c10::optional<T>::optional(c10::nullopt_t) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:495:244: error: wrong number of template arguments (4, should be 2)
           return  __and_<__not_<is_same<tuple<_Elements...>,
                                                                                                                                                                                                                                                        ^
    /usr/include/c++/6/type_traits:1558:8: note: provided for ‘template<class _From, class _To> struct std::is_convertible’
         struct is_convertible
            ^~~~~~~~~~~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:248:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1067:8:   required from ‘struct std::__is_direct_constructible_new<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1075:8:   required from ‘struct std::__is_direct_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1115:8:   required from ‘struct std::__is_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1126:8:   required from ‘struct std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:339:77:   required by substitution of ‘template<class U, typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> > constexpr c10::optional<T>::optional(U&&) [with U = c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >; typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding ‘std::is_constructible<_Elements, _UElements&&>’
           return __and_<is_constructible<_Elements, _UElements&&>...>::value;
                                                                       ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_ImplicitlyMoveConvertibleTuple() [with _UElements = {c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:362:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1067:8:   required from ‘struct std::__is_direct_constructible_new<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1075:8:   required from ‘struct std::__is_direct_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1115:8:   required from ‘struct std::__is_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /usr/include/c++/6/type_traits:1126:8:   required from ‘struct std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >&&>’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:339:77:   required by substitution of ‘template<class U, typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> > constexpr c10::optional<T>::optional(U&&) [with U = c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >; typename std::enable_if<(((std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, U&&>::value && (! std::is_same<typename std::decay<_Tp>::type, c10::in_place_t>::value)) && (! std::is_same<typename std::decay<_Tp>::type, c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > >::value)) && std::is_convertible<U&&, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >::value), bool>::type <anonymous> = <missing>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:489:65: error: mismatched argument pack lengths while expanding ‘std::is_convertible<_UElements&&, _Elements>’
           return __and_<is_convertible<_UElements&&, _Elements>...>::value;
                                                                     ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:248:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:1067:8:   [ skipping 4 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>, std::__is_nt_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&> >’
    /usr/include/c++/6/type_traits:1211:8:   required from ‘struct std::is_nothrow_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:1242:8:   required from ‘struct std::__is_nothrow_move_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, true>’
    /usr/include/c++/6/type_traits:1248:8:   required from ‘struct std::is_nothrow_move_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:323:1:   required from ‘c10::optional<T>::optional(c10::optional<T>&&) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding ‘std::is_constructible<_Elements, _UElements&&>’
           return __and_<is_constructible<_Elements, _UElements&&>...>::value;
                                                                       ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_ImplicitlyMoveConvertibleTuple() [with _UElements = {std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>}; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:626:362:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (3ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:1067:8:   [ skipping 4 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>, std::__is_nt_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&> >’
    /usr/include/c++/6/type_traits:1211:8:   required from ‘struct std::is_nothrow_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:1242:8:   required from ‘struct std::__is_nothrow_move_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, true>’
    /usr/include/c++/6/type_traits:1248:8:   required from ‘struct std::is_nothrow_move_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:323:1:   required from ‘c10::optional<T>::optional(c10::optional<T>&&) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:489:65: error: mismatched argument pack lengths while expanding ‘std::is_convertible<_UElements&&, _Elements>’
           return __and_<is_convertible<_UElements&&, _Elements>...>::value;
                                                                     ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_NonNestedTuple() [with _SrcTuple = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&; bool <anonymous> = true; _Elements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}]’:
    /usr/include/c++/6/tuple:686:422:   required by substitution of ‘template<class ... _UElements, class _Dummy, typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NonNestedTuple<tuple<_Elements ...>&&>()), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(std::tuple<_Args1 ...>&&) [with _UElements = {std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int}; _Dummy = void; typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>::_NonNestedTuple<tuple<_Elements ...>&&>()), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/type_traits:970:16:   required by substitution of ‘template<class _Tp, class _Arg, class> static std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>; _Arg = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&; <template-parameter-1-3> = <missing>]’
    /usr/include/c++/6/type_traits:981:40:   required from ‘struct std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_destructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >, std::__is_direct_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&> >’
    /usr/include/c++/6/type_traits:985:8:   required from ‘struct std::__is_direct_constructible_new_safe<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:1067:8:   [ skipping 4 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
    /usr/include/c++/6/type_traits:143:8:   required from ‘struct std::__and_<std::is_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>, std::__is_nt_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&> >’
    /usr/include/c++/6/type_traits:1211:8:   required from ‘struct std::is_nothrow_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>&&>’
    /usr/include/c++/6/type_traits:1242:8:   required from ‘struct std::__is_nothrow_move_constructible_impl<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>, true>’
    /usr/include/c++/6/type_traits:1248:8:   required from ‘struct std::is_nothrow_move_constructible<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> >’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:323:1:   required from ‘c10::optional<T>::optional(c10::optional<T>&&) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/frontend/source_range.h:147:13:   required from here
    /usr/include/c++/6/tuple:495:244: error: wrong number of template arguments (4, should be 2)
           return  __and_<__not_<is_same<tuple<_Elements...>,
                                                                                                                                                                                                                                                        ^
    /usr/include/c++/6/type_traits:1558:8: note: provided for ‘template<class _From, class _To> struct std::is_convertible’
         struct is_convertible
            ^~~~~~~~~~~~~~
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h: In member function ‘c10::optional<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int> > torch::jit::SourceRange::file_line_col() const’:
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/Optional.h:314:11: note:   after user-defined conversion: constexpr c10::optional<T>::optional(c10::nullopt_t) [with T = std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, long unsigned int>]
       constexpr optional(nullopt_t) noexcept : OptionalBase<T>(){};
               ^~~~~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_MoveConstructibleTuple() [with _UElements = {std::tuple<const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>}; bool <anonymous> = true; _Elements = {const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&}]’:
    /usr/include/c++/6/tuple:626:248:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (4ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {std::tuple<const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (4ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1545:43:   required from ‘constexpr std::tuple<_Elements& ...> std::tie(_Elements& ...) [with _Elements = {const c10::optional<signed char>, const c10::VaryingShape<long int>, const c10::VaryingShape<long int>, const c10::optional<bool>}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/hash.h:139:58:   required from ‘size_t c10::get_hash(const Types& ...) [with Types = {c10::optional<signed char>, c10::VaryingShape<long int>, c10::VaryingShape<long int>, c10::optional<bool>}; size_t = long unsigned int]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/runtime/argument_spec.h:458:238:   required from here
    /usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding ‘std::is_constructible<_Elements, _UElements&&>’
           return __and_<is_constructible<_Elements, _UElements&&>...>::value;
                                                                       ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_ImplicitlyMoveConvertibleTuple() [with _UElements = {std::tuple<const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>}; bool <anonymous> = true; _Elements = {const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&}]’:
    /usr/include/c++/6/tuple:626:362:   required by substitution of ‘template<class ... _UElements, typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (4ul >= 1)), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {std::tuple<const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>}; typename std::enable_if<(((std::_TC<(sizeof... (_UElements) == 1), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NotSameTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_MoveConstructibleTuple<_UElements ...>()) && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && (4ul >= 1)), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1545:43:   required from ‘constexpr std::tuple<_Elements& ...> std::tie(_Elements& ...) [with _Elements = {const c10::optional<signed char>, const c10::VaryingShape<long int>, const c10::VaryingShape<long int>, const c10::optional<bool>}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/hash.h:139:58:   required from ‘size_t c10::get_hash(const Types& ...) [with Types = {c10::optional<signed char>, c10::VaryingShape<long int>, c10::VaryingShape<long int>, c10::optional<bool>}; size_t = long unsigned int]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/runtime/argument_spec.h:458:238:   required from here
    /usr/include/c++/6/tuple:489:65: error: mismatched argument pack lengths while expanding ‘std::is_convertible<_UElements&&, _Elements>’
           return __and_<is_convertible<_UElements&&, _Elements>...>::value;
                                                                     ^~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_NonNestedTuple() [with _SrcTuple = const std::tuple<const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>&; bool <anonymous> = true; _Elements = {const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&}]’:
    /usr/include/c++/6/tuple:662:419:   required by substitution of ‘template<class ... _UElements, class _Dummy, typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NonNestedTuple<const tuple<_Elements ...>&>()), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(const std::tuple<_Args1 ...>&) [with _UElements = {const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&}; _Dummy = void; typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NonNestedTuple<const tuple<_Elements ...>&>()), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1545:43:   required from ‘constexpr std::tuple<_Elements& ...> std::tie(_Elements& ...) [with _Elements = {const c10::optional<signed char>, const c10::VaryingShape<long int>, const c10::VaryingShape<long int>, const c10::optional<bool>}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/hash.h:139:58:   required from ‘size_t c10::get_hash(const Types& ...) [with Types = {c10::optional<signed char>, c10::VaryingShape<long int>, c10::VaryingShape<long int>, c10::optional<bool>}; size_t = long unsigned int]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/runtime/argument_spec.h:458:238:   required from here
    /usr/include/c++/6/tuple:495:244: error: wrong number of template arguments (5, should be 2)
           return  __and_<__not_<is_same<tuple<_Elements...>,
                                                                                                                                                                                                                                                        ^
    /usr/include/c++/6/type_traits:1558:8: note: provided for ‘template<class _From, class _To> struct std::is_convertible’
         struct is_convertible
            ^~~~~~~~~~~~~~
    /usr/include/c++/6/tuple: In instantiation of ‘static constexpr bool std::_TC<<anonymous>, _Elements>::_NonNestedTuple() [with _SrcTuple = std::tuple<const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>&&; bool <anonymous> = true; _Elements = {const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&}]’:
    /usr/include/c++/6/tuple:686:422:   required by substitution of ‘template<class ... _UElements, class _Dummy, typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NonNestedTuple<tuple<_Elements ...>&&>()), bool>::type <anonymous> > constexpr std::tuple< <template-parameter-1-1> >::tuple(std::tuple<_Args1 ...>&&) [with _UElements = {const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&}; _Dummy = void; typename std::enable_if<((std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_MoveConstructibleTuple<_UElements ...>() && std::_TC<(1ul == sizeof... (_UElements)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_ImplicitlyMoveConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (1ul == 1)), const c10::optional<signed char>&, const c10::VaryingShape<long int>&, const c10::VaryingShape<long int>&, const c10::optional<bool>&>::_NonNestedTuple<tuple<_Elements ...>&&>()), bool>::type <anonymous> = <missing>]’
    /usr/include/c++/6/tuple:1545:43:   required from ‘constexpr std::tuple<_Elements& ...> std::tie(_Elements& ...) [with _Elements = {const c10::optional<signed char>, const c10::VaryingShape<long int>, const c10::VaryingShape<long int>, const c10::optional<bool>}]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/c10/util/hash.h:139:58:   required from ‘size_t c10::get_hash(const Types& ...) [with Types = {c10::optional<signed char>, c10::VaryingShape<long int>, c10::VaryingShape<long int>, c10::optional<bool>}; size_t = long unsigned int]’
    /home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/include/torch/csrc/jit/runtime/argument_spec.h:458:238:   required from here
    /usr/include/c++/6/tuple:495:244: error: wrong number of template arguments (5, should be 2)
           return  __and_<__not_<is_same<tuple<_Elements...>,
                                                                                                                                                                                                                                                        ^
    /usr/include/c++/6/type_traits:1558:8: note: provided for ‘template<class _From, class _To> struct std::is_convertible’
         struct is_convertible
            ^~~~~~~~~~~~~~
    ninja: build stopped: subcommand failed.
    Traceback (most recent call last):
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 1539, in _run_ninja_build
        env=env)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/subprocess.py", line 438, in run
        output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "setup.py", line 17, in <module>
        cmdclass={'build_ext': BuildExtension})
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/__init__.py", line 153, in setup
        return distutils.core.setup(**attrs)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/install.py", line 67, in run
        self.do_egg_install()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/install.py", line 109, in do_egg_install
        self.run_command('bdist_egg')
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 164, in run
        cmd = self.call_command('install_lib', warn_dir=0)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 150, in call_command
        self.run_command(cmdname)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/install_lib.py", line 11, in run
        self.build()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/command/install_lib.py", line 107, in build
        self.run_command('build_ext')
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/build_ext.py", line 79, in run
        _build_ext.run(self)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/command/build_ext.py", line 339, in run
        self.build_extensions()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 670, in build_extensions
        build_ext.build_extensions(self)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/command/build_ext.py", line 448, in build_extensions
        self._build_extensions_serial()
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/command/build_ext.py", line 473, in _build_extensions_serial
        self.build_extension(ext)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/setuptools/command/build_ext.py", line 202, in build_extension
        _build_ext.build_extension(self, ext)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/distutils/command/build_ext.py", line 533, in build_extension
        depends=ext.depends)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 500, in unix_wrap_ninja_compile
        with_cuda=with_cuda)
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 1255, in _write_ninja_file_and_compile_objects
        error_prefix='Error compiling objects for extension')
      File "/home/v-zhaojia/.conda/envs/RMNet/lib/python3.6/site-packages/torch/utils/cpp_extension.py", line 1555, in _run_ninja_build
        raise RuntimeError(message) from e
    RuntimeError: Error compiling objects for extension
    
    

    I don't know what's wrong :( , can you help me?

    opened by jzyustc 3
  • How can I use .flo file instead of tflownet?!

    How can I use .flo file instead of tflownet?!

    I've made .flo file with the flownet2.0CSS. But I cannot find where to fix the code if I want to use .flo file as estimated optical flow instead of output of the tflownet.

    Can you please let me know where to look at?

    Thanks in advance, Joseph

    • Is changing est_flows to optical_flows enough?
    opened by JosephKKim 2
  • RMNet26?

    RMNet26?

    Hello, I found that you use resnet50. What should I do to use resnet18? I see that rmnet26 is also mentioned in your paper. Do you have the source code?

    opened by lrfighting 1
  • About RegionalAttentionMapGenerator()

    About RegionalAttentionMapGenerator()

    Hi, thank you for your great work. I have some questions about the class RegionalAttentionMapGenerator().

    class RegionalAttentionMapGenerator(torch.nn.Module):
        def __init__(self):
            super(RegionalAttentionMapGenerator, self).__init__()
    
        def forward(self, mask, prob_threshold=0.5, n_pts_threshold=10, n_bbox_loose_pixels=64):
            return RegionalAttentionMapGeneratorFunction.apply(mask, prob_threshold, n_pts_threshold,
                                                               n_bbox_loose_pixels)
    

    https://github.com/hzxie/RMNet/blob/master/extensions/reg_att_map_generator/init.py what does the parametersn_pts_threshold and n_bbox_loose_pixelsmean?

    opened by YinWeiling 1
  • Hyperparameters for static image pretraining

    Hyperparameters for static image pretraining

    I wanted to know what changes are necessary to train the first step on static images. I commented out the following line from config.yaml:

    __C.DATASET.TRAIN_DATASET = ['YOUTUBE_VOS', 'DAVISx5']

    So that the image datasets are loaded. Is the number of epochs also different? I'm confirming because the image dataset has 27728 batches per epoch and training this for 200 epochs is extremely lengthy.

    opened by Ali2500 1
  • Pretrained models for YouTube-VOS dataset

    Pretrained models for YouTube-VOS dataset

    Thanks for sharing such great work about video object segmentation and providing the detailed instructions for the code.

    1. Unfortunately, I find that the link for pretrained YouTube-VOS model is invalid. Have you finished retraining it? I'm looking forward to this model.
    2. A question about the training detail. For the training on the YouTube-VOS dataset, do you use the annotated frames or all the frames in the training set? As we know, the training set of this dataset is annotated every 5 frames, e.g. for the image id from 0 to 9, the No.0 and No.5 images are annotated with segmentation masks.

    Thanks!

    opened by XiaoqiangZhou 1
  • Training protocols for youtube finetuning

    Training protocols for youtube finetuning

    Sorry to hear about the loss of the pretrained youtube-vos pretrained model. If you could provide the detailed training protocols for the youtube finetune so I may help you to reproduce the result.

    opened by deepcharle 1
  • Problem with building

    Problem with building "reg_att_map_generator" extension

    I'm running in colab: %cd /content/RMNet/extensions/reg_att_map_generator !python setup.py install --user

    Help please? what I'm doing wrong?

    Env: GPU runtime Name: torch Version: 1.8.1+cu101 Cuda compilation tools, release 11.0, V11.0.221 Build cuda_11.0_bu.TC445_37.28845127_0 gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

    got trace:

    /content/RMNet/extensions/reg_att_map_generator No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda' running install running bdist_egg running egg_info writing reg_att_map_generator.egg-info/PKG-INFO writing dependency_links to reg_att_map_generator.egg-info/dependency_links.txt writing top-level names to reg_att_map_generator.egg-info/top_level.txt /usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py:369: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend. warnings.warn(msg.format('we could not find ninja.')) writing manifest file 'reg_att_map_generator.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_ext building 'reg_att_map_generator' extension x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fdebug-prefix-map=/build/python3.7-OGiuun/python3.7-3.7.10=. -fstack-protector-strong -Wformat -Werror=format-security -g -fdebug-prefix-map=/build/python3.7-OGiuun/python3.7-3.7.10=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/lib/python3.7/dist-packages/torch/include -I/usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include -I/usr/local/lib/python3.7/dist-packages/torch/include/TH -I/usr/local/lib/python3.7/dist-packages/torch/include/THC -I/usr/local/cuda/include -I/usr/include/python3.7m -c reg_att_map_generator_cuda.cpp -o build/temp.linux-x86_64-3.7/reg_att_map_generator_cuda.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=reg_att_map_generator -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14 In file included from /usr/local/lib/python3.7/dist-packages/torch/include/ATen/Parallel.h:140:0, from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/utils.h:3, from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5, from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/nn.h:3, from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/all.h:13, from /usr/local/lib/python3.7/dist-packages/torch/include/torch/extension.h:4, from reg_att_map_generator_cuda.cpp:10: /usr/local/lib/python3.7/dist-packages/torch/include/ATen/ParallelOpenMP.h:83:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas] #pragma omp parallel for if ((end - begin) >= grain_size)

    Traceback (most recent call last): File "setup.py", line 17, in cmdclass={'build_ext': BuildExtension}) File "/usr/local/lib/python3.7/dist-packages/setuptools/init.py", line 153, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.7/distutils/core.py", line 148, in setup dist.run_commands() File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands self.run_command(cmd) File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/usr/local/lib/python3.7/dist-packages/setuptools/command/install.py", line 67, in run self.do_egg_install() File "/usr/local/lib/python3.7/dist-packages/setuptools/command/install.py", line 109, in do_egg_install self.run_command('bdist_egg') File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/usr/local/lib/python3.7/dist-packages/setuptools/command/bdist_egg.py", line 164, in run cmd = self.call_command('install_lib', warn_dir=0) File "/usr/local/lib/python3.7/dist-packages/setuptools/command/bdist_egg.py", line 150, in call_command self.run_command(cmdname) File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/usr/local/lib/python3.7/dist-packages/setuptools/command/install_lib.py", line 11, in run self.build() File "/usr/lib/python3.7/distutils/command/install_lib.py", line 109, in build self.run_command('build_ext') File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/usr/local/lib/python3.7/dist-packages/setuptools/command/build_ext.py", line 79, in run _build_ext.run(self) File "/usr/local/lib/python3.7/dist-packages/Cython/Distutils/old_build_ext.py", line 186, in run _build_ext.build_ext.run(self) File "/usr/lib/python3.7/distutils/command/build_ext.py", line 340, in run self.build_extensions() File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 708, in build_extensions build_ext.build_extensions(self) File "/usr/local/lib/python3.7/dist-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions _build_ext.build_ext.build_extensions(self) File "/usr/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions self._build_extensions_serial() File "/usr/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial self.build_extension(ext) File "/usr/local/lib/python3.7/dist-packages/setuptools/command/build_ext.py", line 196, in build_extension _build_ext.build_extension(self, ext) File "/usr/lib/python3.7/distutils/command/build_ext.py", line 534, in build_extension depends=ext.depends) File "/usr/lib/python3.7/distutils/ccompiler.py", line 574, in compile self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 456, in unix_wrap_single_compile cflags = unix_cuda_flags(cflags) File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 423, in unix_cuda_flags cflags + _get_cuda_arch_flags(cflags)) File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 1561, in _get_cuda_arch_flags arch_list[-1] += '+PTX' IndexError: list index out of range

    opened by yakovdom 1
  • About training process

    About training process

    Thanks for your job! I have some problem about the training process.

    1. The training of tiny_flownet. According to the implementation details section in paper, the tiny_flownet and the STM is co-trained during both pretraining on static images and fintuning on video datasets such as DAVIS. But according to the code and other issues, the tiny_flownet and STM is trained separately. And you didn't inform the order of the training of tiny_flownet and STM. I wonder how you train the model. Firstly train the tiny flownet on static images and the train STM on static images, then finetune the STM on video datasets. Or some other order?
    2. For each training period, the hypeparameter and training epoch ? I would appreciate it if you could reply.
    opened by LingyiHongfd 0
  • Does Table 5 consider the computing time of optical flow?

    Does Table 5 consider the computing time of optical flow?

    Hi,

    Thank you for your great work.

    In table 5, the cross attention computing time is reduced significantly. May I know did you consider the computing time of optical flow in Table 5 since I noticed that tinyflownet also requires 10ms to compute, which is the same as the baseline cross attention computing time?

    Thank you.

    opened by bo-miao 0
  • Caught TypeError in DataLoader worker process 0 in DataLoader

    Caught TypeError in DataLoader worker process 0 in DataLoader

    when I load Davis_dataset it always reports "Caught TypeError in DataLoader worker process 0. " in test.py", line 78, "in test_net for idx, (video_name, n_objects, frames, masks, optical_flows) in enumerate(test_data_loader):"

    opened by 1359347500cwc 2
Owner
Haozhe Xie
I am a Ph.D. candidate in Harbin Institute of Technology, focusing on 3D reconstruction, video segmentation, and computer vision.
Haozhe Xie
git git《Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking》(CVPR 2021) GitHub:git2] 《Masksembles for Uncertainty Estimation》(CVPR 2021) GitHub:git3]

Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking Ning Wang, Wengang Zhou, Jie Wang, and Houqiang Li Accepted by CVPR

NingWang 236 Dec 22, 2022
[CVPR 21] Vectorization and Rasterization: Self-Supervised Learning for Sketch and Handwriting, IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2021.

Vectorization and Rasterization: Self-Supervised Learning for Sketch and Handwriting, CVPR 2021. Ayan Kumar Bhunia, Pinaki nath Chowdhury, Yongxin Yan

Ayan Kumar Bhunia 44 Dec 12, 2022
[CVPR 2022] CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation

CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation Prerequisite Please create and activate the following conda envrionment. To r

Qin Wang 87 Jan 8, 2023
PyTorch implementation of paper "Neural Scene Flow Fields for Space-Time View Synthesis of Dynamic Scenes", CVPR 2021

Neural Scene Flow Fields PyTorch implementation of paper "Neural Scene Flow Fields for Space-Time View Synthesis of Dynamic Scenes", CVPR 20

Zhengqi Li 585 Jan 4, 2023
Official pytorch implementation of paper "Inception Convolution with Efficient Dilation Search" (CVPR 2021 Oral).

IC-Conv This repository is an official implementation of the paper Inception Convolution with Efficient Dilation Search. Getting Started Download Imag

Jie Liu 111 Dec 31, 2022
Official implementation for (Refine Myself by Teaching Myself : Feature Refinement via Self-Knowledge Distillation, CVPR-2021)

FRSKD Official implementation for Refine Myself by Teaching Myself : Feature Refinement via Self-Knowledge Distillation (CVPR-2021) Requirements Pytho

null 75 Dec 28, 2022
Official PyTorch implementation of RobustNet (CVPR 2021 Oral)

RobustNet (CVPR 2021 Oral): Official Project Webpage Codes and pretrained models will be released soon. This repository provides the official PyTorch

Sungha Choi 173 Dec 21, 2022
PyTorch implementation for COMPLETER: Incomplete Multi-view Clustering via Contrastive Prediction (CVPR 2021)

Completer: Incomplete Multi-view Clustering via Contrastive Prediction This repo contains the code and data of the following paper accepted by CVPR 20

XLearning Group 72 Dec 7, 2022
This is an official implementation of our CVPR 2021 paper "Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression" (https://arxiv.org/abs/2104.02300)

Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression Introduction In this paper, we are interested in the bottom-up paradigm of estima

HRNet 367 Dec 27, 2022
Implementation for the paper SMPLicit: Topology-aware Generative Model for Clothed People (CVPR 2021)

SMPLicit: Topology-aware Generative Model for Clothed People [Project] [arXiv] License Software Copyright License for non-commercial scientific resear

Enric Corona 225 Dec 13, 2022
The official implementation of our CVPR 2021 paper - Hybrid Rotation Averaging: A Fast and Robust Rotation Averaging Approach

Graph Optimizer This repo contains the official implementation of our CVPR 2021 paper - Hybrid Rotation Averaging: A Fast and Robust Rotation Averagin

Chenyu 109 Dec 23, 2022
Official pytorch implementation of Rainbow Memory (CVPR 2021)

Rainbow Memory: Continual Learning with a Memory of Diverse Samples

Clova AI Research 91 Dec 17, 2022
Implementation for Panoptic-PolarNet (CVPR 2021)

Panoptic-PolarNet This is the official implementation of Panoptic-PolarNet. [ArXiv paper] Introduction Panoptic-PolarNet is a fast and robust LiDAR po

Zixiang Zhou 126 Jan 1, 2023
Implementation of "Distribution Alignment: A Unified Framework for Long-tail Visual Recognition"(CVPR 2021)

Implementation of "Distribution Alignment: A Unified Framework for Long-tail Visual Recognition"(CVPR 2021)

null 105 Nov 7, 2022
Official Pytorch implementation of "Beyond Static Features for Temporally Consistent 3D Human Pose and Shape from a Video", CVPR 2021

TCMR: Beyond Static Features for Temporally Consistent 3D Human Pose and Shape from a Video Qualtitative result Paper teaser video Introduction This r

Hongsuk Choi 215 Jan 6, 2023
Implementation for "Exploiting Aliasing for Manga Restoration" (CVPR 2021)

[CVPR Paper](To appear) | [Project Website](To appear) | BibTex Introduction As a popular entertainment art form, manga enriches the line drawings det

null 133 Dec 15, 2022
Pytorch implementation for "Adversarial Robustness under Long-Tailed Distribution" (CVPR 2021 Oral)

Adversarial Long-Tail This repository contains the PyTorch implementation of the paper: Adversarial Robustness under Long-Tailed Distribution, CVPR 20

Tong WU 89 Dec 15, 2022
Unofficial implementation of the Involution operation from CVPR 2021

involution_pytorch Unofficial PyTorch implementation of "Involution: Inverting the Inherence of Convolution for Visual Recognition" by Li et al. prese

Rishabh Anand 46 Dec 7, 2022
Official Implementation and Dataset of "PPR10K: A Large-Scale Portrait Photo Retouching Dataset with Human-Region Mask and Group-Level Consistency", CVPR 2021

Portrait Photo Retouching with PPR10K Paper | Supplementary Material PPR10K: A Large-Scale Portrait Photo Retouching Dataset with Human-Region Mask an

null 184 Dec 11, 2022