Added validity check for polygon similarity computation related to issue #2851 (#2852)

* Added validity check for polygon similarity computation

* Updated changelog
main
Freya Chen 5 years ago committed by GitHub
parent 1be3194fb3
commit 5f3cd44fef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -63,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed label editor name field validator (<https://github.com/openvinotoolkit/cvat/pull/2879>)
- An error about track shapes outside of the task frames during export (<https://github.com/openvinotoolkit/cvat/pull/2890>)
- Fixed project search field updating (<https://github.com/openvinotoolkit/cvat/pull/2901>)
- Fixed export error when invalid polygons are present in overlapping frames (<https://github.com/openvinotoolkit/cvat/pull/2852>)
### Security

@ -315,11 +315,14 @@ class ShapeManager(ObjectManager):
@staticmethod
def _calc_objects_similarity(obj0, obj1, start_frame, overlap):
def _calc_polygons_similarity(p0, p1):
overlap_area = p0.intersection(p1).area
if p0.area == 0 or p1.area == 0: # a line with many points
return 0
if p0.is_valid and p1.is_valid: # check validity of polygons
overlap_area = p0.intersection(p1).area
if p0.area == 0 or p1.area == 0: # a line with many points
return 0
else:
return overlap_area / (p0.area + p1.area - overlap_area)
else:
return overlap_area / (p0.area + p1.area - overlap_area)
return 0 # if there's invalid polygon, assume similarity is 0
has_same_type = obj0["type"] == obj1["type"]
has_same_label = obj0.get("label_id") == obj1.get("label_id")

Loading…
Cancel
Save