From 6e1d4b2c8bdb10ef3dd3d200dcce05870389115d Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Thu, 2 Apr 2020 14:18:20 +0300 Subject: [PATCH 1/2] Fixed dextr_segmentation app --- cvat/apps/dextr_segmentation/dextr.py | 7 +++++-- cvat/apps/dextr_segmentation/views.py | 10 ++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/cvat/apps/dextr_segmentation/dextr.py b/cvat/apps/dextr_segmentation/dextr.py index 628961ff576..db8c71e727d 100644 --- a/cvat/apps/dextr_segmentation/dextr.py +++ b/cvat/apps/dextr_segmentation/dextr.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: MIT from cvat.apps.auto_annotation.inference_engine import make_plugin_or_core, make_network +from cvat.apps.engine.frame_provider import FrameProvider import os import cv2 @@ -29,7 +30,7 @@ def __init__(self): raise Exception("DEXTR_MODEL_DIR is not defined") - def handle(self, im_path, points): + def handle(self, db_data, frame, points): # Lazy initialization if not self._plugin: self._plugin = make_plugin_or_core() @@ -42,7 +43,9 @@ def handle(self, im_path, points): else: self._exec_network = self._plugin.load(network=self._network) - image = PIL.Image.open(im_path) + frame_provider = FrameProvider(db_data) + image = frame_provider.get_frame(frame, frame_provider.Quality.ORIGINAL) + image = PIL.Image.open(image[0]) numpy_image = np.array(image) points = np.asarray([[int(p["x"]), int(p["y"])] for p in points], dtype=int) bounding_box = ( diff --git a/cvat/apps/dextr_segmentation/views.py b/cvat/apps/dextr_segmentation/views.py index 0a837b3abb4..a4827e99afc 100644 --- a/cvat/apps/dextr_segmentation/views.py +++ b/cvat/apps/dextr_segmentation/views.py @@ -12,15 +12,14 @@ import django_rq import json -import os import rq __RQ_QUEUE_NAME = "default" __DEXTR_HANDLER = DEXTR_HANDLER() -def _dextr_thread(im_path, points): +def _dextr_thread(db_data, frame, points): job = rq.get_current_job() - job.meta["result"] = __DEXTR_HANDLER.handle(im_path, points) + job.meta["result"] = __DEXTR_HANDLER.handle(db_data, frame, points) job.save_meta() @@ -38,8 +37,7 @@ def create(request, jid): slogger.job[jid].info("create dextr request for the JOB: {} ".format(jid) + "by the USER: {} on the FRAME: {}".format(username, frame)) - db_task = Job.objects.select_related("segment__task").get(id=jid).segment.task - im_path = os.path.realpath(db_task.get_frame_path(frame)) + db_data = Job.objects.select_related("segment__task__data").get(id=jid).segment.task.data queue = django_rq.get_queue(__RQ_QUEUE_NAME) rq_id = "dextr.create/{}/{}".format(jid, username) @@ -53,7 +51,7 @@ def create(request, jid): job.delete() queue.enqueue_call(func=_dextr_thread, - args=(im_path, points), + args=(db_data, frame, points), job_id=rq_id, timeout=15, ttl=30) From b445ab16b0106ee29be3ee67f2f79457acfe8e24 Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Thu, 2 Apr 2020 18:07:46 +0300 Subject: [PATCH 2/2] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index af02b0bee0d..aac5f347729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - New shape is added when press ``esc`` when drawing instead of cancellation +- Fixed dextr segmentation. ### Security -