Module vipy.data.lvis

Expand source code Browse git
import os
from vipy.util import remkdir, tocache, filetail
import vipy.downloader
import vipy.dataset
from vipy.image import Scene
from vipy.object import Detection

TRAIN_URL = 'https://dl.fbaipublicfiles.com/LVIS/lvis_v1_train.json.zip'
TRAIN_IMG_URL = 'http://images.cocodataset.org/zips/train2017.zip'
VAL_URL = 'https://dl.fbaipublicfiles.com/LVIS/lvis_v1_val.json.zip'
VAL_IMG_URL = 'http://images.cocodataset.org/zips/val2017.zip'


class LVIS():
    """https://www.lvisdataset.org"""
    def __init__(self, datadir=None, redownload=False):
        datadir = tocache('lvis') if datadir is None else datadir
        
        self._datadir = remkdir(datadir)        
        if redownload or not os.path.exists(os.path.join(self._datadir, '.complete')):
            vipy.downloader.download_and_unpack(TRAIN_URL, self._datadir)
            vipy.downloader.download_and_unpack(TRAIN_IMG_URL, self._datadir)                        
            vipy.downloader.download_and_unpack(VAL_URL, self._datadir)
            vipy.downloader.download_and_unpack(VAL_IMG_URL, self._datadir)                        

            open(os.path.join(self._datadir, '.complete'), 'a').close()
        
    def trainset(self):
        d = vipy.util.readjson(os.path.join(self._datadir, 'lvis_v1_train.json'))

        d_imageid_to_annotations = vipy.util.groupbyasdict(d['annotations'], lambda a: a['image_id'])
        d_categoryid_to_category = {c['id']:c for c in d['categories']}
        
        images = [Scene(filename=os.path.join(self._datadir, 'train2017', filetail(i['coco_url'])),
                        url=i['coco_url'],
                        objects=[Detection(tags=d_categoryid_to_category[a['category_id']]['synonyms'], xywh=a['bbox'],
                                           attributes={'synset':d_categoryid_to_category[a['category_id']]['synset'], 'def':d_categoryid_to_category[a['category_id']]['def']})
                                 for a in d_imageid_to_annotations[i['id']]] if i['id'] in d_imageid_to_annotations else [])
                  for i in d['images']]
            
        return vipy.dataset.Dataset(images, id='lvis:train')
        
    def valset(self):
        d = vipy.util.readjson(os.path.join(self._datadir, 'lvis_v1_val.json'))

        d_imageid_to_annotations = vipy.util.groupbyasdict(d['annotations'], lambda a: a['image_id'])
        d_categoryid_to_category = {c['id']:c for c in d['categories']}
        
        images = [Scene(filename=os.path.join(self._datadir, 'val2017', filetail(i['coco_url'])),
                        url=i['coco_url'],
                        objects=[Detection(tags=d_categoryid_to_category[a['category_id']]['synonyms'], xywh=a['bbox'],
                                           attributes={'synset':d_categoryid_to_category[a['category_id']]['synset'], 'def':d_categoryid_to_category[a['category_id']]['def']})
                                 for a in d_imageid_to_annotations[i['id']]] if i['id'] in d_imageid_to_annotations else [])
                  for i in d['images']]
            
        return vipy.dataset.Dataset(images, id='lvis:val')

        

Classes

