From 6b3614df9504de6d0ebbead974b970b61d16d0ce Mon Sep 17 00:00:00 2001 From: Aashutosh Date: Tue, 6 Aug 2024 14:27:37 +0545 Subject: [PATCH 1/4] Add button for polygon tracking --- .../controls-side-bar/tools-control.tsx | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx index 7d04b64ef2b8..4d276008b0a2 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx @@ -504,7 +504,7 @@ export class ToolsControlComponent extends React.PureComponent { try { const { points } = (e as CustomEvent).detail.shapes[0]; const state = new core.classes.ObjectState({ - shapeType: ShapeType.RECTANGLE, + shapeType: ShapeType.POLYGON, // changed by aashutosh objectType: ObjectType.TRACK, source: core.enums.Source.SEMI_AUTO, zOrder: curZOrder, @@ -592,7 +592,7 @@ export class ToolsControlComponent extends React.PureComponent { const portals = !activeTracker ? [] : states - .filter((objectState) => objectState.objectType === 'track' && objectState.shapeType === 'rectangle') + .filter((objectState) => objectState.objectType === 'track' && objectState.shapeType === 'polygon') // changed by aashutosh .map((objectState: any): React.ReactPortal | null => { const { clientID } = objectState; const selectorID = `#cvat-objects-sidebar-state-item-${clientID}`; @@ -1046,7 +1046,32 @@ export class ToolsControlComponent extends React.PureComponent { } }} > - Track + Track Rectangle + + + + From 26a68349f4673cc84f1b97717aa2145cfe640934 Mon Sep 17 00:00:00 2001 From: Aashutosh Date: Tue, 6 Aug 2024 14:29:20 +0545 Subject: [PATCH 2/4] Add nuclio function for cutie --- .../cutie/nuclio/config/eval_config.yaml | 147 ++++++++++++++++ .../hydra/job_logging/custom-no-rank.yaml | 22 +++ .../config/hydra/job_logging/custom.yaml | 22 +++ .../cutie/nuclio/config/model/base.yaml | 58 +++++++ .../redefine/cutie/nuclio/function-gpu.yaml | 75 ++++++++ .../redefine/cutie/nuclio/function.yaml | 72 ++++++++ .../pytorch/redefine/cutie/nuclio/main.py | 42 +++++ .../redefine/cutie/nuclio/model_handler.py | 164 ++++++++++++++++++ .../redefine/cutie/nuclio/sample/sample.jpg | Bin 0 -> 96100 bytes 9 files changed, 602 insertions(+) create mode 100644 serverless/pytorch/redefine/cutie/nuclio/config/eval_config.yaml create mode 100644 serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom-no-rank.yaml create mode 100644 serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom.yaml create mode 100644 serverless/pytorch/redefine/cutie/nuclio/config/model/base.yaml create mode 100644 serverless/pytorch/redefine/cutie/nuclio/function-gpu.yaml create mode 100644 serverless/pytorch/redefine/cutie/nuclio/function.yaml create mode 100644 serverless/pytorch/redefine/cutie/nuclio/main.py create mode 100644 serverless/pytorch/redefine/cutie/nuclio/model_handler.py create mode 100644 serverless/pytorch/redefine/cutie/nuclio/sample/sample.jpg diff --git a/serverless/pytorch/redefine/cutie/nuclio/config/eval_config.yaml b/serverless/pytorch/redefine/cutie/nuclio/config/eval_config.yaml new file mode 100644 index 000000000000..c43cfceaa9ad --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/config/eval_config.yaml @@ -0,0 +1,147 @@ +defaults: + - _self_ + - model: base + - override hydra/job_logging: custom-no-rank.yaml + +hydra: + run: + dir: ../output/${exp_id}/${dataset} + output_subdir: ${now:%Y-%m-%d_%H-%M-%S}-hydra + +exp_id: default +dataset: d17-val +amp: False +weights: /opt/nuclio/cutie/cutie-base-mega.pth +output_dir: null # defaults to run_dir; specify this to override +flip_aug: False + +# maximum shortest side of the input; -1 means no resizing +# With eval_vos.py, we usually just use the dataset's size (resizing done in dataloader) +# this parameter is added for the sole purpose for the GUI in the current codebase +# InferenceCore will downsize the input and restore the output to the original size if needed +# if you are using this code for some other project, you can also utilize this parameter +max_internal_size: -1 + +# these parameters, when set, override the dataset's default; useful for debugging +image_directory: null +mask_directory: null +json_directory: null +size: null +save_all: null +use_all_masks: null +use_long_term: null +mem_every: null + +# only relevant when long_term is not enabled +max_mem_frames: 5 + +# only relevant when long_term is enabled +long_term: + count_usage: True + max_mem_frames: 10 + min_mem_frames: 5 + num_prototypes: 128 + max_num_tokens: 10000 + buffer_tokens: 2000 + +top_k: 30 +stagger_updates: 5 +chunk_size: -1 # number of objects to process in parallel; -1 means unlimited +save_scores: False +save_aux: False +visualize: False + +datasets: + d16-val: + image_directory: ../DAVIS/2016/JPEGImages/480p + mask_directory: ../DAVIS/2016/Annotations/480p + subset: ../DAVIS/2017/trainval/ImageSets/2016/val.txt + size: 480 + save_all: True + use_all_masks: False + use_long_term: False + mem_every: 5 + d17-val: + image_directory: ../DAVIS/2017/trainval/JPEGImages/480p + mask_directory: ../DAVIS/2017/trainval/Annotations/480p + subset: ../DAVIS/2017/trainval/ImageSets/2017/val.txt + size: 480 + save_all: True + use_all_masks: False + use_long_term: False + mem_every: 5 + d17-test-dev: + image_directory: ../DAVIS/2017/test-dev/JPEGImages/480p + mask_directory: ../DAVIS/2017/test-dev/Annotations/480p + subset: ../DAVIS/2017/test-dev/ImageSets/2017/test-dev.txt + size: 480 + save_all: True + use_all_masks: False + use_long_term: False + mem_every: 5 + y18-val: + image_directory: ../YouTube2018/all_frames/valid_all_frames/JPEGImages + mask_directory: ../YouTube2018/valid/Annotations + json_directory: ../YouTube2018/valid/meta.json + size: 480 + save_all: False + use_all_masks: True + use_long_term: False + mem_every: 5 + y19-val: + image_directory: ../YouTube/all_frames/valid_all_frames/JPEGImages + mask_directory: ../YouTube/valid/Annotations + json_directory: ../YouTube/valid/meta.json + size: 480 + save_all: False + use_all_masks: True + use_long_term: False + mem_every: 5 + mose-val: + image_directory: ../MOSE/valid/JPEGImages + mask_directory: ../MOSE/valid/Annotations + size: 480 + save_all: True + use_all_masks: False + use_long_term: False + mem_every: 5 + generic: + image_directory: null + mask_directory: null + size: -1 + save_all: True + use_all_masks: False + use_long_term: True + mem_every: 5 + burst-val: + skip_frames: -1 + image_directory: ../BURST/frames/val + json_directory: ../BURST/val/first_frame_annotations.json + size: 600 + save_all: False + use_long_term: True + mem_every: 10 + burst-test: + skip_frames: -1 + image_directory: ../BURST/frames/test + json_directory: ../BURST/test/first_frame_annotations.json + size: 600 + save_all: False + use_long_term: True + mem_every: 10 + lvos-val: + image_directory: ../LVOS/valid/JPEGImages + mask_directory: ../LVOS/valid/Annotations_first_only + size: 480 + save_all: False + use_all_masks: True + use_long_term: True + mem_every: 5 + lvos-test: + image_directory: ../LVOS/test/JPEGImages + mask_directory: ../LVOS/test/Annotations + size: 480 + save_all: False + use_all_masks: True + use_long_term: True + mem_every: 5 diff --git a/serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom-no-rank.yaml b/serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom-no-rank.yaml new file mode 100644 index 000000000000..0173c6839546 --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom-no-rank.yaml @@ -0,0 +1,22 @@ +# python logging configuration for tasks +version: 1 +formatters: + simple: + format: '[%(asctime)s][%(levelname)s] - %(message)s' + datefmt: '%Y-%m-%d %H:%M:%S' +handlers: + console: + class: logging.StreamHandler + formatter: simple + stream: ext://sys.stdout + file: + class: logging.FileHandler + formatter: simple + # absolute file path + filename: ${hydra.runtime.output_dir}/${now:%Y-%m-%d_%H-%M-%S}-eval.log + mode: w +root: + level: INFO + handlers: [console, file] + +disable_existing_loggers: false \ No newline at end of file diff --git a/serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom.yaml b/serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom.yaml new file mode 100644 index 000000000000..16d4969189b4 --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/config/hydra/job_logging/custom.yaml @@ -0,0 +1,22 @@ +# python logging configuration for tasks +version: 1 +formatters: + simple: + format: '[%(asctime)s][%(levelname)s][r${oc.env:LOCAL_RANK}] - %(message)s' + datefmt: '%Y-%m-%d %H:%M:%S' +handlers: + console: + class: logging.StreamHandler + formatter: simple + stream: ext://sys.stdout + file: + class: logging.FileHandler + formatter: simple + # absolute file path + filename: ${hydra.runtime.output_dir}/${now:%Y-%m-%d_%H-%M-%S}-rank${oc.env:LOCAL_RANK}.log + mode: w +root: + level: INFO + handlers: [console, file] + +disable_existing_loggers: false \ No newline at end of file diff --git a/serverless/pytorch/redefine/cutie/nuclio/config/model/base.yaml b/serverless/pytorch/redefine/cutie/nuclio/config/model/base.yaml new file mode 100644 index 000000000000..ee88cdc4847f --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/config/model/base.yaml @@ -0,0 +1,58 @@ +pixel_mean: [0.485, 0.456, 0.406] +pixel_std: [0.229, 0.224, 0.225] + +pixel_dim: 256 +key_dim: 64 +value_dim: 256 +sensory_dim: 256 +embed_dim: 256 + +pixel_encoder: + type: resnet50 + ms_dims: [1024, 512, 256] + +mask_encoder: + type: resnet18 + final_dim: 256 + +pixel_pe_scale: 32 +pixel_pe_temperature: 128 + +object_transformer: + embed_dim: ${model.embed_dim} + ff_dim: 2048 + num_heads: 8 + num_blocks: 3 + num_queries: 16 + read_from_pixel: + input_norm: False + input_add_pe: False + add_pe_to_qkv: [True, True, False] + read_from_past: + add_pe_to_qkv: [True, True, False] + read_from_memory: + add_pe_to_qkv: [True, True, False] + read_from_query: + add_pe_to_qkv: [True, True, False] + output_norm: False + query_self_attention: + add_pe_to_qkv: [True, True, False] + pixel_self_attention: + add_pe_to_qkv: [True, True, False] + +object_summarizer: + embed_dim: ${model.object_transformer.embed_dim} + num_summaries: ${model.object_transformer.num_queries} + add_pe: True + +aux_loss: + sensory: + enabled: True + weight: 0.01 + query: + enabled: True + weight: 0.01 + +mask_decoder: + # first value must equal embed_dim + up_dims: [256, 128, 128] diff --git a/serverless/pytorch/redefine/cutie/nuclio/function-gpu.yaml b/serverless/pytorch/redefine/cutie/nuclio/function-gpu.yaml new file mode 100644 index 000000000000..379fe2ffd334 --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/function-gpu.yaml @@ -0,0 +1,75 @@ +# Copyright (C) 2023-2024 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +metadata: + name: pth-redefine-cutie + namespace: redefine + annotations: + name: Cutie + version: 1 + type: tracker + spec: + help_message: The tracker brings video-object-segmentation capabilities to cvat. + +spec: + description: Video object segmentation with Cutie + runtime: 'python:3.9' + handler: main:handler + eventTimeout: 30s + env: + - name: PYTHONPATH + value: /opt/nuclio/cutie + + build: + image: cvat.pth.redefine.cutie:latest-gpu + baseImage: nvidia/cuda:11.8.0-devel-ubuntu20.04 + + directives: + preCopy: + # set NVIDIA container runtime settings + - kind: ENV + value: NVIDIA_VISIBLE_DEVICES=all + - kind: ENV + value: NVIDIA_DRIVER_CAPABILITIES=compute,utility + # disable interactive frontend + - kind: ENV + value: DEBIAN_FRONTEND=noninteractive + # set workdir + - kind: WORKDIR + value: /opt/nuclio/cutie + # install basic deps + - kind: RUN + value: apt-get update && apt-get -y install curl git python3 python3-pip ffmpeg libsm6 libxext6 + # install cutie deps + - kind: RUN + value: pip3 install torch==2.3.1+cu118 torchvision==0.18.1+cu118 torchaudio==2.3.1 -f https://download.pytorch.org/whl/torch_stable.html + # install cutie code + - kind: RUN + value: pip3 install git+https://github.com/hkchengrex/Cutie.git + # download weights + - kind: RUN + value: curl -LO https://github.com/hkchengrex/Cutie/releases/download/v1.0/coco_lvis_h18_itermask.pth + # download weights + - kind: RUN + value: curl -LO https://github.com/hkchengrex/Cutie/releases/download/v1.0/cutie-base-mega.pth + # map pip3 and python3 to pip and python + - kind: RUN + value: ln -s /usr/bin/pip3 /usr/local/bin/pip && ln -s /usr/bin/python3 /usr/bin/python + triggers: + myHttpTrigger: + maxWorkers: 1 + kind: 'http' + workerAvailabilityTimeoutMilliseconds: 10000 + attributes: + maxRequestBodySize: 33554432 # 32MB + resources: + limits: + nvidia.com/gpu: 1 + + platform: + attributes: + restartPolicy: + name: always + maximumRetryCount: 3 + mountMode: volume diff --git a/serverless/pytorch/redefine/cutie/nuclio/function.yaml b/serverless/pytorch/redefine/cutie/nuclio/function.yaml new file mode 100644 index 000000000000..796b72f76e10 --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/function.yaml @@ -0,0 +1,72 @@ +# Copyright (C) 2023-2024 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +metadata: + name: pth-redefine-cutie + namespace: cvat + annotations: + name: Cutie + version: 1 + type: tracker + spec: + help_message: The tracker brings video-object-segmentation capabilities to cvat. + +spec: + description: Video object segmentation with Cutie + runtime: 'python:3.9' + handler: main:handler + eventTimeout: 30s + env: + - name: PYTHONPATH + value: /opt/nuclio/cutie + + build: + image: cvat.pth.redefine.cutie + baseImage: ubuntu:22.04 + + directives: + preCopy: + # disable interactive frontend + - kind: ENV + value: DEBIAN_FRONTEND=noninteractive + # set workdir + - kind: WORKDIR + value: /opt/nuclio/cutie + # install basic deps + - kind: RUN + value: apt-get update && apt-get -y install curl git python3 python3-pip ffmpeg libsm6 libxext6 + # install cutie deps + - kind: RUN + value: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu + - kind: RUN + value: pip3 install pycocotools matplotlib onnxruntime onnx jsonpickle + # install cutie code + - kind: RUN + value: pip3 install git+https://github.com/hkchengrex/Cutie.git + # download weights + - kind: RUN + value: curl -LO https://github.com/hkchengrex/Cutie/releases/download/v1.0/coco_lvis_h18_itermask.pth -o /opt/nuclio/cutie/coco_lvis_h18_itermask.pth + # download weights + - kind: RUN + value: curl -LO https://github.com/hkchengrex/Cutie/releases/download/v1.0/cutie-base-mega.pth -o /opt/nuclio/cutie/cutie-base-mega.pth + # map pip3 and python3 to pip and python + - kind: RUN + value: ln -s /usr/bin/pip3 /usr/local/bin/pip && ln -s /usr/bin/python3 /usr/bin/python + triggers: + myHttpTrigger: + maxWorkers: 2 + kind: 'http' + workerAvailabilityTimeoutMilliseconds: 10000 + attributes: + maxRequestBodySize: 1073741824 # 1GB + resources: + limits: + nvidia.com/gpu: 1 + + platform: + attributes: + restartPolicy: + name: always + maximumRetryCount: 3 + mountMode: volume \ No newline at end of file diff --git a/serverless/pytorch/redefine/cutie/nuclio/main.py b/serverless/pytorch/redefine/cutie/nuclio/main.py new file mode 100644 index 000000000000..5a1e5e41476d --- /dev/null +++ b/serverless/pytorch/redefine/cutie/nuclio/main.py @@ -0,0 +1,42 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +import json +import base64 +from PIL import Image +import io +import numpy as np +from model_handler import ModelHandler + +def init_context(context): + context.logger.info("Init context... 0%") + model = ModelHandler() + context.user_data.model = model + context.logger.info("Init context...100%") + +def handler(context, event): + context.logger.info("Run cutie model") + data = event.body + buf = io.BytesIO(base64.b64decode(data["image"])) + shapes = data.get("shapes") + states = data.get("states") + image = Image.open(buf).convert("RGB") + image = np.asarray(image) + + results = { + "shapes": [], + "states": [] + } + + for i, shape in enumerate(shapes): + shape, state = context.user_data.model.handle(image, shape, states[i] if i np.ndarray: + """Converts a polygon to a mask. + Args: + image (np.ndarray): The image to get the shape from. + points (list): The points of the polygon. + Returns: + np.ndarray: The mask of the polygon. + """ + h, w = image.shape[:2] + if len(points) == 0: + return np.zeros((h, w), dtype=np.int32) + points = np.array(points).reshape(-1, 2).astype(np.int32) + mask = np.zeros((h, w), dtype=np.int32) + mask = cv2.fillPoly(mask, [points], 1) + return mask + +def convert_mask_to_polygon(mask: np.ndarray) -> list: + """Converts a mask to a polygon. + Since tracking designed on one object at that time, only the largest contour is returned. + Args: + mask (np.ndarray): The mask to get contours from. + Returns: + list: The polygon of the mask. + """ + + # contours = None + # if int(cv2.__version__.split('.')[0]) > 3: + # contours = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0] + # else: + # contours = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1] + + # contours = max(contours, key=lambda arr: arr.size) + # if contours.shape.count(1): + # contours = np.squeeze(contours) + # if contours.size < 3 * 2: + # raise Exception('Less then three point have been detected. Can not build a polygon.') + + # polygon = [] + # for point in contours: + # polygon.append([int(point[0]), int(point[1])]) + + contours = cv2.findContours( + mask.astype(np.uint8), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_KCOS + )[0] + + if len(contours) == 0: + return [] + + contours = max(contours, key=lambda arr: arr.size) + + if contours.shape.count(1): + contours = np.squeeze(contours) + + if contours.size < 3 * 2: + return [] + + else: + return contours.reshape(-1).tolist() + +def prepare_numpy_image(image: np.ndarray, device: Literal["cpu", "cuda"]): + """Converts a numpy image to a torch tensor with the correct shape and dtype. + Args: + image (np.ndarray): The image to convert. Should be in the format (H, W, 3) and dtype uint8. + Returns: + torch.Tensor: The converted image, normalized, on the correct device as float32 with shape (3, H, W). + """ + + assert image.shape[2] == 3, "Image should be in the format (H, W, 3)" + assert len(image.shape) == 3, "Image should be of shape (H, W, 3)" + assert image.dtype == np.uint8, "Image should be of dtype uint8" + assert device in ["cpu", "cuda"], "Device should be either 'cpu' or 'cuda'" + + # Put the image on the correct device + image = torch.from_numpy(image.copy()).to(device=device) + # Convert to float32 and transpose to (3, H, W) + image = image.permute(2, 0, 1).float() + # Normalize the image + image = image / 255.0 + return image + +class ModelHandler: + def __init__(self) -> CUTIE: + self.device = 'cuda' if torch.cuda.is_available() else 'cpu' + coco_lvis_weights = '/opt/nuclio/cutie/coco_lvis_h18_itermask.pth' + cutie_base_weights = '/opt/nuclio/cutie/cutie-base-mega.pth' + + assert os.path.exists(cutie_base_weights), f"{cutie_base_weights} does not exist" + + # load configurations + initialize(version_base='1.3.2', config_path="./config", job_name="eval_config") + cfg = compose(config_name="eval_config") + with open_dict(cfg): + cfg['weights'] = cutie_base_weights + get_dataset_cfg(cfg) + + # load model + cutie = CUTIE(cfg).to(self.device).eval() + model_weights = torch.load(cutie_base_weights, map_location=torch.device(self.device)) + cutie.load_weights(model_weights) + + # use one processor per video + # self.processor = InferenceCore(cutie, cfg=cutie.cfg) + # self.processor.max_internal_size = 480 + self.cutie = cutie + + def encode_state(self, state): + # state.pop('net', None) + + for k,v in state.items(): + state[k] = jsonpickle.encode(v) + + return state + + def decode_state(self, state): + for k,v in state.items(): + state[k] = jsonpickle.decode(v) + + # state['net'] = copy(self.cutie) + + self.cutie = state['net'] + self.processor = InferenceCore(self.cutie, cfg=self.cutie.cfg) + self.processor.max_internal_size = 480 + + def handle(self, image: np.array, shape: Optional[List[float]]=None, state: Optional[Dict]=None)->Tuple[List[float], Optional[Dict]]: + image = prepare_numpy_image(image, self.device) + + if state is None: + mask = convert_polygon_to_mask(image, shape) # TODO: only handles single object, need to make sure multi-object can be dealt with + objects = np.unique(mask) + # background '0' does not count as an object + objects = objects[objects != 0].tolist() + mask = torch.from_numpy(mask).to(self.device) + self.processor = InferenceCore(self.cutie, cfg=self.cutie.cfg) + self.processor.max_internal_size = 480 + output_prob = self.processor.step(image, mask, objects=objects) + state = {} + state['net'] = self.cutie + state = self.encode_state(state) + else: + self.decode_state(state) + output_prob = self.processor.step(image) + state = self.encode_state(state) + + mask = self.processor.output_prob_to_mask(output_prob).cpu().numpy().astype(np.uint8) + + shape = convert_mask_to_polygon(mask)# Convert a mask to a polygon + + + return shape, state + diff --git a/serverless/pytorch/redefine/cutie/nuclio/sample/sample.jpg b/serverless/pytorch/redefine/cutie/nuclio/sample/sample.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef6b54eb69bdb3ec5fc8b4083de25e0cef37aaae GIT binary patch literal 96100 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

9LTCQv!5P$twEt!rf^#?h0C-kyxgYUps7Mle^t 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 DR`4eW literal 0 HcmV?d00001 From 744cec790a83cd14740cf76eb5bd9c0784ae8cda Mon Sep 17 00:00:00 2001 From: Aashutosh Date: Tue, 6 Aug 2024 18:27:03 +0545 Subject: [PATCH 3/4] Event Listener for when canvas is drawn on. --- .../standard-workspace/controls-side-bar/tools-control.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx index 4d276008b0a2..e9ae3a9d51df 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx @@ -269,6 +269,7 @@ export class ToolsControlComponent extends React.PureComponent { }); canvasInstance.html().addEventListener('canvas.interacted', this.interactionListener); canvasInstance.html().addEventListener('canvas.canceled', this.cancelListener); + canvasInstance.html().addEventListener('canvas.drawn', this.interactionListener); } public componentDidUpdate(prevProps: Props, prevState: State): void { @@ -333,6 +334,7 @@ export class ToolsControlComponent extends React.PureComponent { onRemoveAnnotations(null); canvasInstance.html().removeEventListener('canvas.interacted', this.interactionListener); canvasInstance.html().removeEventListener('canvas.canceled', this.cancelListener); + canvasInstance.html().removeEventListener('canvas.drawn', this.interactionListener); } private contextmenuDisabler = (e: MouseEvent): void => { @@ -821,7 +823,9 @@ export class ToolsControlComponent extends React.PureComponent { job: jobInstance.id, }) as TrackerResults; - response.shapes = response.shapes.map(trackedRectangleMapper); + if (response.shapes[0].length === 4) { + response.shapes = response.shapes.map(trackedRectangleMapper); + } for (let i = 0; i < trackableObjects.clientIDs.length; i++) { const clientID = trackableObjects.clientIDs[i]; const shape = response.shapes[i]; From 1834806dd132c0b9cb6e1eb49c2852f5ecc63774 Mon Sep 17 00:00:00 2001 From: Aashutosh Date: Tue, 6 Aug 2024 18:51:35 +0545 Subject: [PATCH 4/4] set shape type as rectangle if length of points array is 4 --- .../standard-workspace/controls-side-bar/tools-control.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx index e9ae3a9d51df..d997fa3755b3 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/tools-control.tsx @@ -505,8 +505,9 @@ export class ToolsControlComponent extends React.PureComponent { try { const { points } = (e as CustomEvent).detail.shapes[0]; + const shapeType = points.length === 4 ? ShapeType.RECTANGLE : ShapeType.POLYGON; const state = new core.classes.ObjectState({ - shapeType: ShapeType.POLYGON, // changed by aashutosh + shapeType, // changed by aashutosh objectType: ObjectType.TRACK, source: core.enums.Source.SEMI_AUTO, zOrder: curZOrder,