All Projects → ZENGXH → Dmm_net

ZENGXH / Dmm_net

Differentiable Mask-Matching Network for Video Object Segmentation (ICCV 2019)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Dmm net

Deeplab V3 Plus Cityscapes
mIOU=80.02 on cityscapes. My implementation of deeplabv3+ (also know as 'Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation' based on the dataset of cityscapes).
Stars: ✭ 121 (-12.32%)
Mutual labels:  segmentation
Deeplabv3 mobilenetv2 pytorch
A PyTorch Implementation of MobileNetv2+DeepLabv3
Stars: ✭ 130 (-5.8%)
Mutual labels:  segmentation
Dilation Tensorflow
A native Tensorflow implementation of semantic segmentation according to Multi-Scale Context Aggregation by Dilated Convolutions (2016). Optionally uses the pretrained weights by the authors.
Stars: ✭ 134 (-2.9%)
Mutual labels:  segmentation
Syntok
Text tokenization and sentence segmentation (segtok v2)
Stars: ✭ 123 (-10.87%)
Mutual labels:  segmentation
Sudachidict
A lexicon for Sudachi
Stars: ✭ 127 (-7.97%)
Mutual labels:  segmentation
Machinevision Toolbox Matlab
Machine Vision Toolbox for MATLAB
Stars: ✭ 130 (-5.8%)
Mutual labels:  segmentation
Openvehiclevision
An opensource lib. for vehicle vision applications (written by MATLAB), lane marking detection, road segmentation
Stars: ✭ 120 (-13.04%)
Mutual labels:  segmentation
Deeperlab Pytorch
Segmentation realize Deeperlab only segmentation part
Stars: ✭ 136 (-1.45%)
Mutual labels:  segmentation
Awesome Gan For Medical Imaging
Awesome GAN for Medical Imaging
Stars: ✭ 1,814 (+1214.49%)
Mutual labels:  segmentation
Subword Nmt
Unsupervised Word Segmentation for Neural Machine Translation and Text Generation
Stars: ✭ 1,819 (+1218.12%)
Mutual labels:  segmentation
Hyperdensenet
This repository contains the code of HyperDenseNet, a hyper-densely connected CNN to segment medical images in multi-modal image scenarios.
Stars: ✭ 124 (-10.14%)
Mutual labels:  segmentation
Unet Family
Paper and implementation of UNet-related model.
Stars: ✭ 1,924 (+1294.2%)
Mutual labels:  segmentation
Cam2bev
TensorFlow Implementation for Computing a Semantically Segmented Bird's Eye View (BEV) Image Given the Images of Multiple Vehicle-Mounted Cameras.
Stars: ✭ 129 (-6.52%)
Mutual labels:  segmentation
Fast 3d Pointcloud Segmentation
Fast 3D point cloud segmentation using supervoxels with geometry and color for 3D scene understanding
Stars: ✭ 122 (-11.59%)
Mutual labels:  segmentation
Canet
The code for paper "CANet: Class-Agnostic Segmentation Networks with Iterative Refinement and Attentive Few-Shot Learning"
Stars: ✭ 135 (-2.17%)
Mutual labels:  segmentation
Multi object datasets
Multi-object image datasets with ground-truth segmentation masks and generative factors.
Stars: ✭ 121 (-12.32%)
Mutual labels:  segmentation
Knn Matting
Source Code for KNN Matting, CVPR 2012 / TPAMI 2013. MATLAB code ready to run. Simple and robust implementation under 40 lines.
Stars: ✭ 130 (-5.8%)
Mutual labels:  segmentation
Morfessor
Morfessor is a tool for unsupervised and semi-supervised morphological segmentation
Stars: ✭ 137 (-0.72%)
Mutual labels:  segmentation
Kiu Net Pytorch
Official Pytorch Code of KiU-Net for Image Segmentation - MICCAI 2020 (Oral)
Stars: ✭ 134 (-2.9%)
Mutual labels:  segmentation
Vision4j Collection
Collection of computer vision models, ready to be included in a JVM project
Stars: ✭ 132 (-4.35%)
Mutual labels:  segmentation

DMM-Net: Differentiable Mask-Matching Network for Video Object Segmentation (ICCV 2019)

paper.pdf

Overview

model

Requirements:

  • PyTorch 1.1.0
  • matplotlib 3.0.2
  • not in requirements.txt:
    • cython
    • torchvision 0.2.2 or 0.3.0 if cuda10.0
    • pycocotools # (2.0-py3.7-linux-x86_64)
    • maskrnn-benchmark
    • pyyaml yacs
    • opencv-python scikit-image
    • easydict prettytable lmdb tabulate

Installation

Data

YouTube-VOS

  • Download the YouTube-VOS dataset from their website. Please note that our code is trained and tested only on YouTube-VOS dataset for 2018 version. There is a newer version released 2019 but it is not tested.

  • We recommend to symlink the path to the youtube dataset to datasets/ as follows

cd datasets 
ln -s path/to/youtubeVOS youtubeVOS 
  • The files structure should look like:
DMM/datasets 
       ├── youtubeVOS
       │       ├── train 
       │       │      ├── JPEGImages
       │       │      │        ├── ... 
       │       │      ├── Annotations 
       │       │      │        ├── ... 
       │       ├── valid 
       │       │      ├── JPEGImages
       │       │      │        ├── ... 
       │       │      ├── Annotations 
       │       │      │        ├── ... 
       │       ├── train_testdev_ot (optional)
       │       │      ├── JPEGImages
       │       │      │        ├── ... 
       │       │      ├── Annotations 
       │       │      │        ├── ... 
  • the train_testdev_ot data can be downloaded from link

