{"id":28451106,"url":"https://github.com/dlr-rm/recall","last_synced_at":"2026-05-15T21:37:46.397Z","repository":{"id":49752686,"uuid":"517930481","full_name":"DLR-RM/RECALL","owner":"DLR-RM","description":"Code and image database for IROS2022 paper \"RECALL: Rehearsal-free Continual Learning for Object Classification\". A algorithm to learn new object categories on the fly without forgetting the old ones and without the need to save previous images.","archived":false,"fork":false,"pushed_at":"2024-04-17T12:34:40.000Z","size":771,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-30T22:36:45.623Z","etag":null,"topics":["computer-vision","continual-learning","dataset","deep-learning","household-objects-classification","incremental-learning","object-classification","online-learning","python","rehearsal-free","tensorflow"],"latest_commit_sha":null,"homepage":"","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/DLR-RM.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}},"created_at":"2022-07-26T05:50:35.000Z","updated_at":"2024-12-02T20:16:50.000Z","dependencies_parsed_at":"2023-02-08T09:30:26.654Z","dependency_job_id":null,"html_url":"https://github.com/DLR-RM/RECALL","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/DLR-RM/RECALL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DLR-RM%2FRECALL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DLR-RM%2FRECALL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DLR-RM%2FRECALL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DLR-RM%2FRECALL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DLR-RM","download_url":"https://codeload.github.com/DLR-RM/RECALL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DLR-RM%2FRECALL/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265677233,"owners_count":23809928,"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":["computer-vision","continual-learning","dataset","deep-learning","household-objects-classification","incremental-learning","object-classification","online-learning","python","rehearsal-free","tensorflow"],"created_at":"2025-06-06T16:09:43.621Z","updated_at":"2026-05-15T21:37:41.378Z","avatar_url":"https://github.com/DLR-RM.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RECALL and HOWS\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAuthor: Markus Knauer (markus.knauer@dlr.de),\nResearch Scientist @ German Aerospace Center (DLR), Institut of Robotics and Mechatronics, Munich, Germany \u0026\nDoctoral candidate @ Technical University Munich (TUM).\n\nThis repository contains the code of RECALL to reproduce the results from our IROS Paper.\nAs well as some code to download and use our new dataset HOWS.\n\n[RECALL](#recall-rehearsal-free-continual-learning-for-object-classification) | [HOWS](#hows-houshold-objects-within-simulation-dataset) | [IROS paper](https://ieeexplore.ieee.org/document/9981968) | [Zenodo](https://zenodo.org/record/7189434) | [ArXiv paper](https://arxiv.org/abs/2209.14774) | [YouTube](https://youtu.be/P9buxiinVeI)\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=P9buxiinVeI\"\u003e\u003cimg src=\"images/graphical_abstract.jpg\" hspace=\"3%\" vspace=\"60px\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## RECALL: Rehearsal-free Continual Learning for Object Classification\n[Link to the IROS Paper](https://ieeexplore.ieee.org/document/9981968) | [Link to our Youtube Video](https://www.youtube.com/watch?v=P9buxiinVeI)\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=P9buxiinVeI\"\u003e\u003cimg src=\"images/recall_overview.jpg\" hspace=\"3%\" vspace=\"30px\", width=\"500\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\nThis code is self-contained and should be able to run on any machine with enough memory.\nWe only tested this code on Ubuntu 20.04 (it will not work under Windows out of the box).\n\n### Setup\nThe first step is to set up a new conda environment.\nFor that, you can use the existing `requirements.yaml` file:\n\n```bash\nconda env create --file requirements.yaml\n```\n\nAfter this you just have to activate the created environment:\n\n```bash\nconda activate recall_environment\n```\n\nThis environment should already contain all needed packages.\nIf you didn't have installed conda on your machine yet please follow this [installation guide](https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.html).\n\n\n### Get datasets\n\nThe second part is the download of the datasets (CORe50, HOWS and iCIFAR-100) and conversion of the images to Resnet50 features.\nFor that, we provide a script, which automatically downloads all needed files and unzips them automatically.\nThis also automatically downloads ResNet50 weights.\nAfter that, all images are forwarded through a ResNet50 network and the resulting features are saved in several `TFRecordFiles`.\n\n```bash\n# Set the name of the folder for the HOWS, CORe50 and iCIFAR-100 datasets\nexport PATH_TO_DATASET=\"RECALL_datasets\"  \n#Download CORe50\npython recall/data_import/data_generation_script.py --path_to_datasets $PATH_TO_DATASET --dataset_name \"core50\"\n#Download iCIFAR-100\npython recall/data_import/data_generation_script.py --path_to_datasets $PATH_TO_DATASET --dataset_name \"icifar100\"\n#Download HOWS\npython HOWS/download_hows_dataset.py --path_to_datasets $PATH_TO_DATASET --features --convert_to_tfrecord\n```\nPlease note that this could take one hour. \nThe generation of CORe50 features for example take about 35 minutes, as the CORe50 dataset has to be loaded 18 times to save the memory demand of the conversion.\nFurthermore, we generate for each CORe50 image four different features, one original and three with random augmentations.\nAfter this generation is done, you can start the training.\n\n### Training\n\nThe training can be easily started with the following command:\n\n```bash\n#Start training of default RECALL with dataset CORe50 and record it for tensorboard\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name DATASETNAME [-- options]\n```\nHere some examples:\n#### Reproduce the results from RECALL on HOWS-CL-25 (five-sequence-version)\n```bash\n#Start training of default RECALL with dataset HOWS\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows\"\n#Start training of RECALL var. with dataset HOWS\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows\" --use_divide_by_variance\n#Start training of RECALL reg. with dataset HOWS\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows\" --use_regression_loss\n#Start training of RECALL var. reg. with dataset HOWS\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows\" --use_divide_by_variance --use_regression_loss\n``` \n#### Reproduce the results from RECALL on HOWS-CL-25 long (twelve-sequence-version)\n```bash\n#Start training of default RECALL with dataset HOWS long\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows_long\"\n#Start training of RECALL var. with dataset HOWS long\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows_long\" --use_divide_by_variance\n#Start training of RECALL reg. with dataset HOWS long\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows_long\" --use_regression_loss\n#Start training of RECALL var. reg. with dataset HOWS long\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"hows_long\" --use_divide_by_variance --use_regression_loss\n```\n#### Reproduce the results from RECALL on CORe50\n```bash\n#Start training of default RECALL with dataset CORe50 and record it for tensorboard\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"core50\" --record_tensorboard\n```\n\n#### Reproduce the results from RECALL on iCIFAR-100\n```bash\n#Start training of default RECALL with dataset iCIFAR-100\npython recall.py --path_to_dataset $PATH_TO_DATASET --dataset_name \"icifar100\"\n```\n\n## HOWS: Houshold Objects within Simulation Dataset\n\n[Download link to the dataset](https://zenodo.org/record/7189434)\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://zenodo.org/record/7189434\"\u003e\u003cimg src=\"images/HOWS_overview.jpg\" hspace=\"3%\" vspace=\"30px\" width=\"500\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Description:\nHOWS contains 150795 RGB images containing 25 categories, over 925 instances of household objects, and corresponding normal, depth, and segmentation images.\nThe dataset was created using [Blenderproc](https://github.com/DLR-RM/BlenderProc).\n\n#### The structure is as follows:\n```\n..\n├── HOWS_CL_25\n|    ├── images \n|    |   └── categories\n|    |       └── objects (instances)     # One folder for each 3D object of the category\n|    |           └── object              # Random modified object within random scenes\n|    |               └── .hdf5 files     # Three images of random camera positions of the above object and scene in a .hdf5 format\n|    |                                   # Each .hdf5 contains an RGB image and corresponding depth, segmentation, and normal image\n|    └──  sequences\n|         └──.txt files                 # Loading order seperated into training/validation and sequences for Continual Learning (CL)\n|    \n└── HOWS_CL_25_hdf5_features\n    └── features_hdf5\n        └── sequences                   # The four and twelve sequence versions of HOWS\n            ├── training/validation     \n                └── .hdf5 files         # The HOWS features saved as .hdf5 file, where \"*_long_version\" means the twelve-sequence version and the others the four sequence version of HOWS.\n                                        # This also contains the collection.yaml for the four sequence version and collection_long_version.yaml for the twelve sequence version of HOWS. \n```\nThe folder \"Images\" contains the images organized according to the categories.\nHere we ensured that there are about 6000 images per category.\n\nThe folder \"Sequence\" contains a structure in which the user can load the images (Continuous Learning CL) - but the dataset can also use for normal NN training.\n\nThe directory \"HOWS_CL_25_hdf5_features\" ONLY contains the features of HOWS, calculated by ResNet50 (K. He et al. 2016) and saved as a .hdf5 file. \n\nThe `collection.yaml` contains information about the sequence in where it is saved.\nFor example in `/base/train/` (the first sequence) is contains the following information:\n```yaml\nclasses:        # List of categories  [`/base/train` contains categories 0,1,2,3,4]\n  0: 5250       # For each category the amount of pictures [There are 5250 images of category `0` in `/base/train`\n  1: 5082\n  ..\nnr_classes: 5     # Number of categories\nnr_images: 26649  # Number of images in total [`/base/train` contains 26649 images in total]\nx.shape:          # The shape of the input x (images)\n  - 224\n  - 224\n  - 3 \ny.shape:          # The shape of the labels y [in this case 5 categories]\n  - 5\n```\n\n## Dataset usage:\n\n### Getting started\n### 1. Download the dataset\nOur HOWS dataset is hosted by [zenodo.org](https://zenodo.org/record/7189434). We provide the complete dataset\nwith all RGB-D, normal and segmentation images split into three .zip archives: \"HOWS_CL_25.zip\", \"HOWS_CL_25.z01\" and \"HOWS_CL_25.z02\", which is in total 123 GB.\nAnd we also provide the calculated ResNet50-features of this dataset: \"HOWS_CL_25_hdf5_features.zip\", which is 3.5 GB. If you want to use the dataset for your machine learning approach or to run RECALL, we recommend only dowloading the features.\nYou can do so by executing the following command in your terminal or by downloading the features manually from zenodo.org:\n\n```shell\n# Set the name of the folder for the HOWS dataset\nexport PATH_TO_DATASET=\"RECALL_datasets\" \n#Only downloading the features as .hdf file \npython HOWS/download_hows_dataset.py --path_to_datasets $PATH_TO_DATASET --features\n```\nFor this, please first set up the conda environment, as described in [\"Setup\"](#setup).\n\nIf you want to download the complete HOWS-CL-25 dataset, we also provide a script.\nThis downloads the .zip parts, combines them, unzip and cleans up in order to have a HOWS_CL_25 directory with all the \nRGB-D, segmentation and normal images.\nIn order to download the whole dataset, you need at least 123 GB of free memory and a stable internet connection.\n\n```shell\n#Downloads the three .zip archives, combines them and unzip it --\u003e Full dataset\npython HOWS/download_hows_dataset.py --path_to_dataset $PATH_TO_DATASET --images\n```\nIf that was successful you can continue reading at [\"2. Dataset usage\"](#2-datset-usage).\n\nIf you prefer to download our dataset yourself, you find at [zenodo.org](https://zenodo.org/record/7189434). \n\nYou can also execute this in your terminal (linux):\n\n```shell\n#Please execute this inside the PATH_TO_DATASET folder\ncd $PATH_TO_DATASET\n#Only downloading the features as .hdf5 file \ncurl https://zenodo.org/record/7189434/files/HOWS_CL_25_hdf5_features.zip --output HOWS_CL_25_hdf5_features.zip\n\n#Downloading the full dataset\ncurl https://zenodo.org/record/7189434/files/HOWS_CL_25.zip --output HOWS_CL_25.zip\ncurl https://zenodo.org/record/7189434/files/HOWS_CL_25.z01 --output HOWS_CL_25.z01\ncurl https://zenodo.org/record/7189434/files/HOWS_CL_25.z02 --output HOWS_CL_25.z02\n```\n\nAfter downloading the full dataset, please note that we split this into three .zip files.\n\n--\u003e In order to open it correctly you have to download all three parts and double-click on one of them in you window manager.\n\nIf you are using a terminal, you have to merge the files into one .zip file before you can open it:\n\n```shell\n#Combine the split zip archives\nzip -F HOWS_CL_25.zip --out HOWS_complete.zip\n\n#Unzip them\nunzip HOWS_complete.zip\n```\n\n### 2. Datset usage\nFor using this dataset for a machine learning / deep learning setup, we refer to the [RECALL chapter](#recall-rehearsal-free-continual-learning-for-object-classification).\nHere you can skip the \"Get datasets\" part if you are only interested in HOWS.\nThis also includes an example for a HOWS feature loader.\n\nWe also provide a script to create your own image-loading order from HOWS in form of a .txt file: [HOWS/create_dataset_file.py](HOWS/create_dataset_file.py)\n\nAnd finally, we also provide a loader for the HOWS images: [HOWS/hows_import.py](HOWS/hows_import.py)\nPlease note that this code will return the images and labels. To use them you have to adapt the code at the end to hand over the data to your approach or wherever you want to use them.\n```bash\n# Load RBG images for training of the first sequence of HOWS\npython HOWS/hows_import.py --path_to_dataset $PATH_TO_DATASET --dataset_name hows --sequence base --mode train\n\n# Load RGB images for validation of the second sequence of HOWS long\npython HOWS/hows_import.py --path_to_dataset $PATH_TO_DATASET --dataset_name hows_long --sequence seq1 --mode validation\n```\n\n## Citation \n\nIf you use RECALL or HOWS in a research project or publication, please cite as follows:\n\n```\n@article{knauer2022recall,\n  title={RECALL: Rehearsal-free Continual Learning for Object Classification},\n  author={Knauer, Markus and Denninger, Maximilian and Triebel, Rudolph},\n  journal={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},\n  doi={10.1109/IROS47612.2022.9981968}\n  year={2022}\n}\n@dataset{knauer2022hows,\n  title={HOWS-CL-25: Household Objects Within Simulation Dataset for Continual Learning},\n  author={Knauer, Markus and Denninger, Maximilian and Triebel, Rudolph},\n  publisher={Zenodo},\n  year={2022}\n  doi={10.5281/zenodo.7189434}\n  url={https://doi.org/10.5281/zenodo.7189434\n}\n```\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.dlr.de/EN/Home/home_node.html\"\u003e\u003cimg src=\"images/logo.svg\" hspace=\"3%\" vspace=\"60px\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlr-rm%2Frecall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdlr-rm%2Frecall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlr-rm%2Frecall/lists"}