|
@@ -4,7 +4,14 @@ from cvdatasets.dataset.mixins.base import BaseMixin
|
|
|
from cvdatasets.dataset.mixins.bounding_box import BBoxMixin
|
|
|
from cvdatasets.dataset.mixins.bounding_box import BBCropMixin
|
|
|
|
|
|
-class PartsInBBMixin(BBoxMixin):
|
|
|
+class BasePartMixin(BaseMixin):
|
|
|
+
|
|
|
+ def __init__(self, ratio=None, *args, **kwargs):
|
|
|
+ super(BasePartMixin, self).__init__(*args, **kwargs)
|
|
|
+ self.ratio = ratio
|
|
|
+
|
|
|
+class PartsInBBMixin(BasePartMixin, BBoxMixin):
|
|
|
+
|
|
|
def __init__(self, parts_in_bb=False, *args, **kwargs):
|
|
|
super(PartsInBBMixin, self).__init__(*args, **kwargs)
|
|
|
self.parts_in_bb = parts_in_bb
|
|
@@ -17,7 +24,7 @@ class PartsInBBMixin(BBoxMixin):
|
|
|
return im_obj.hide_parts_outside_bb(*bb)
|
|
|
return im_obj
|
|
|
|
|
|
-class PartCropMixin(BaseMixin):
|
|
|
+class PartCropMixin(BasePartMixin):
|
|
|
|
|
|
def __init__(self, return_part_crops=False, *args, **kwargs):
|
|
|
super(PartCropMixin, self).__init__(*args, **kwargs)
|
|
@@ -30,7 +37,7 @@ class PartCropMixin(BaseMixin):
|
|
|
return im_obj
|
|
|
|
|
|
|
|
|
-class PartRevealMixin(BaseMixin):
|
|
|
+class PartRevealMixin(BasePartMixin):
|
|
|
|
|
|
def __init__(self, reveal_visible=False, *args, **kwargs):
|
|
|
super(PartRevealMixin, self).__init__(*args, **kwargs)
|
|
@@ -38,18 +45,16 @@ class PartRevealMixin(BaseMixin):
|
|
|
|
|
|
def get_example(self, i):
|
|
|
im_obj = super(PartRevealMixin, self).get_example(i)
|
|
|
- assert hasattr(self, "ratio"), "\"ratio\" attribute is missing!"
|
|
|
if self.reveal_visible:
|
|
|
return im_obj.reveal_visible(self.ratio)
|
|
|
return im_obj
|
|
|
|
|
|
|
|
|
-class UniformPartMixin(BaseMixin):
|
|
|
+class UniformPartMixin(BasePartMixin):
|
|
|
|
|
|
- def __init__(self, uniform_parts=False, ratio=None, *args, **kwargs):
|
|
|
+ def __init__(self, uniform_parts=False, *args, **kwargs):
|
|
|
super(UniformPartMixin, self).__init__(*args, **kwargs)
|
|
|
self.uniform_parts = uniform_parts
|
|
|
- self.ratio = ratio
|
|
|
|
|
|
def get_example(self, i):
|
|
|
im_obj = super(UniformPartMixin, self).get_example(i)
|
|
@@ -57,7 +62,7 @@ class UniformPartMixin(BaseMixin):
|
|
|
return im_obj.uniform_parts(self.ratio)
|
|
|
return im_obj
|
|
|
|
|
|
-class RandomBlackOutMixin(BaseMixin):
|
|
|
+class RandomBlackOutMixin(BasePartMixin):
|
|
|
|
|
|
def __init__(self, seed=None, rnd_select=False, blackout_parts=None, *args, **kwargs):
|
|
|
super(RandomBlackOutMixin, self).__init__(*args, **kwargs)
|
|
@@ -74,18 +79,18 @@ class RandomBlackOutMixin(BaseMixin):
|
|
|
|
|
|
# some shortcuts
|
|
|
|
|
|
-class PartMixin(RandomBlackOutMixin, PartsInBBMixin, UniformPartMixin, BBCropMixin):
|
|
|
+class _PartMixin(RandomBlackOutMixin, PartsInBBMixin, UniformPartMixin, BBCropMixin):
|
|
|
"""
|
|
|
TODO!
|
|
|
"""
|
|
|
|
|
|
-class RevealedPartMixin(PartRevealMixin, PartMixin):
|
|
|
+class RevealedPartMixin(PartRevealMixin, _PartMixin):
|
|
|
"""
|
|
|
TODO!
|
|
|
"""
|
|
|
|
|
|
|
|
|
-class CroppedPartMixin(PartCropMixin, PartMixin):
|
|
|
+class CroppedPartMixin(PartCropMixin, _PartMixin):
|
|
|
"""
|
|
|
TODO!
|
|
|
"""
|