A simple, fully convolutional model for real-time instance segmentation.

Overview

You Only Look At CoefficienTs

    ██╗   ██╗ ██████╗ ██╗      █████╗  ██████╗████████╗
    ╚██╗ ██╔╝██╔═══██╗██║     ██╔══██╗██╔════╝╚══██╔══╝
     ╚████╔╝ ██║   ██║██║     ███████║██║        ██║   
      ╚██╔╝  ██║   ██║██║     ██╔══██║██║        ██║   
       ██║   ╚██████╔╝███████╗██║  ██║╚██████╗   ██║   
       ╚═╝    ╚═════╝ ╚══════╝╚═╝  ╚═╝ ╚═════╝   ╚═╝ 

A simple, fully convolutional model for real-time instance segmentation. This is the code for our papers:

YOLACT++ (v1.2) released! (Changelog)

YOLACT++'s resnet50 model runs at 33.5 fps on a Titan Xp and achieves 34.1 mAP on COCO's test-dev (check out our journal paper here).

In order to use YOLACT++, make sure you compile the DCNv2 code. (See Installation)

For a real-time demo, check out our ICCV video:

IMAGE ALT TEXT HERE

Some examples from our YOLACT base model (33.5 fps on a Titan Xp and 29.8 mAP on COCO's test-dev):

Example 0

Example 1

Example 2

Installation

  • Clone this repository and enter it:
    git clone https://github.com/dbolya/yolact.git
    cd yolact
  • Set up the environment using one of the following methods:
    • Using Anaconda
      • Run conda env create -f environment.yml
    • Manually with pip
      • Set up a Python3 environment (e.g., using virtenv).
      • Install Pytorch 1.0.1 (or higher) and TorchVision.
      • Install some other packages:
        # Cython needs to be installed before pycocotools
        pip install cython
        pip install opencv-python pillow pycocotools matplotlib 
  • If you'd like to train YOLACT, download the COCO dataset and the 2014/2017 annotations. Note that this script will take a while and dump 21gb of files into ./data/coco.
    sh data/scripts/COCO.sh
  • If you'd like to evaluate YOLACT on test-dev, download test-dev with this script.
    sh data/scripts/COCO_test.sh
  • If you want to use YOLACT++, compile deformable convolutional layers (from DCNv2). Make sure you have the latest CUDA toolkit installed from NVidia's Website.
    cd external/DCNv2
    python setup.py build develop

Evaluation

Here are our YOLACT models (released on April 5th, 2019) along with their FPS on a Titan Xp and mAP on test-dev:

Image Size Backbone FPS mAP Weights
550 Resnet50-FPN 42.5 28.2 yolact_resnet50_54_800000.pth Mirror
550 Darknet53-FPN 40.0 28.7 yolact_darknet53_54_800000.pth Mirror
550 Resnet101-FPN 33.5 29.8 yolact_base_54_800000.pth Mirror
700 Resnet101-FPN 23.6 31.2 yolact_im700_54_800000.pth Mirror

YOLACT++ models (released on December 16th, 2019):

Image Size Backbone FPS mAP Weights
550 Resnet50-FPN 33.5 34.1 yolact_plus_resnet50_54_800000.pth Mirror
550 Resnet101-FPN 27.3 34.6 yolact_plus_base_54_800000.pth Mirror

To evalute the model, put the corresponding weights file in the ./weights directory and run one of the following commands. The name of each config is everything before the numbers in the file name (e.g., yolact_base for yolact_base_54_800000.pth).

Quantitative Results on COCO

# Quantitatively evaluate a trained model on the entire validation set. Make sure you have COCO downloaded as above.
# This should get 29.92 validation mask mAP last time I checked.
python eval.py --trained_model=weights/yolact_base_54_800000.pth

# Output a COCOEval json to submit to the website or to use the run_coco_eval.py script.
# This command will create './results/bbox_detections.json' and './results/mask_detections.json' for detection and instance segmentation respectively.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --output_coco_json

# You can run COCOEval on the files created in the previous command. The performance should match my implementation in eval.py.
python run_coco_eval.py

# To output a coco json file for test-dev, make sure you have test-dev downloaded from above and go
python eval.py --trained_model=weights/yolact_base_54_800000.pth --output_coco_json --dataset=coco2017_testdev_dataset

Qualitative Results on COCO

# Display qualitative results on COCO. From here on I'll use a confidence threshold of 0.15.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --display

Benchmarking on COCO

# Run just the raw model on the first 1k images of the validation set
python eval.py --trained_model=weights/yolact_base_54_800000.pth --benchmark --max_images=1000

Images

# Display qualitative results on the specified image.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --image=my_image.png

# Process an image and save it to another file.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --image=input_image.png:output_image.png

# Process a whole folder of images.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --images=path/to/input/folder:path/to/output/folder

Video

# Display a video in real-time. "--video_multiframe" will process that many frames at once for improved performance.
# If you want, use "--display_fps" to draw the FPS directly on the frame.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --video_multiframe=4 --video=my_video.mp4

# Display a webcam feed in real-time. If you have multiple webcams pass the index of the webcam you want instead of 0.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --video_multiframe=4 --video=0

# Process a video and save it to another file. This uses the same pipeline as the ones above now, so it's fast!
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --video_multiframe=4 --video=input_video.mp4:output_video.mp4

As you can tell, eval.py can do a ton of stuff. Run the --help command to see everything it can do.

python eval.py --help

Training

By default, we train on COCO. Make sure to download the entire dataset using the commands above.

  • To train, grab an imagenet-pretrained model and put it in ./weights.
    • For Resnet101, download resnet101_reducedfc.pth from here.
    • For Resnet50, download resnet50-19c8e357.pth from here.
    • For Darknet53, download darknet53.pth from here.
  • Run one of the training commands below.
    • Note that you can press ctrl+c while training and it will save an *_interrupt.pth file at the current iteration.
    • All weights are saved in the ./weights directory by default with the file name <config>_<epoch>_<iter>.pth.
# Trains using the base config with a batch size of 8 (the default).
python train.py --config=yolact_base_config

# Trains yolact_base_config with a batch_size of 5. For the 550px models, 1 batch takes up around 1.5 gigs of VRAM, so specify accordingly.
python train.py --config=yolact_base_config --batch_size=5

# Resume training yolact_base with a specific weight file and start from the iteration specified in the weight file's name.
python train.py --config=yolact_base_config --resume=weights/yolact_base_10_32100.pth --start_iter=-1

# Use the help option to see a description of all available command line arguments
python train.py --help

Multi-GPU Support

YOLACT now supports multiple GPUs seamlessly during training:

  • Before running any of the scripts, run: export CUDA_VISIBLE_DEVICES=[gpus]
    • Where you should replace [gpus] with a comma separated list of the index of each GPU you want to use (e.g., 0,1,2,3).
    • You should still do this if only using 1 GPU.
    • You can check the indices of your GPUs with nvidia-smi.
  • Then, simply set the batch size to 8*num_gpus with the training commands above. The training script will automatically scale the hyperparameters to the right values.
    • If you have memory to spare you can increase the batch size further, but keep it a multiple of the number of GPUs you're using.
    • If you want to allocate the images per GPU specific for different GPUs, you can use --batch_alloc=[alloc] where [alloc] is a comma seprated list containing the number of images on each GPU. This must sum to batch_size.

Logging

YOLACT now logs training and validation information by default. You can disable this with --no_log. A guide on how to visualize these logs is coming soon, but now you can look at LogVizualizer in utils/logger.py for help.

Pascal SBD

We also include a config for training on Pascal SBD annotations (for rapid experimentation or comparing with other methods). To train on Pascal SBD, proceed with the following steps:

  1. Download the dataset from here. It's the first link in the top "Overview" section (and the file is called benchmark.tgz).
  2. Extract the dataset somewhere. In the dataset there should be a folder called dataset/img. Create the directory ./data/sbd (where . is YOLACT's root) and copy dataset/img to ./data/sbd/img.
  3. Download the COCO-style annotations from here.
  4. Extract the annotations into ./data/sbd/.
  5. Now you can train using --config=yolact_resnet50_pascal_config. Check that config to see how to extend it to other models.

I will automate this all with a script soon, don't worry. Also, if you want the script I used to convert the annotations, I put it in ./scripts/convert_sbd.py, but you'll have to check how it works to be able to use it because I don't actually remember at this point.

If you want to verify our results, you can download our yolact_resnet50_pascal_config weights from here. This model should get 72.3 mask AP_50 and 56.2 mask AP_70. Note that the "all" AP isn't the same as the "vol" AP reported in others papers for pascal (they use an averages of the thresholds from 0.1 - 0.9 in increments of 0.1 instead of what COCO uses).

Custom Datasets

You can also train on your own dataset by following these steps:

  • Create a COCO-style Object Detection JSON annotation file for your dataset. The specification for this can be found here. Note that we don't use some fields, so the following may be omitted:
    • info
    • liscense
    • Under image: license, flickr_url, coco_url, date_captured
    • categories (we use our own format for categories, see below)
  • Create a definition for your dataset under dataset_base in data/config.py (see the comments in dataset_base for an explanation of each field):
my_custom_dataset = dataset_base.copy({
    'name': 'My Dataset',

    'train_images': 'path_to_training_images',
    'train_info':   'path_to_training_annotation',

    'valid_images': 'path_to_validation_images',
    'valid_info':   'path_to_validation_annotation',

    'has_gt': True,
    'class_names': ('my_class_id_1', 'my_class_id_2', 'my_class_id_3', ...)
})
  • A couple things to note:
    • Class IDs in the annotation file should start at 1 and increase sequentially on the order of class_names. If this isn't the case for your annotation file (like in COCO), see the field label_map in dataset_base.
    • If you do not want to create a validation split, use the same image path and annotations file for validation. By default (see python train.py --help), train.py will output validation mAP for the first 5000 images in the dataset every 2 epochs.
  • Finally, in yolact_base_config in the same file, change the value for 'dataset' to 'my_custom_dataset' or whatever you named the config object above. Then you can use any of the training commands in the previous section.

Creating a Custom Dataset from Scratch

See this nice post by @Amit12690 for tips on how to annotate a custom dataset and prepare it for use with YOLACT.

Citation

If you use YOLACT or this code base in your work, please cite

@inproceedings{yolact-iccv2019,
  author    = {Daniel Bolya and Chong Zhou and Fanyi Xiao and Yong Jae Lee},
  title     = {YOLACT: {Real-time} Instance Segmentation},
  booktitle = {ICCV},
  year      = {2019},
}

For YOLACT++, please cite

@article{yolact-plus-tpami2020,
  author  = {Daniel Bolya and Chong Zhou and Fanyi Xiao and Yong Jae Lee},
  journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, 
  title   = {YOLACT++: Better Real-time Instance Segmentation}, 
  year    = {2020},
}

Contact

For questions about our paper or code, please contact Daniel Bolya.

Comments
  • more experienments would be nicer

    more experienments would be nicer

    the paper says that box2pix relies on an extremely light-weight backbone detector. I think more experienments maybe nicer. maybe like this kitti cityscape coco
    box2pix yolact

    also ,yolact-lite maybe good,just like yolo-lite using light-weight backbone(like xception). this is the yolact v1 just like yolo v1. I am wondering if the encoder-decoder achitecture or the atrous convolution may help which is adopped by deeplab v3 plus. expecting yolact v2...

    opened by andeyeluguo 46
  • Evaluation with Multiple GPUs [FPS is low while evaluating video]

    Evaluation with Multiple GPUs [FPS is low while evaluating video]

    Hi I am trying to run eval.py and I am getting an average FPS of 8.54 [approx]. I want the FPS to increase. So is there anyway by which the eval.py can use multiple GPUs?

    Thanks.

    opened by anustupdas 37
  • No valid data

    No valid data

    hi dbolya when I train own data, if i no have valid data, what i shoud write as below?

     'valid_images': 'path_to_validation_images',
      'valid_info':   'path_to_validation_annotation',
    
    opened by yumulinfeng1 29
  • Proper ETA for Training

    Proper ETA for Training

    Dear dbolya,

    I have tried to run train.py and found out that it takes long long time than I expected.

    I recently configured my PC with RTX 2080ti x 4 Intel® Core™ i9-9920X CPU @ 3.50GHz × 24 Asus WS X299 sage/10G ubuntu 18.04 torch 1.3.0 cuda 10.1 GPU Driver Version: 430.26

    args :"--config", "yolact_base_config", "--resume", "weights/yolact_base_54_800000.pth"

    Screenshot from 2019-10-17 10-40-57 Screenshot from 2019-10-17 10-41-01

    Is it a reasonable ETA? Did you actually spend more than two weeks for training?

    opened by emjay73 28
  • direct drivable area segmentation with yolact

    direct drivable area segmentation with yolact

    Thanks for your wonderful job!I have implemented direct drivable area segmentation with yolact_darknet53_config.And the test video below shows that it really works.But for the speed,is there any solution that use more lightweight model to be the backbone,for example MobileNets? https://youtu.be/ZzLeWhUnpmI

    opened by pandamax 28
  • an error while training

    an error while training

    Hi and thanks you for helping! when i try to train i get the following error...

    python3 train.py --config=iGam_im700_config --batch_size=3 | tee log loading annotations into memory... Done (t=16.92s) creating index... index created! loading annotations into memory... Done (t=2.81s) creating index... index created! Initializing weights... Begin training!

    [ 0] 0 || B: 4.358 | C: 6.534 | M: 4.545 | S: 2.007 | T: 17.444 || ETA: 0:00:00 || timer: 7.309 [ 0] 10 || B: 5.374 | C: 6.126 | M: 5.239 | S: 1.810 | T: 18.549 || ETA: 3 days, 18:08:05 || timer: 0.400 [ 0] 20 || B: 5.062 | C: 5.916 | M: 5.251 | S: 1.497 | T: 17.726 || ETA: 3 days, 18:02:03 || timer: 0.396 [ 0] 30 || B: 5.030 | C: 5.766 | M: 5.211 | S: 1.250 | T: 17.256 || ETA: 3 days, 17:23:34 || timer: 0.398 [ 0] 40 || B: 4.909 | C: 5.592 | M: 5.216 | S: 1.098 | T: 16.816 || ETA: 3 days, 17:15:26 || timer: 0.402 [ 0] 50 || B: 4.800 | C: 5.417 | M: 5.228 | S: 0.994 | T: 16.439 || ETA: 3 days, 17:41:27 || timer: 0.400 [ 0] 60 || B: 4.779 | C: 5.269 | M: 5.135 | S: 0.898 | T: 16.081 || ETA: 3 days, 17:56:10 || timer: 0.404 [ 0] 70 || B: 4.752 | C: 5.106 | M: 5.156 | S: 0.846 | T: 15.861 || ETA: 3 days, 17:46:32 || timer: 0.411 [ 0] 80 || B: 4.771 | C: 4.948 | M: 5.200 | S: 0.809 | T: 15.729 || ETA: 3 days, 17:41:19 || timer: 0.396 [ 0] 90 || B: 4.760 | C: 4.820 | M: 5.211 | S: 0.777 | T: 15.568 || ETA: 3 days, 17:28:02 || timer: 0.394 [ 0] 100 || B: 4.871 | C: 4.692 | M: 5.183 | S: 0.733 | T: 15.478 || ETA: 3 days, 17:24:48 || timer: 0.390 [ 0] 110 || B: 4.819 | C: 4.431 | M: 5.155 | S: 0.592 | T: 14.996 || ETA: 3 days, 17:29:31 || timer: 0.405 [ 0] 120 || B: 4.791 | C: 4.221 | M: 5.146 | S: 0.508 | T: 14.665 || ETA: 3 days, 17:23:39 || timer: 0.413 [ 0] 130 || B: 4.777 | C: 4.002 | M: 5.159 | S: 0.484 | T: 14.422 || ETA: 3 days, 17:25:05 || timer: 0.391 [ 0] 140 || B: 4.813 | C: 3.815 | M: 5.134 | S: 0.468 | T: 14.230 || ETA: 3 days, 17:35:37 || timer: 0.401 [ 0] 150 || B: 4.892 | C: 3.667 | M: 5.118 | S: 0.455 | T: 14.133 || ETA: 3 days, 17:36:43 || timer: 0.411 [ 0] 160 || B: 4.875 | C: 3.538 | M: 5.169 | S: 0.454 | T: 14.037 || ETA: 3 days, 17:44:51 || timer: 0.420 [ 0] 170 || B: 5.025 | C: 3.441 | M: 5.153 | S: 0.443 | T: 14.061 || ETA: 3 days, 17:48:26 || timer: 0.395 [ 0] 180 || B: 5.000 | C: 3.380 | M: 5.126 | S: 0.428 | T: 13.934 || ETA: 3 days, 20:29:22 || timer: 0.405 [ 0] 190 || B: 4.956 | C: 3.313 | M: 5.114 | S: 0.420 | T: 13.803 || ETA: 3 days, 20:20:06 || timer: 0.418 [ 0] 200 || B: 4.799 | C: 3.248 | M: 5.138 | S: 0.418 | T: 13.603 || ETA: 3 days, 20:15:12 || timer: 0.418 [ 0] 210 || B: 4.766 | C: 3.207 | M: 5.156 | S: 0.416 | T: 13.546 || ETA: 3 days, 20:06:41 || timer: 0.404 Traceback (most recent call last): File "train.py", line 382, in train() File "train.py", line 213, in train for datum in data_loader: File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 582, in next return self._process_next_batch(batch) File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 608, in _process_next_batch raise batch.exc_type(batch.exc_msg) ValueError: Traceback (most recent call last): File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 99, in _worker_loop samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 99, in samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/student/sd/yolact/data/coco.py", line 88, in getitem im, gt, masks, h, w, num_crowds = self.pull_item(index) File "/home/student/sd/yolact/data/coco.py", line 141, in pull_item masks = np.vstack(masks) File "/opt/anaconda3/envs/yolact/lib/python3.6/site-packages/numpy/core/shape_base.py", line 283, in vstack return _nx.concatenate([atleast_2d(_m) for _m in tup], 0) ValueError: all the input array dimensions except for the concatenation axis must match exactly

    (yolact) student@D-155-OMEN-3:~/sd/yolact$ python3 train.py --config=iGam_im700_config --batch_size=2 | tee log loading annotations into memory... Done (t=17.03s) creating index... index created! loading annotations into memory... Done (t=3.00s) creating index... index created! Initializing weights... Begin training!

    [ 0] 0 || B: 7.666 | C: 7.013 | M: 4.458 | S: 1.997 | T: 21.134 || ETA: 0:00:00 || timer: 9.527 [ 0] 10 || B: 6.981 | C: 6.276 | M: 5.049 | S: 1.818 | T: 20.124 || ETA: 2 days, 22:15:24 || timer: 0.290 [ 0] 20 || B: 6.642 | C: 6.060 | M: 5.533 | S: 1.561 | T: 19.797 || ETA: 2 days, 18:59:09 || timer: 0.286 [ 0] 30 || B: 6.168 | C: 5.853 | M: 5.514 | S: 1.350 | T: 18.884 || ETA: 2 days, 18:01:36 || timer: 0.289 [ 0] 40 || B: 6.237 | C: 5.683 | M: 5.414 | S: 1.171 | T: 18.505 || ETA: 2 days, 17:24:02 || timer: 0.288 [ 0] 50 || B: 6.368 | C: 5.529 | M: 5.313 | S: 1.048 | T: 18.259 || ETA: 2 days, 16:53:43 || timer: 0.281 [ 0] 60 || B: 6.233 | C: 5.345 | M: 5.327 | S: 0.946 | T: 17.851 || ETA: 2 days, 16:41:54 || timer: 0.278 [ 0] 70 || B: 6.107 | C: 5.201 | M: 5.312 | S: 0.883 | T: 17.503 || ETA: 2 days, 16:43:57 || timer: 0.296 [ 0] 80 || B: 6.050 | C: 5.052 | M: 5.274 | S: 0.825 | T: 17.201 || ETA: 2 days, 16:41:50 || timer: 0.294 [ 0] 90 || B: 6.250 | C: 4.935 | M: 5.204 | S: 0.767 | T: 17.156 || ETA: 2 days, 16:38:08 || timer: 0.286 [ 0] 100 || B: 6.233 | C: 4.789 | M: 5.186 | S: 0.724 | T: 16.933 || ETA: 2 days, 16:35:53 || timer: 0.288 [ 0] 110 || B: 6.134 | C: 4.497 | M: 5.170 | S: 0.598 | T: 16.399 || ETA: 2 days, 16:29:10 || timer: 0.288 [ 0] 120 || B: 6.084 | C: 4.281 | M: 5.118 | S: 0.508 | T: 15.991 || ETA: 2 days, 16:28:02 || timer: 0.280 [ 0] 130 || B: 6.116 | C: 4.078 | M: 5.034 | S: 0.469 | T: 15.698 || ETA: 2 days, 16:28:57 || timer: 0.281 [ 0] 140 || B: 6.036 | C: 3.917 | M: 5.040 | S: 0.443 | T: 15.436 || ETA: 2 days, 16:23:42 || timer: 0.287 [ 0] 150 || B: 5.871 | C: 3.742 | M: 5.076 | S: 0.420 | T: 15.108 || ETA: 2 days, 20:37:55 || timer: 0.289 [ 0] 160 || B: 5.949 | C: 3.632 | M: 5.044 | S: 0.427 | T: 15.052 || ETA: 2 days, 20:22:21 || timer: 0.281 [ 0] 170 || B: 6.041 | C: 3.543 | M: 5.034 | S: 0.405 | T: 15.023 || ETA: 2 days, 20:10:21 || timer: 0.307 [ 0] 180 || B: 6.036 | C: 3.472 | M: 5.034 | S: 0.404 | T: 14.945 || ETA: 2 days, 19:55:03 || timer: 0.288 [ 0] 190 || B: 5.832 | C: 3.418 | M: 5.110 | S: 0.437 | T: 14.797 || ETA: 2 days, 19:45:08 || timer: 0.337 [ 0] 200 || B: 5.751 | C: 3.376 | M: 5.122 | S: 0.434 | T: 14.683 || ETA: 2 days, 19:36:08 || timer: 0.291 [ 0] 210 || B: 5.608 | C: 3.367 | M: 5.163 | S: 0.428 | T: 14.566 || ETA: 2 days, 19:28:07 || timer: 0.306 [ 0] 220 || B: 5.536 | C: 3.315 | M: 5.110 | S: 0.433 | T: 14.394 || ETA: 2 days, 19:18:40 || timer: 0.281 [ 0] 230 || B: 5.549 | C: 3.289 | M: 5.163 | S: 0.419 | T: 14.420 || ETA: 2 days, 19:11:53 || timer: 0.275 [ 0] 240 || B: 5.484 | C: 3.266 | M: 5.146 | S: 0.424 | T: 14.320 || ETA: 2 days, 19:12:13 || timer: 0.282 [ 0] 250 || B: 5.379 | C: 3.253 | M: 5.159 | S: 0.432 | T: 14.223 || ETA: 2 days, 19:13:56 || timer: 0.296 [ 0] 260 || B: 5.290 | C: 3.225 | M: 5.152 | S: 0.429 | T: 14.097 || ETA: 2 days, 19:06:39 || timer: 0.291 [ 0] 270 || B: 5.323 | C: 3.199 | M: 5.152 | S: 0.449 | T: 14.122 || ETA: 2 days, 19:04:14 || timer: 0.293 [ 0] 280 || B: 5.283 | C: 3.182 | M: 5.143 | S: 0.443 | T: 14.051 || ETA: 2 days, 19:00:29 || timer: 0.288 [ 0] 290 || B: 5.193 | C: 3.160 | M: 5.133 | S: 0.416 | T: 13.902 || ETA: 2 days, 18:54:24 || timer: 0.273 [ 0] 300 || B: 5.187 | C: 3.150 | M: 5.104 | S: 0.415 | T: 13.856 || ETA: 2 days, 18:57:09 || timer: 0.285 [ 0] 310 || B: 5.345 | C: 3.130 | M: 5.074 | S: 0.406 | T: 13.956 || ETA: 2 days, 18:57:04 || timer: 0.284 [ 0] 320 || B: 5.519 | C: 3.157 | M: 5.047 | S: 0.423 | T: 14.146 || ETA: 2 days, 18:52:32 || timer: 0.290 [ 0] 330 || B: 5.474 | C: 3.160 | M: 4.999 | S: 0.422 | T: 14.056 || ETA: 2 days, 18:49:06 || timer: 0.288 [ 0] 340 || B: 5.450 | C: 3.158 | M: 4.992 | S: 0.424 | T: 14.024 || ETA: 2 days, 20:31:59 || timer: 3.006 [ 0] 350 || B: 5.532 | C: 3.170 | M: 4.955 | S: 0.431 | T: 14.088 || ETA: 2 days, 20:27:22 || timer: 0.295 [ 0] 360 || B: 5.614 | C: 3.182 | M: 4.931 | S: 0.423 | T: 14.150 || ETA: 2 days, 20:23:09 || timer: 0.299 [ 0] 370 || B: 5.489 | C: 3.148 | M: 4.983 | S: 0.402 | T: 14.022 || ETA: 2 days, 20:21:04 || timer: 0.298 [ 0] 380 || B: 5.472 | C: 3.150 | M: 4.971 | S: 0.402 | T: 13.994 || ETA: 2 days, 20:16:13 || timer: 0.300 [ 0] 390 || B: 5.528 | C: 3.134 | M: 4.917 | S: 0.421 | T: 14.001 || ETA: 2 days, 20:10:41 || timer: 0.296 [ 0] 400 || B: 5.764 | C: 3.157 | M: 4.891 | S: 0.411 | T: 14.223 || ETA: 2 days, 20:06:57 || timer: 0.308 [ 0] 410 || B: 5.670 | C: 3.189 | M: 4.881 | S: 0.399 | T: 14.139 || ETA: 2 days, 20:04:46 || timer: 0.286 [ 0] 420 || B: 5.548 | C: 3.173 | M: 4.926 | S: 0.407 | T: 14.053 || ETA: 2 days, 19:59:45 || timer: 0.295 [ 0] 430 || B: 5.564 | C: 3.208 | M: 5.000 | S: 0.418 | T: 14.190 || ETA: 2 days, 19:55:18 || timer: 0.283 [ 0] 440 || B: 5.737 | C: 3.207 | M: 5.022 | S: 0.434 | T: 14.400 || ETA: 2 days, 19:54:09 || timer: 0.290 [ 0] 450 || B: 6.266 | C: 3.230 | M: 4.993 | S: 0.413 | T: 14.902 || ETA: 2 days, 19:49:11 || timer: 0.289 [ 0] 460 || B: 6.079 | C: 3.224 | M: 5.038 | S: 0.425 | T: 14.767 || ETA: 2 days, 19:46:01 || timer: 0.288 [ 0] 470 || B: 6.105 | C: 3.249 | M: 4.990 | S: 0.442 | T: 14.785 || ETA: 2 days, 19:44:47 || timer: 0.287 [ 0] 480 || B: 6.175 | C: 3.261 | M: 5.027 | S: 0.447 | T: 14.909 || ETA: 2 days, 19:41:34 || timer: 0.300 [ 0] 490 || B: 6.182 | C: 3.280 | M: 5.020 | S: 0.422 | T: 14.904 || ETA: 2 days, 19:38:37 || timer: 0.299 [ 0] 500 || B: 5.978 | C: 3.247 | M: 5.039 | S: 0.431 | T: 14.694 || ETA: 2 days, 19:35:46 || timer: 0.289 [ 0] 510 || B: 5.989 | C: 3.228 | M: 5.025 | S: 0.435 | T: 14.678 || ETA: 2 days, 19:34:44 || timer: 0.285 [ 0] 520 || B: 5.997 | C: 3.225 | M: 5.002 | S: 0.415 | T: 14.638 || ETA: 2 days, 19:33:26 || timer: 0.288 [ 0] 530 || B: 5.889 | C: 3.184 | M: 4.944 | S: 0.412 | T: 14.428 || ETA: 2 days, 19:31:19 || timer: 0.303 [ 0] 540 || B: 5.856 | C: 3.180 | M: 4.899 | S: 0.393 | T: 14.328 || ETA: 2 days, 19:28:35 || timer: 0.283 [ 0] 550 || B: 5.284 | C: 3.141 | M: 4.873 | S: 0.398 | T: 13.695 || ETA: 2 days, 19:24:46 || timer: 0.296 [ 0] 560 || B: 5.273 | C: 3.135 | M: 4.857 | S: 0.385 | T: 13.650 || ETA: 2 days, 19:21:48 || timer: 0.280 [ 0] 570 || B: 5.173 | C: 3.133 | M: 4.864 | S: 0.375 | T: 13.544 || ETA: 2 days, 19:20:14 || timer: 0.311 [ 0] 580 || B: 5.135 | C: 3.103 | M: 4.888 | S: 0.377 | T: 13.503 || ETA: 2 days, 19:18:57 || timer: 0.322 [ 0] 590 || B: 4.988 | C: 3.069 | M: 4.919 | S: 0.382 | T: 13.358 || ETA: 2 days, 19:19:10 || timer: 0.296 Traceback (most recent call last): File "train.py", line 382, in train() File "train.py", line 213, in train for datum in data_loader: File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 582, in next return self._process_next_batch(batch) File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 608, in _process_next_batch raise batch.exc_type(batch.exc_msg) ValueError: Traceback (most recent call last): File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 99, in _worker_loop samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/student/.local/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 99, in samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/student/sd/yolact/data/coco.py", line 88, in getitem im, gt, masks, h, w, num_crowds = self.pull_item(index) File "/home/student/sd/yolact/data/coco.py", line 141, in pull_item masks = np.vstack(masks) File "/opt/anaconda3/envs/yolact/lib/python3.6/site-packages/numpy/core/shape_base.py", line 283, in vstack return _nx.concatenate([atleast_2d(_m) for _m in tup], 0) ValueError: all the input array dimensions except for the concatenation axis must match exactly

    I gess it's (again...) somthin with my JSON, but i have no clue what can be the problem...

    opened by sdimantsd 27
  • ??? a bug when i training

    ??? a bug when i training

    [ 0] 3180 || B: 3.273 | C: 6.118 | M: 5.300 | S: 1.431 | T: 16.121 || ETA: 8 days, 0:27:19 || timer: 0.833 [ 0] 3190 || B: 3.251 | C: 6.134 | M: 5.046 | S: 1.343 | T: 15.774 || ETA: 8 days, 0:20:56 || timer: 0.924 [ 0] 3200 || B: 3.220 | C: 6.074 | M: 5.023 | S: 1.346 | T: 15.663 || ETA: 8 days, 0:14:25 || timer: 0.922 [ 0] 3210 || B: 3.249 | C: 6.012 | M: 4.997 | S: 1.397 | T: 15.655 || ETA: 8 days, 0:03:42 || timer: 0.824 [ 0] 3220 || B: 3.167 | C: 5.980 | M: 4.841 | S: 1.368 | T: 15.355 || ETA: 7 days, 23:56:10 || timer: 0.831 /opt/conda/conda-bld/pytorch_1550813258230/work/aten/src/THCUNN/BCECriterion.cu:57: void bce_updateOutput_no_reduce_functor<Dtype, Acctype>::operator()(const Dtype *, const Dt ype *, Dtype *) [with Dtype = float, Acctype = float]: block: [33,0,0], thread: [192,0,0] Assertion *input >= 0. && *input <= 1. failed. /opt/conda/conda-bld/pytorch_1550813258230/work/aten/src/THCUNN/BCECriterion.cu:57: void bce_updateOutput_no_reduce_functor<Dtype, Acctype>::operator()(const Dtype *, const Dt ype *, Dtype *) [with Dtype = float, Acctype = float]: block: [33,0,0], thread: [193,0,0] Assertion *input >= 0. && *input <= 1.THCudaCheck FAIL file=/opt/conda/conda-bld/pyt orch_1550813258230/work/aten/src/THC/generated/../THCReduceAll.cuh line=317 error=59 : device-side assert triggered failed.

    can you help me solve it? Thanks

    opened by zrl4836 26
  • Training with custom data

    Training with custom data

    I have few images where I have to segment 2 kinds of flowers . I wish to achieve it using Yoloact. However I am very confused with how to prepare my dataset suitable for training . Can anyone please help me with the following :

    • Any annotation tool for labelling and getting the annotations in coco format

    • How to proceed once I have the annotated data ?

    Sorry if this is a very basic question . I have just started looking in to instance segmentation , so confused

    opened by Amit12690 25
  • RuntimeError

    RuntimeError

    I got ' RuntimeError: /pytorch/torch/csrc/jit/fuser/cuda/fused_kernel.cpp:131: NVRTC_ERROR unknown'. My pytorch version is 1.0.1, cuda=9.0 ,python version is 3.5.

    opened by QIQIVTrackingY 20
  • Moving average ignored a value of inf/nan

    Moving average ignored a value of inf/nan

    Hi, me again. "Moving average ignored a value of inf/nan " issue happens again with multi-GPUs!

    Would you please take a look at this issue once again?

    Screenshot from 2019-11-22 21-26-17

    (prev issue link : https://github.com/dbolya/yolact/issues/186) Thanks!

    opened by emjay73 19
  • Training on Coco sub-classes

    Training on Coco sub-classes

    Hi, First, thanks for the amazing work you have done! This is very valuable work.

    I would like to reduce the classes predicted to only some of them, to avoid unnecessary objects. I would like to keep basically like 6,7 classes from COCO original classes. So i will update the config file as you recommend in the readme and issue #36 to do fine-tuning. But i have two questions before:

    • To get the same results accuracy as it is now o nthe classes im interested, is it ok to just run like one or two epochs for the training? if i restart from the last weights, it should be enough right?
    • Did you stop the training at 800k iterations because after it was overfitting? If i continue the training for my subset during thousand iter, can i expect improving the results for my 7 classes?

    thanks in advance for the help!

    opened by TBdt38 19
  • MALFORMED INPUT

    MALFORMED INPUT

    (does anyone know how to solve it please?)

    After running with no any problems for a while, I get an error, Here is what i got:

    PS D:\coding\python_learning\yolact> python eval.py --trained_model=weights/yolact_im700_54_800000.pth --score_threshold=0.15 --top_k=15 --video_multiframe=4 --video=0 Config not specified. Parsed yolact_im700_config from the file name.

    Loading model...C:\ProgramData\Anaconda3\envs\pytorch_tensorflow_keras_3.8.13\lib\site-packages\torch\jit_recursive.py:234: UserWarning: 'downsample_layers' was found in ScriptModule constants, but it is a non-constant submodule. Consider removing it. warnings.warn("'{}' was found in ScriptModule constants, " C:\ProgramData\Anaconda3\envs\pytorch_tensorflow_keras_3.8.13\lib\site-packages\torch\jit_recursive.py:234: UserWarning: 'pred_layers' was found in ScriptModule constants, but it is a non-constant submodule. Consider removing it. warnings.warn("'{}' was found in ScriptModule constants, " C:\ProgramData\Anaconda3\envs\pytorch_tensorflow_keras_3.8.13\lib\site-packages\torch\jit_recursive.py:234: UserWarning: 'lat_layers' was found in ScriptModule constants, but it is a non-constant submodule. Consider removing it. warnings.warn("'{}' was found in ScriptModule constants, " Done. Initializing model... Done.

    Press Escape to close. Processing FPS: 11.16 | Video Playback FPS: 11.22 | Frames in Buffer: 3 Traceback (most recent call last): File "eval.py", line 1105, in evaluate(net, dataset) File "eval.py", line 892, in evaluate evalvideo(net, args.video) File "eval.py", line 832, in evalvideo frame_buffer.put(frame['value'].get()) File "C:\ProgramData\Anaconda3\envs\pytorch_tensorflow_keras_3.8.13\lib\multiprocessing\pool.py", line 771, in get raise self._value File "C:\ProgramData\Anaconda3\envs\pytorch_tensorflow_keras_3.8.13\lib\multiprocessing\pool.py", line 125, in worker result = (True, func(*args, **kwds)) File "eval.py", line 712, in prep_frame return prep_display(preds, frame, None, None, undo_transform=False, class_color=True, fps_str=fps_str) File "eval.py", line 149, in prep_display t = postprocess(dets_out, w, h, visualize_lincomb = args.display_lincomb, File "D:\coding\python_learning\yolact\layers\output_utils.py", line 98, in postprocess boxes[:, 1], boxes[:, 3] = sanitize_coordinates(boxes[:, 1], boxes[:, 3], h, cast=False) RuntimeError: The following operation failed in the TorchScript interpreter. Traceback of TorchScript (most recent call last): RuntimeError: MALFORMED INPUT: Index out of bounds in check_bounds. Index: 511; bounds: [0, 1). - ret_val(dtype=int64_t, sizes=[1], strides=[1])

    opened by NowLoadY 0
  • Index out of range for Yolact model..

    Index out of range for Yolact model..

    I got this error while training on a custom dataset... I've already done changing necessary things in config.py what is the solution for this?

    firstly i've change the dataset to this:- Pothole_dataset = dataset_base.copy({ 'name': 'Pothole_dataset', 'train_info': '/content/drive/MyDrive/Road_potholes/train/_annotations.coco.json', 'train_images': '/content/drive/MyDrive/Road_potholes/train/', 'valid_info': '/content/drive/MyDrive/Road_potholes/valid/_annotations.coco.json', 'valid_images': '/content/drive/MyDrive/Road_potholes/valid/', 'class_names': ('Pothole',), 'label_map': { 1: 1 } })

    then in config: yolact_resnet50_potholes_config = yolact_resnet50_config.copy({ 'name': 'yolact_plus_resnet50_potholes', # Dataset stuff 'dataset': Pothole_dataset, 'num_classes': len(Pothole_dataset.class_names) + 1, # Image Size 'max_size': 300, })

    please help @dbolya

    #Error----- /content/yolact loading annotations into memory... Done (t=0.01s) creating index... index created! loading annotations into memory... Done (t=0.00s) creating index... index created! Initializing weights... Begin training!

    Traceback (most recent call last): File "./train.py", line 504, in train() File "./train.py", line 270, in train for datum in data_loader: File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 345, in next data = self._next_data() File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 856, in _next_data return self._process_data(data) File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 881, in _process_data data.reraise() File "/usr/local/lib/python3.7/dist-packages/torch/_utils.py", line 394, in reraise raise self.exc_type(msg) IndexError: Caught IndexError in DataLoader worker process 0. Original Traceback (most recent call last): File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/worker.py", line 178, in _worker_loop data = fetcher.fetch(index) File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/content/yolact/data/coco.py", line 94, in getitem im, gt, masks, h, w, num_crowds = self.pull_item(index) File "/content/yolact/data/coco.py", line 148, in pull_item masks = [self.coco.annToMask(obj).reshape(-1) for obj in target] File "/content/yolact/data/coco.py", line 148, in masks = [self.coco.annToMask(obj).reshape(-1) for obj in target] File "/usr/local/lib/python3.7/dist-packages/pycocotools/coco.py", line 442, in annToMask rle = self.annToRLE(ann) File "/usr/local/lib/python3.7/dist-packages/pycocotools/coco.py", line 427, in annToRLE rles = maskUtils.frPyObjects(segm, h, w) File "pycocotools/_mask.pyx", line 293, in pycocotools._mask.frPyObjects IndexError: list index out of range

    opened by Mayuresh999 0
  • Error Train using Resnet50

    Error Train using Resnet50

    Traceback (most recent call last): File "train.py", line 505, in train() File "train.py", line 213, in train yolact_net.init_weights(backbone_path=args.save_folder + cfg.backbone.path) File "C:\Users\ALANA\Documents\Belajar\yolact\yolact.py", line 495, in init_weights self.backbone.init_backbone(backbone_path) File "C:\Users\ALANA\Documents\Belajar\yolact\backbone.py", line 143, in init_backbone state_dict = torch.load(path) File "D:\anaconda3\envs\yolact\lib\site-packages\torch\serialization.py", line 713, in load return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args) File "D:\anaconda3\envs\yolact\lib\site-packages\torch\serialization.py", line 905, in _legacy_load return legacy_load(f) File "D:\anaconda3\envs\yolact\lib\site-packages\torch\serialization.py", line 842, in legacy_load storage._storage, storage_offset, numel, stride) RuntimeError: Attempted to set the storage of a tensor on device "cuda:0" to a storage on different device "cpu". This is no longer allowed; the devices must match.

    can someone help me about this, i cant train using resnet50

    opened by ARRARIAKU2 2
  • Lost the original classes while adding new classes

    Lost the original classes while adding new classes

    I found that the yolact_base_54_80000.pth supports 80 categories. Now, I want to extend the classes. I already prepared my custom dataset(600 images) for the new 2 classes and created COCO-style annotation file. I made my own config like the following:

    CUSTOM_CLASSES = ('person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
                    'train', 'truck', 'boat', 'traffic light', 'fire hydrant',
                    'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog',
                    'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe',
                    'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
                    'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat',
                    'baseball glove', 'skateboard', 'surfboard', 'tennis racket',
                    'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl',
                    'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot',
                    'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
                    'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop',
                    'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven',
                    'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase',
                    'scissors', 'teddy bear', 'hair drier', 'toothbrush', 
                    'my_class_1', 'my_class_2')
    CUSTOM_LABEL_MAP = { 1:  1,  2:  2,  3:  3,  4:  4,  5:  5,  6:  6,  7:  7,  8:  8,
                       9:  9, 10: 10, 11: 11, 13: 12, 14: 13, 15: 14, 16: 15, 17: 16,
                      18: 17, 19: 18, 20: 19, 21: 20, 22: 21, 23: 22, 24: 23, 25: 24,
                      27: 25, 28: 26, 31: 27, 32: 28, 33: 29, 34: 30, 35: 31, 36: 32,
                      37: 33, 38: 34, 39: 35, 40: 36, 41: 37, 42: 38, 43: 39, 44: 40,
                      46: 41, 47: 42, 48: 43, 49: 44, 50: 45, 51: 46, 52: 47, 53: 48,
                      54: 49, 55: 50, 56: 51, 57: 52, 58: 53, 59: 54, 60: 55, 61: 56,
                      62: 57, 63: 58, 64: 59, 65: 60, 67: 61, 70: 62, 72: 63, 73: 64,
                      74: 65, 75: 66, 76: 67, 77: 68, 78: 69, 79: 70, 80: 71, 81: 72,
                      82: 73, 84: 74, 85: 75, 86: 76, 87: 77, 88: 78, 89: 79, 90: 80, 
                      91: 81, 92: 82}
    my_custom_dataset = dataset_base.copy({
        'name': 'My Dataset',
          
        'train_images': './data/coco/data_dataset_coco_train/',
        'train_info': './data/coco/data_dataset_coco_train/annotations.json',
    
        'valid_images': './data/coco/data_dataset_coco_val/',
        'valid_info': './data/coco/data_dataset_coco_val/annotations.json',
    
        'class_names': CUSTOM_CLASSES,
        'label_map': CUSTOM_LABEL_MAP
    })
    my_custom_yolact_config = yolact_base_config.copy({
        'name': 'my_custom_yolact',
    
        'dataset': my_custom_dataset,
        'num_classes': len(my_custom_dataset.class_names) + 1
    })
    

    I followed the #36 and #334 already. To train the last layer, I already updated yolact.py with this p = pred_layer(pred_x.detach()). When I run python train.py --config=my_custom_yolact_config --resume=yolact_base_54_80000.pth, it works.

    But when I evaluate the new-generated model, it can detect the new 2 classes but can not detect the original classes. What am I missing? or is it impossible to add new classes without original dataset? Thank you for any suggestion.

    opened by pyon-yx 0
Owner
Daniel Bolya
Daniel Bolya
A lane detection integrated Real-time Instance Segmentation based on YOLACT (You Only Look At CoefficienTs)

Real-time Instance Segmentation and Lane Detection This is a lane detection integrated Real-time Instance Segmentation based on YOLACT (You Only Look

Jin 4 Dec 30, 2022
TCNN Temporal convolutional neural network for real-time speech enhancement in the time domain

TCNN Pandey A, Wang D L. TCNN: Temporal convolutional neural network for real-time speech enhancement in the time domain[C]//ICASSP 2019-2019 IEEE Int

凌逆战 16 Dec 30, 2022
Leveraging Instance-, Image- and Dataset-Level Information for Weakly Supervised Instance Segmentation

Leveraging Instance-, Image- and Dataset-Level Information for Weakly Supervised Instance Segmentation This paper has been accepted and early accessed

Yun Liu 39 Sep 20, 2022
Real-Time-Student-Attendence-System - Real Time Student Attendence System

Real-Time-Student-Attendence-System The Student Attendance Management System Pro

Rounak Das 1 Feb 15, 2022
A PyTorch implementation for V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation

A PyTorch implementation of V-Net Vnet is a PyTorch implementation of the paper V-Net: Fully Convolutional Neural Networks for Volumetric Medical Imag

Matthew Macy 606 Dec 21, 2022
Unofficial pytorch implementation of 'Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization'

pytorch-AdaIN This is an unofficial pytorch implementation of a paper, Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization [Hua

Naoto Inoue 873 Jan 6, 2023
A keras-based real-time model for medical image segmentation (CFPNet-M)

CFPNet-M: A Light-Weight Encoder-Decoder Based Network for Multimodal Biomedical Image Real-Time Segmentation This repository contains the implementat

null 268 Nov 27, 2022
This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of Coordinate Independent Convolutional Networks.

Orientation independent Möbius CNNs This repository implements and evaluates convolutional networks on the Möbius strip as toy model instantiations of

Maurice Weiler 59 Dec 9, 2022
An implementation of paper `Real-time Convolutional Neural Networks for Emotion and Gender Classification` with PaddlePaddle.

简介 通过PaddlePaddle框架复现了论文 Real-time Convolutional Neural Networks for Emotion and Gender Classification 中提出的两个模型,分别是SimpleCNN和MiniXception。利用 imdb_crop

null 8 Mar 11, 2022
TorchDistiller - a collection of the open source pytorch code for knowledge distillation, especially for the perception tasks, including semantic segmentation, depth estimation, object detection and instance segmentation.

This project is a collection of the open source pytorch code for knowledge distillation, especially for the perception tasks, including semantic segmentation, depth estimation, object detection and instance segmentation.

yifan liu 147 Dec 3, 2022
[ArXiv 2021] Data-Efficient Instance Generation from Instance Discrimination

InsGen - Data-Efficient Instance Generation from Instance Discrimination Data-Efficient Instance Generation from Instance Discrimination Ceyuan Yang,

GenForce: May Generative Force Be with You 93 Dec 25, 2022
End-to-End Object Detection with Fully Convolutional Network

This project provides an implementation for "End-to-End Object Detection with Fully Convolutional Network" on PyTorch.

null 472 Dec 22, 2022
The official PyTorch implementation of the paper: *Xili Dai, Xiaojun Yuan, Haigang Gong, Yi Ma. "Fully Convolutional Line Parsing." *.

F-Clip — Fully Convolutional Line Parsing This repository contains the official PyTorch implementation of the paper: *Xili Dai, Xiaojun Yuan, Haigang

Xili Dai 115 Dec 28, 2022
Dewarping Document Image By Displacement Flow Estimation with Fully Convolutional Network.

Dewarping Document Image By Displacement Flow Estimation with Fully Convolutional Network

null 111 Dec 27, 2022
Another pytorch implementation of FCN (Fully Convolutional Networks)

FCN-pytorch-easiest Trying to be the easiest FCN pytorch implementation and just in a get and use fashion Here I use a handbag semantic segmentation f

Y. Dong 158 Dec 21, 2022
Dewarping Document Image By Displacement Flow Estimation with Fully Convolutional Network

Dewarping Document Image By Displacement Flow Estimation with Fully Convolutional Network

null 39 Aug 2, 2021
PyTorch Implementation of Fully Convolutional Networks. (Training code to reproduce the original result is available.)

pytorch-fcn PyTorch implementation of Fully Convolutional Networks. Requirements pytorch >= 0.2.0 torchvision >= 0.1.8 fcn >= 6.1.5 Pillow scipy tqdm

Kentaro Wada 1.6k Jan 7, 2023
Speech Separation Using an Asynchronous Fully Recurrent Convolutional Neural Network

Speech Separation Using an Asynchronous Fully Recurrent Convolutional Neural Network This repository is the official implementation of Speech Separati

Kai Li (李凯) 116 Nov 9, 2022
Another pytorch implementation of FCN (Fully Convolutional Networks)

FCN-pytorch-easiest Trying to be the easiest FCN pytorch implementation and just in a get and use fashion Here I use a handbag semantic segmentation f

Y. Dong 158 Dec 21, 2022