Lightning-Universe / lightning-bolts

Toolbox of models, callbacks, and datasets for AI/ML researchers.
https://lightning-bolts.readthedocs.io
Apache License 2.0
1.68k stars 320 forks source link

Major revision of Bolts #839

Open otaj opened 2 years ago

otaj commented 2 years ago

Let's revision Bolts and breathe some fresh air into them! As outlined in #819 and on a Slack channel, we will revisit every single feature within Bolts.

Please sign up for a feature which you'd like to tackle. Once you do so, I will attach your name in the list and you will be expected to open a PR within two weeks. It might be useful to tackle multiple things at once as the feature list is everything top-level from the repository.

Criteria

The criteria for acceptance are simple:

  1. Feature has to be properly tested. Unit tests are essential, integration tests are also good, but we understand there might be situations when they are impossible.
  2. Feature has to be compatible with the latest set of Lightning libraries (lightning, flash, torchmetrics). This fact is also tested. This also means outputting things in formats consumable by other projects, namely Flash.
  3. Feature cannot be duplicated across our codebase, codebase of other Lightning projects and other more mature OSS projects. For example, there are currently five functions/classes that implement conv3x3 in this repository.
  4. Feature does not raise any warnings in tests. For this, there is a pytest fixture in #844 (please, read https://github.com/Lightning-AI/lightning-bolts/issues/839#issuecomment-1196540011 for the better understanding)
  5. And of course, once you're done, remove the decorator @under_review from the selected feature :tada:

List of features to be reviewed

