Ejemplo n.º 1
0
 def __iter__(self):
     return iter([
         DatasetItem(
             id='a/b/1',
             subset='a',
             annotations=[
                 Bbox(2,
                      3,
                      4,
                      5,
                      label=2,
                      id=1,
                      group=1,
                      attributes={
                          'pose': VOC.VocPose(1).name,
                          'truncated': True,
                          'difficult': False,
                          'occluded': False,
                      }),
                 Bbox(2,
                      3,
                      1,
                      1,
                      label=self._label(VOC.VocBodyPart(1).name),
                      group=1),
                 Bbox(5,
                      4,
                      3,
                      2,
                      label=self._label(VOC.VocBodyPart(2).name),
                      group=1),
             ]),
     ])
Ejemplo n.º 2
0
            def __iter__(self):
                return iter([
                    DatasetItem(id='2007_000001', subset='train',
                        annotations=[
                            Bbox(4, 5, 2, 2, label=self._label('person'),
                                attributes={
                                    'truncated': False,
                                    'difficult': False,
                                    'occluded': False,
                                    **{
                                        a.name: a.value % 2 == 1
                                        for a in VOC.VocAction
                                    }
                                },
                                id=2, group=2,
                                # TODO: Actions should be excluded
                                # as soon as correct merge is implemented
                            ),
                            Bbox(5.5, 6, 2, 2, label=self._label(
                                    VOC.VocBodyPart(1).name),
                                group=2
                            )
                        ]
                    ),

                    DatasetItem(id='2007_000002', subset='test')
                ])
Ejemplo n.º 3
0
 def __iter__(self):
     return iter([
         DatasetItem(
             id='2007_000001',
             subset='train',
             image=Image(path='2007_000001.jpg', size=(10, 20)),
             annotations=[
                 Label(self._label(l.name))
                 for l in VOC.VocLabel if l.value % 2 == 1
             ] + [
                 Bbox(
                     1,
                     2,
                     2,
                     2,
                     label=self._label('cat'),
                     attributes={
                         'pose': VOC.VocPose(1).name,
                         'truncated': True,
                         'difficult': False,
                         'occluded': False,
                     },
                     id=1,
                     group=1,
                 ),
                 Bbox(
                     4,
                     5,
                     2,
                     2,
                     label=self._label('person'),
                     attributes={
                         'truncated': False,
                         'difficult': False,
                         'occluded': False,
                         **{
                             a.name: a.value % 2 == 1
                             for a in VOC.VocAction
                         }
                     },
                     id=2,
                     group=2,
                 ),
                 Bbox(5.5,
                      6,
                      2,
                      2,
                      label=self._label(VOC.VocBodyPart(1).name),
                      group=2),
                 Mask(
                     image=np.ones([5, 10]),
                     label=self._label(VOC.VocLabel(2).name),
                     group=1,
                 ),
             ]),
         DatasetItem(id='2007_000002',
                     subset='test',
                     image=np.ones((10, 20, 3))),
     ])