class LVIS (datadir=None, redownload=False)
Expand source code Browse git
class LVIS():
    """https://www.lvisdataset.org"""
    def __init__(self, datadir=None, redownload=False):
        datadir = tocache('lvis') if datadir is None else datadir
        
        self._datadir = remkdir(datadir)        
        if redownload or not os.path.exists(os.path.join(self._datadir, '.complete')):
            vipy.downloader.download_and_unpack(TRAIN_URL, self._datadir)
            vipy.downloader.download_and_unpack(TRAIN_IMG_URL, self._datadir)                        
            vipy.downloader.download_and_unpack(VAL_URL, self._datadir)
            vipy.downloader.download_and_unpack(VAL_IMG_URL, self._datadir)                        

            open(os.path.join(self._datadir, '.complete'), 'a').close()
        
    def trainset(self):
        d = vipy.util.readjson(os.path.join(self._datadir, 'lvis_v1_train.json'))

        d_imageid_to_annotations = vipy.util.groupbyasdict(d['annotations'], lambda a: a['image_id'])
        d_categoryid_to_category = {c['id']:c for c in d['categories']}
        
        images = [Scene(filename=os.path.join(self._datadir, 'train2017', filetail(i['coco_url'])),
                        url=i['coco_url'],
                        objects=[Detection(tags=d_categoryid_to_category[a['category_id']]['synonyms'], xywh=a['bbox'],
                                           attributes={'synset':d_categoryid_to_category[a['category_id']]['synset'], 'def':d_categoryid_to_category[a['category_id']]['def']})
                                 for a in d_imageid_to_annotations[i['id']]] if i['id'] in d_imageid_to_annotations else [])
                  for i in d['images']]
            
        return vipy.dataset.Dataset(images, id='lvis:train')
        
    def valset(self):
        d = vipy.util.readjson(os.path.join(self._datadir, 'lvis_v1_val.json'))

        d_imageid_to_annotations = vipy.util.groupbyasdict(d['annotations'], lambda a: a['image_id'])
        d_categoryid_to_category = {c['id']:c for c in d['categories']}
        
        images = [Scene(filename=os.path.join(self._datadir, 'val2017', filetail(i['coco_url'])),
                        url=i['coco_url'],
                        objects=[Detection(tags=d_categoryid_to_category[a['category_id']]['synonyms'], xywh=a['bbox'],
                                           attributes={'synset':d_categoryid_to_category[a['category_id']]['synset'], 'def':d_categoryid_to_category[a['category_id']]['def']})
                                 for a in d_imageid_to_annotations[i['id']]] if i['id'] in d_imageid_to_annotations else [])
                  for i in d['images']]
            
        return vipy.dataset.Dataset(images, id='lvis:val')

Methods

def trainset(self)
Expand source code Browse git
def trainset(self):
    d = vipy.util.readjson(os.path.join(self._datadir, 'lvis_v1_train.json'))

    d_imageid_to_annotations = vipy.util.groupbyasdict(d['annotations'], lambda a: a['image_id'])
    d_categoryid_to_category = {c['id']:c for c in d['categories']}
    
    images = [Scene(filename=os.path.join(self._datadir, 'train2017', filetail(i['coco_url'])),
                    url=i['coco_url'],
                    objects=[Detection(tags=d_categoryid_to_category[a['category_id']]['synonyms'], xywh=a['bbox'],
                                       attributes={'synset':d_categoryid_to_category[a['category_id']]['synset'], 'def':d_categoryid_to_category[a['category_id']]['def']})
                             for a in d_imageid_to_annotations[i['id']]] if i['id'] in d_imageid_to_annotations else [])
              for i in d['images']]
        
    return vipy.dataset.Dataset(images, id='lvis:train')
def valset(self)
Expand source code Browse git
def valset(self):
    d = vipy.util.readjson(os.path.join(self._datadir, 'lvis_v1_val.json'))

    d_imageid_to_annotations = vipy.util.groupbyasdict(d['annotations'], lambda a: a['image_id'])
    d_categoryid_to_category = {c['id']:c for c in d['categories']}
    
    images = [Scene(filename=os.path.join(self._datadir, 'val2017', filetail(i['coco_url'])),
                    url=i['coco_url'],
                    objects=[Detection(tags=d_categoryid_to_category[a['category_id']]['synonyms'], xywh=a['bbox'],
                                       attributes={'synset':d_categoryid_to_category[a['category_id']]['synset'], 'def':d_categoryid_to_category[a['category_id']]['def']})
                             for a in d_imageid_to_annotations[i['id']]] if i['id'] in d_imageid_to_annotations else [])
              for i in d['images']]
        
    return vipy.dataset.Dataset(images, id='lvis:val')