Features - [x] `pl_bolts.callbacks.byol_updates.BYOLMAWeightUpdate` @matsumotosan #867 - [ ] `pl_bolts.callbacks.data_monitor.DataMonitorBase` @luca-medeiros #848 - [ ] `pl_bolts.callbacks.data_monitor.ModuleDataMonitor` @luca-medeiros #848 - [ ] `pl_bolts.callbacks.data_monitor.shape2str` @luca-medeiros #848 - [ ] `pl_bolts.callbacks.data_monitor.TrainingDataMonitor` @luca-medeiros #848 - [ ] `pl_bolts.callbacks.knn_online.concat_all_gather` - [ ] `pl_bolts.callbacks.knn_online.KNNOnlineEvaluator` - [ ] `pl_bolts.callbacks.printing.dicts_to_table` - [ ] `pl_bolts.callbacks.printing.PrintTableMetricsCallback` - [ ] `pl_bolts.callbacks.sparseml.SparseMLCallback` - [ ] `pl_bolts.callbacks.ssl_online.set_training` - [ ] `pl_bolts.callbacks.ssl_online.SSLOnlineEvaluator` - [ ] `pl_bolts.callbacks.torch_ort.ORTCallback` - [ ] `pl_bolts.callbacks.variational.LatentDimInterpolator` - [ ] `pl_bolts.callbacks.verification.base.VerificationBase` - [ ] `pl_bolts.callbacks.verification.base.VerificationCallbackBase` - [ ] `pl_bolts.callbacks.verification.batch_gradient.BatchGradientVerification` - [ ] `pl_bolts.callbacks.verification.batch_gradient.BatchGradientVerificationCallback` - [ ] `pl_bolts.callbacks.verification.batch_gradient.collect_tensors` - [ ] `pl_bolts.callbacks.verification.batch_gradient.default_input_mapping` - [ ] `pl_bolts.callbacks.verification.batch_gradient.default_output_mapping` - [ ] `pl_bolts.callbacks.verification.batch_gradient.selective_eval` - [ ] `pl_bolts.callbacks.vision.confused_logit.ConfusedLogitCallback` - [ ] `pl_bolts.callbacks.vision.image_generation.TensorboardGenerativeModelImageSampler` - [ ] `pl_bolts.callbacks.vision.sr_image_logger.SRImageLoggerCallback` - [ ] `pl_bolts.datamodules.async_dataloader.AsynchronousLoader` - [x] `pl_bolts.datamodules.binary_emnist_datamodule.BinaryEMNISTDataModule` @matsumotosan #866 - [x] `pl_bolts.datamodules.binary_mnist_datamodule.BinaryMNISTDataModule` @matsumotosan #866 - [x] `pl_bolts.datamodules.cifar10_datamodule.CIFAR10DataModule` @shivammehta007 #843 - [x] `pl_bolts.datamodules.cifar10_datamodule.TinyCIFAR10DataModule` @shivammehta007 #843 - [ ] `pl_bolts.datamodules.cityscapes_datamodule.CityscapesDataModule` @lijm1358 - [x] `pl_bolts.datamodules.emnist_datamodule.EMNISTDataModule` @matsumotosan #871 - [ ] `pl_bolts.datamodules.experience_source.BaseExperienceSource` - [ ] `pl_bolts.datamodules.experience_source.DiscountedExperienceSource` - [ ] `pl_bolts.datamodules.experience_source.ExperienceSource` - [ ] `pl_bolts.datamodules.experience_source.ExperienceSourceDataset` - [x] `pl_bolts.datamodules.fashion_mnist_datamodule.FashionMNISTDataModule` @matsumotosan #871 - [ ] `pl_bolts.datamodules.imagenet_datamodule.ImagenetDataModule` - [ ] `pl_bolts.datamodules.kitti_datamodule.KittiDataModule` @wonbbnote - [x] `pl_bolts.datamodules.mnist_datamodule.MNISTDataModule` @shivammehta007 #843 - [ ] `pl_bolts.datamodules.sklearn_datamodule.SklearnDataModule` @Ce11an ~#846~ - [ ] `pl_bolts.datamodules.sklearn_datamodule.SklearnDataset` @Ce11an ~#846~ - [x] `pl_bolts.datamodules.sklearn_datamodule.TensorDataset` @Ce11an ~#846~ #872 - [ ] `pl_bolts.datamodules.sr_datamodule.TVTDataModule` - [ ] `pl_bolts.datamodules.ssl_imagenet_datamodule.SSLImagenetDataModule` - [ ] `pl_bolts.datamodules.stl10_datamodule.STL10DataModule` - [x] `pl_bolts.datamodules.vision_datamodule.VisionDataModule` @shivammehta007 #843 - [ ] `pl_bolts.datamodules.vocdetection_datamodule._prepare_voc_instance` - [ ] `pl_bolts.datamodules.vocdetection_datamodule.Compose` - [ ] `pl_bolts.datamodules.vocdetection_datamodule.VOCDetectionDataModule` - [x] `pl_bolts.datasets.base_dataset.LightDataset` - [ ] `pl_bolts.datasets.cifar10_dataset.CIFAR10` @BaruchG ~#858~ - [ ] `pl_bolts.datasets.cifar10_dataset.TrialCIFAR10` @BaruchG ~#858~ - [ ] `pl_bolts.datasets.concat_dataset.ConcatDataset` - [x] `pl_bolts.datasets.dummy_dataset.DummyDataset` @nishantb06 #865 - [x] `pl_bolts.datasets.dummy_dataset.DummyDetectionDataset` @nishantb06 #865 - [x] `pl_bolts.datasets.dummy_dataset.RandomDataset` @nishantb06 #865 - [x] `pl_bolts.datasets.dummy_dataset.RandomDictDataset` @nishantb06 #865 - [x] `pl_bolts.datasets.dummy_dataset.RandomDictStringDataset` @nishantb06 #865 - [x] `pl_bolts.datasets.emnist_dataset.BinaryEMNIST` @matsumotosan #866 - [ ] `pl_bolts.datasets.imagenet_dataset._calculate_md5` - [ ] `pl_bolts.datasets.imagenet_dataset._check_integrity` - [ ] `pl_bolts.datasets.imagenet_dataset._check_md5` - [ ] `pl_bolts.datasets.imagenet_dataset._is_gzip` - [ ] `pl_bolts.datasets.imagenet_dataset._is_tar` - [ ] `pl_bolts.datasets.imagenet_dataset._is_targz` - [ ] `pl_bolts.datasets.imagenet_dataset._is_tarxz` - [ ] `pl_bolts.datasets.imagenet_dataset._is_zip` - [ ] `pl_bolts.datasets.imagenet_dataset._verify_archive` - [ ] `pl_bolts.datasets.imagenet_dataset.extract_archive` - [ ] `pl_bolts.datasets.imagenet_dataset.parse_devkit_archive` - [ ] `pl_bolts.datasets.imagenet_dataset.UnlabeledImagenet` - [x] `pl_bolts.datasets.kitti_dataset.KittiDataset` @lijm1358 #896 - [x] `pl_bolts.datasets.mnist_dataset.BinaryMNIST` @matsumotosan #866 - [ ] `pl_bolts.datasets.sr_celeba_dataset.SRCelebA` - [ ] `pl_bolts.datasets.sr_dataset_mixin.SRDatasetMixin` - [ ] `pl_bolts.datasets.sr_mnist_dataset.SRMNIST` - [ ] `pl_bolts.datasets.sr_stl10_dataset.SRSTL10` - [ ] `pl_bolts.datasets.ssl_amdim_datasets.CIFAR10Mixed` - [ ] `pl_bolts.datasets.ssl_amdim_datasets.SSLDatasetMixin` - [ ] `pl_bolts.datasets.utils.prepare_sr_datasets` - [ ] `pl_bolts.losses.object_detection.giou_loss` - [ ] `pl_bolts.losses.object_detection.iou_loss` - [ ] `pl_bolts.losses.rl.double_dqn_loss` - [ ] `pl_bolts.losses.rl.dqn_loss` - [ ] `pl_bolts.losses.rl.per_dqn_loss` - [ ] `pl_bolts.losses.self_supervised_learning.AmdimNCELoss` - [ ] `pl_bolts.losses.self_supervised_learning.CPCTask` - [ ] `pl_bolts.losses.self_supervised_learning.FeatureMapContrastiveTask` - [ ] `pl_bolts.losses.self_supervised_learning.nt_xent_loss` - [ ] `pl_bolts.losses.self_supervised_learning.tanh_clip` - [x] `pl_bolts.metrics.aggregation.accuracy` @BaruchG #878 - [x] `pl_bolts.metrics.aggregation.mean` @BaruchG #878 - [x] `pl_bolts.metrics.aggregation.precision_at_k` @BaruchG #878 - [ ] `pl_bolts.metrics.object_detection.giou` @BaruchG - [ ] `pl_bolts.metrics.object_detection.iou` @BaruchG - [ ] `pl_bolts.models.autoencoders.basic_ae.basic_ae_module.AE` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.basic_ae.basic_ae_module.cli_main` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.basic_vae.basic_vae_module.cli_main` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.basic_vae.basic_vae_module.VAE` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.conv1x1` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.conv3x3` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.DecoderBlock` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.DecoderBottleneck` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.EncoderBlock` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.EncoderBottleneck` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.Interpolate` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.resize_conv1x1` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.resize_conv3x3` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.resnet18_decoder` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.resnet18_encoder` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.resnet50_decoder` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.resnet50_encoder` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.ResNetDecoder` @krishnakalyan3 - [ ] `pl_bolts.models.autoencoders.components.ResNetEncoder` @krishnakalyan3 - [ ] `pl_bolts.models.detection.components.torchvision_backbones._create_backbone_adaptive` - [ ] `pl_bolts.models.detection.components.torchvision_backbones._create_backbone_features` - [ ] `pl_bolts.models.detection.components.torchvision_backbones._create_backbone_generic` - [ ] `pl_bolts.models.detection.components.torchvision_backbones.create_torchvision_backbone` - [ ] `pl_bolts.models.detection.faster_rcnn.backbones.create_fasterrcnn_backbone` - [ ] `pl_bolts.models.detection.faster_rcnn.faster_rcnn_module._evaluate_iou` - [ ] `pl_bolts.models.detection.faster_rcnn.faster_rcnn_module.FasterRCNN` - [ ] `pl_bolts.models.detection.faster_rcnn.faster_rcnn_module.run_cli` - [ ] `pl_bolts.models.detection.retinanet.backbones.create_retinanet_backbone` - [ ] `pl_bolts.models.detection.retinanet.retinanet_module.cli_main` - [ ] `pl_bolts.models.detection.retinanet.retinanet_module.RetinaNet` - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_convolutional` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_layer` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_maxpool` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_route` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_shortcut` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_upsample` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config._create_yolo` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_config.YOLOConfiguration` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers._aligned_iou` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers._corner_coordinates` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.DetectionLayer` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.GIoULoss` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.IoULoss` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.Mish` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.RouteLayer` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.SELoss` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_layers.ShortcutLayer` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_module.Resize` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_module.run_cli` @heimish-kyma #851 - [ ] `pl_bolts.models.detection.yolo.yolo_module.YOLO` @heimish-kyma #851 - [x] `pl_bolts.models.gans.basic.basic_gan_module.cli_main` @shivammehta007 #843 - [x] `pl_bolts.models.gans.basic.basic_gan_module.GAN` @shivammehta007 #843 - [x] `pl_bolts.models.gans.basic.components.Discriminator` @shivammehta007 #843 - [x] `pl_bolts.models.gans.basic.components.Generator` @shivammehta007 #843 - [x] `pl_bolts.models.gans.dcgan.components.DCGANDiscriminator` @Atharva-Phatak #921 - [x] `pl_bolts.models.gans.dcgan.components.DCGANGenerator` @Atharva-Phatak #921 - [x] `pl_bolts.models.gans.dcgan.dcgan_module.cli_main` @Atharva-Phatak #921 - [x] `pl_bolts.models.gans.dcgan.dcgan_module.DCGAN` @Atharva-Phatak #921 - [ ] `pl_bolts.models.gans.pix2pix.components.DownSampleConv` @BongYang #883 - [ ] `pl_bolts.models.gans.pix2pix.components.Generator` @BongYang #883 - [ ] `pl_bolts.models.gans.pix2pix.components.PatchGAN` @BongYang #883 - [ ] `pl_bolts.models.gans.pix2pix.components.UpSampleConv` @BongYang #883 - [ ] `pl_bolts.models.gans.pix2pix.pix2pix_module._weights_init` @BongYang #883 - [ ] `pl_bolts.models.gans.pix2pix.pix2pix_module.Pix2Pix` @BongYang #883 - [ ] `pl_bolts.models.gans.srgan.components.ResidualBlock` - [ ] `pl_bolts.models.gans.srgan.components.SRGANDiscriminator` - [ ] `pl_bolts.models.gans.srgan.components.SRGANGenerator` - [ ] `pl_bolts.models.gans.srgan.components.VGG19FeatureExtractor` - [ ] `pl_bolts.models.gans.srgan.srgan_module.cli_main` - [ ] `pl_bolts.models.gans.srgan.srgan_module.SRGAN` - [ ] `pl_bolts.models.gans.srgan.srresnet_module.cli_main` - [ ] `pl_bolts.models.gans.srgan.srresnet_module.SRResNet` - [x] `pl_bolts.models.mnist_module.cli_main` @matsumotosan #873 - [x] `pl_bolts.models.mnist_module.LitMNIST` @matsumotosan #873 - [ ] `pl_bolts.models.regression.linear_regression.cli_main` @Ce11an - [ ] `pl_bolts.models.regression.linear_regression.LinearRegression` @Ce11an - [ ] `pl_bolts.models.regression.logistic_regression.cli_main` @Ce11an - [ ] `pl_bolts.models.regression.logistic_regression.LogisticRegression` @Ce11an - [ ] `pl_bolts.models.rl.advantage_actor_critic_model.AdvantageActorCritic` - [ ] `pl_bolts.models.rl.advantage_actor_critic_model.cli_main` - [ ] `pl_bolts.models.rl.common.agents.ActorCriticAgent` @BaruchG - [ ] `pl_bolts.models.rl.common.agents.Agent` @BaruchG - [ ] `pl_bolts.models.rl.common.agents.PolicyAgent` @BaruchG - [ ] `pl_bolts.models.rl.common.agents.SoftActorCriticAgent` @BaruchG - [ ] `pl_bolts.models.rl.common.agents.ValueAgent` @BaruchG - [ ] `pl_bolts.models.rl.common.cli.add_base_args` @BaruchG - [ ] `pl_bolts.models.rl.common.distributions.TanhMultivariateNormal` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.BufferWrapper` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.DataAugmentation` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.FireResetEnv` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.ImageToPyTorch` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.make_environment` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.MaxAndSkipEnv` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.ProcessFrame84` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.ScaledFloatFrame` @BaruchG - [ ] `pl_bolts.models.rl.common.gym_wrappers.ToTensor` @BaruchG - [ ] `pl_bolts.models.rl.common.memory.Buffer` @BaruchG - [ ] `pl_bolts.models.rl.common.memory.MeanBuffer` @BaruchG - [ ] `pl_bolts.models.rl.common.memory.MultiStepBuffer` @BaruchG - [ ] `pl_bolts.models.rl.common.memory.PERBuffer` @BaruchG - [ ] `pl_bolts.models.rl.common.memory.ReplayBuffer` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.ActorCategorical` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.ActorContinous` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.ActorCriticMLP` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.CNN` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.ContinuousMLP` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.DuelingCNN` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.DuelingMLP` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.MLP` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.NoisyCNN` @BaruchG - [ ] `pl_bolts.models.rl.common.networks.NoisyLinear` @BaruchG - [ ] `pl_bolts.models.rl.double_dqn_model.cli_main` - [ ] `pl_bolts.models.rl.double_dqn_model.DoubleDQN` @andrewaf1 - [ ] `pl_bolts.models.rl.dqn_model.cli_main` - [ ] `pl_bolts.models.rl.dqn_model.DQN` - [ ] `pl_bolts.models.rl.dueling_dqn_model.cli_main` - [ ] `pl_bolts.models.rl.dueling_dqn_model.DuelingDQN` - [ ] `pl_bolts.models.rl.noisy_dqn_model.cli_main` - [ ] `pl_bolts.models.rl.noisy_dqn_model.NoisyDQN` - [ ] `pl_bolts.models.rl.per_dqn_model.cli_main` - [ ] `pl_bolts.models.rl.per_dqn_model.PERDQN` - [ ] `pl_bolts.models.rl.ppo_model.cli_main` - [ ] `pl_bolts.models.rl.ppo_model.PPO` - [ ] `pl_bolts.models.rl.reinforce_model.cli_main` - [ ] `pl_bolts.models.rl.reinforce_model.Reinforce` - [ ] `pl_bolts.models.rl.sac_model.cli_main` - [ ] `pl_bolts.models.rl.sac_model.SAC` - [ ] `pl_bolts.models.rl.vanilla_policy_gradient_model.cli_main` - [ ] `pl_bolts.models.rl.vanilla_policy_gradient_model.VanillaPolicyGradient` - [ ] `pl_bolts.models.self_supervised.amdim.amdim_module.AMDIM` - [ ] `pl_bolts.models.self_supervised.amdim.amdim_module.cli_main` - [ ] `pl_bolts.models.self_supervised.amdim.amdim_module.generate_power_seq` - [ ] `pl_bolts.models.self_supervised.amdim.datasets.AMDIMPatchesPretraining` - [ ] `pl_bolts.models.self_supervised.amdim.datasets.AMDIMPretraining` - [ ] `pl_bolts.models.self_supervised.amdim.networks.AMDIMEncoder` - [ ] `pl_bolts.models.self_supervised.amdim.networks.Conv3x3` - [ ] `pl_bolts.models.self_supervised.amdim.networks.ConvResBlock` - [ ] `pl_bolts.models.self_supervised.amdim.networks.ConvResNxN` - [ ] `pl_bolts.models.self_supervised.amdim.networks.FakeRKHSConvNet` - [ ] `pl_bolts.models.self_supervised.amdim.networks.MaybeBatchNorm2d` - [ ] `pl_bolts.models.self_supervised.amdim.networks.NopNet` - [ ] `pl_bolts.models.self_supervised.amdim.transforms.AMDIMEvalTransformsCIFAR10` - [ ] `pl_bolts.models.self_supervised.amdim.transforms.AMDIMEvalTransformsImageNet128` - [ ] `pl_bolts.models.self_supervised.amdim.transforms.AMDIMEvalTransformsSTL10` - [ ] `pl_bolts.models.self_supervised.amdim.transforms.AMDIMTrainTransformsCIFAR10` - [ ] `pl_bolts.models.self_supervised.amdim.transforms.AMDIMTrainTransformsImageNet128` - [ ] `pl_bolts.models.self_supervised.amdim.transforms.AMDIMTrainTransformsSTL10` - [x] `pl_bolts.models.self_supervised.byol.byol_module.BYOL` @matsumotosan #874 - [x] `pl_bolts.models.self_supervised.byol.byol_module.cli_main` @matsumotosan #874 - [x] `pl_bolts.models.self_supervised.byol.models.MLP` @matsumotosan #874 - [x] `pl_bolts.models.self_supervised.byol.models.SiameseArm` @matsumotosan #874 - [ ] `pl_bolts.models.self_supervised.cpc.cpc_finetuner.cli_main` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.cpc_module.cli_main` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.cpc_module.CPC_v2` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.networks.conv1x1` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.networks.conv3x3` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.networks.cpc_resnet101` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.networks.cpc_resnet50` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.networks.CPCResNet` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.networks.LNBottleneck` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.transforms.CPCEvalTransformsCIFAR10` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.transforms.CPCEvalTransformsImageNet128` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.transforms.CPCEvalTransformsSTL10` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.transforms.CPCTrainTransformsCIFAR10` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.transforms.CPCTrainTransformsImageNet128` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.cpc.transforms.CPCTrainTransformsSTL10` @matsumotosan #902 - [ ] `pl_bolts.models.self_supervised.evaluator.Flatten` - [ ] `pl_bolts.models.self_supervised.evaluator.SSLEvaluator` - [ ] `pl_bolts.models.self_supervised.moco.callbacks.MocoLRScheduler` - [ ] `pl_bolts.models.self_supervised.moco.moco2_module.cli_main` - [ ] `pl_bolts.models.self_supervised.moco.moco2_module.concat_all_gather` - [ ] `pl_bolts.models.self_supervised.moco.moco2_module.Moco_v2` - [ ] `pl_bolts.models.self_supervised.moco.transforms.GaussianBlur` - [ ] `pl_bolts.models.self_supervised.moco.transforms.Moco2EvalCIFAR10Transforms` - [ ] `pl_bolts.models.self_supervised.moco.transforms.Moco2EvalImagenetTransforms` - [ ] `pl_bolts.models.self_supervised.moco.transforms.Moco2EvalSTL10Transforms` - [ ] `pl_bolts.models.self_supervised.moco.transforms.Moco2TrainCIFAR10Transforms` - [ ] `pl_bolts.models.self_supervised.moco.transforms.Moco2TrainImagenetTransforms` - [ ] `pl_bolts.models.self_supervised.moco.transforms.Moco2TrainSTL10Transforms` - [ ] `pl_bolts.models.self_supervised.resnets._resnet` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.BasicBlock` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.Bottleneck` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.conv1x1` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.conv3x3` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.ResNet` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnet101` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnet152` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnet18` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnet34` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnet50` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnext101_32x8d` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.resnext50_32x4d` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.wide_resnet101_2` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.resnets.wide_resnet50_2` @luca-medeiros - [ ] `pl_bolts.models.self_supervised.simclr.simclr_finetuner.cli_main` @ArnolFokam - [ ] `pl_bolts.models.self_supervised.simclr.simclr_module.cli_main` @ArnolFokam - [ ] `pl_bolts.models.self_supervised.simclr.simclr_module.Projection` @ArnolFokam - [ ] `pl_bolts.models.self_supervised.simclr.simclr_module.SimCLR` @ArnolFokam - [ ] `pl_bolts.models.self_supervised.simclr.simclr_module.SyncFunction` @ArnolFokam - [x] `pl_bolts.models.self_supervised.simclr.transforms.GaussianBlur` @ArnolFokam #857 - [x] `pl_bolts.models.self_supervised.simclr.transforms.SimCLREvalDataTransform` @ArnolFokam #857 - [x] `pl_bolts.models.self_supervised.simclr.transforms.SimCLRFinetuneTransform` @ArnolFokam #857 - [x] `pl_bolts.models.self_supervised.simclr.transforms.SimCLRTrainDataTransform` @ArnolFokam #857 - [x] `pl_bolts.models.self_supervised.simsiam.models.MLP` @matsumotosan #891 - [x] `pl_bolts.models.self_supervised.simsiam.models.SiameseArm` @matsumotosan #891 - [x] `pl_bolts.models.self_supervised.simsiam.simsiam_module.cli_main` @matsumotosan #891 - [x] `pl_bolts.models.self_supervised.simsiam.simsiam_module.SimSiam` @matsumotosan #891 - [x] `pl_bolts.models.self_supervised.ssl_finetuner.SSLFineTuner` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_finetuner.cli_main` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_module.cli_main` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_module.SwAV` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.BasicBlock` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.Bottleneck` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.conv1x1` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.conv3x3` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.MultiPrototypes` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.ResNet` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.resnet18` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.resnet50` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.resnet50w2` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.resnet50w4` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.swav_resnet.resnet50w5` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.transforms.GaussianBlur` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.transforms.SwAVEvalDataTransform` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.transforms.SwAVFinetuneTransform` @Atharva-Phatak #903 - [x] `pl_bolts.models.self_supervised.swav.transforms.SwAVTrainDataTransform` @Atharva-Phatak #903 - [ ] `pl_bolts.models.vision.image_gpt.gpt2.Block` @nishantb06 - [ ] `pl_bolts.models.vision.image_gpt.gpt2.GPT2` @nishantb06 - [ ] `pl_bolts.models.vision.image_gpt.igpt_module._shape_input` @nishantb06 - [ ] `pl_bolts.models.vision.image_gpt.igpt_module.cli_main` @nishantb06 - [ ] `pl_bolts.models.vision.image_gpt.igpt_module.ImageGPT` @nishantb06 - [ ] `pl_bolts.models.vision.pixel_cnn.PixelCNN` - [x] `pl_bolts.models.vision.segmentation.cli_main` @lijm1358 #880 - [x] `pl_bolts.models.vision.segmentation.SemSegment` @lijm1358 #880 - [x] `pl_bolts.models.vision.unet.DoubleConv` @lijm1358 #880 - [x] `pl_bolts.models.vision.unet.Down` @lijm1358 #880 - [x] `pl_bolts.models.vision.unet.UNet` @lijm1358 #880 - [x] `pl_bolts.models.vision.unet.Up` @lijm1358 #880 - [ ] `pl_bolts.optimizers.lars.LARS` @otaj - [ ] `pl_bolts.optimizers.lr_scheduler.linear_warmup_decay` @otaj - [ ] `pl_bolts.optimizers.lr_scheduler.LinearWarmupCosineAnnealingLR` @otaj - [x] `pl_bolts.transforms.dataset_normalizations.cifar10_normalization` @matsumotosan #898 - [x] `pl_bolts.transforms.dataset_normalizations.emnist_normalization` @matsumotosan #898 - [x] `pl_bolts.transforms.dataset_normalizations.imagenet_normalization` @matsumotosan #898 - [x] `pl_bolts.transforms.dataset_normalizations.stl10_normalization` @matsumotosan #898 - [ ] `pl_bolts.transforms.self_supervised.ssl_transforms.Patchify` - [ ] `pl_bolts.transforms.self_supervised.ssl_transforms.RandomTranslateWithReflect` - [ ] `pl_bolts.utils.arguments.gather_lit_args` - [ ] `pl_bolts.utils.arguments.LightningArgumentParser` - [ ] `pl_bolts.utils.arguments.LitArg` - [ ] `pl_bolts.utils.pretrained_weights.load_pretrained` - [ ] `pl_bolts.utils.self_supervised.torchvision_ssl_encoder` - [ ] `pl_bolts.utils.semi_supervised.balance_classes` - [ ] `pl_bolts.utils.semi_supervised.generate_half_labeled_batches` - [ ] `pl_bolts.utils.semi_supervised.Identity` - [ ] `pl_bolts.utils.shaping.tile` - [ ] `pl_bolts.utils.warnings.warn_missing_pkg`

