diff --git a/.gitignore b/.gitignore index f1841fc8..2c7554b9 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,8 @@ __pycache__/ # go build output /_output + +# AI model files +*.pth +*.model +*.pkl diff --git a/docs/contributing/organization_structure.md b/docs/contributing/organization_structure.md new file mode 100644 index 00000000..f7dd9424 --- /dev/null +++ b/docs/contributing/organization_structure.md @@ -0,0 +1,22 @@ +Following the [KubeEdge Community Membership](https://github.com/kubeedge/community/blob/master/community-membership.md#member), we propose the membership arrangement for Kubeedge SIG AI. + +# Kubeedge SIG AI Membership +| Role | Member List | +| ----- | ------------------ | +| Contributors | [Contributor List](https://github.com/kubeedge/sedna/graphs/contributors) | +| Members | +| Reviewers | [jaypume](https://github.com/jaypume)
[Poorunga](https://github.com/Poorunga)
[JimmyYang20](https://github.com/JimmyYang20)
[TymonXie](https://github.com/TymonXie)
[llhuii](https://github.com/llhuii)
[JoeyHwong-gk](https://github.com/JoeyHwong-gk)| +| Approvers | None| +| Maintainers | None | +| Owners | None | + + +# Kubeedge SIG AI Owners of Features +| | Features | Owners | Other collaborative members +| ---- |----- | ------------------ | ------- | +| Sedna | AI Framework | [jaypume](https://github.com/jaypume) |[JoeyHwong-gk](https://github.com/JoeyHwong-gk) | +| | Joint inference | [jaypume](https://github.com/jaypume) | | +| | Incremental training | [jaypume](https://github.com/jaypume) | | +| | Federated learning | [jaypume](https://github.com/jaypume) | | +| | Lifelong learning | [MooreZheng](https://github.com/MooreZheng) | [luosiqi](https://github.com/luosiqi)| + diff --git a/examples/lifelong-learning-robo-rfnet.Dockerfile b/examples/lifelong-learning-robo-rfnet.Dockerfile index 0a7ffaad..1d784dae 100644 --- a/examples/lifelong-learning-robo-rfnet.Dockerfile +++ b/examples/lifelong-learning-robo-rfnet.Dockerfile @@ -10,10 +10,10 @@ COPY ./lib/requirements.dev.txt /home # install requirements of sedna lib RUN pip install -r /home/requirements.txt RUN pip install -r /home/requirements.dev.txt -RUN pip install joblib +RUN pip install joblib~=1.2.0 RUN pip install pandas RUN pip install scikit-learn~=0.23.2 -RUN pip install torchvision +RUN pip install torchvision~=0.13.0 RUN pip install Pillow RUN pip install tqdm RUN pip install minio @@ -22,13 +22,14 @@ RUN pip install matplotlib RUN pip install opencv-python RUN pip install python-multipart RUN pip install tensorboard +RUN pip install watchdog ENV PYTHONPATH "/home/lib" WORKDIR /home/work COPY ./lib /home/lib -COPY examples/lifelong_learning/robot_dog_delivery /home/work/ -WORKDIR /home/work/robot_dog_delivery/RFNet +COPY ./examples/lifelong_learning/robot_dog_delivery /home/work/ +WORKDIR /home/work/RFNet ENTRYPOINT ["python"] \ No newline at end of file diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/basemodel.py b/examples/lifelong_learning/robot_dog_delivery/RFNet/basemodel.py index a1fb9fbb..4db22181 100644 --- a/examples/lifelong_learning/robot_dog_delivery/RFNet/basemodel.py +++ b/examples/lifelong_learning/robot_dog_delivery/RFNet/basemodel.py @@ -4,7 +4,6 @@ import cv2 import numpy as np import torch from PIL import Image - from torchvision import transforms from torch.utils.data import DataLoader from torchvision import transforms @@ -101,10 +100,10 @@ class Model: self.val_args.weight_path = kwargs.get("weight_path") self.validator = Validator(self.val_args) - self.ramp_val_args = EvaluationArguments() - self.ramp_val_args.weight_path = "/home/lsq/RFNet/models/ramp_train1_200.pth" - self.ramp_val_args.merge = False - self.validator_ramp = Validator(self.ramp_val_args) + # self.ramp_val_args = EvaluationArguments() + # self.ramp_val_args.weight_path = "/home/lsq/RFNet/models/ramp_train1_200.pth" + # self.ramp_val_args.merge = False + # self.validator_ramp = Validator(self.ramp_val_args) def train(self, train_data, valid_data=None, **kwargs): self.trainer = Trainer(self.train_args, train_data=train_data) @@ -139,49 +138,50 @@ class Model: self.train_model_url = train_model_url return self.train_model_url - # def predict(self, data, **kwargs): - # prediction = kwargs.get('prediction') - # if isinstance(data[0], dict): - # data = preprocess_frames(data) - # - # if isinstance(data[0], np.ndarray): - # data = preprocess_url(data) - # - # self.validator.test_loader = DataLoader( - # data, - # batch_size=self.val_args.test_batch_size, - # shuffle=False, - # pin_memory=False) - # if not prediction: - # return self.validator.validate() - # else: - # return prediction - def predict(self, data, **kwargs): - if isinstance(data[0], np.ndarray): - data = preprocess_url(data) - + prediction = kwargs.get('prediction') if isinstance(data[0], dict): data = preprocess_frames(data) - + + if isinstance(data[0], np.ndarray): + data = preprocess_url(data) + self.validator.test_loader = DataLoader( data, batch_size=self.val_args.test_batch_size, shuffle=False, pin_memory=False) - # TODO: predict ramp using specific model - self.validator_ramp.test_loader = DataLoader( - data, - batch_size=self.val_args.test_batch_size, - shuffle=False, - pin_memory=False) - - prediction = kwargs.get('prediction') if not prediction: - return (self.validator.validate(), self.validator_ramp.validate()) + return self.validator.validate() else: - return (prediction, self.validator_ramp.validate()) + return prediction + + # def predict(self, data, **kwargs): + # if isinstance(data[0], np.ndarray): + # data = preprocess_url(data) + + # if isinstance(data[0], dict): + # data = preprocess_frames(data) + + # self.validator.test_loader = DataLoader( + # data, + # batch_size=self.val_args.test_batch_size, + # shuffle=False, + # pin_memory=False) + + # # TODO: predict ramp using specific model + # self.validator_ramp.test_loader = DataLoader( + # data, + # batch_size=self.val_args.test_batch_size, + # shuffle=False, + # pin_memory=False) + + # prediction = kwargs.get('prediction') + # if not prediction: + # return (self.validator.validate(), self.validator_ramp.validate()) + # else: + # return (prediction, self.validator_ramp.validate()) def evaluate(self, data, **kwargs): predictions = self.predict(data.x) diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/evaluate.py b/examples/lifelong_learning/robot_dog_delivery/RFNet/evaluate.py index 17be55c4..dbcdeda5 100644 --- a/examples/lifelong_learning/robot_dog_delivery/RFNet/evaluate.py +++ b/examples/lifelong_learning/robot_dog_delivery/RFNet/evaluate.py @@ -4,7 +4,7 @@ from sedna.core.lifelong_learning import LifelongLearning from sedna.datasources import TxtDataParse from sedna.common.config import Context -from accuracy import robo_accuracy +from accuracy import accuracy from basemodel import Model @@ -29,23 +29,19 @@ def eval(): "method": "TaskAllocationSimple" } - inference_integrate = { - "method": "InferenceIntegrateByType" - } - ll_job = LifelongLearning(estimator, task_definition=None, task_relationship_discovery=None, task_allocation=task_allocation, task_remodeling=None, - inference_integrate=inference_integrate, + inference_integrate=None, task_update_decision=None, unseen_task_allocation=None, unseen_sample_recognition=None, unseen_sample_re_recognition=None ) - ll_job.evaluate(eval_data, metrics=robo_accuracy) + ll_job.evaluate(eval_data, metrics=accuracy) if __name__ == '__main__': diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/predict.py b/examples/lifelong_learning/robot_dog_delivery/RFNet/predict.py index b43627dc..f477f54e 100644 --- a/examples/lifelong_learning/robot_dog_delivery/RFNet/predict.py +++ b/examples/lifelong_learning/robot_dog_delivery/RFNet/predict.py @@ -1,15 +1,10 @@ import os - -import cv2 import time -import numpy as np -from PIL import Image -import warnings -from sedna.datasources import BaseDataSource, TxtDataParse -from basemodel import Model, preprocess_frames +from sedna.datasources import BaseDataSource from sedna.core.lifelong_learning import LifelongLearning -from sedna.common.config import Context + +from basemodel import Model def preprocess(samples): @@ -17,7 +12,6 @@ def preprocess(samples): data.x = [samples] return data - def postprocess(samples): image_names, imgs = [], [] for sample in samples: @@ -27,21 +21,8 @@ def postprocess(samples): return image_names, imgs - -def _load_txt_dataset(dataset_url): - # use original dataset url - original_dataset_url = Context.get_parameters('original_dataset_url', "") - dataset_urls = dataset_url.split() - dataset_urls = [ - os.path.join( - os.path.dirname(original_dataset_url), - dataset_url) for dataset_url in dataset_urls] - return dataset_urls[:-1], dataset_urls[-1] - - -def init_ll_job(**kwargs): +def init_ll_job(): estimator = Model(num_class=31, - weight_path=kwargs.get('weight_path'), save_predicted_image=True, merge=True) @@ -51,26 +32,7 @@ def init_ll_job(**kwargs): unseen_task_allocation = { "method": "UnseenTaskAllocationDefault" } - - unseen_sample_recognition = { - "method": "OodIdentification", - "param": { - "OOD_thresh": float(kwargs.get("OOD_thresh")), - "backup_model": kwargs.get("OOD_backup_model"), - "OOD_model_path": kwargs.get("OOD_model"), - "preprocess_func": preprocess_frames, - "base_model": Model - } - } - - # unseen_sample_recognition = { - # "method": "SampleRegonitionRobotic" - # } - - inference_integrate = { - "method": "InferenceIntegrateByType" - } - + ll_job = LifelongLearning( estimator, unseen_estimator=unseen_task_processing, @@ -78,62 +40,13 @@ def init_ll_job(**kwargs): task_relationship_discovery=None, task_allocation=task_allocation, task_remodeling=None, - inference_integrate=inference_integrate, + inference_integrate=None, task_update_decision=None, unseen_task_allocation=unseen_task_allocation, - unseen_sample_recognition=unseen_sample_recognition, + unseen_sample_recognition=None, unseen_sample_re_recognition=None) - return ll_job def unseen_task_processing(): return "Warning: unseen sample detected." - - -def predict(): - ll_job = init_ll_job() - - camera_address = Context.get_parameters('video_url') - # use video streams for testing - camera = cv2.VideoCapture(camera_address) - fps = 10 - nframe = 0 - while 1: - ret, input_yuv = camera.read() - if not ret: - time.sleep(5) - camera = cv2.VideoCapture(camera_address) - continue - - if nframe % fps: - nframe += 1 - continue - - img_rgb = cv2.cvtColor(input_yuv, cv2.COLOR_BGR2RGB) - nframe += 1 - if nframe % 1000 == 1: # logs every 1000 frames - warnings.warn(f"camera is open, current frame index is {nframe}") - - img_rgb = cv2.resize(np.array(img_rgb), (2048, 1024), - interpolation=cv2.INTER_CUBIC) - img_rgb = Image.fromarray(img_rgb) - data = {'image': img_rgb, "depth": img_rgb, "label": img_rgb} - data = preprocess(data) - print(postprocess) - print("Inference results:", ll_job.inference( - data=data, post_process=postprocess)) - - -def predict_batch(): - ll_job = init_ll_job() - - test_dataset_url = Context.get_parameters("test_dataset_url") - test_data = TxtDataParse(data_type="test", func=_load_txt_dataset) - test_data.parse(test_dataset_url, use_raw=False) - - return ll_job.inference(data=test_data) - - -if __name__ == '__main__': - print(predict()) diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13160.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13160.png deleted file mode 100644 index d10fd68c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13160.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13160_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13160_TrainIds.png deleted file mode 100644 index f42d1956..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13160_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13171.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13171.png deleted file mode 100644 index b675d455..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13171.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13171_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13171_TrainIds.png deleted file mode 100644 index f6573297..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13171_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13175.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13175.png deleted file mode 100644 index 92ad57bd..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13175.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13175_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13175_TrainIds.png deleted file mode 100644 index 06541247..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13175_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13177.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13177.png deleted file mode 100644 index 70726602..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13177.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13177_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13177_TrainIds.png deleted file mode 100644 index 80f8bdb7..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13177_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13179.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13179.png deleted file mode 100644 index 3e62cb3e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13179.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13179_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13179_TrainIds.png deleted file mode 100644 index 09c7026d..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13179_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13183.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13183.png deleted file mode 100644 index 824cdfec..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13183.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13183_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13183_TrainIds.png deleted file mode 100644 index cc0d0be4..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13183_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13185.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13185.png deleted file mode 100644 index e1307240..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13185.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13185_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13185_TrainIds.png deleted file mode 100644 index f2b01a8f..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13185_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13191.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13191.png deleted file mode 100644 index a52892a6..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13191.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13191_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13191_TrainIds.png deleted file mode 100644 index 15ce91e7..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13191_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13193.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13193.png deleted file mode 100644 index a7362644..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13193.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13193_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13193_TrainIds.png deleted file mode 100644 index 388a1eb6..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13193_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13195.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13195.png deleted file mode 100644 index 50857cd0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13195.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13195_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13195_TrainIds.png deleted file mode 100644 index 766ff636..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13195_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13202.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13202.png deleted file mode 100644 index 8b1a09d8..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13202.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13202_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13202_TrainIds.png deleted file mode 100644 index 5f9f5d77..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13202_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13206.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13206.png deleted file mode 100644 index 5037f822..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13206.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13206_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13206_TrainIds.png deleted file mode 100644 index 7b9fff87..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13206_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13207.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13207.png deleted file mode 100644 index 3b59ea5e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13207.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13207_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13207_TrainIds.png deleted file mode 100644 index 86020e14..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/13207_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-14_515377.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-14_515377.png deleted file mode 100644 index 349b98a8..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-14_515377.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-14_515377_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-14_515377_TrainIds.png deleted file mode 100644 index 9b5105d3..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-14_515377_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-15_966130.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-15_966130.png deleted file mode 100644 index 8c2d0217..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-15_966130.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-15_966130_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-15_966130_TrainIds.png deleted file mode 100644 index e12eb14e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-15_966130_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-17_489035.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-17_489035.png deleted file mode 100644 index 7786b19f..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-17_489035.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-17_489035_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-17_489035_TrainIds.png deleted file mode 100644 index b9e6d599..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-17_489035_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-19_695094.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-19_695094.png deleted file mode 100644 index ffae555d..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-19_695094.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-19_695094_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-19_695094_TrainIds.png deleted file mode 100644 index 2524f6e5..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-19_695094_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-21_551876.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-21_551876.png deleted file mode 100644 index c8e6d487..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-21_551876.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-21_551876_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-21_551876_TrainIds.png deleted file mode 100644 index 0b0b6c6d..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-21_551876_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-23_025886.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-23_025886.png deleted file mode 100644 index c9bccc32..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-23_025886.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-23_025886_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-23_025886_TrainIds.png deleted file mode 100644 index 050486a1..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-23_025886_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-26_890136.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-26_890136.png deleted file mode 100644 index 0049a874..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-26_890136.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-26_890136_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-26_890136_TrainIds.png deleted file mode 100644 index 7e72d096..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-26_890136_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-28_437203.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-28_437203.png deleted file mode 100644 index 848ddf84..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-28_437203.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-28_437203_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-28_437203_TrainIds.png deleted file mode 100644 index 73ce388a..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-28_437203_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-31_327941.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-31_327941.png deleted file mode 100644 index 99dd0b84..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-31_327941.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-31_327941_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-31_327941_TrainIds.png deleted file mode 100644 index 4f8efafe..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-31_327941_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-38_506654.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-38_506654.png deleted file mode 100644 index ebfdbf10..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-38_506654.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-38_506654_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-38_506654_TrainIds.png deleted file mode 100644 index 4e3deeff..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-38_506654_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-40_464012.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-40_464012.png deleted file mode 100644 index 608c1ada..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-40_464012.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-40_464012_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-40_464012_TrainIds.png deleted file mode 100644 index 4a579559..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-40_464012_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-49_070123.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-49_070123.png deleted file mode 100644 index 978ac02c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-49_070123.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-49_070123_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-49_070123_TrainIds.png deleted file mode 100644 index 5471f84e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-53-49_070123_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-01_242212.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-01_242212.png deleted file mode 100644 index 911d0f8d..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-01_242212.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-01_242212_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-01_242212_TrainIds.png deleted file mode 100644 index b7497ab6..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-01_242212_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-02_851088.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-02_851088.png deleted file mode 100644 index 572d79c0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-02_851088.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-02_851088_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-02_851088_TrainIds.png deleted file mode 100644 index 31e0b098..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-02_851088_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-04_658585.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-04_658585.png deleted file mode 100644 index 09d513d3..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-04_658585.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-04_658585_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-04_658585_TrainIds.png deleted file mode 100644 index ceb07088..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-04_658585_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-06_224930.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-06_224930.png deleted file mode 100644 index cddff699..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-06_224930.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-06_224930_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-06_224930_TrainIds.png deleted file mode 100644 index 8479de2f..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-06_224930_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-09_567829.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-09_567829.png deleted file mode 100644 index bdd33126..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-09_567829.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-09_567829_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-09_567829_TrainIds.png deleted file mode 100644 index b300b24e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-09_567829_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-15_114738.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-15_114738.png deleted file mode 100644 index b3b2b80f..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-15_114738.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-15_114738_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-15_114738_TrainIds.png deleted file mode 100644 index 6c36dcb2..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-15_114738_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-58_427370.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-58_427370.png deleted file mode 100644 index 82a24695..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-58_427370.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-58_427370_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-58_427370_TrainIds.png deleted file mode 100644 index 05d45fc8..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-54-58_427370_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-06_005481.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-06_005481.png deleted file mode 100644 index 4273a5b1..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-06_005481.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-06_005481_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-06_005481_TrainIds.png deleted file mode 100644 index b68b346b..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-06_005481_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-07_721892.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-07_721892.png deleted file mode 100644 index a5d1870b..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-07_721892.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-07_721892_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-07_721892_TrainIds.png deleted file mode 100644 index 51e2e3bf..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-56-07_721892_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-24_742443.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-24_742443.png deleted file mode 100644 index c4b6a062..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-24_742443.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-24_742443_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-24_742443_TrainIds.png deleted file mode 100644 index b6731b7e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-24_742443_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-26_566015.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-26_566015.png deleted file mode 100644 index d4eb1d03..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-26_566015.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-26_566015_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-26_566015_TrainIds.png deleted file mode 100644 index 968e236e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-26_566015_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-28_124951.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-28_124951.png deleted file mode 100644 index 58f0afa0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-28_124951.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-28_124951_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-28_124951_TrainIds.png deleted file mode 100644 index 6f0d9692..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-28_124951_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-31_614069.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-31_614069.png deleted file mode 100644 index 52989ba1..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-31_614069.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-31_614069_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-31_614069_TrainIds.png deleted file mode 100644 index ca22a3ce..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-31_614069_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-33_411508.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-33_411508.png deleted file mode 100644 index 96176a73..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-33_411508.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-33_411508_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-33_411508_TrainIds.png deleted file mode 100644 index 4f14978a..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-33_411508_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-35_197151.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-35_197151.png deleted file mode 100644 index 722375f6..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-35_197151.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-35_197151_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-35_197151_TrainIds.png deleted file mode 100644 index b9bd9281..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-35_197151_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-38_807777.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-38_807777.png deleted file mode 100644 index c8530fff..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-38_807777.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-38_807777_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-38_807777_TrainIds.png deleted file mode 100644 index 837dbed0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-57-38_807777_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-11_928336.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-11_928336.png deleted file mode 100644 index a03fa89a..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-11_928336.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-11_928336_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-11_928336_TrainIds.png deleted file mode 100644 index 27e15ced..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-11_928336_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-56_205582.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-56_205582.png deleted file mode 100644 index f43a3b91..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-56_205582.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-56_205582_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-56_205582_TrainIds.png deleted file mode 100644 index d2558b36..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-56_205582_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-58_353006.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-58_353006.png deleted file mode 100644 index 01159764..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-58_353006.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-58_353006_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-58_353006_TrainIds.png deleted file mode 100644 index 153ce653..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-15-59-58_353006_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-00_065629.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-00_065629.png deleted file mode 100644 index 042d10c1..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-00_065629.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-00_065629_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-00_065629_TrainIds.png deleted file mode 100644 index 67e1f50a..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-00_065629_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-01_851162.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-01_851162.png deleted file mode 100644 index 58f50186..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-01_851162.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-01_851162_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-01_851162_TrainIds.png deleted file mode 100644 index a38e3ccf..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-00-01_851162_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-28-25_829353.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-28-25_829353.png deleted file mode 100644 index 58276ab0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-28-25_829353.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-28-25_829353_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-28-25_829353_TrainIds.png deleted file mode 100644 index 03b5091c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-28-25_829353_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-00_217607.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-00_217607.png deleted file mode 100644 index 9e7b655c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-00_217607.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-00_217607_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-00_217607_TrainIds.png deleted file mode 100644 index 1a4a2a4c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-00_217607_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-01_555885.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-01_555885.png deleted file mode 100644 index 2c514532..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-01_555885.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-01_555885_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-01_555885_TrainIds.png deleted file mode 100644 index 27f428ca..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-01_555885_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-07_249478.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-07_249478.png deleted file mode 100644 index d48b8d22..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-07_249478.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-07_249478_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-07_249478_TrainIds.png deleted file mode 100644 index 7d11ee7d..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-07_249478_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-18_596936.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-18_596936.png deleted file mode 100644 index a93f2fd8..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-18_596936.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-18_596936_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-18_596936_TrainIds.png deleted file mode 100644 index 4e5ef53a..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-18_596936_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-20_047335.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-20_047335.png deleted file mode 100644 index 0a0d7a0c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-20_047335.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-20_047335_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-20_047335_TrainIds.png deleted file mode 100644 index 9eceb626..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-20_047335_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-37_817718.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-37_817718.png deleted file mode 100644 index 050fc01e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-37_817718.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-37_817718_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-37_817718_TrainIds.png deleted file mode 100644 index 77255fbd..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-37_817718_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-39_236435.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-39_236435.png deleted file mode 100644 index ca042cb2..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-39_236435.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-39_236435_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-39_236435_TrainIds.png deleted file mode 100644 index b55dd40e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-39_236435_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-42_236031.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-42_236031.png deleted file mode 100644 index 5c299abc..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-42_236031.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-42_236031_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-42_236031_TrainIds.png deleted file mode 100644 index 00abc1f9..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-42_236031_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-43_640775.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-43_640775.png deleted file mode 100644 index e18536de..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-43_640775.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-43_640775_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-43_640775_TrainIds.png deleted file mode 100644 index 82b24318..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-29-43_640775_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-30-39_581592.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-30-39_581592.png deleted file mode 100644 index 61c44af3..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-30-39_581592.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-30-39_581592_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-30-39_581592_TrainIds.png deleted file mode 100644 index 42b6eab0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-30-39_581592_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-31-27_660984.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-31-27_660984.png deleted file mode 100644 index 0d4ccfbd..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-31-27_660984.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-31-27_660984_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-31-27_660984_TrainIds.png deleted file mode 100644 index 93daf32e..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-31-27_660984_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-33-14_006899.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-33-14_006899.png deleted file mode 100644 index cd315a8b..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-33-14_006899.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-33-14_006899_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-33-14_006899_TrainIds.png deleted file mode 100644 index ae82df42..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-33-14_006899_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-31_571242.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-31_571242.png deleted file mode 100644 index 68004639..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-31_571242.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-31_571242_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-31_571242_TrainIds.png deleted file mode 100644 index 62d20914..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-31_571242_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-33_210791.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-33_210791.png deleted file mode 100644 index 9fc93372..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-33_210791.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-33_210791_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-33_210791_TrainIds.png deleted file mode 100644 index ff5fc131..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-33_210791_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-35_686143.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-35_686143.png deleted file mode 100644 index 3bc3c47c..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-35_686143.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-35_686143_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-35_686143_TrainIds.png deleted file mode 100644 index f58bfaaa..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-44-35_686143_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-20_720855.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-20_720855.png deleted file mode 100644 index aff0f7cd..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-20_720855.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-20_720855_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-20_720855_TrainIds.png deleted file mode 100644 index a0fa3afa..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-20_720855_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-22_214504.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-22_214504.png deleted file mode 100644 index a7c85022..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-22_214504.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-22_214504_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-22_214504_TrainIds.png deleted file mode 100644 index f642f5f2..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-22_214504_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-24_617094.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-24_617094.png deleted file mode 100644 index da3dabc0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-24_617094.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-24_617094_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-24_617094_TrainIds.png deleted file mode 100644 index eb61d390..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-24_617094_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-38_162661.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-38_162661.png deleted file mode 100644 index 51b6ac80..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-38_162661.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-38_162661_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-38_162661_TrainIds.png deleted file mode 100644 index 4a25203d..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-16-46-38_162661_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-15_806414.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-15_806414.png deleted file mode 100644 index b210f9ec..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-15_806414.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-15_806414_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-15_806414_TrainIds.png deleted file mode 100644 index 13109272..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-15_806414_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-19_712282.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-19_712282.png deleted file mode 100644 index db07f5e0..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-19_712282.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-19_712282_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-19_712282_TrainIds.png deleted file mode 100644 index 655ef704..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-50-19_712282_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-52-15_401125.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-52-15_401125.png deleted file mode 100644 index 8928fc00..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-52-15_401125.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-52-15_401125_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-52-15_401125_TrainIds.png deleted file mode 100644 index 31972f6a..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-52-15_401125_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-53-12_492025.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-53-12_492025.png deleted file mode 100644 index 1d999e70..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-53-12_492025.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-53-12_492025_TrainIds.png b/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-53-12_492025_TrainIds.png deleted file mode 100644 index 03d17260..00000000 Binary files a/examples/lifelong_learning/robot_dog_delivery/RFNet/ramp/2022-09-05-17-53-12_492025_TrainIds.png and /dev/null differ diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/robo_infer_service.py b/examples/lifelong_learning/robot_dog_delivery/RFNet/robo_infer_service.py index edbf7b5c..64bed515 100644 --- a/examples/lifelong_learning/robot_dog_delivery/RFNet/robo_infer_service.py +++ b/examples/lifelong_learning/robot_dog_delivery/RFNet/robo_infer_service.py @@ -28,6 +28,7 @@ from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import HTMLResponse from sedna.common.utils import get_host_ip from sedna.common.config import BaseConfig +from sedna.common.config import Context from predict import init_ll_job, preprocess from ramp_postprocess import get_ramp @@ -125,12 +126,7 @@ class InferenceServer(BaseServer): # pylint: disable=too-many-arguments http_port=http_port, workers=workers) - params = {"OOD_backup_model": "/home/lsq/RFNet/models/epoch35.pth", - "OOD_model": "/home/lsq/RFNet/models/lr_model35.model", - "OOD_thresh": 0.45 - } - params = dict(params) - self.ll_job = init_ll_job(**params) + self.ll_job = init_ll_job() self.inference_image_dir = os.environ.get("IMAGE_TOPIC_URL", os.path.join( BaseConfig.data_path_prefix, "inference_images")) @@ -177,7 +173,6 @@ class InferenceServer(BaseServer): # pylint: disable=too-many-arguments self.index_frame = self.index_frame + 1 - # img_rgb = cv2.resize(np.array(self.image), (2048, 1024), interpolation=cv2.INTER_CUBIC) img_rgb = Image.fromarray(np.array(self.image)) if depth: depth_contents = await depth.read() @@ -194,7 +189,7 @@ class InferenceServer(BaseServer): # pylint: disable=too-many-arguments print("preprocess time:", end_time1 - start_time) end_time2 = time.time() - results, is_unseen_task, _ = self.ll_job.inference(predict_data) + prediction, is_unseen_task, _ = self.ll_job.inference(predict_data) end_time3 = time.time() print("inference time: ", end_time3 - end_time2) if is_unseen_task: @@ -211,24 +206,21 @@ class InferenceServer(BaseServer): # pylint: disable=too-many-arguments "code": 0 } - curb_results, ramp_results = results - - # self.model.validator.test_loader = DataLoader( - # predict_data.x, - # batch_size=self.model.val_args.test_batch_size, - # shuffle=False, - # pin_memory=True) - # results = self.model.validator.validate() + # curb_results, ramp_results = results img_rgb = cv2.resize(np.array(self.image), (2048, 1024), interpolation=cv2.INTER_CUBIC) img_rgb = Image.fromarray(np.array(img_rgb)) - results = post_process(curb_results) + + results = post_process(prediction) curr, future = get_curb(results["result"]["box"], img_rgb) results["result"]["curr"] = curr results["result"]["future"] = future results["result"]["box"] = None - results["result"]["ramp"] = get_ramp(ramp_results[0].tolist(), img_rgb) + if Context.get_parameters("robo_skill") == "ramp_detection": + results["result"]["ramp"] = get_ramp(prediction[0].tolist(), img_rgb) + else: + results["result"]["ramp"] = "no_ramp" end_time4 = time.time() print("total time:", end_time4 - start_time) diff --git a/examples/lifelong_learning/robot_dog_delivery/RFNet/train.py b/examples/lifelong_learning/robot_dog_delivery/RFNet/train.py index 468d45dd..26e352f7 100644 --- a/examples/lifelong_learning/robot_dog_delivery/RFNet/train.py +++ b/examples/lifelong_learning/robot_dog_delivery/RFNet/train.py @@ -1,4 +1,16 @@ import os +<<<<<<< HEAD +======= +os.environ["TRAIN_DATASET_URL"] = "/home/lsq/RFNet/data_index/train.txt" +os.environ["OUTPUT_URL"] = "s3://kubeedge/sedna-robo/kb/" +# os.environ["CLOUD_KB_INDEX"] = "s3://kubeedge/sedna-robo/kb/index.pkl" +os.environ["HAS_COMPLETED_INITIAL_TRAINING"] = "false" +os.environ["KB_SERVER"] = "http://0.0.0.0:9020" + +os.environ["S3_ENDPOINT_URL"] = "https://obs.cn-north-1.myhuaweicloud.com" +os.environ["SECRET_ACCESS_KEY"] = "OYPxi4uD9k5E90z0Od3Ug99symbJZ0AfyB4oveQc" +os.environ["ACCESS_KEY_ID"] = "EMPTKHQUGPO2CDUFD2YR" +>>>>>>> open-source from sedna.core.lifelong_learning import LifelongLearning from sedna.common.config import Context, BaseConfig diff --git a/lib/requirements.dev.txt b/lib/requirements.dev.txt index 96ccce44..db7fb5b4 100644 --- a/lib/requirements.dev.txt +++ b/lib/requirements.dev.txt @@ -1,5 +1,5 @@ # federated_learning -plato-learn~=0.26 # Apache-2.0 +plato-learn # Apache-2.0 # lifelong_learning scikit-learn~=0.24.1 # BSD # multi_edge_inference diff --git a/lib/requirements.txt b/lib/requirements.txt index b6b9ddfe..aaefd9f0 100644 --- a/lib/requirements.txt +++ b/lib/requirements.txt @@ -2,7 +2,7 @@ numpy>=1.13.3 # BSD colorlog~=4.7.2 # MIT websockets~=9.1 # BSD requests>=2.24.0 # Apache-2.0 -PyYAML~=5.4.1 # MIT +PyYAML # MIT setuptools~=54.2.0 fastapi~=0.68.1 # MIT pydantic>=1.8.1 # MIT @@ -11,4 +11,5 @@ joblib~=1.0.1 # BSD pandas~=1.1.5 # BSD six~=1.15.0 # MIT minio~=7.0.3 # Apache-2.0 -uvicorn~=0.14.0 # BSD \ No newline at end of file +uvicorn~=0.14.0 # BSD +pycocotools \ No newline at end of file diff --git a/lib/sedna/algorithms/knowledge_management/task_evaluation/__init__.py b/lib/sedna/algorithms/knowledge_management/task_evaluation/__init__.py deleted file mode 100644 index 61d5b5cd..00000000 --- a/lib/sedna/algorithms/knowledge_management/task_evaluation/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2021 The KubeEdge Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from . import task_evaluation \ No newline at end of file diff --git a/lib/sedna/algorithms/knowledge_management/task_evaluation/task_evaluation.py b/lib/sedna/algorithms/knowledge_management/task_evaluation/task_evaluation.py deleted file mode 100644 index a3eb02cc..00000000 --- a/lib/sedna/algorithms/knowledge_management/task_evaluation/task_evaluation.py +++ /dev/null @@ -1,80 +0,0 @@ -from sedna.common.config import Context -from sedna.common.log import LOGGER -from sedna.common.class_factory import ClassType, ClassFactory - -__all__ = ('TaskEvaluationDefault', ) - - -@ClassFactory.register(ClassType.KM) -class TaskEvaluationDefault: - """ - Evaluated the performance of each seen task and filter seen tasks - based on defined rules. - - Parameters - ---------- - estimator: Instance - An instance with the high-level API that greatly simplifies - machine learning programming. Estimators encapsulate training, - evaluation, prediction, and exporting for your model. - """ - - def __init__(self, **kwargs): - self.log = LOGGER - - def __call__(self, tasks_detail, **kwargs): - """ - Parameters - ---------- - tasks_detail: List[Task] - output of module task_update_decision, consisting of results of evaluation. - metrics : function / str - Metrics to assess performance on the task by given prediction. - metrics_param : Dict - parameter for metrics function. - kwargs: Dict - parameters for `estimator` evaluate. - - Returns - ------- - drop_task: List[str] - names of the tasks which will not to be deployed to the edge. - """ - - self.model_filter_operator = Context.get_parameters("operator", ">") - self.model_threshold = float( - Context.get_parameters( - "model_threshold", 0.1)) - - drop_tasks = [] - - operator_map = { - ">": lambda x, y: x > y, - "<": lambda x, y: x < y, - "=": lambda x, y: x == y, - ">=": lambda x, y: x >= y, - "<=": lambda x, y: x <= y, - } - if self.model_filter_operator not in operator_map: - self.log.warn( - f"operator {self.model_filter_operator} use to " - f"compare is not allow, set to <" - ) - self.model_filter_operator = "<" - operator_func = operator_map[self.model_filter_operator] - - for detail in tasks_detail: - scores = detail.scores - entry = detail.entry - self.log.info(f"{entry} scores: {scores}") - if any(map(lambda x: operator_func(float(x), - self.model_threshold), - scores.values())): - self.log.warn( - f"{entry} will not be deploy because all " - f"scores {self.model_filter_operator} {self.model_threshold}") - drop_tasks.append(entry) - continue - drop_task = ",".join(drop_tasks) - - return drop_task diff --git a/lib/sedna/algorithms/seen_task_learning/__init__.py b/lib/sedna/algorithms/seen_task_learning/__init__.py index 3e0d18ac..2ffe68f2 100644 --- a/lib/sedna/algorithms/seen_task_learning/__init__.py +++ b/lib/sedna/algorithms/seen_task_learning/__init__.py @@ -14,13 +14,13 @@ # train from . import task_definition -from . import task_relation_discover +from . import task_relation_discovery # inference from . import task_remodeling from . import task_allocation # result integrate -from . import inference_integrate +from . import inference_integration from .seen_task_learning import SeenTaskLearning diff --git a/lib/sedna/algorithms/seen_task_learning/inference_integrate/__init__.py b/lib/sedna/algorithms/seen_task_learning/inference_integration/__init__.py similarity index 100% rename from lib/sedna/algorithms/seen_task_learning/inference_integrate/__init__.py rename to lib/sedna/algorithms/seen_task_learning/inference_integration/__init__.py diff --git a/lib/sedna/algorithms/seen_task_learning/inference_integrate/inference_integrate.py b/lib/sedna/algorithms/seen_task_learning/inference_integration/inference_integrate.py similarity index 100% rename from lib/sedna/algorithms/seen_task_learning/inference_integrate/inference_integrate.py rename to lib/sedna/algorithms/seen_task_learning/inference_integration/inference_integrate.py diff --git a/lib/sedna/algorithms/seen_task_learning/inference_integrate/inference_integrate_by_type.py b/lib/sedna/algorithms/seen_task_learning/inference_integration/inference_integrate_by_type.py similarity index 100% rename from lib/sedna/algorithms/seen_task_learning/inference_integrate/inference_integrate_by_type.py rename to lib/sedna/algorithms/seen_task_learning/inference_integration/inference_integrate_by_type.py diff --git a/lib/sedna/algorithms/seen_task_learning/seen_task_learning.py b/lib/sedna/algorithms/seen_task_learning/seen_task_learning.py index b9ee0d50..06ae2be8 100644 --- a/lib/sedna/algorithms/seen_task_learning/seen_task_learning.py +++ b/lib/sedna/algorithms/seen_task_learning/seen_task_learning.py @@ -377,14 +377,14 @@ class SeenTaskLearning: feedback = {} for i, task in enumerate(task_groups): - LOGGER.info(f"MTL Train start {i} : {task.entry}") + LOGGER.info(f"MTL update start {i} : {task.entry}") for _task in task.tasks: model_obj = set_backend(estimator=self.base_model) model_obj.load(_task.model) - res = model_obj.train(train_data=task.samples) + model_obj.train(train_data=task.samples) model_path = model_obj.save(model_name=f"{task.entry}.model") model = Model(index=i, entry=task.entry, - model=model_path, result=res) + model=model_path, result={}) break model.meta_attr = [t.meta_attr for t in task.tasks] @@ -411,7 +411,7 @@ class SeenTaskLearning: task index file path, default self.task_index_url. """ if not task_index: - raise Exception("Task index does not exist.") + raise Exception("Task index does not exist!") if isinstance(task_index, str): task_index = FileOps.load(task_index) @@ -458,6 +458,11 @@ class SeenTaskLearning: if post_process: callback = ClassFactory.get_cls(ClassType.CALLBACK, post_process)() + res = kwargs.get("prediction") + tasks = kwargs.get("tasks") + if res and tasks: + return res, tasks + tasks = [] for inx, df in enumerate(samples): m = models[inx] diff --git a/lib/sedna/algorithms/seen_task_learning/task_definition/task_definition_simple.py b/lib/sedna/algorithms/seen_task_learning/task_definition/task_definition_simple.py index a45e9546..d11691ef 100644 --- a/lib/sedna/algorithms/seen_task_learning/task_definition/task_definition_simple.py +++ b/lib/sedna/algorithms/seen_task_learning/task_definition/task_definition_simple.py @@ -8,7 +8,7 @@ from ..artifact import Task @ClassFactory.register(ClassType.STP) class TaskDefinitionSimple: """ - Dividing datasets based on the their origins. + Dividing datasets based on the their original sites. Parameters ---------- diff --git a/lib/sedna/algorithms/seen_task_learning/task_relation_discover/__init__.py b/lib/sedna/algorithms/seen_task_learning/task_relation_discover/__init__.py deleted file mode 100644 index 229b9584..00000000 --- a/lib/sedna/algorithms/seen_task_learning/task_relation_discover/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ - -from . import task_relation_discover - diff --git a/lib/sedna/algorithms/seen_task_learning/task_relation_discovery/__init__.py b/lib/sedna/algorithms/seen_task_learning/task_relation_discovery/__init__.py new file mode 100644 index 00000000..9fd02dba --- /dev/null +++ b/lib/sedna/algorithms/seen_task_learning/task_relation_discovery/__init__.py @@ -0,0 +1,3 @@ + +from . import task_relation_discovery + diff --git a/lib/sedna/algorithms/seen_task_learning/task_relation_discover/task_relation_discover.py b/lib/sedna/algorithms/seen_task_learning/task_relation_discovery/task_relation_discovery.py similarity index 100% rename from lib/sedna/algorithms/seen_task_learning/task_relation_discover/task_relation_discover.py rename to lib/sedna/algorithms/seen_task_learning/task_relation_discovery/task_relation_discovery.py diff --git a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/__init__.py b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/__init__.py index 9f435076..35f782a4 100644 --- a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/__init__.py +++ b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/__init__.py @@ -13,6 +13,4 @@ # limitations under the License. from . import unseen_sample_recognition -from . import unseen_sample_recognition_robotic -from . import ood_identification from . import unseen_sample_detection \ No newline at end of file diff --git a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/ood_identification.py b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/ood_identification.py deleted file mode 100644 index 9bfc8bd6..00000000 --- a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/ood_identification.py +++ /dev/null @@ -1,151 +0,0 @@ -from typing import Tuple -import time - -import torch -import numpy as np -from torch.utils.data import DataLoader -import torchvision -from PIL import Image - -from sedna.backend import set_backend -from sedna.common.file_ops import FileOps -from sedna.datasources import BaseDataSource -from sedna.common.class_factory import ClassFactory, ClassType - -__all__ = ('OodIdentification',) - - -@ClassFactory.register(ClassType.UTD, alias="OodIdentification") -class OodIdentification: - """ - Corresponding to `OodIdentification` - - Parameters - ---------- - task_extractor : Dict - used to match target tasks - origins: List[Metadata] - metadata is usually a class feature - label with a finite values. - """ - - def __init__(self, task_index, **kwargs): - print(task_index) - if isinstance(task_index, str) and FileOps.exists(task_index): - self.task_index = FileOps.load(task_index) - else: - self.task_index = task_index - - estimator = kwargs.get("base_model")() - self.estimator = set_backend(estimator) - - self.backup_model = kwargs.get('backup_model') - if not self.backup_model: - self.seen_task_groups = self.task_index.get("seen_task").get("task_groups") - self.seen_model = [task.model for task in self.seen_task_groups][0] - self.estimator.load(self.seen_model.model) - else: - self.estimator.load(self.backup_model) - - self.OOD_thresh = float(kwargs.get("OOD_thresh")) - self.OOD_model_path = kwargs.get("OOD_model_path") - self.ood_model = FileOps.load(self.OOD_model_path) - self.preprocess_func = kwargs.get("preprocess_func") - - def __call__(self, samples: BaseDataSource, ** - kwargs) -> Tuple[BaseDataSource, BaseDataSource]: - ''' - Parameters - ---------- - samples : BaseDataSource - inference samples - - Returns - ------- - seen_task_samples: BaseDataSource - unseen_task_samples: BaseDataSource - ''' - - data = samples.x - data = self.preprocess_func(data) - - self.estimator.estimator.validator.test_loader = DataLoader( - data, - batch_size=len(data), - shuffle=False, - pin_memory=True) - self.seg_model = self.estimator.estimator.validator.model - self.data_loader = self.estimator.estimator.validator.test_loader - - seen_task_samples = BaseDataSource(data_type=samples.data_type) - unseen_task_samples = BaseDataSource(data_type=samples.data_type) - OoD_list = [] - InD_list = [] - - input = None - predictions = [] - self.seg_model.eval() - for i, (sample, image_name) in enumerate(self.data_loader): - image = sample['image'].cuda() - with torch.no_grad(): - output = self.seg_model(image) - - torch.cuda.synchronize() - - pred = output.data.cpu().numpy() - pred = np.argmax(pred, axis=1) - - maxLogit = torch.max(output, 1)[0].unsqueeze(1) - maxLogit = self.batch_min_max(maxLogit) - - softmaxDistance = self.get_softmaxDistance(output).unsqueeze(1) - maxLogit, softmaxDistance = maxLogit.mean( - 1, keepdim=True), softmaxDistance.mean( - 1, keepdim=True) - origin_shape = maxLogit.shape - maxLogit, softmaxDistance = maxLogit.flatten(), softmaxDistance.flatten() - - effec_shape = maxLogit.shape[0] - if input == 'maxLogit': - temp_x = maxLogit.reshape(effec_shape, 1) - elif input == 'softmaxDistance': - temp_x = softmaxDistance.reshape(effec_shape, 1) - else: - temp_x = torch.cat([maxLogit.reshape( - effec_shape, 1), softmaxDistance.reshape(effec_shape, 1)], dim=1) - - OOD_pred = self.ood_model.predict(temp_x.cpu().numpy()) - OOD_pred_show = OOD_pred + 1 - OOD_pred_show = OOD_pred_show.reshape(origin_shape) - maxLogit = maxLogit.reshape(origin_shape) - - for j in range(maxLogit.shape[0]): - OOD_score = (OOD_pred_show[j] == 1).sum( - ) / (OOD_pred_show[j] != 0).sum() - print('OOD_score:', OOD_score) - if OOD_score > self.OOD_thresh: - OoD_list.append(samples.x[0]) - else: - InD_list.append(samples.x[0]) - predictions.append(pred) - - seen_task_samples.x = InD_list - unseen_task_samples.x = OoD_list - return seen_task_samples, unseen_task_samples, predictions - - def batch_min_max(self, img): - max_value = torch.amax(img, [1, 2, 3]).unsqueeze(dim=1) - min_value = torch.amin(img, [1, 2, 3]).unsqueeze(dim=1) - - [b, n, h, w] = img.shape - img1 = img.reshape(b, -1) - img2 = (img1 - min_value) / (max_value - min_value) - img2 = img2.reshape([b, n, h, w]) - return img2 - - def get_softmaxDistance(self, logits): - seg_softmax_out = torch.nn.Softmax(dim=1)(logits.detach()) - distance, _ = torch.topk(seg_softmax_out, 2, dim=1) - max_softmaxLogit = distance[:, 0, :, :] - max2nd_softmaxLogit = distance[:, 1, :, :] - return max_softmaxLogit - max2nd_softmaxLogit diff --git a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_detection.py b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_detection.py index 32c5d4f6..b42d0b32 100644 --- a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_detection.py +++ b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_detection.py @@ -20,7 +20,6 @@ class UnseenSampleDetection(threading.Thread): task_index: str or dict knowledge base index which includes indexes of tasks, samples and etc. ''' - # MODEL_MANIPULATION_SEM = threading.Semaphore(1) def __init__(self, edge_knowledge_management, **kwargs): self.get_environ_varia() diff --git a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition.py b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition.py index 7ce6a3ab..6959287b 100644 --- a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition.py +++ b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition.py @@ -50,55 +50,10 @@ class SampleRegonitionDefault: else: seen_task_samples.x = samples.x unseen_task_samples.x = [] - return seen_task_samples, unseen_task_samples + return seen_task_samples, unseen_task_samples, None, None sample_num = int(len(samples.x) / 2) seen_task_samples.x = samples.x[:sample_num] unseen_task_samples.x = samples.x[sample_num:] - return seen_task_samples, unseen_task_samples - -@ClassFactory.register(ClassType.UTD) -class SampleRegonitionByRFNet: - ''' - Divide inference samples into seen samples and unseen samples by confidence. - - Parameters - ---------- - task_index: str or dict - knowledge base index which includes indexes of tasks, samples and etc. - ''' - - def __init__(self, task_index, **kwargs): - if isinstance(task_index, str) and FileOps.exists(task_index): - self.task_index = FileOps.load(task_index) - else: - self.task_index = task_index - - self.validator = kwargs.get("validator") - - def __call__(self, samples: BaseDataSource, ** - kwargs) -> Tuple[BaseDataSource, BaseDataSource]: - ''' - Parameters - ---------- - samples : BaseDataSource - inference samples - - Returns - ------- - seen_task_samples: BaseDataSource - unseen_task_samples: BaseDataSource - ''' - from torch.utils.data import DataLoader - - self.validator.test_loader = DataLoader( - samples.x, batch_size=1, shuffle=False) - - seen_task_samples = BaseDataSource(data_type=samples.data_type) - unseen_task_samples = BaseDataSource(data_type=samples.data_type) - - seen_task_samples.x, unseen_task_samples.x = self.validator.task_divide() - - return seen_task_samples, unseen_task_samples - + return seen_task_samples, unseen_task_samples, None, None \ No newline at end of file diff --git a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition_robotic.py b/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition_robotic.py deleted file mode 100644 index c3afb538..00000000 --- a/lib/sedna/algorithms/unseen_task_detection/unseen_sample_recognition/unseen_sample_recognition_robotic.py +++ /dev/null @@ -1,39 +0,0 @@ -from typing import Tuple - -from sedna.datasources import BaseDataSource -from sedna.common.class_factory import ClassFactory, ClassType - -__all__ = ('SampleRegonitionRobotic') - -@ClassFactory.register(ClassType.UTD) -class SampleRegonitionRobotic: - ''' - Divide inference samples into seen samples and unseen samples - - Parameters - ---------- - task_index: str or dict - knowledge base index which includes indexes of tasks, samples and etc. - ''' - - def __init__(self, task_index, **kwargs): - pass - - def __call__(self, samples: BaseDataSource) -> Tuple[BaseDataSource, BaseDataSource]: - ''' - Parameters - ---------- - samples : BaseDataSource - inference samples - - Returns - ------- - seen_task_samples: BaseDataSource - unseen_task_samples: BaseDataSource - ''' - seen_task_samples = BaseDataSource(data_type=samples.data_type) - seen_task_samples.x = samples.x - unseen_task_samples = BaseDataSource(data_type=samples.data_type) - # unseen_task_samples.x = samples.x - - return seen_task_samples, unseen_task_samples, None \ No newline at end of file diff --git a/lib/sedna/backend/base.py b/lib/sedna/backend/base.py index 45975bb6..1395e66b 100644 --- a/lib/sedna/backend/base.py +++ b/lib/sedna/backend/base.py @@ -61,6 +61,15 @@ class BackendBase: varkw = self.parse_kwargs(fit_method, **kwargs) return fit_method(*args, **varkw) + def update(self, *args, **kwargs): + """Update model.""" + if callable(self.estimator): + varkw = self.parse_kwargs(self.estimator, **kwargs) + self.estimator = self.estimator(**varkw) + fit_method = getattr(self.estimator, "fit", self.estimator.update) + varkw = self.parse_kwargs(fit_method, **kwargs) + return fit_method(*args, **varkw) + def predict(self, *args, **kwargs): """Inference model.""" varkw = self.parse_kwargs(self.estimator.predict, **kwargs) diff --git a/lib/sedna/algorithms/knowledge_management/__init__.py b/lib/sedna/core/lifelong_learning/knowledge_management/__init__.py similarity index 92% rename from lib/sedna/algorithms/knowledge_management/__init__.py rename to lib/sedna/core/lifelong_learning/knowledge_management/__init__.py index 97b4ef87..8521bfb0 100644 --- a/lib/sedna/algorithms/knowledge_management/__init__.py +++ b/lib/sedna/core/lifelong_learning/knowledge_management/__init__.py @@ -15,5 +15,4 @@ from .base_knowledge_management import BaseKnowledgeManagement from .cloud_knowledge_management import CloudKnowledgeManagement from .edge_knowledge_management import EdgeKnowledgeManagement -from . import task_update_decision -from . import task_evaluation \ No newline at end of file +from . import task_update_decision \ No newline at end of file diff --git a/lib/sedna/algorithms/knowledge_management/base_knowledge_management.py b/lib/sedna/core/lifelong_learning/knowledge_management/base_knowledge_management.py similarity index 92% rename from lib/sedna/algorithms/knowledge_management/base_knowledge_management.py rename to lib/sedna/core/lifelong_learning/knowledge_management/base_knowledge_management.py index c8c16d1d..022d81a0 100644 --- a/lib/sedna/algorithms/knowledge_management/base_knowledge_management.py +++ b/lib/sedna/core/lifelong_learning/knowledge_management/base_knowledge_management.py @@ -19,7 +19,7 @@ class BaseKnowledgeManagement: self.task_group_key = KBResourceConstant.TASK_GROUPS.value self.extractor_key = KBResourceConstant.EXTRACTOR.value - self.kb_server = KBClient(kbserver=self.config.ll_kb_server) + self.kb_client = KBClient(kbserver=self.config.ll_kb_server) def update_kb(self, task_index): raise NotImplementedError diff --git a/lib/sedna/algorithms/knowledge_management/cloud_knowledge_management.py b/lib/sedna/core/lifelong_learning/knowledge_management/cloud_knowledge_management.py similarity index 70% rename from lib/sedna/algorithms/knowledge_management/cloud_knowledge_management.py rename to lib/sedna/core/lifelong_learning/knowledge_management/cloud_knowledge_management.py index 4e75660c..7c71ac93 100644 --- a/lib/sedna/algorithms/knowledge_management/cloud_knowledge_management.py +++ b/lib/sedna/core/lifelong_learning/knowledge_management/cloud_knowledge_management.py @@ -4,6 +4,7 @@ import tempfile from sedna.common.class_factory import ClassType, ClassFactory from sedna.common.file_ops import FileOps +from sedna.common.config import Context from sedna.common.constant import KBResourceConstant from .base_knowledge_management import BaseKnowledgeManagement @@ -31,11 +32,6 @@ class CloudKnowledgeManagement(BaseKnowledgeManagement): self.cloud_output_url, config["task_index"]) self.local_task_index_url = KBResourceConstant.KB_INDEX_NAME.value - task_evaluation = kwargs.get("task_evaluation") or {} - self.task_evaluation = task_evaluation.get( - "method", "TaskEvaluationDefault") - self.task_evaluation_param = task_evaluation.get("param", {}) - def update_kb(self, task_index): if isinstance(task_index, str): task_index = FileOps.load(task_index) @@ -63,7 +59,7 @@ class CloudKnowledgeManagement(BaseKnowledgeManagement): fd, name = tempfile.mkstemp() FileOps.dump(task_info, name) - index_file = self.kb_server.update_db(name) + index_file = self.kb_client.update_db(name) if not index_file: self.log.error("KB update Fail !") index_file = name @@ -90,7 +86,7 @@ class CloudKnowledgeManagement(BaseKnowledgeManagement): model_file = model_upload_key[model_file] try: - model = self.kb_server.upload_file(save_model) + model = self.kb_client.upload_file(save_model) self.log.info( f"Upload task model to {model} successfully." ) @@ -114,7 +110,7 @@ class CloudKnowledgeManagement(BaseKnowledgeManagement): task_group.samples.save(sample_dir) try: - sample_dir = self.kb_server.upload_file(sample_dir) + sample_dir = self.kb_client.upload_file(sample_dir) self.log.info(f"Upload task sample to {sample_dir} successfully.") except Exception as err: self.log.error( @@ -127,7 +123,7 @@ class CloudKnowledgeManagement(BaseKnowledgeManagement): ) extractor = FileOps.dump(extractor, save_extractor) try: - extractor = self.kb_server.upload_file(extractor) + extractor = self.kb_client.upload_file(extractor) self.log.info(f"Upload task extractor to {extractor} successfully.") except Exception as err: self.log.error(f"Upload task extractor fail: {err}") @@ -135,6 +131,52 @@ class CloudKnowledgeManagement(BaseKnowledgeManagement): return extractor, task_groups def evaluate_tasks(self, tasks_detail, **kwargs): - method_cls = ClassFactory.get_cls( - ClassType.KM, self.task_evaluation)(**self.task_evaluation_param) - return method_cls(tasks_detail, **kwargs) + """ + Parameters + ---------- + tasks_detail: List[Task] + output of module task_update_decision, consisting of results of evaluation. + + Returns + ------- + drop_task: List[str] + names of the tasks which will not to be deployed to the edge. + """ + + self.model_filter_operator = Context.get_parameters("operator", ">") + self.model_threshold = float( + Context.get_parameters( + "model_threshold", 0.1)) + + drop_tasks = [] + + operator_map = { + ">": lambda x, y: x > y, + "<": lambda x, y: x < y, + "=": lambda x, y: x == y, + ">=": lambda x, y: x >= y, + "<=": lambda x, y: x <= y, + } + if self.model_filter_operator not in operator_map: + self.log.warn( + f"operator {self.model_filter_operator} use to " + f"compare is not allow, set to <" + ) + self.model_filter_operator = "<" + operator_func = operator_map[self.model_filter_operator] + + for detail in tasks_detail: + scores = detail.scores + entry = detail.entry + self.log.info(f"{entry} scores: {scores}") + if any(map(lambda x: operator_func(float(x), + self.model_threshold), + scores.values())): + self.log.warn( + f"{entry} will not be deploy because all " + f"scores {self.model_filter_operator} {self.model_threshold}") + drop_tasks.append(entry) + continue + drop_task = ",".join(drop_tasks) + + return drop_task diff --git a/lib/sedna/algorithms/knowledge_management/edge_knowledge_management.py b/lib/sedna/core/lifelong_learning/knowledge_management/edge_knowledge_management.py similarity index 92% rename from lib/sedna/algorithms/knowledge_management/edge_knowledge_management.py rename to lib/sedna/core/lifelong_learning/knowledge_management/edge_knowledge_management.py index 2ed0f02c..5591139e 100644 --- a/lib/sedna/algorithms/knowledge_management/edge_knowledge_management.py +++ b/lib/sedna/core/lifelong_learning/knowledge_management/edge_knowledge_management.py @@ -43,6 +43,7 @@ class EdgeKnowledgeManagement(BaseKnowledgeManagement): self.edge_output_url, "unseen_samples") os.makedirs(self.local_unseen_save_url, exist_ok=True) + self.pinned_service_start = False self.unseen_sample_observer = None def update_kb(self, task_index): @@ -137,14 +138,15 @@ class EdgeKnowledgeManagement(BaseKnowledgeManagement): LOGGER.info(f"Unseen sample uploading completes.") - def start_observer(self): + def start_services(self): self.unseen_sample_observer = Observer() self.unseen_sample_observer.schedule( UnseenSampleUploadingHandler(), self.local_unseen_save_url, True) self.unseen_sample_observer.start() + ModelHotUpdateThread(self).start() -class ModelLoadingThread(threading.Thread): +class ModelHotUpdateThread(threading.Thread): """Hot task index loading with multithread support""" MODEL_MANIPULATION_SEM = threading.Semaphore(1) @@ -158,25 +160,26 @@ class ModelLoadingThread(threading.Thread): if model_check_time < 1: LOGGER.warning("Catch an abnormal value in " "`MODEL_POLL_PERIOD_SECONDS`, fallback with 60") - model_check_time = 60 + model_check_time = 30 self.version = None self.edge_knowledge_management = edge_knowledge_management self.check_time = model_check_time self.callback = callback task_index = edge_knowledge_management.task_index if FileOps.exists(task_index): - self.version = FileOps.load(task_index).get("create_time") + self.version = str(FileOps.load(task_index).get("create_time")) - super(ModelLoadingThread, self).__init__() + super(ModelHotUpdateThread, self).__init__() + + LOGGER.info(f"Model hot update service starts.") def run(self): while True: time.sleep(self.check_time) latest_task_index = Context.get_parameters("MODEL_URLS", None) - if not self.version: - continue if not latest_task_index: continue + latest_task_index = FileOps.load(latest_task_index) latest_version = str(latest_task_index.get("create_time")) @@ -213,7 +216,10 @@ class UnseenSampleUploadingHandler(FileSystemEventHandler): if not FileOps.is_remote(self.unseen_save_url): os.makedirs(self.unseen_save_url, exist_ok=True) + LOGGER.info(f"Unseen sample uploading service starts.") + def on_created(self, event): + time.sleep(2.0) sample_name = os.path.basename(event.src_path) FileOps.upload(event.src_path, FileOps.join_path( self.unseen_save_url, sample_name)) diff --git a/lib/sedna/algorithms/knowledge_management/task_update_decision/__init__.py b/lib/sedna/core/lifelong_learning/knowledge_management/task_update_decision/__init__.py similarity index 100% rename from lib/sedna/algorithms/knowledge_management/task_update_decision/__init__.py rename to lib/sedna/core/lifelong_learning/knowledge_management/task_update_decision/__init__.py diff --git a/lib/sedna/algorithms/knowledge_management/task_update_decision/task_update_decision.py b/lib/sedna/core/lifelong_learning/knowledge_management/task_update_decision/task_update_decision.py similarity index 87% rename from lib/sedna/algorithms/knowledge_management/task_update_decision/task_update_decision.py rename to lib/sedna/core/lifelong_learning/knowledge_management/task_update_decision/task_update_decision.py index 882862cf..e03b5fa1 100644 --- a/lib/sedna/algorithms/knowledge_management/task_update_decision/task_update_decision.py +++ b/lib/sedna/core/lifelong_learning/knowledge_management/task_update_decision/task_update_decision.py @@ -12,25 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -""" -Divide multiple tasks based on data - -Parameters ----------- -samples: Train data, see `sedna.datasources.BaseDataSource` for more detail. - -Returns -------- -tasks: All tasks based on training data. -task_extractor: Model with a method to predicting target tasks -""" - -import time - from sedna.common.file_ops import FileOps from sedna.datasources import BaseDataSource from sedna.common.class_factory import ClassType, ClassFactory -from sedna.algorithms.seen_task_learning.artifact import Task __all__ = ('UpdateStrategyDefault', ) @@ -38,7 +22,8 @@ __all__ = ('UpdateStrategyDefault', ) @ClassFactory.register(ClassType.KM) class UpdateStrategyDefault: """ - Decide processing strategies for different tasks + Decide processing strategies for different tasks with labeled unseen samples. + Turn unseen samples to be seen. Parameters ---------- diff --git a/lib/sedna/core/lifelong_learning/lifelong_learning.py b/lib/sedna/core/lifelong_learning/lifelong_learning.py index a43f83db..e9bf6125 100644 --- a/lib/sedna/core/lifelong_learning/lifelong_learning.py +++ b/lib/sedna/core/lifelong_learning/lifelong_learning.py @@ -17,18 +17,16 @@ import os from sedna.core.base import JobBase from sedna.common.file_ops import FileOps -from sedna.common.constant import K8sResourceKind, K8sResourceKindStatus -from sedna.common.constant import KBResourceConstant +from sedna.common.constant import K8sResourceKind, K8sResourceKindStatus, KBResourceConstant from sedna.common.config import Context -from sedna.datasources import BaseDataSource from sedna.common.class_factory import ClassType, ClassFactory from sedna.algorithms.seen_task_learning.seen_task_learning import SeenTaskLearning from sedna.algorithms.unseen_task_processing import UnseenTaskProcessing from sedna.algorithms.unseen_task_detection.unseen_sample_recognition.unseen_sample_detection import UnseenSampleDetection from sedna.service.client import KBClient -from sedna.algorithms.knowledge_management.cloud_knowledge_management \ +from sedna.core.lifelong_learning.knowledge_management.cloud_knowledge_management \ import CloudKnowledgeManagement -from sedna.algorithms.knowledge_management.edge_knowledge_management \ +from sedna.core.lifelong_learning.knowledge_management.edge_knowledge_management \ import EdgeKnowledgeManagement @@ -290,13 +288,6 @@ class LifelongLearning(JobBase): seen_samples, unseen_samples = unseen_sample_re_recognition(train_data) - # TODO: retrain temporarily - # historical_data = self._fetch_historical_data(index_url) - # seen_samples.x = np.concatenate( - # (historical_data.x, seen_samples.x, unseen_samples.x), axis=0) - # seen_samples.y = np.concatenate( - # (historical_data.y, seen_samples.y, unseen_samples.y), axis=0) - seen_samples.x = np.concatenate( (seen_samples.x, unseen_samples.x), axis=0) seen_samples.y = np.concatenate( @@ -321,8 +312,7 @@ class LifelongLearning(JobBase): "unseen_task": unseen_task_index, } - task_index = self.cloud_knowledge_management.update_kb( - task_index, self.kb_server) + task_index = self.cloud_knowledge_management.update_kb(task_index) task_info_res = self.cloud_knowledge_management.seen_estimator.model_info( task_index, @@ -406,7 +396,7 @@ class LifelongLearning(JobBase): self._start_inference_service() self.start_inference_service = True - seen_samples, unseen_samples, prediction = self.recognize_unseen_samples(data, **kwargs) + seen_samples, unseen_samples, prediction, allocated_seen_tasks = self.recognize_unseen_samples(data, **kwargs) if unseen_samples.x is not None and unseen_samples.num_examples() > 0: self.edge_knowledge_management.log.info( f"Unseen task is detected.") @@ -423,12 +413,13 @@ class LifelongLearning(JobBase): image_names = list(map(lambda x: x[0], unseen_samples.x)) is_unseen_task = dict(zip(image_names, [True] * unseen_samples.num_examples())) - if seen_samples.x: + if seen_samples.x is not None and seen_samples.num_examples() > 0: seen_res, seen_tasks = self.edge_knowledge_management.seen_estimator.predict( data=seen_samples, post_process=post_process, task_index=self.edge_knowledge_management.task_index, task_type="seen_task", prediction=prediction, + tasks=allocated_seen_tasks, **kwargs ) res = np.concatenate((res, seen_res)) if res else seen_res @@ -470,8 +461,8 @@ class LifelongLearning(JobBase): estimator=self.edge_knowledge_management.seen_estimator.estimator.base_model, **self.unseen_sample_recognition_param) - if not self.edge_knowledge_management.unseen_sample_observer: - self.edge_knowledge_management.start_observer() + if not self.edge_knowledge_management.pinned_service_start: + self.edge_knowledge_management.start_services() def _task_evaluation(self, data, **kwargs): res, tasks_detail = self.cloud_knowledge_management.seen_estimator.evaluate( @@ -488,23 +479,4 @@ class LifelongLearning(JobBase): else: self.log.info(f"Deploy {index_file} to the edge.") - return res, index_file - - def _fetch_historical_data(self, task_index): - if isinstance(task_index, str): - task_index = FileOps.load(task_index) - - samples = BaseDataSource(data_type="train") - - for task_group in task_index["seen_task"]["task_groups"]: - if isinstance(task_group.samples, BaseDataSource): - _samples = task_group.samples - else: - _samples = FileOps.load(task_group.samples.data_url) - - samples.x = _samples.x if samples.x is None else np.concatenate( - (samples.x, _samples.x), axis=0) - samples.y = _samples.y if samples.y is None else np.concatenate( - (samples.y, _samples.y), axis=0) - - return samples + return res, index_file \ No newline at end of file diff --git a/lib/sedna/service/index.pkl b/lib/sedna/service/index.pkl new file mode 100644 index 00000000..ad6a00ff Binary files /dev/null and b/lib/sedna/service/index.pkl differ diff --git a/lib/sedna/service/lifelong_kb.sqlite3 b/lib/sedna/service/lifelong_kb.sqlite3 new file mode 100644 index 00000000..40c01bd3 Binary files /dev/null and b/lib/sedna/service/lifelong_kb.sqlite3 differ