帮酷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  |  如果智培  |  酷兔英语