Thank you for your contributions! :muscle: :rocket: :tada:

oke-aditya commented 2 years ago

While adding new features is good. But what do you think of re using them from torchvision?

E.g for g / d / c IoU loss are already in torchvision

otaj commented 2 years ago

If an appropriate feature is available in other projects and is in a stable state (i.e. the package isn't in beta or the feature itself is not beta/unstable/experimental), I'd go for using such feature from the other projects.

This might get tricky with new packages as we do not want to have an endless list of dependencies. But, in case of torchvision, we already require it for models, so that is absolutely ok.

oke-aditya commented 2 years ago

Then in torchvision.ops we already have all 3. Operations and losses.

This is from v0.13 latest one.

Ce11an commented 2 years ago

Hey @otaj,

I am happy to work on the following to start as they are connected:

If that is all good with you? Thanks! 😆

BaruchG commented 2 years ago

Hey @otaj, I'm going to start off with the hopefully simple pl_bolts.datasets.cifar10_dataset.CIFAR10 and once I get the hang of the process I'll start doing it in batches.

krishnakalyan3 commented 2 years ago

I would like to work on

pl_bolts.models.autoencoders

Follow-up questions on removing optimization policies.

luca-medeiros commented 2 years ago

Cool stuff! I would like to work on pl_bolts.callbacks.data_monitor.

ArnolFokam commented 2 years ago

Hi @otaj,

Would like to work on features around SimCLR

otaj commented 2 years ago

Oh my! I go to sleep, and suddenly, it blows up! Thank you, @Ce11an, @BaruchG, @krishnakalyan3, @luca-medeiros, @ArnolFokam! I added all of you to the list :zap: :nut_and_bolt:

As to whether we should remove LARS and LinearWarmupCosineAnnealingLR - yes, but with a deprecation warning. I will take them on myself.

redleaf-kim commented 2 years ago

I'd love to contribute this awesome project. I would like to work on pl_bolts.models.detection.yolo

Cheers

otaj commented 2 years ago

Hi, @heimish-kyma, awesome! :zap: I've added you to the list :muscle:

shivammehta25 commented 2 years ago

Hello! Can I try helping with pl_bolts.models.gans.basic.* ?

otaj commented 2 years ago

Awesome, @shivammehta007, thank you! I added you to the list :zap:

otaj commented 2 years ago

Hi everyone, but especially those who already signed up for work (@shivammehta007, @heimish-kyma, @ArnolFokam, @luca-medeiros, @krishnakalyan3, @BaruchG, @Ce11an). Please excuse me for "changing the rules" while you're already signed up for work, but this is very much a learning experience for me as well :teacher: Let's all consider #843 a "testing PR" where we can iterate on the process of how will it look like in the end. :nut_and_bolt:

In order to ensure stability and compatibility, we'd like to not raise any warnings in the tests (other than UnderReviewWarning, and ideally not even that one). For this reason, I just opened #844, which is a simple fixture raising errors on warnings.

Please note, that it can happen, that these warnings are raised in other features which you haven't signed up for and there are potentially numerous solutions to that:

  1. If that feature is not taken up by anyone and you're up for it, take it up! :muscle:
  2. If that feature is not taken up by anyone, but you don't want to take anymore features, ping me either in some (appropriate) issue on GH or on Slack (slack username on PL is @Ota) and we'll figure something out :zap:
  3. If that feature is taken up by someone already, ping them about it (and maybe include me in the loop as well). :rocket:

Thank you! :nut_and_bolt: :zap: :muscle:

shivammehta25 commented 2 years ago

Can I also take pl_bolts.datamodules.mnist_datamodule. MNISTDataModule, pl_bolts.datamodules.vision_datamodule.VisionDataModule and pl_bolts.datamodules.cifar10_datamodule.*, ?

otaj commented 2 years ago

@shivammehta007, absolutely! Thank you, you were added to the list!

wonbbnote commented 2 years ago

Hi, I would like to work on pl_bolts.datamodules.kitti_datamodule.KittiDataModule!!

otaj commented 2 years ago

Hi @wonbbnote, thank you very much, you were also added to the list!

nishantb06 commented 2 years ago

Hi @otaj , Would like to work on features related to dummy datasets -

I Plan to improve tests and documentations for these datasets.

otaj commented 2 years ago

Hi @nishantb06, thanks a lot, added you to the list!

luca-medeiros commented 2 years ago

Hi @otaj, Would like to work on pl_bolts.models.self_supervised.resnetstoo!

otaj commented 2 years ago

Hi @luca-medeiros, thank you very much! I'm back, and I hope I updated the master comment appropriately

matsumotosan commented 2 years ago

Hi @otaj

I'd like to help out with:

pl_bolts.datamodules.binary_mnist_datamodule.BinaryMNISTDataModule pl_bolts.datamodules.binary_emnist_datamodule.BinaryEMNISTDataModule

BaruchG commented 2 years ago

Hi @otaj - I'll sign up for pl_bolts.metrics.* as well

otaj commented 2 years ago

Hi, @matsumotosan, @BaruchG, thank you very much! You were added to the master comment! :tada:

matsumotosan commented 2 years ago

Hi @otaj, do you mind adding me to pl_bolts.datasets.emnist_dataset.py and pl_bolts.datasets.mnist_dataset.py as well since I will be working with their corresponding datamodules.

otaj commented 2 years ago

@matsumotosan, absolutely, you're there!

nishantb06 commented 2 years ago

Hi @otaj would like to pick up issues related to image-gpt next

Currently planning to improve documentation and testing for these wherever needed.

Thanks!!

matsumotosan commented 2 years ago

Hi @otaj,

I'd like to work on a few others:

Thanks

otaj commented 2 years ago

Hi, @nishantb06, @matsumotosan, thank you very much, you were added to the master comment! :rocket:

lijm1358 commented 2 years ago

Hi, i'd like to work on:

thanks!

otaj commented 2 years ago

@lijm1358, thank you! :zap: You were added to the list :nut_and_bolt:

matsumotosan commented 2 years ago

Hi @otaj I'd like to add the following to my list:

Thanks

otaj commented 2 years ago

Hi, @matsumotosan, I added you to the list. Thank you! :zap:

Jungwon-Lee commented 2 years ago

Hi, @otaj I'd like to work on following:

otaj commented 2 years ago

Hi @BongYang, thank you very much! :zap: I added you to the list :nut_and_bolt:

matsumotosan commented 2 years ago

Hi @otaj, I'd like to work on revisions related to SimSiam:

otaj commented 2 years ago

Thank you @matsumotosan, I added you to the list :zap:

lijm1358 commented 1 year ago

Hi, @otaj , i'd like to work on pl_bolts.datasets.kitti_dataset.KittiDataset

BaruchG commented 1 year ago

Hey @otaj - I'll take pl_bolts.models.rl.common.*

otaj commented 1 year ago

Hi, @BaruchG , @lijm1358, thank you very much! :zap: You were added to the list! :nut_and_bolt:

Atharva-Phatak commented 1 year ago

Hi @otaj I would like to work on

pl_bolts.models.self_supervised.swav.swav_module.SwAV
pl_bolts.models.self_supervised.swav.swav_resnet.BasicBlock
pl_bolts.models.self_supervised.swav.swav_resnet.Bottleneck
pl_bolts.models.self_supervised.swav.swav_resnet.conv1x1
pl_bolts.models.self_supervised.swav.swav_resnet.conv3x3
pl_bolts.models.self_supervised.swav.swav_resnet.MultiPrototypes
pl_bolts.models.self_supervised.swav.swav_resnet.ResNet
pl_bolts.models.self_supervised.swav.swav_resnet.resnet18
pl_bolts.models.self_supervised.swav.swav_resnet.resnet50
pl_bolts.models.self_supervised.swav.swav_resnet.resnet50w2
pl_bolts.models.self_supervised.swav.swav_resnet.resnet50w4
pl_bolts.models.self_supervised.swav.swav_resnet.resnet50w5
pl_bolts.models.self_supervised.swav.transforms.GaussianBlur
pl_bolts.models.self_supervised.swav.transforms.SwAVEvalDataTransform
pl_bolts.models.self_supervised.swav.transforms.SwAVFinetuneTransform
pl_bolts.models.self_supervised.swav.transforms.SwAVTrainDataTransform

Now, these do seem a lot, but I have implemented SWAV from scratch, and I am pretty comfortable with it. Also, I would like to know what you expect out of this PR. Do you want a complete rewrite of SWAV or more tests (this can be pretty hard to do). Please let me know so we can start accordingly.

otaj commented 1 year ago

Hi, @Atharva-Phatak, thank you! :zap: I honestly have no idea in which state SWAW is. General guidelines are outlined in the first post of this issue - take a look at the code and figure out whether everything is working properly with the latest versions of other packages (no warnings), whether we don't duplicate code across the Bolts codebase/popular packages and test it as much as possible.

If you want, take a look at some older merged PRs. Some required almost no changes other than removing @under_review decorator, other required more substantial rewrite.

And, as always: You were added to the list! :nut_and_bolt:

Atharva-Phatak commented 1 year ago

@otaj add me to this as well as this requires serious changes as this is a the base tuner for SSL models which I can customize for any dataset.

pl_bolts.models.self_supervised.ssl_finetuner.SSLFineTuner

matsumotosan commented 1 year ago

Hi @otaj, do you mind adding me to the following:

otaj commented 1 year ago

@Atharva-Phatak, @matsumotosan, thank you! You were added to the list! :zap: :nut_and_bolt:

senarvi commented 1 year ago

Would like to work on features around SimCLR

@Atharva-Phatak MoCo is very similar and could perhaps reuse some of the code. What do you think of refactoring them both and seeing if some of the code can be shared?

Atharva-Phatak commented 1 year ago

@senarvi Yes believe that the code is same but if I am going to refactor both I will need some time. @otaj I understand that you have given us a deadline of two weeks would it be okay if took some more time ?

senarvi commented 1 year ago

@senarvi Yes believe that the code is same but if I am going to refactor both I will need some time. @otaj I understand that you have given us a deadline of two weeks would it be okay if took some more time ?

@Atharva-Phatak let me know if I can help you. Or if you prefer, I can work on MoCo.

Atharva-Phatak commented 1 year ago

@senarvi I believe if you could take over MoCo, at least for this iteration and in the next iteration, we can fully revise the SSL module as it is not much customizable :)