birdsnap.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import numpy as np
  2. from os.path import join
  3. from cvdatasets.annotation.base import BaseAnnotations
  4. from cvdatasets.annotation.mixins.bbox_mixin import BBoxMixin
  5. from cvdatasets.annotation.mixins.parts_mixin import PartsMixin
  6. from cvdatasets.utils import _MetaInfo
  7. class BSNAP_Annotations(BBoxMixin, PartsMixin, BaseAnnotations):
  8. name="BSNAP"
  9. @property
  10. def meta(self):
  11. info = _MetaInfo(
  12. images_folder="images",
  13. images_file="images.txt",
  14. labels_file="labels.txt",
  15. split_file="tr_ID.txt",
  16. # bounding_boxes="bounding_boxes.txt",
  17. bounding_box_dtype=np.dtype([(v, np.int32) for v in "xywh"]),
  18. parts_file=join("parts", "part_locs.txt"),
  19. part_names_file=join("parts", "parts.txt"),
  20. )
  21. info.structure = [
  22. [info.images_file, "_images"],
  23. [info.labels_file, "labels"],
  24. [info.split_file, "_split"],
  25. [info.parts_file, "_part_locs"],
  26. [info.part_names_file, "_part_names"],
  27. # [info.bounding_boxes, "_bounding_boxes"],
  28. ]
  29. return info
  30. def load(self):
  31. super(BSNAP_Annotations, self).load()
  32. # set labels from [1..N] to [0..N-1]
  33. self.labels -= 1
  34. if self.has_parts:
  35. # set part idxs from 1-idxs to 0-idxs
  36. self.part_locs[..., 0] -= 1