All Projects → zijian-hu → SimPLE

zijian-hu / SimPLE

Licence: Apache-2.0 license
Code for the paper: "SimPLE: Similar Pseudo Label Exploitation for Semi-Supervised Classification"

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to SimPLE

Awesome Federated Learning
Federated Learning Library: https://fedml.ai
Stars: ✭ 624 (+1148%)
Mutual labels:  semi-supervised-learning, transfer-learning
L2c
Learning to Cluster. A deep clustering strategy.
Stars: ✭ 262 (+424%)
Mutual labels:  semi-supervised-learning, transfer-learning
SHOT-plus
code for our TPAMI 2021 paper "Source Data-absent Unsupervised Domain Adaptation through Hypothesis Transfer and Labeling Transfer"
Stars: ✭ 46 (-8%)
Mutual labels:  semi-supervised-learning, transfer-learning
Accel Brain Code
The purpose of this repository is to make prototypes as case study in the context of proof of concept(PoC) and research and development(R&D) that I have written in my website. The main research topics are Auto-Encoders in relation to the representation learning, the statistical machine learning for energy-based models, adversarial generation networks(GANs), Deep Reinforcement Learning such as Deep Q-Networks, semi-supervised learning, and neural network language model for natural language processing.
Stars: ✭ 166 (+232%)
Mutual labels:  semi-supervised-learning, transfer-learning
Skin Lesions Classification DCNNs
Transfer Learning with DCNNs (DenseNet, Inception V3, Inception-ResNet V2, VGG16) for skin lesions classification
Stars: ✭ 47 (-6%)
Mutual labels:  transfer-learning
Pro-GNN
Implementation of the KDD 2020 paper "Graph Structure Learning for Robust Graph Neural Networks"
Stars: ✭ 202 (+304%)
Mutual labels:  semi-supervised-learning
NeuralNetworks
Implementation of a Neural Network that can detect whether a video is in-game or not
Stars: ✭ 64 (+28%)
Mutual labels:  transfer-learning
Open-Source-Models
Address book for computer vision models.
Stars: ✭ 30 (-40%)
Mutual labels:  transfer-learning
Transfer-learning-materials
resource collection for transfer learning!
Stars: ✭ 213 (+326%)
Mutual labels:  transfer-learning
sinkhorn-label-allocation
Sinkhorn Label Allocation is a label assignment method for semi-supervised self-training algorithms. The SLA algorithm is described in full in this ICML 2021 paper: https://arxiv.org/abs/2102.08622.
Stars: ✭ 49 (-2%)
Mutual labels:  semi-supervised-learning
image-background-remove-tool
✂️ Automated high-quality background removal framework for an image using neural networks. ✂️
Stars: ✭ 767 (+1434%)
Mutual labels:  transfer-learning
metric-transfer.pytorch
Deep Metric Transfer for Label Propagation with Limited Annotated Data
Stars: ✭ 49 (-2%)
Mutual labels:  semi-supervised-learning
ulm-basenet
Implementation of ULMFit algorithm for text classification via transfer learning
Stars: ✭ 94 (+88%)
Mutual labels:  transfer-learning
fiap-ml-visao-computacional
Repositório dos exemplos e desafios utilizados na disciplina de Visão Computacional do curso de MBA Machine Learning da FIAP
Stars: ✭ 33 (-34%)
Mutual labels:  transfer-learning
tape-neurips2019
Tasks Assessing Protein Embeddings (TAPE), a set of five biologically relevant semi-supervised learning tasks spread across different domains of protein biology. (DEPRECATED)
Stars: ✭ 117 (+134%)
Mutual labels:  semi-supervised-learning
TransferSeg
Unseen Object Segmentation in Videos via Transferable Representations, ACCV 2018 (oral)
Stars: ✭ 25 (-50%)
Mutual labels:  transfer-learning
tensorflow object detection helper tool
tensorflow object detection api helper tool ( custom object detection )
Stars: ✭ 30 (-40%)
Mutual labels:  transfer-learning
pytorch cnn trainer
A Simple but Powerful CNN Trainer For PyTorch
Stars: ✭ 26 (-48%)
Mutual labels:  transfer-learning
few shot dialogue generation
Dialogue Knowledge Transfer Networks (DiKTNet)
Stars: ✭ 24 (-52%)
Mutual labels:  transfer-learning
temporal-ensembling-semi-supervised
Keras implementation of temporal ensembling(semi-supervised learning)
Stars: ✭ 22 (-56%)
Mutual labels:  semi-supervised-learning

SimPLE

The code for the paper: "SimPLE: Similar Pseudo Label Exploitation for Semi-Supervised Classification" by Zijian Hu*, Zhengyu Yang*, Xuefeng Hu, and Ram Nevatia.

Abstract

Pair Loss

A common classification task situation is where one has a large amount of data available for training, but only a small portion is annotated with class labels. The goal of semi-supervised training, in this context, is to improve classification accuracy by leverage information not only from labeled data but also from a large amount of unlabeled data. Recent works have developed significant improvements by exploring the consistency constrain between differently augmented labeled and unlabeled data. Following this path, we propose a novel unsupervised objective that focuses on the less studied relationship between the high confidence unlabeled data that are similar to each other. The new proposed Pair Loss minimizes the statistical distance between high confidence pseudo labels with similarity above a certain threshold. Combining the Pair Loss with the techniques developed by the MixMatch family, our proposed SimPLE algorithm shows significant performance gains over previous algorithms on CIFAR-100 and Mini-ImageNet, and is on par with the state-of-the-art methods on CIFAR-10 and SVHN. Furthermore, SimPLE also outperforms the state-of-the-art methods in the transfer learning setting, where models are initialized by the weights pre-trained on ImageNet or DomainNet-Real.

News

[11/8/2021]: bugfix that could result in incorrect data loading in distributed training
[9/20/2021]: add data_dims option for data resizing
[8/31/2021]: update the code base for easier extension
[6/22/2021]: add Mini-ImageNet example
[6/2/2021]: add animations and fix broken link in README
[5/30/2021]: initial release

Requirements

see requirements.txt for detail

Recommended versions

Python PyTorch torchvision kornia
3.8.5 1.6.0 0.7.0 0.5.0

Setup

Install dependencies

using pip:

pip install -r requirements.txt

or using conda:

conda env create -f environment.yaml

Running

Example

To replicate Mini-ImageNet results

CUDA_DEVICE_ORDER="PCI_BUS_ID" CUDA_VISIBLE_DEVICES="0" \
python main.py \
@runs/miniimagenet_args.txt

To replicate CIFAR-10 results

CUDA_DEVICE_ORDER="PCI_BUS_ID" CUDA_VISIBLE_DEVICES="0" \
python main.py \
@runs/cifar10_args.txt

To replicate CIFAR-100 result (with distributed training)

CUDA_DEVICE_ORDER="PCI_BUS_ID" CUDA_VISIBLE_DEVICES="0,1" \
python -m torch.distributed.launch \
--nproc_per_node=2 main_ddp.py \
@runs/cifar100_args.txt \
--num-epochs 2048 \
--num-step-per-epoch 512

Citation

@InProceedings{Hu-2020-SimPLE,
  author = {{Hu*}, Zijian and {Yang*}, Zhengyu and Hu, Xuefeng and Nevaita, Ram},
  title = {{SimPLE}: {S}imilar {P}seudo {L}abel {E}xploitation for {S}emi-{S}upervised {C}lassification},
  booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  month = {June},
  year = {2021},
  url = {https://arxiv.org/abs/2103.16725},
}
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].