帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:API  WRAP  vis  换行  Genome  
A python wrapper for the Visual Genome API

  • 源代码名称:visual_genome_python_driver
  • 源代码网址:http://www.github.com/ranjaykrishna/visual_genome_python_driver
  • visual_genome_python_driver源代码文档
  • visual_genome_python_driver源代码下载
  • Git URL:
    git://www.github.com/ranjaykrishna/visual_genome_python_driver.git
  • Git Clone代码到本地:
    git clone http://www.github.com/ranjaykrishna/visual_genome_python_driver
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/ranjaykrishna/visual_genome_python_driver
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 可视化基因组 python-驱动程序

    可视化基因组 API的python 包装器。 访问网站以获得完整的对象模型列表,以及所有端点的详细信息。 看看我们的演示,看看怎样使用驱动程序来访问所有的可视化基因组数据。

    安装

    要安装这个包装器,你可以使用 pip,如下所示

    pip install .

    2访问数据的方法

    有两种方法可以访问视觉基因组数据。

    以下列出了API函数。

    获得所有可视化的基因组图像 id

    视觉基因组中的所有数据都必须通过图像访问。 每个图像都由唯一标识标识。 因此,第一步是获取视觉基因组数据集中所有图像id的列表。

    >from visual_genome import api> ids = api.get_all_image_ids()>print ids[0]1

    ids 是整数的python array,其中每个整数都是一个图像标识。

    获得一系列可视的基因组图像 id

    目前有 108,249个图像在视觉基因组数据集中。 你可能只需要获取一些图像的id,而不是获取所有的图像 id。 要将图像 ids 2000到 2010,可以使用以下代码:

    > ids = api.get_image_ids_in_range(startIndex=2000, endIndex=2010)>print ids
    [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]
    获取图像数据

    现在,让我们获取关于图像的基本信息。 具体来说,对于图像标识,我们将提取图像的url,它是宽度和高度( 维度)。 我们也将从他们各自的数据集中收集COCO和 Flickr ids。

    > image = api.get_image_data(id=61512)>print imageid: 61512, coco_id: 248774, flickr_id: 6273011878, width: 1024, url: https://cs.stanford.edu/people/rak248/VG_100K/61512.jpg

    get_image_data 返回一个你可以在 visual_genome/模型中看到的Image 模型。

    获取图像的区域描述

    现在,让我们得到一些令人兴奋的数据: 密集的图像标题。 在视觉基因组中,这些被称为区域描述。 每个区域描述都是对图像中某个区域的文本描述。 区域由它的左上角坐标( x,y ) 和宽度和高度定义。

    # Let's get the regions for image with id=61512> regions = api.get_region_descriptions_of_image(id=61512)>print regions[0]id: 1, x: 511, y: 241, width: 206, height: 320, phrase: A brown, sleek horse with a bridle, image: 61512

    get_region_descriptions_of_image 返回 Region 对象的array,这些对象在 visual_genome/models 中定义。 查看我们的演示插件,查看这些区域是否可见。

    从区域获取区域图。

    让我们得到上面打印出的区域的区域图。 区域图是用于图像的特定区域的微小场景图。 它包含:对象,属性和关系。 对象在图像中使用边界框进行定位。 属性修改对象,而关系是对象对之间的交互。 我们将获得图像的场景图并打印出对象,属性和关系。

    # Remember that the region desription is 'A brown, sleek horse with a bridle'.> graph = api.get_scene_graph_of_image()>print graph.objects
    [horse]>>>print graph.attributes
    [horse is brown]>>print graph.relationships
    []

    区域图具有一个对象: 马和一个属性棕色来形容马。 它没有任何关系。

    获取图像的场景图

    现在,让我们得到图像的整个场景图。 每个场景图包含三个组件: 对象,属性和关系。对象使用边界框本地化在图像中。 属性修改对象,而关系是对象对之间的交互。 我们将获得图像的场景图并打印出对象,属性和关系。

    ># First, let's get the scene graph> graph = api.get_scene_graph_of_image()># Now let's print out the objects. We will only print out the names and not the bounding boxes to make it look clean.>print graph.objects
    [horse, grass, horse, bridle, truck, sign, gate, truck, tire, trough, window, door, building, halter, mane, mane, leaves, fence]>>># Now, let's print out the attributes>print graph.attributes
    [3015675: horse is brown, 3015676: horse is spotted, 3015677: horse is red, 3015678: horse is dark brown, 3015679: truck is red, 3015680: horse is brown, 3015681: truck is red, 3015682: sign is blue, 3015683: gate is red, 3015684: truck is white, 3015685: tire is blue, 3015686: gate is wooden, 3015687: horse is standing, 3015688: truck is red, 3015689: horse is brown and white, 3015690: building is tan, 3015691: halter is red, 3015692: horse is brown, 3015693: gate is wooden, 3015694: grass is grassy, 3015695: truck is red, 3015696: gate is orange, 3015697: halter is red, 3015698: tire is blue, 3015699: truck is white, 3015700: trough is white, 3015701: horse is brown and cream, 3015702: leaves is green, 3015703: grass is lush, 3015704: horse is enclosed, 3015705: horse is brown and white, 3015706: horse is chestnut, 3015707: gate is red, 3015708: leaves is green, 3015709: building is brick, 3015710: truck is large, 3015711: gate is red, 3015712: horse is chestnut colored, 3015713: fence is wooden]>>># Finally, let's print out the relationships>print graph.relationships
    [3199950: horse stands on top of grass, 3199951: horse isin grass, 3199952: horse is wearing bridle, 3199953: trough isfor horse, 3199954: window isnext to door, 3199955: building has door, 3199956: horse is nudging horse, 3199957: horse has mane, 3199958: horse has mane, 3199959: trough isfor horse]
    为图像获取问题答案

    现在让我们得到一个图像的所有问题答案。 每个问题答案对象包含问题 - 答案对的id,图像的id,问题和答案字符串,以及在qa对中标识和规范化的问题对象和答案对象的列表。 我们将提取图像 61512的QAs并显示一个这样的QA的所有属性。

    ># First extract the QAs for this image> qas = api.get_QA_of_image(id=61512)>># First print out some core information of the QA>print qas[0]id: 991154, image: 61512, question: What color is the keyboard?, answer: Black.>># Now let's print out the question objects of the QA>print qas[0].q_objects
    []

    get_QA_of_image 返回 QA 对象的array,这些对象在 visual_genome/models 中定义。 属性 q_objectsa_objects 都是 QAObject的array,这也是在这里定义的。

    在数据集中获取所有问题答案

    我们还有一个功能,允许您获取Visual Genome数据集中的所有170万QA。 如果不想获得所有数据,还可以指定使用参数 qtotal 返回函数的数量。 所以如果 qtotal = 10 你会得到 10个回复。

    ># Let's get only 10 QAs and print out the first QA.> qas = api.get_all_QAs(qtotal=10)>print qas[0]id: 133103, image: 1159944, question: What is tall with many windows?, answer: Buildings.

    要获取所有问答信息,请将qtotal设置为无。

    从整个数据集中得到一种类型的问题答案

    您可能只对收集问题的原因感兴趣。 要查询特定类型的问题,请将 qtype 设置为 whatwhowhywherewhenhow

    ># Let's get the first 10 why QAs and print the first one.> qas = api.get_QA_of_type(qtotal=10)>print qas[0]id: 133089, image: 1159910, question: Why is the man cosplaying?, answer: For an event.

    下面列出了本地函数。

    正在下载数据。
    ># Download all the image data.>./visual_genome/data/getImageData.sh>># Download all the region descriptions.>./visual_genome/data/getRegionDescriptions.sh>># Download all the question answers.>./visual_genome/data/getQuestionAnswers.sh
    从local. json 文件获取 200图像的场景图
    >import visual_genome.local as vg>># Convert full. json files to image-specific. jsons, save these to 'data/by-id'.># These files will take up a total ~1.1G space on disk.> vg.save_scene_graphs_by_id(data_dir='data/', image_data_dir='data/by-id/')>># Load scene graphs in 'data/by-id', from index 0 to 200.># We'll only keep scene graphs with at least 1 relationship.> scene_graphs = vg.get_scene_graphs(start_index=0, end_index=-1, min_rels=1,>data_dir='data/', image_data_dir='data/by-id/')>>printlen(scene_graphs)149>>print scene_graphs[0].objects
    [clock, street, shade, man, sneakers, headlight, car, bike, bike, sign, building, ..., street, sidewalk, trees, car, work truck]

    许可证

    麻省理工学院许可证版权Ranjay Krishna

    问题注释?

    我希望API和python包装器非常简单,你永远不必提问。 但如果你有任何问题,你可以直接在gmail和ranjaykrishna联系,或者与 stanfordvisualgenome @ gmail联系项目。

    在 Twitter 上跟踪我们:

    想帮忙?

    如果您想提供帮助,请编写示例代码,提供补丁,文档方法,推文。 你的帮助永远受到赞赏!



    文章标签:API  WRAP  换行  vis  Genome  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语