zoukankan      html  css  js  c++  java
  • MS coco中image_caption的数据格式详解

    coco中image_caption的数据格式,对应的文件captions_train2014.json和captions_val2014.json

    1.使用json加载文件

    对应的解析代码如下:

    import json
    if __name__=='__main__':
        base_path = r'/data/antonio/images_data/images/annotations/captions_train2014.json'
    
        image_caption={}
        with open(base_path,'r') as f:
            dataset=json.load(f)
        image_caption['annotations'] = []
        for data in dataset['annotations']:
            image_caption['annotations'].append({})
            for key in data:
                image_caption['annotations'][0][key]=data[key]
            break
    
        image_caption['images'] = []
        for data in dataset['images']:
            image_caption['images'].append({})
            for key in data:
                image_caption['images'][0][key]=data[key]
            break
    
        image_caption['info'] = {}
        for key in dataset['info']:     #dict
            image_caption['info'][key]=dataset['info'][key]
    
        image_caption['licenses'] = []
        for data in dataset['licenses']: #2014 have eight list
            image_caption['licenses'].append({})
            for key in data:
                image_caption['licenses'][0][key]=data[key]
            break
        print(image_caption)

    用json加载之后内容如下:

    只显示列表中元素的第一个元素,annotations是list,存储的是字典,字典有三个键-值对,对应如下:

    {
        'annotations': [{
                'image_id': 318556,#唯一的图片ID,此ID同时是图像文件名的序列号,对应的文件名:COCO_train2014_000000318556.jpg
                'id': 48, # 唯一的对象ID
                'caption': 'A very clean and well decorated empty bathroom'
            }
            ...
            ...
        ],
        'images': [{
                'license': 5,
                'date_captured': '2013-11-14 16:28:13',
                'flickr_url': 'http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg',
                'coco_url': 'http://images.cocodataset.org/train2014/COCO_train2014_000000057870.jpg',
                'id': 57870 #此id对应的是'annotations'中的image_id
                'width': 640,
                'file_name': 'COCO_train2014_000000057870.jpg',
                'height': 480
            }
            ...
            ...
        ],
        'licenses': [{
                'id': 1,
                'url': 'http://creativecommons.org/licenses/by-nc-sa/2.0/',
                'name': 'Attribution-NonCommercial-ShareAlike License'
            }
            ...
            ...
        ],
        'info': {
            'description': 'COCO 2014 Dataset',
            'year': 2014,
            'date_created': '2017/09/01',
            'contributor': 'COCO Consortium',
            'url': 'http://cocodataset.org',
            'version': '1.0'
        }
    }

    2. 如果用微软提供的pycocotools.coco加载json文件

    对应的代码:

    from pycocotools.coco import COCO
    import torch.utils.data as data
    import json
    class DataLoader(data.Dataset):
        def __init__(self, json,  transform=None):
            self.coco = COCO(json)
            self.ids = list(self.coco.anns.keys())
            self.transform = transform
    
    
    
    if __name__=='__main__':
        base_path = r'/data/antonio/images_data/images/annotations/captions_train2014.json'
        dataloader = DataLoader(base_path)

    对应的dataset存放的json文件中的数据,其他部分是COCO处理得到

     其中imgToAnns是image_id对应的5个caption

      其中anns是id为key的字典,对应的value仍然是字典,字典中存储的是image_id,id,caption 

  • 相关阅读:
    jQuery小案例
    update-alternatives
    计算机网络备忘
    报文交换 (转自百度百科,方便以后复习)
    erlang supervisor simple_one_for_one实例
    erlang supervisor中启动普通的进程
    erlang四大behaviour之一gen_server(转载)
    用Doxygen+Graphviz生成函数调用流程图(转)
    selenium模块
    request模块
  • 原文地址:https://www.cnblogs.com/AntonioSu/p/12099019.html
Copyright © 2011-2022 走看看