From 9197ae2ceb0f06b08be12e8ee9601662c928f847 Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Fri, 10 May 2024 09:44:51 +0300 Subject: [PATCH 1/6] Fixed analytics for skeletons (count of objects) --- .../report/primary_metrics/annotation_speed.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py b/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py index b71188b3828..746a86e84b0 100644 --- a/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py +++ b/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py @@ -18,7 +18,7 @@ PrimaryMetricBase, ) from cvat.apps.dataset_manager.task import merge_table_rows -from cvat.apps.engine.models import SourceType +from cvat.apps.engine.models import SourceType, ShapeType class JobAnnotationSpeedExtractor(DataExtractorBase): @@ -75,20 +75,21 @@ def get_tags_count(): def get_shapes_count(): return ( - self._db_obj.labeledshape_set.filter(parent=None) + self._db_obj.labeledshape_set .exclude(source=SourceType.FILE) + .exclude(type=ShapeType.SKELETON) # skeleton's points are already counted as objects .count() ) def get_track_count(): db_tracks = ( - self._db_obj.labeledtrack_set.filter(parent=None) + self._db_obj.labeledtrack_set .exclude(source=SourceType.FILE) .values( "id", - "source", "trackedshape__id", "trackedshape__frame", + "trackedshape__type", "trackedshape__outside", ) .order_by("id", "trackedshape__frame") @@ -101,6 +102,7 @@ def get_track_count(): "shapes": [ "trackedshape__id", "trackedshape__frame", + "trackedshape__type", "trackedshape__outside", ], }, @@ -109,12 +111,16 @@ def get_track_count(): count = 0 for track in db_tracks: + if track["shapes"] and track["shapes"][0]["type"] == ShapeType.SKELETON: + # skeleton's points are already counted as objects + continue + if len(track["shapes"]) == 1: count += self._db_obj.segment.stop_frame - track["shapes"][0]["frame"] + 1 for prev_shape, cur_shape in zip(track["shapes"], track["shapes"][1:]): - if prev_shape["outside"] is not True: - count += cur_shape["frame"] - prev_shape["frame"] + if not prev_shape["outside"]: + count += cur_shape["frame"] - prev_shape["frame"] + 1 return count From d7fab66885171e693da23ed023d59a1074612ca6 Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Fri, 10 May 2024 09:51:54 +0300 Subject: [PATCH 2/6] Added changelog --- .../20240510_095000_boris_fixed_analytics_for_skeletons.md | 4 ++++ .../20240510_095034_boris_fixed_analytics_for_skeletons.md | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md create mode 100644 changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md diff --git a/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md b/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md new file mode 100644 index 00000000000..05d2b642a8d --- /dev/null +++ b/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md @@ -0,0 +1,4 @@ +### Fixed + +- Analytic reports incorrect count of objects for a skeleton track/shape + () diff --git a/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md b/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md new file mode 100644 index 00000000000..f9c8412e360 --- /dev/null +++ b/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md @@ -0,0 +1,4 @@ +### Fixed + +- Analytic reports incorrect number of objects for a track (always less by 1) + () From 173d82e2c0e4e9d88e0cb2587fcc2dff43f65fb1 Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Mon, 13 May 2024 13:02:33 +0300 Subject: [PATCH 3/6] Update changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md --- .../20240510_095000_boris_fixed_analytics_for_skeletons.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md b/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md index 05d2b642a8d..195fbb45e3d 100644 --- a/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md +++ b/changelog.d/20240510_095000_boris_fixed_analytics_for_skeletons.md @@ -1,4 +1,4 @@ ### Fixed - Analytic reports incorrect count of objects for a skeleton track/shape - () + () From 6a491b2c80d380096f44a8bd460b11f0dd69722b Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Mon, 13 May 2024 13:02:38 +0300 Subject: [PATCH 4/6] Update changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md --- .../20240510_095034_boris_fixed_analytics_for_skeletons.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md b/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md index f9c8412e360..23de54ca9d0 100644 --- a/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md +++ b/changelog.d/20240510_095034_boris_fixed_analytics_for_skeletons.md @@ -1,4 +1,4 @@ ### Fixed - Analytic reports incorrect number of objects for a track (always less by 1) - () + () From a2430416a210ecfc2d05e051f12c5d84a199248b Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Mon, 13 May 2024 13:07:51 +0300 Subject: [PATCH 5/6] Update annotation_speed.py --- .../report/primary_metrics/annotation_speed.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py b/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py index 746a86e84b0..57d61966dd6 100644 --- a/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py +++ b/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py @@ -75,16 +75,16 @@ def get_tags_count(): def get_shapes_count(): return ( - self._db_obj.labeledshape_set - .exclude(source=SourceType.FILE) - .exclude(type=ShapeType.SKELETON) # skeleton's points are already counted as objects + self._db_obj.labeledshape_set.exclude(source=SourceType.FILE) + .exclude( + type=ShapeType.SKELETON + ) # skeleton's points are already counted as objects .count() ) def get_track_count(): db_tracks = ( - self._db_obj.labeledtrack_set - .exclude(source=SourceType.FILE) + self._db_obj.labeledtrack_set.exclude(source=SourceType.FILE) .values( "id", "trackedshape__id", From 78f88667ec4f0fb75c900eec21730627a18de40d Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Mon, 13 May 2024 13:08:41 +0300 Subject: [PATCH 6/6] Applied isort --- .../analytics_report/report/primary_metrics/annotation_speed.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py b/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py index 57d61966dd6..221c61e8467 100644 --- a/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py +++ b/cvat/apps/analytics_report/report/primary_metrics/annotation_speed.py @@ -18,7 +18,7 @@ PrimaryMetricBase, ) from cvat.apps.dataset_manager.task import merge_table_rows -from cvat.apps.engine.models import SourceType, ShapeType +from cvat.apps.engine.models import ShapeType, SourceType class JobAnnotationSpeedExtractor(DataExtractorBase):