code: def get_info(self):
      im_wh_list = []
      boxes_wh_list = []
      for xml_path in tqdm(self.xml_list, desc="read data info."):
          # read xml
          with open(xml_path) as fid:
              xml_str = fid.read()
          xml = etree.fromstring(xml_str)
          data = self.parse_xml_to_dict(xml)["annotation"]
          im_height = int(data["size"]["height"])
          im_width = int(data["size"]["width"])
  
          wh = []
          for obj in data["object"]:
              xmin = float(obj["bndbox"]["xmin"])
              xmax = float(obj["bndbox"]["xmax"])
              ymin = float(obj["bndbox"]["ymin"])
              ymax = float(obj["bndbox"]["ymax"])
              wh.append(
                  [(xmax - xmin) / im_width, (ymax - ymin) / im_height]
              )
  
          if len(wh) == 0:
              continue
  
          im_wh_list.append([im_width, im_height])
          boxes_wh_list.append(wh)
  
      return im_wh_list, boxes_wh_list
  
file_path: deep-learning-for-image-processing/others_project/kmeans_anchors/read_voc.py
imports: import os
  from tqdm import tqdm
  from lxml import etree
label_desc: Use image node_id 4 for calling the VOCDataSet obj's underlying member method code with example usage: obj.get_info() and returns: im_wh_list,  boxes_wh_list