Here we present the implementation in TensorFlow of our work about liver lesion segmentation accepted in the Machine Learning 4 Health Workshop

Overview

Detection-aided liver lesion segmentation

Here we present the implementation in TensorFlow of our work about liver lesion segmentation accepted in the Machine Learning 4 Health Workshop of NIPS 2017. Check our project page for more information.

In order to develop this code, we used OSVOS and modified it to suit it to the liver lesion segmentation task.

Architecture of the network

In this work we propose a method to segment the liver and its lesions from Computed Tomography (CT) scans using Convolutional Neural Networks (CNNs), that have proven good results in a variety of computer vision tasks, including medical imaging. The network that segments the lesions consists of a cascaded architecture, which first focuses on the region of the liver in order to segment the lesions on it. Moreover, we train a detector to localize the lesions, and mask the results of the segmentation network with the positive detections. The segmentation architecture is based on DRIU(Maninis, 2016), a Fully Convolutional Network (FCN) with side outputs that work on feature maps of different resolutions, to finally benefit from the multi-scale information learned by different stages of the network. The main contribution of this work is the use of a detector to localize the lesions, which we show to be beneficial to remove false positives triggered by the segmentation network.

Our workshop paper is available on arXiv, and related slides here.

If you find this code useful, please cite with the following Bibtex code:

@misc{1711.11069,
Author = {Miriam Bellver and Kevis-Kokitsi Maninis and Jordi Pont-Tuset and Xavier Giro-i-Nieto and Jordi Torres and Luc Van Gool},
Title = {Detection-aided liver lesion segmentation using deep learning},
Year = {2017},
Eprint = {arXiv:1711.11069},
}

Code Instructions

Installation

  1. Clone this repository
git clone https://github.com/imatge-upc/liverseg-2017-nipsws.git
  1. Install if necessary the required dependencies:
  • Python 2.7
  • Tensorflow r1.0 or higher
  • Python dependencies: PIL, numpy, scipy

If you want to test our models, download the different weights. Extract the contents of this folder in the root of the repository, so there is a train_files folder with the following checkpoints:

  • Liver segmentation checkpoint
  • Lesion segmentation checkpoint
  • Lesion detection checkpoint

If you want to train the models by yourself, we provide also the following pretrained models:

  • VGG-16 weights
  • Resnet-50 weights weights

Data

This code was developed to participate in the Liver lesion segmentation challenge (LiTS), but can be used for other segmentation tasks also. The LiTS database consists on 130 CT scans for training and 70 CT scans for testing. These CT scans are compressed in a nifti format. We did our own partition of the training set, we used folders 0 - 104 to train, and 105-130 to test. This code is prepared to do experiments with our partition.

The code expects that the database is inside the LiTS_database folder. Inside there should be the following folders:

  • images_volumes: inside there should be a folder for each CT volume. Inside each of these folders, there should be a .mat file for each CT slice of the volume. The preprocessing required consists in clipping the values outside the range (-150,250) and doing max-min normalization.
  • liver_seg: the same structure as the previous, but with .png for each CT slice with the mask of the liver.
  • item_seg: the same structure as the previous, but with .png for each CT slice with the mask of the lesion.

An example of the structure for a single slice of a CT volume is the following:

LiTS_database/images_volumes/31/100.mat
LiTS_database/liver_seg/31/100.png
LiTS_database/item_seg/31/100.png

We provide a file in matlab to convert the nifti files into this same structure. In our case we used this matlab library. You can use whatever library you decide as long as the file structure and the preprocessing is the same.

cd /utils/matlab_utils
matlab process_database_liver.m

Liver segmentation

1. Train the liver model

In seg_liver_train.py you should indicate a dataset list file. An example is inside seg_DatasetList, training_volume_3.txt. Each line has:

img1 seg_lesion1 seg_liver1 img2 seg_lesion2 seg_liver2 img3 seg_lesion3 seg_liver3

If you just have segmentations of the liver, then repeat seg_lesionX=seg_liverX. If you used the folder structure explained in the previous point, you can use the training and testing_volume_3.txt files.

python seg_liver_train.py

2. Test the liver model

A dataset list with the same format but with the test images is required here. If you don't have annotations, simply put a dummy annotation X.png. There is also an example in seg_DatasetList/testing_volume_3.txt.