Prepare proposals

Option1: Download the extracted file

for evaluation

  • To eval DMMnet on youtubeVOS with the fine-tuned proposal net, use the propsoals generated by our fine-tuned Mask R-CNN model:
    mkdir -p experiments/proposals/ 
    cd experiments/proposals/  
    wget https://www.cs.toronto.edu/~xiaohui/dmm/proposals/proposals_ytb_train.tar.gz
    tar xzf proposals_ytb_train.tar.gz 
    

for training

  • To train the DMMnet on youtubeVOS train-train split, need to prepare 1. proposals for both train-train and train-val split extracted by coco pretrained X101 Mask R-CNN model

  • proposals can be downloaded:

     mkdir -p experiments/proposals/  
     cd experiments/proposals/ 
     wget http://www.cs.toronto.edu/~xiaohui/dmm/proposals/feature_coco81.tar.gz
     tar xzf feature_coco81.tar.gz 
    
  • preprocess the proposals for training DMM:

python src/tools/reduce_pth_size_by_videos.py  experiments/proposals/coco81/inference/youtubevos_train3k_meta/predictions.pth  train 50
python src/tools/reduce_pth_size_by_videos.py  experiments/proposals/coco81/inference/youtubevos_val200_meta/predictions.pth  trainval 50
python src/tools/reduce_pth_size_by_videos.py  experiments/proposals/coco81/inference/youtubevos_testdev_online_meta/predictions.pth  train_testdev_ot 90 
  • The files structure should look like:
DMM/experiments
       ├── propnet
       │     ├── join_ytb_bin
       │     │       ├── model_0172500.pth 
       │     ├── online_ytb
       │     │       ├── model_0225000.pth 
       ├── dmmnet 
       │     ├── ytb_255_50_matchloss_epo13
       │     │       ├── epo13_iter01640
       │     ├── ytb_255_50
       │     │       ├── epo08_iter01640
       │     ├── online_ytb
       │     │       ├── epo101 
       ├── proposals 
       │     ├── coco81 
       │     │     ├── inference
       │     │     │       ├── youtubevos_train3k_meta (optional)
       │     │     │       ├── youtubevos_val200_meta
       │     │     │       ├── youtubevos_testdev_online_meta (optional)
       │     ├── ytb_train 
       │     │     ├── inference
       │     │     │       ├── youtubevos_val200_meta
       │     ├── ytb_ot 
       │     │     ├── inference
       │     │     │       ├── youtubevos_testdev_meta

Option2: extract the proposals

  • The model trained on youtubeVOS dataset can be found in MODEL_ZOO.md
  • The scripts used to extract proposals from the trained model can be found in scripts/extract/

Training

  • Train DMMnet on youtubeVOS:
sh scripts/train/train_101.sh 
# or scripts/train/train_50.sh # for resnet 50 mode  

Online training

Train DMMnet on the first frame of validation set,

  • first download the preprocessed data used for online training from here, extract the data and put/link the extracted folder as /PATH/TO/datasets/youtubeVOS/train_testdev_ot

  • prepare proposal, check the Section: Prepare proposals - for training

  • get the DMMnet trained on train-train set for 1 epoch from here and put it under experiments/dmmnet/

  • start online training

sh scripts/train/train_online.sh # it takes ~0.17h for one epoch

Evaluation

  • Evaluate DMMnet on trainval split:
    • will need the trained model and the extracted train-val proposal:
    cd ./experiments/dmmnet/
    wget http://www.cs.toronto.edu/~xiaohui/dmm/models/dmmnet_ytb_255_50_matchloss_epo13.tar.gz 
    tar xzf dmmnet_ytb_255_50_matchloss_epo13.tar.gz 
    wget http://www.cs.toronto.edu/~xiaohui/dmm/models/dmmnet_ytb_255_50.tar.gz 
    tar xzf dmmnet_ytb_255_50.tar.gz
    cd ../../ 
    
    cd ./experiments/proposals/ 
    wget http://www.cs.toronto.edu/~xiaohui/dmm/proposals/proposals_ytb_train.tar.gz
    tar xzf proposals_ytb_train.tar.gz 
    cd ../../
    
    • run sh scripts/eval/eval_r50.sh
    • compute the J and F score by sh scripts/metric/full_eval.sh /PATH/TO/OUTPUT/merged/ expected results:
Method J_mean J_recall J_decay F_mean F_recall F_decay
ytb_R50_w_match_loss_epo13 model: ytb_255_50_matchloss_epo13 0.611 0.702 0.104 0.747 0.824 0.111
ytb_R50_wo_match_loss_epo08 model: ytb_255_50 0.6 0.684 0.104 0.742 0.819 0.109
  • Evaluate online-trained DMMnet:
    • Download proposals extracted by online-trained proposal net:
    cd ./experiments/proposals/
    wget http://www.cs.toronto.edu/~xiaohui/dmm/proposals/proposals_ytb_ot.tar.gz 
    tar xzf proposals_ytb_ot.tar.gz 
    cd ../../
    
    • Download model:
    cd experiments/dmmnet/
    wget http://www.cs.toronto.edu/~xiaohui/dmm/models/dmmnet_online_ytb.tar.gz 
    tar xzf dmmnet_online_ytb.tar.gz 
    cd ../../
    
    • run scripts/eval/eval_testdev.sh
    • prepare the submission data with scripts/submit.sh and submit to the server, expected resules: G mean = 0.579

part of the code is from https://github.com/imatge-upc/rvos

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].