{"id":13738634,"url":"https://github.com/Continvvm/continuum","last_synced_at":"2025-05-08T16:35:03.641Z","repository":{"id":37822499,"uuid":"254864913","full_name":"Continvvm/continuum","owner":"Continvvm","description":"A clean and simple data loading library for Continual Learning","archived":false,"fork":false,"pushed_at":"2023-06-25T10:55:51.000Z","size":3432,"stargazers_count":429,"open_issues_count":32,"forks_count":41,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-27T07:03:26.745Z","etag":null,"topics":["continual-learning","dataloader","dataset","incremental-learning","lifelong-learning","online-learning","pytorch"],"latest_commit_sha":null,"homepage":"https://continuum.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Continvvm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-04-11T12:39:18.000Z","updated_at":"2025-04-20T01:27:34.000Z","dependencies_parsed_at":"2024-01-15T04:12:43.185Z","dependency_job_id":null,"html_url":"https://github.com/Continvvm/continuum","commit_stats":{"total_commits":951,"total_committers":20,"mean_commits":47.55,"dds":0.5362776025236593,"last_synced_commit":"9fe3a5a46803bf7c03756ec23cf6d90931938248"},"previous_names":["arthurdouillard/continual_loader"],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Continvvm%2Fcontinuum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Continvvm%2Fcontinuum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Continvvm%2Fcontinuum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Continvvm%2Fcontinuum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Continvvm","download_url":"https://codeload.github.com/Continvvm/continuum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253105713,"owners_count":21855085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["continual-learning","dataloader","dataset","incremental-learning","lifelong-learning","online-learning","pytorch"],"created_at":"2024-08-03T03:02:29.909Z","updated_at":"2025-05-08T16:35:03.204Z","avatar_url":"https://github.com/Continvvm.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Continuum: Simple Management of Complex Continual Learning Scenarios\n\n[![PyPI version](https://badge.fury.io/py/continuum.svg)](https://badge.fury.io/py/continuum) [![Build Status](https://travis-ci.com/Continvvm/continuum.svg?branch=master)](https://travis-ci.com/Continvvm/continuum) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/c3a31475bebc4036a13e6048c24eb3e0)](https://www.codacy.com/gh/Continvvm/continuum?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Continvvm/continuum\u0026amp;utm_campaign=Badge_Grade) [![DOI](https://zenodo.org/badge/254864913.svg)](https://zenodo.org/badge/latestdoi/254864913) [![Documentation Status](https://readthedocs.org/projects/continuum/badge/?version=latest)](https://continuum.readthedocs.io/en/latest/?badge=latest)\n[![coverage](coverage.svg)]()\n\n[![Doc](https://img.shields.io/badge/Documentation-link-blue)](https://continuum.readthedocs.io/)\n[![Paper](https://img.shields.io/badge/arXiv-2102.06253-brightgreen)](https://arxiv.org/abs/2102.06253)\n[![Youtube](https://img.shields.io/badge/Youtube-link-purple)](https://www.youtube.com/watch?v=ntSR5oYKyhM)\n\u003c/div\u003e\n\n## A library for PyTorch's loading of datasets in the field of Continual Learning\n\nAka Continual Learning, Lifelong-Learning, Incremental Learning, etc.\n\nRead the [documentation](https://continuum.readthedocs.io/en/latest/). \u003cbr\u003e\nTest Continuum on [Colab](https://colab.research.google.com/drive/1bRx3M1YFcol9RZxBZ51brxqGWrf4-Bzn?usp=sharing) !\n\n### Example:\n\nInstall from and PyPi:\n```bash\npip3 install continuum\n```\n\nAnd run!\n```python\nfrom torch.utils.data import DataLoader\n\nfrom continuum import ClassIncremental\nfrom continuum.datasets import MNIST\nfrom continuum.tasks import split_train_val\n\ndataset = MNIST(\"my/data/path\", download=True, train=True)\nscenario = ClassIncremental(\n    dataset,\n    increment=1,\n    initial_increment=5\n)\n\nprint(f\"Number of classes: {scenario.nb_classes}.\")\nprint(f\"Number of tasks: {scenario.nb_tasks}.\")\n\nfor task_id, train_taskset in enumerate(scenario):\n    train_taskset, val_taskset = split_train_val(train_taskset, val_split=0.1)\n    train_loader = DataLoader(train_taskset, batch_size=32, shuffle=True)\n    val_loader = DataLoader(val_taskset, batch_size=32, shuffle=True)\n\n    for x, y, t in train_loader:\n        # Do your cool stuff here\n```\n\n### Supported Types of Scenarios\n\n|Name | Acronym | Supported | Scenario |\n|:----|:---|:---:|:---:|\n| **New Instances** | NI | :white_check_mark: | [Instances Incremental](https://continuum.readthedocs.io/en/latest/_tutorials/scenarios/scenarios.html#instance-incremental)|\n| **New Classes** | NC | :white_check_mark: |[Classes Incremental](https://continuum.readthedocs.io/en/latest/_tutorials/scenarios/scenarios.html#classes-incremental)|\n| **New Instances \u0026 Classes** | NIC | :white_check_mark: | [Data Incremental](https://continuum.readthedocs.io/en/latest/_tutorials/scenarios/scenarios.html#new-class-and-instance-incremental)|\n\n### Supported Datasets:\n\nMost dataset from [torchvision.dasasets](https://pytorch.org/docs/stable/torchvision/datasets.html) are supported, for the complete list, look at the documentation page on datasets [here](https://continuum.readthedocs.io/en/latest/_tutorials/datasets/dataset.html).\n\nFurthermore some \"Meta\"-datasets are can be create or used from numpy array or any torchvision.datasets or from a folder for datasets having a tree-like structure or by combining several dataset and creating dataset fellowships!\n\n### Indexing\n\nAll our continual loader are iterable (i.e. you can for loop on them), and are\nalso indexable.\n\nMeaning that `clloader[2]` returns the third task (index starts at 0). Likewise,\nif you want to evaluate after each task, on all seen tasks do `clloader_test[:n]`.\n\n### Example of Sample Images from a Continuum scenario\n\n**CIFAR10**:\n\n|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/cifar10_0.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/cifar10_1.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/cifar10_2.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/cifar10_3.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/cifar10_4.jpg\" width=\"150\"\u003e|\n|:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:|\n|Task 0 | Task 1 | Task 2 | Task 3 | Task 4|\n\n**MNIST Fellowship (MNIST + FashionMNIST + KMNIST)**:\n\n|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_fellowship_0.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_fellowship_1.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_fellowship_2.jpg\" width=\"150\"\u003e|\n|:-------------------------:|:-------------------------:|:-------------------------:|\n|Task 0 | Task 1 | Task 2 |\n\n\n**PermutedMNIST**:\n\n|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_permuted_0.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_permuted_1.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_permuted_2.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_permuted_3.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_permuted_4.jpg\" width=\"150\"\u003e|\n|:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:|\n|Task 0 | Task 1 | Task 2 | Task 3 | Task 4|\n\n**RotatedMNIST**:\n\n|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_rotated_0.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_rotated_1.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_rotated_2.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_rotated_3.jpg\" width=\"150\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/mnist_rotated_4.jpg\" width=\"150\"\u003e|\n|:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:|\n|Task 0 | Task 1 | Task 2 | Task 3 | Task 4|\n\n**TransformIncremental + BackgroundSwap**:\n\n|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/background_0.jpg\" width=\"250\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/background_1.jpg\" width=\"250\"\u003e|\u003cimg src=\"https://github.com/Continvvm/continuum/blob/master/images/background_2.jpg\" width=\"250\"\u003e|\n|:-------------------------:|:-------------------------:|:-------------------------:|\n|Task 0 | Task 1 | Task 2 |\n\n### Citation\n\nIf you find this library useful in your work, please consider citing it:\n\n```\n@misc{douillardlesort2021continuum,\n  author={Douillard, Arthur and Lesort, Timothée},\n  title={Continuum: Simple Management of Complex Continual Learning Scenarios},\n  publisher={arXiv: 2102.06253},\n  year={2021}\n}\n```\n\n\n### Maintainers\n\nThis project was started by a joint effort from [Arthur Douillard](https://arthurdouillard.com/) \u0026\n[Timothée Lesort](https://tlesort.github.io/), and we are currently the two maintainers.\n\nFeel free to contribute! If you want to propose new features, please create an issue.\n\nContributors: [Lucas Caccia](https://github.com/pclucas14) [Lucas Cecchi](https://github.com/Lucasc-99) [Pau Rodriguez](https://github.com/prlz77), [Yury Antonov](https://github.com/yantonov),\n[psychicmario](https://github.com/psychicmario), [fcld94](https://github.com/fcdl94), [Ashok Arjun](https://github.com/ashok-arjun), [Md Rifat Arefin](https://github.com/rarefin), [DanieleMugnai](https://github.com/mugnaidaniele), [Xiaohan Zou](https://github.com/Renovamen), [Umberto Cappellazzo](https://github.com/umbertocappellazzo).\n\n\n### On PyPi\n\nOur project is available on PyPi!\n\n```bash\npip3 install continuum\n```\n\nNote that previously another project, a CI tool, was using that name. It is now\nthere [continuum_ci](https://pypi.org/project/continuum_ci/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FContinvvm%2Fcontinuum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FContinvvm%2Fcontinuum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FContinvvm%2Fcontinuum/lists"}