python seg_liver_test.py

Lesion detection

This network samples locations around liver and detects whether they have a lesion or not.

1. Crop slices around the liver

In order to train the lesion detector and the lesion segmentation network, we need to crop the CT scans around the liver region. First, we will need to obtain liver predictions for all the dataset, and move them to the LiTS_database folder.

cp -rf ./results/seg_liver_ck ./LiTS_database/seg_liver_ck

And the following lines will crop the images from the database, the ground truth and the liver predictions.

cd utils/crops_methods
python compute_3D_bbs_from_gt_liver.py

This will generate three folders:

LiTS_database/bb_liver_seg_alldatabase3_gt_nozoom_common_bb
LiTS_database/bb_liver_lesion_seg_alldatabase3_gt_nozoom_common_bb
LiTS_database/bb_images_volumes_alldatabase3_gt_nozoom_common_bb
LiTS_database/liver_results

and also a ./utils/crops_list/crops_LiTS_gt.txt file with the coordinates of the crop.

The default version will crop the images, ground truth, and liver predictions, considering the liver ground truth masks instead of the predictions. You can change this option in the same script.

2. Sample locations around liver

Now we need to sample locations around the liver region, in order to train and test the lesion detector. We need a .txt with the following format:

img1 x1 x2 id

Example:

images_volumes/97/444 385.0 277.0 1

whre x1 and x2 are the coordinates of the upper-left vertex of the bounding box and id is the data augmentation option. There are two options in this script. To sample locations for slices with ground truth or without. In the first case, two separate lists will be generated, one for positive locations (/w lesion) and another for negative locations (/wo lesion), in order to train the detector with balanced batches. These lists are already generated so you can use them, they are inside det_DatasetList (for instance, training_positive_det_patches_data_aug.txt for the positive patches of training set).

In case you want to generate other lists, use the following script:

cd utils/sampling
python sample_bbs.py

3. Train lesion detector

Once you sample the positive and negative locations, or decide to use the default lists, you can use the following command to train the detector.

python det_lesion_train.py

4. Test lesion detector

In order to test the detector, you can use the following command:

python det_lesion_test.py

This will create a folder inside detection_results with the task_name given to the experiment, and inside two .txt files, one with the hard results (considering a th of 0.5) and another with soft results with the prob predicted by the detector that a location is unhealthy.

Lesion segmentation

This is the network that segments the lesion. It is trained just backpropagatins gradients through the liver region.

1. Train the lesion model

In order to train the algorithm that does not backpropagate through pixels outside the liver, each line of the .txt list file in this case should have the following format:

img1 seg_lesion1 seg_liver1 result_liver1 img2 seg_lesion2 seg_liver2 result_liver1 img3 seg_lesion3 seg_liver3 result_liver1

An example list file is seg_DatasetList/training_lesion_commonbb_nobackprop_3.txt. If you used the folder structure proposed in the Database section, and you have named the folders of the cropped slices as proposed in the compute_3D_bbs_from_gt_liver.py file, you can use these files for training and testing the algorithm with the following command:

python seg_lesion_train.py

2. Test the lesion model

The command to test the network is the following:

python seg_lesion_test.py

In this case, observe that the script does 4 different steps:

  1. Does inference with the lesion segmentation network
  2. Returns results to the original size (from cropped slices to 512x512)
  3. Masks the results with the liver segmentation masks
  4. Checks positive detections of lesions in the liver. Remove those false positive of the segmentation network using the detection results.

Contact

If you have any general doubt about our work or code which may be of interest for other researchers, please use the public issues section on this github repo. Alternatively, drop us an e-mail at [email protected].