Ejemplo n.º 4
0
def generate_dummy_voc(path):
    cls_subsets_dir = osp.join(path, 'ImageSets', 'Main')
    action_subsets_dir = osp.join(path, 'ImageSets', 'Action')
    layout_subsets_dir = osp.join(path, 'ImageSets', 'Layout')
    segm_subsets_dir = osp.join(path, 'ImageSets', 'Segmentation')
    ann_dir = osp.join(path, 'Annotations')
    img_dir = osp.join(path, 'JPEGImages')
    segm_dir = osp.join(path, 'SegmentationClass')
    inst_dir = osp.join(path, 'SegmentationObject')

    os.makedirs(cls_subsets_dir)
    os.makedirs(ann_dir)
    os.makedirs(img_dir)
    os.makedirs(segm_dir)
    os.makedirs(inst_dir)

    subsets = {
        'train': ['2007_000001'],
        'test': ['2007_000002'],
    }

    # Subsets
    for subset_name, subset in subsets.items():
        for item in subset:
            with open(osp.join(cls_subsets_dir, subset_name + '.txt'), 'w') as f:
                for item in subset:
                    f.write('%s\n' % item)
    shutil.copytree(cls_subsets_dir, action_subsets_dir)
    shutil.copytree(cls_subsets_dir, layout_subsets_dir)
    shutil.copytree(cls_subsets_dir, segm_subsets_dir)

    # Classification
    subset_name = 'train'
    subset = subsets[subset_name]
    for label in VOC.VocLabel:
        with open(osp.join(cls_subsets_dir, '%s_%s.txt' % \
                (label.name, subset_name)), 'w') as f:
            for item in subset:
                presence = label.value % 2
                f.write('%s %2d\n' % (item, 1 if presence else -1))

    # Detection + Action + Layout
    subset_name = 'train'
    subset = subsets[subset_name]
    for item in subset:
        root_elem = ET.Element('annotation')
        ET.SubElement(root_elem, 'folder').text = 'VOC' + item.split('_')[0]
        ET.SubElement(root_elem, 'filename').text = item + '.jpg'

        size_elem = ET.SubElement(root_elem, 'size')
        ET.SubElement(size_elem, 'width').text = '10'
        ET.SubElement(size_elem, 'height').text = '20'
        ET.SubElement(size_elem, 'depth').text = '3'

        ET.SubElement(root_elem, 'segmented').text = '1'

        obj1_elem = ET.SubElement(root_elem, 'object')
        ET.SubElement(obj1_elem, 'name').text = 'cat'
        ET.SubElement(obj1_elem, 'pose').text = VOC.VocPose(1).name
        ET.SubElement(obj1_elem, 'truncated').text = '1'
        ET.SubElement(obj1_elem, 'difficult').text = '0'
        obj1bb_elem = ET.SubElement(obj1_elem, 'bndbox')
        ET.SubElement(obj1bb_elem, 'xmin').text = '1'
        ET.SubElement(obj1bb_elem, 'ymin').text = '2'
        ET.SubElement(obj1bb_elem, 'xmax').text = '3'
        ET.SubElement(obj1bb_elem, 'ymax').text = '4'

        obj2_elem = ET.SubElement(root_elem, 'object')
        ET.SubElement(obj2_elem, 'name').text = 'person'
        obj2bb_elem = ET.SubElement(obj2_elem, 'bndbox')
        ET.SubElement(obj2bb_elem, 'xmin').text = '4'
        ET.SubElement(obj2bb_elem, 'ymin').text = '5'
        ET.SubElement(obj2bb_elem, 'xmax').text = '6'
        ET.SubElement(obj2bb_elem, 'ymax').text = '7'
        obj2head_elem = ET.SubElement(obj2_elem, 'part')
        ET.SubElement(obj2head_elem, 'name').text = VOC.VocBodyPart(1).name
        obj2headbb_elem = ET.SubElement(obj2head_elem, 'bndbox')
        ET.SubElement(obj2headbb_elem, 'xmin').text = '5.5'
        ET.SubElement(obj2headbb_elem, 'ymin').text = '6'
        ET.SubElement(obj2headbb_elem, 'xmax').text = '7.5'
        ET.SubElement(obj2headbb_elem, 'ymax').text = '8'
        obj2act_elem = ET.SubElement(obj2_elem, 'actions')
        for act in VOC.VocAction:
            ET.SubElement(obj2act_elem, act.name).text = '%s' % (act.value % 2)

        with open(osp.join(ann_dir, item + '.xml'), 'w') as f:
            f.write(ET.tostring(root_elem, encoding='unicode'))

    # Segmentation + Instances
    subset_name = 'train'
    subset = subsets[subset_name]
    for item in subset:
        save_image(osp.join(segm_dir, item + '.png'),
            np.tile(VOC.VocColormap[2][::-1], (5, 10, 1))
        )
        save_image(osp.join(inst_dir, item + '.png'),
            np.tile(1, (5, 10, 1)))

    # Test images
    subset_name = 'test'
    subset = subsets[subset_name]
    for item in subset:
        save_image(osp.join(img_dir, item + '.jpg'),
            np.ones([10, 20, 3]))

    return subsets