Feng Wang commited on
Commit
f6fef9a
·
1 Parent(s): 678043c

chore(data): save memory for COCO dataset (#1066)

Browse files
Files changed (1) hide show
  1. yolox/data/datasets/coco.py +19 -0
yolox/data/datasets/coco.py CHANGED
@@ -13,6 +13,24 @@ from ..dataloading import get_yolox_datadir
13
  from .datasets_wrapper import Dataset
14
 
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  class COCODataset(Dataset):
17
  """
18
  COCO dataset class.
@@ -43,6 +61,7 @@ class COCODataset(Dataset):
43
  self.json_file = json_file
44
 
45
  self.coco = COCO(os.path.join(self.data_dir, "annotations", self.json_file))
 
46
  self.ids = self.coco.getImgIds()
47
  self.class_ids = sorted(self.coco.getCatIds())
48
  cats = self.coco.loadCats(self.coco.getCatIds())
 
13
  from .datasets_wrapper import Dataset
14
 
15
 
16
+ def remove_useless_info(coco):
17
+ """
18
+ Remove useless info in coco dataset. COCO object is modified inplace.
19
+ This function is mainly used for saving memory (save about 30% mem).
20
+ """
21
+ if isinstance(coco, COCO):
22
+ dataset = coco.dataset
23
+ dataset.pop("info", None)
24
+ dataset.pop("licenses", None)
25
+ for img in dataset["images"]:
26
+ img.pop("license", None)
27
+ img.pop("coco_url", None)
28
+ img.pop("date_captured", None)
29
+ img.pop("flickr_url", None)
30
+ for anno in coco.dataset["annotations"]:
31
+ anno.pop("segmentation", None)
32
+
33
+
34
  class COCODataset(Dataset):
35
  """
36
  COCO dataset class.
 
61
  self.json_file = json_file
62
 
63
  self.coco = COCO(os.path.join(self.data_dir, "annotations", self.json_file))
64
+ remove_useless_info(self.coco)
65
  self.ids = self.coco.getImgIds()
66
  self.class_ids = sorted(self.coco.getCatIds())
67
  cats = self.coco.loadCats(self.coco.getCatIds())