Comments
  • wrong result when test the dataset using the model gave

    wrong result when test the dataset using the model gave

    hello , I am appreciate that you provide source code. When I test the LiTS test dataset with the model you gave directly, why did I get erroneous results and I thought it is wrong result.

    opened by legendhua 4
  • Questions about harcoded value in L2 regularization loss added to the total loss

    Questions about harcoded value in L2 regularization loss added to the total loss

    In the "base" OSVOS implementation shared here, the total loss is computed as follows:

        # Define loss
        with tf.name_scope('losses'):
            if supervison == 1 or supervison == 2:
                dsn_2_loss = class_balanced_cross_entropy_loss(end_points['osvos/score-dsn_2-cr'], input_label)
                tf.summary.scalar('dsn_2_loss', dsn_2_loss)
                dsn_3_loss = class_balanced_cross_entropy_loss(end_points['osvos/score-dsn_3-cr'], input_label)
                tf.summary.scalar('dsn_3_loss', dsn_3_loss)
                dsn_4_loss = class_balanced_cross_entropy_loss(end_points['osvos/score-dsn_4-cr'], input_label)
                tf.summary.scalar('dsn_4_loss', dsn_4_loss)
                dsn_5_loss = class_balanced_cross_entropy_loss(end_points['osvos/score-dsn_5-cr'], input_label)
                tf.summary.scalar('dsn_5_loss', dsn_5_loss)
    
            main_loss = class_balanced_cross_entropy_loss(net, input_label)
            tf.summary.scalar('main_loss', main_loss)
    
            if supervison == 1:
                output_loss = dsn_2_loss + dsn_3_loss + dsn_4_loss + dsn_5_loss + main_loss
            elif supervison == 2:
                output_loss = 0.5 * dsn_2_loss + 0.5 * dsn_3_loss + 0.5 * dsn_4_loss + 0.5 * dsn_5_loss + main_loss
            elif supervison == 3:
                output_loss = main_loss
            else:
                sys.exit('Incorrect supervision id, select 1 for supervision of the side outputs, 2 for weak supervision '
                         'of the side outputs and 3 for no supervision of the side outputs')
            total_loss = output_loss + tf.add_n(tf.losses.get_regularization_losses())
            tf.summary.scalar('total_loss', total_loss)
    

    The lesion segmenter uses the same L2 regularization as in the reference implementation. However, the liver segmenter uses the following instead:

            # total_loss = output_loss + tf.add_n(slim.losses.get_regularization_losses())
            total_loss = output_loss + tf.add_n(tf.losses.get_regularization_losses())
            tf.summary.scalar('losses/total_loss', total_loss)
    
            # total_loss = output_loss + 0.001 * tf.add_n(slim.losses.get_regularization_losses())
            total_loss = output_loss + 0.001 * tf.add_n(tf.losses.get_regularization_losses())
    
            tf.summary.scalar('losses/total_loss', total_loss)
    

    Why is this 0.001 scaling necessary in the liver segmenter? What procedure did you use to come up with this scaling factor?

    Thank you for your help clarifying this!

    opened by philferriere 4
  • Questions about harcoded values in the class-balanced cross entropy loss function

    Questions about harcoded values in the class-balanced cross entropy loss function

    First, thank you for sharing your code with us. This is interesting work and I can't wait trying to reproduce some of your results.

    I noticed that the way class-balanced cross entropy losses are computed here are slightly different from the "base" OSVOS implementation shared here where it is coded as follows:

    def class_balanced_cross_entropy_loss(output, label):
        """Define the class balanced cross entropy loss to train the network
        Args:
        output: Output of the network
        label: Ground truth label
        Returns:
        Tensor that evaluates the loss
        """
    
        labels = tf.cast(tf.greater(label, 0.5), tf.float32)
    
        num_labels_pos = tf.reduce_sum(labels)
        num_labels_neg = tf.reduce_sum(1.0 - labels)
        num_total = num_labels_pos + num_labels_neg
    
        output_gt_zero = tf.cast(tf.greater_equal(output, 0), tf.float32)
        loss_val = tf.multiply(output, (labels - output_gt_zero)) - tf.log(
            1 + tf.exp(output - 2 * tf.multiply(output, output_gt_zero)))
    
        loss_pos = tf.reduce_sum(-tf.multiply(labels, loss_val))
        loss_neg = tf.reduce_sum(-tf.multiply(1.0 - labels, loss_val))
    
        final_loss = num_labels_neg / num_total * loss_pos + num_labels_pos / num_total * loss_neg
    
        return final_loss
    

    However, for the lesion segmenter, the final loss is computed as shown here:

    final_loss = 0.1018*loss_neg + 0.8982*loss_pos
    

    For the liver segmenter, it is computed using the following formula:

    final_loss = 0.931 * loss_pos + 0.069 * loss_neg
    

    My questions are the following:

    1/ Why use hardcoded constants instead of calculating the actual foreground/background proportions, as in the original implementation? 2/ What procedure did you use to come up with the hardcoded constants? Are those average foreground/background proportions over the entire training set? A portion of the training set? The training + validation set?

    Thank you for your help with this!

    opened by philferriere 4
  • Are the TXT files made manually or in the code?

    Are the TXT files made manually or in the code?

    Hi, I'm trying to run this model to see how it works. I can't figure out if the TXT files (training_volume_3.txt, testing_volume_3.txt) were made manually or they were made somewhere in the code.

    Thank you.

    opened by rishyak 3
  • #s at the end of each line for testing_volume_3.txt

    #s at the end of each line for testing_volume_3.txt

    Thanks for publishing this code.

    A question -- what are the two numbers at the end of each line for the testing_volume_3.txt file? I can see that they are the same for every set of images for a given CT scan. For example:

    images_volumes/105/1.mat item_seg/105/1.png liver_seg/105/1.png images_volumes/105/2.mat item_seg/105/2.png liver_seg/105/2.png images_volumes/105/3.mat item_seg/105/3.png liver_seg/105/3.png 0.000132 0.028108

    opened by michaeltlu 3
  • About  testing_volume_3_crops.txt

    About testing_volume_3_crops.txt

    Hi!
    
    These are two numbers that I didn't use for the final implementation. Basically the first number is the number of voxels that belong to lesion class divided by the total volume, and the second number is the same but for the liver class. These numbers are not used anywhere in the code though.
    
    Míriam
    

    Hello!

    Thank you very much for your answer, but I want to know whether these two numbers in the tumor test file ‘testing_volume_3_crops.txt’ are not used, if those two numbers are useless, why do I get the following error when I When I tested the tumor segmentation network on 70 test data:

    File "/home/dyl/liverseg-2017-nipsws-master/dataset/dataset_seg_1.py", line 112, in init aux_images_test_path.append(os.path.join(database_root, str(line.split()[i * 3])))

    IndexError: list index out of range

    Look forward to your reply!thanks

    opened by dyl0101 2
  • liverseg

    liverseg

    Hi, It is such a quite awesome work that I want to make it as a benchmark in my research. But the loss has been
    fluctuating when I run the "liver_seg_train.py". It is even the same dataset and folder structure. It confused me for a long time and I can not find the mistake anywhere. Could you give me some good suggestions? thank you!

    opened by mitiandi 2
  • tensorflow.python.framework.errors_impl.NotFoundError: /gpfs/scratch/bsc31/bsc31429/LiTS_database/train_files/liver_3_liver_minotaure/networks; No such file or directory

    tensorflow.python.framework.errors_impl.NotFoundError: /gpfs/scratch/bsc31/bsc31429/LiTS_database/train_files/liver_3_liver_minotaure/networks; No such file or directory

    I am getting this error while running file seg_liver_train.py

    Traceback (most recent call last): File "/content/liverseg-2017-nipsws/seg_liver_train.py", line 52, in batch_size=batch_size, resume_training=False) File "/content/liverseg-2017-nipsws/seg_liver.py", line 575, in train_seg resume_training, config, finetune=0) File "/content/liverseg-2017-nipsws/seg_liver.py", line 484, in _train last_ckpt_path = tf.train.latest_checkpoint(logs_path) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/checkpoint_management.py", line 343, in latest_checkpoint if file_io.get_matching_files(v2_path) or file_io.get_matching_files( File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/lib/io/file_io.py", line 361, in get_matching_files return get_matching_files_v2(filename) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/lib/io/file_io.py", line 391, in get_matching_files_v2 compat.as_bytes(single_filename), status) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/errors_impl.py", line 528, in exit c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.NotFoundError: /gpfs/scratch/bsc31/bsc31429/LiTS_database/train_files/liver_3_liver_minotaure/networks; No such file or directory

    opened by ParvatYadav 1
  • Skip detection network?

    Skip detection network?

    Hi, a little question here. Why you are not directly segmenting the lesion from the segmented liver? Instead you first detect a bounding box, and then you segment lesion from it. I have tested your liver segment network and achieve a pretty good result. Which means the liver segmenting network is working very well. I am thinking, if I use output liver as a mask to process original data, and use lesion as label, then retrain it on liver segment network. Will it work?

    opened by leetesua 1
  • Error in seg_liver.py

    Error in seg_liver.py

    I'm getting errors in your work in this file seg_liver.py, line 552 print ("Model saved in file: %s") % save_path TypeError: unsupported operand type(s) for %: 'NonType' and 'str'

    I'm using Python 3.6 It was working fine but at the time of saving path it shows this error. How to recover it?

    opened by lisa676 1
  • dice score

    dice score

    Hi Miriam, firstly I want to thank you very much for sharing this work.

    I am a student and I am trying to understand how it works. Right now I don't understand how you practically compute the liver segmentation dice scores when running the test on the 26 volumes validation set and on the LITS 70 volumes test set. "seg_liver_test.py" seems to output just the 2D slices. Were you converting the output slices to .nii volumes and then use the LITS challenge online/offline dice score assessment code?

    Thank you very much, Lucian

    opened by treisto 1
  • Lesion Segmentation

    Lesion Segmentation

    seg_liver_test.py uses testing_volume_3.txt that only has patients from 105 to 130. This also means that seg_liver_ck will only have images of the aforementioned patients (105 to 130).

    This poses a problem in compute_3D_bbs_from_gt_liver.py which looks through seg_liver_ck. It looks for all patients since the for loop happens on all patients. This breaks the for-loop around line 145 for patients below 105 since the path doesn't exist.

    This causes the code to break and I can't generate a new crops_LiTS_gt. Can you please tell me how your crops_LiTS_gt has all patients?

    Thank you.

    opened by rishyak 0
  • high loss?

    high loss?

    2021-03-31 19:52:24.006242: I c:\users\user\source\repos\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
    Init variable
    Initializing from pre-trained imagenet model...
    INFO:tensorflow:Restoring parameters from D:\L_pipe\liver_open\liverseg-2017-nipsws\train_files\vgg_16.ckpt
    Weights initialized
    Start training
    2021-03-31 19:52:36.745889: W c:\users\user\source\repos\tensorflow\tensorflow\core\framework\allocator.cc:108] Allocation of 603979776 exceeds 10% of system memory.
    2021-03-31 19:52:36.745888: W c:\users\user\source\repos\tensorflow\tensorflow\core\framework\allocator.cc:108] Allocation of 603979776 exceeds 10% of system memory.
    2021-03-31 19:52:43.777439: W c:\users\user\source\repos\tensorflow\tensorflow\core\framework\allocator.cc:108] Allocation of 603979776 exceeds 10% of system memory.
    2021-03-31 19:52:43.777464: W c:\users\user\source\repos\tensorflow\tensorflow\core\framework\allocator.cc:108] Allocation of 603979776 exceeds 10% of system memory.
    2021-03-31 19:52:50.480115: W c:\users\user\source\repos\tensorflow\tensorflow\core\framework\allocator.cc:108] Allocation of 603979776 exceeds 10% of system memory.
    2021-03-31 19:55:04.394000 Iter 2: Training Loss = 187,652.0625
    2021-03-31 19:55:04.414000 Iter 2: Validation Loss = 327,927.1562
    2021-03-31 19:55:04.415000 Iter 2: Training Dice = 0.0000
    2021-03-31 19:55:04.415000 Iter 2: Validation Dice = 0.0884
    2021-03-31 19:57:27.961000 Iter 4: Training Loss = 187,888.8281
    2021-03-31 19:57:27.992000 Iter 4: Validation Loss = 504,020.3438
    2021-03-31 19:57:27.992000 Iter 4: Training Dice = 0.0000
    2021-03-31 19:57:27.993000 Iter 4: Validation Dice = 0.2193
    2021-03-31 20:00:00.373000 Iter 6: Training Loss = 187,523.3750
    2021-03-31 20:00:00.377000 Iter 6: Validation Loss = 187,448.6094
    2021-03-31 20:00:00.377000 Iter 6: Training Dice = 0.0000
    2021-03-31 20:00:00.377000 Iter 6: Validation Dice = 0.0000
    2021-03-31 20:02:25.356000 Iter 8: Training Loss = 187,862.0625
    2021-03-31 20:02:25.360000 Iter 8: Validation Loss = 187,660.1406
    2021-03-31 20:02:25.360000 Iter 8: Training Dice = 0.0000
    2021-03-31 20:02:25.360000 Iter 8: Validation Dice = 0.0000
    2021-03-31 20:04:51.284000 Iter 10: Training Loss = 187,325.5938
    2021-03-31 20:04:51.288000 Iter 10: Validation Loss = 187,751.5938
    2021-03-31 20:04:51.288000 Iter 10: Training Dice = 0.0000
    2021-03-31 20:04:51.289000 Iter 10: Validation Dice = 0.0000```
    
    During your research have you faced high loss? 
    opened by Gresliebear 0
  • about liver_results

    about liver_results

    Hi, I want to know what is liver_results in the documents that training_lesion_commonbb_nobackprop_3.txt and testing_lesion_commonbb_nobackprop_3.txt? and how to obtain liver_results? Whether it is obtained directly by ground truth or from the results of liver segmentation in the first stage. Thanks.

    opened by dyl0101 1
  • seg_liver_train.py and .mat file format

    seg_liver_train.py and .mat file format

    Hello,I want to add edge information in network structure,and I only extracted the boundary image of the liver as the boundary ground-truth of the liver. But when I trained the liver segmentation network, the following errors occurred: 'ValueError: Unknown mat file type, version 0, 0' I didn't change the .mat file, just regenerate training_volum_3.txt with a boundary image path. So I want to ask you how to solve this problem? Look forward to your reply. Thanks.

    opened by dyl0101 0
  • About  the problem of task_id

    About the problem of task_id

    Hi,I'm very interested in this work, and just started to do your work.I don't understand some of the code,so I would like to ask you a question: Why is there only task_id=2 in seg_liver.py and seg_lesion.py? Didn't see what to do when task_id = 1? if task_id == 2: batch_label = batch_label_liver batch_label_val = batch_label_liver_val label = preprocess_labels(batch_label, number_slices) label_val = preprocess_labels(batch_label_val, number_slices) run_res = sess.run([total_loss, merged_summary_op, dice_coef_op] + grad_accumulator_ops,feed_dict={input_image: image, input_label: label}) batch_loss = run_res[0] summary = run_res[1] train_dice_coef = run_res[2]

    opened by dyl0101 0
  • about the data

    about the data

    I will appreciate it, if you can give me the data.I just use the data to major in liver cancer, but i can not load this,could you help me?This is my email :[email protected], thanks very much.

    opened by Smartdf 0
Owner
Image Processing Group - BarcelonaTECH - UPC
Image Processing Group - BarcelonaTECH - UPC
M2MRF: Many-to-Many Reassembly of Features for Tiny Lesion Segmentation in Fundus Images

M2MRF: Many-to-Many Reassembly of Features for Tiny Lesion Segmentation in Fundus Images This repo is the official implementation of paper "M2MRF: Man

null 12 Dec 14, 2022
Code for "ShineOn: Illuminating Design Choices for Practical Video-based Virtual Clothing Try-on", accepted at WACV 2021 Generation of Human Behavior Workshop.

ShineOn: Illuminating Design Choices for Practical Video-based Virtual Clothing Try-on [ Paper ] [ Project Page ] This repository contains the code fo

Andrew Jong 97 Dec 13, 2022
Codes for realizing theories learned from Data Mining, Machine Learning, Deep Learning without using the present Python packages.

Codes-for-Algorithms Codes for realizing theories learned from Data Mining, Machine Learning, Deep Learning without using the present Python packages.

Tracy (Shengmin) Tao 1 Apr 12, 2022
This is the implementation of our work Deep Extreme Cut (DEXTR), for object segmentation from extreme points.

This is the implementation of our work Deep Extreme Cut (DEXTR), for object segmentation from extreme points.

Sergi Caelles 828 Jan 5, 2023
An official TensorFlow implementation of “CLCC: Contrastive Learning for Color Constancy” accepted at CVPR 2021.

CLCC: Contrastive Learning for Color Constancy (CVPR 2021) Yi-Chen Lo*, Chia-Che Chang*, Hsuan-Chao Chiu, Yu-Hao Huang, Chia-Ping Chen, Yu-Lin Chang,

Yi-Chen (Howard) Lo 58 Dec 17, 2022
Here is the implementation of our paper S2VC: A Framework for Any-to-Any Voice Conversion with Self-Supervised Pretrained Representations.

S2VC Here is the implementation of our paper S2VC: A Framework for Any-to-Any Voice Conversion with Self-Supervised Pretrained Representations. In thi

null 81 Dec 15, 2022
This project is the official implementation of our accepted ICLR 2021 paper BiPointNet: Binary Neural Network for Point Clouds.

BiPointNet: Binary Neural Network for Point Clouds Created by Haotong Qin, Zhongang Cai, Mingyuan Zhang, Yifu Ding, Haiyu Zhao, Shuai Yi, Xianglong Li

Haotong Qin 59 Dec 17, 2022
Seach Losses of our paper 'Loss Function Discovery for Object Detection via Convergence-Simulation Driven Search', accepted by ICLR 2021.

CSE-Autoloss Designing proper loss functions for vision tasks has been a long-standing research direction to advance the capability of existing models

Peidong Liu(刘沛东) 54 Dec 17, 2022
Code repo for "RBSRICNN: Raw Burst Super-Resolution through Iterative Convolutional Neural Network" (Machine Learning and the Physical Sciences workshop in NeurIPS 2021).

RBSRICNN: Raw Burst Super-Resolution through Iterative Convolutional Neural Network An official PyTorch implementation of the RBSRICNN network as desc

Rao Muhammad Umer 6 Nov 14, 2022
We present a framework for training multi-modal deep learning models on unlabelled video data by forcing the network to learn invariances to transformations applied to both the audio and video streams.

Multi-Modal Self-Supervision using GDT and StiCa This is an official pytorch implementation of papers: Multi-modal Self-Supervision from Generalized D

Facebook Research 42 Dec 9, 2022
PPO is a very popular Reinforcement Learning algorithm at present.

PPO is a very popular Reinforcement Learning algorithm at present. OpenAI takes PPO as the current baseline algorithm. We use the PPO algorithm to train a policy to give the best action in any situation.

Rosefintech 11 Aug 23, 2021
HiPAL: A Deep Framework for Physician Burnout Prediction Using Activity Logs in Electronic Health Records

HiPAL Code for KDD'22 Applied Data Science Track submission -- HiPAL: A Deep Framework for Physician Burnout Prediction Using Activity Logs in Electro

Hanyang Liu 4 Aug 8, 2022
This repository contains the entire code for our work "Two-Timescale End-to-End Learning for Channel Acquisition and Hybrid Precoding"

Two-Timescale-DNN Two-Timescale End-to-End Learning for Channel Acquisition and Hybrid Precoding This repository contains the entire code for our work

QiyuHu 3 Mar 7, 2022
Code for the ICCV 2021 Workshop paper: A Unified Efficient Pyramid Transformer for Semantic Segmentation.

Unified-EPT Code for the ICCV 2021 Workshop paper: A Unified Efficient Pyramid Transformer for Semantic Segmentation. Installation Linux, CUDA>=10.0,

null 29 Aug 23, 2022
PyTorch implementation of our Adam-NSCL algorithm from our CVPR2021 (oral) paper "Training Networks in Null Space for Continual Learning"

Adam-NSCL This is a PyTorch implementation of Adam-NSCL algorithm for continual learning from our CVPR2021 (oral) paper: Title: Training Networks in N

Shipeng Wang 34 Dec 21, 2022
Flybirds - BDD-driven natural language automated testing framework, present by Trip Flight

Flybird | English Version 行为驱动开发(Behavior-driven development,缩写BDD),是一种软件过程的思想或者

Ctrip, Inc. 706 Dec 30, 2022
Implementation of Geometric Vector Perceptron, a simple circuit for 3d rotation equivariance for learning over large biomolecules, in Pytorch. Idea proposed and accepted at ICLR 2021

Geometric Vector Perceptron Implementation of Geometric Vector Perceptron, a simple circuit with 3d rotation equivariance for learning over large biom

Phil Wang 59 Nov 24, 2022