From 3d44c0616f276243dae056ff19bd2c37821b2fe4 Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Thu, 2 Apr 2020 15:36:07 +0300 Subject: [PATCH 1/5] Added button to reset color settings --- .../components/settings-page/player-settings.tsx | 15 +++++++++++++++ cvat-ui/src/components/settings-page/styles.scss | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/cvat-ui/src/components/settings-page/player-settings.tsx b/cvat-ui/src/components/settings-page/player-settings.tsx index 779a03b0..6b834122 100644 --- a/cvat-ui/src/components/settings-page/player-settings.tsx +++ b/cvat-ui/src/components/settings-page/player-settings.tsx @@ -6,6 +6,7 @@ import React from 'react'; import { Row, Col } from 'antd/lib/grid'; import Checkbox, { CheckboxChangeEvent } from 'antd/lib/checkbox'; +import Button from 'antd/lib/button'; import Slider from 'antd/lib/slider'; import Select from 'antd/lib/select'; import InputNumber from 'antd/lib/input-number'; @@ -16,6 +17,7 @@ import { clamp } from 'utils/math'; import { BackJumpIcon, ForwardJumpIcon } from 'icons'; import { FrameSpeed, GridColor } from 'reducers/interfaces'; + interface Props { frameStep: number; frameSpeed: FrameSpeed; @@ -263,6 +265,19 @@ export default function PlayerSettingsComponent(props: Props): JSX.Element { /> + + + + + ); } diff --git a/cvat-ui/src/components/settings-page/styles.scss b/cvat-ui/src/components/settings-page/styles.scss index ef4b005a..926d6029 100644 --- a/cvat-ui/src/components/settings-page/styles.scss +++ b/cvat-ui/src/components/settings-page/styles.scss @@ -73,12 +73,19 @@ width: 90px; } +.cvat-player-reset-color-settings, .cvat-player-settings-brightness, .cvat-player-settings-contrast, .cvat-player-settings-saturation { width: 40%; } +.cvat-player-reset-color-settings { + > .ant-col { + text-align: center; + } +} + .cvat-settings-page-back-button { width: 100px; margin-top: 15px; From 02d6a0c0fba0c754431c691d78076f78ca98097a Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Thu, 2 Apr 2020 15:38:29 +0300 Subject: [PATCH 2/5] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index af02b0be..09c965d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Special behaviour for attribute value ``__undefined__`` (invisibility, no shortcuts to be set in AAM) - Dialog window with some helpful information about using filters +- Button to reset colors settings (brightness, saturation, contrast) in the new UI ### Changed - From abbc635101f790e1c2a18021bc9d866ca9ca1286 Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Fri, 3 Apr 2020 10:51:49 +0300 Subject: [PATCH 3/5] Fixed screen scaling --- cvat-ui/src/components/settings-page/styles.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cvat-ui/src/components/settings-page/styles.scss b/cvat-ui/src/components/settings-page/styles.scss index 926d6029..82046ae1 100644 --- a/cvat-ui/src/components/settings-page/styles.scss +++ b/cvat-ui/src/components/settings-page/styles.scss @@ -5,6 +5,9 @@ @import '../../base.scss'; .cvat-settings-page { + height: 90%; + overflow-y: auto; + > div:nth-child(1) { margin-top: 30px; margin-bottom: 10px; From be2ec3ad7276774f34f50dee9716f41a025a4c44 Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov <41117609+azhavoro@users.noreply.github.com> Date: Fri, 3 Apr 2020 12:32:20 +0300 Subject: [PATCH 4/5] fixed dump error after moving format files (#1342) * fixed dump error after moving format files * updated changelog --- CHANGELOG.md | 1 + cvat/apps/annotation/serializers.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c862c85..a331eaf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,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 `FileNotFoundError` during dump after moving format files ### Security - diff --git a/cvat/apps/annotation/serializers.py b/cvat/apps/annotation/serializers.py index 8fa8b345..7284c041 100644 --- a/cvat/apps/annotation/serializers.py +++ b/cvat/apps/annotation/serializers.py @@ -1,8 +1,10 @@ -# Copyright (C) 2018 Intel Corporation +# Copyright (C) 2018-2020 Intel Corporation # # SPDX-License-Identifier: MIT +from django.utils import timezone from rest_framework import serializers + from cvat.apps.annotation import models class AnnotationDumperSerializer(serializers.ModelSerializer): @@ -57,6 +59,9 @@ class AnnotationFormatSerializer(serializers.ModelSerializer): def update(self, instance, validated_data): dumper_names = [handler["display_name"] for handler in validated_data["annotationdumper_set"]] loader_names = [handler["display_name"] for handler in validated_data["annotationloader_set"]] + instance.handler_file = validated_data.get('handler_file', instance.handler_file) + instance.owner = validated_data.get('owner', instance.owner) + instance.updated_date = timezone.localtime(timezone.now()) handlers_to_delete = [d for d in instance.annotationdumper_set.all() if d.display_name not in dumper_names] + \ [l for l in instance.annotationloader_set.all() if l.display_name not in loader_names] From 7bdf9bb481d3ce7efe91407b1662a23866d39815 Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov <41117609+azhavoro@users.noreply.github.com> Date: Fri, 3 Apr 2020 18:01:13 +0300 Subject: [PATCH 5/5] Az/fix dextr (#1348) * Fixed dextr_segmentation app * updated changelog Co-authored-by: Nikita Manovich <40690625+nmanovic@users.noreply.github.com> --- CHANGELOG.md | 1 + cvat/apps/dextr_segmentation/dextr.py | 7 +++++-- cvat/apps/dextr_segmentation/views.py | 10 ++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a331eaf9..3f04b1d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,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. - Fixed `FileNotFoundError` during dump after moving format files ### Security diff --git a/cvat/apps/dextr_segmentation/dextr.py b/cvat/apps/dextr_segmentation/dextr.py index 628961ff..db8c71e7 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 @@ class DEXTR_HANDLER: 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 @@ class DEXTR_HANDLER: 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 0a837b3a..a4827e99 100644 --- a/cvat/apps/dextr_segmentation/views.py +++ b/cvat/apps/dextr_segmentation/views.py @@ -12,15 +12,14 @@ from cvat.apps.dextr_segmentation.dextr import DEXTR_HANDLER 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)