Используйте GCN-LSTM для создания описаний сцен, представленных графиками. - PullRequest
1 голос
/ 14 июля 2020

Для данной сцены я извлекаю содержащиеся в ней объекты с помощью детектора объектов. Затем я определяю потенциальные унарные (один объект) и бинарные (пара объектов) визуальные отношения в этой сцене (с использованием специализированных классификаторов), определяя наиболее вероятный атрибут для каждой унарной связи (например, Object Cat с атрибутом "Sitting" , что означает, что "The cat is sitting") и наиболее вероятный предикат для каждой двоичной связи (например, пара объектов [Cup - Table] с предикатом "On", что означает, что "The cup is on the table").

Все это определенные отношения моделируются ориентированным графом в форме:

  • Каждый узел представляет объект сцены (с его идентификатором).
  • Моделируется каждое определенное унарное отношение (атрибут) by al oop (стрелка, идущая от узла к самому себе, с соответствующим атрибутом).
  • Каждое определенное двоичное отношение моделируется стрелкой, от узла (левая сторона отношения) к другому ( правая часть отношения) с соответствующим предикатом.

На рисунке ниже показан пример графа отношений c инструкция с места происшествия. Последний содержит четыре объекта: "cup 1", "cup 2", "cat" и "table". Определены следующие отношения:

  • Унарные отношения (только одно): для объекта "cat" ("standing").
  • Бинарные отношения (5 отношений): три с предикатом "on" ([Cat - Table], [Cup 1 - Table], [Cup 2 - Table]) и два с предикатом "next to" ([Cat - Cup 1], [Cat - Cup 2]).

Generated visual relationships graph from a scene

The goal is to train a GCN-LSTM which receives (in input) the previous graph and returns (in output) a description (which corresponds to this graph, and therefore, to the initial scene).

The training of this GCN-LSTM is done by creating, for each training scene, its graph (the input) and the output is its description (a paragraph). E.g. For the previous figure, the description (for training) is: "The cat standing on the table is next to a couple of cups". The process for the previous example is shown in the figure below.

GCN-LSTM: Input and output

I looked for implementation examples of GCN-LSTM (in particular, in the documentation of StellarGraph) для аналогичной проблемы, но я ничего не нашел. Итак, я хотел знать, есть ли способ построить такую ​​модель, используя StellarGraph? если да, то как? еще, какой инструмент может помочь мне построить эту модель?

1 Ответ

1 голос
/ 21 июля 2020

GCN-LSTM предназначен для кодирования графиков с функциями узлов, которые являются последовательностями, и выполнения прогнозов по этим последовательностям. В этом случае, похоже, вы пытаетесь закодировать граф с фиксированными функциями, а затем использовать эту кодировку для генерации предложения.

Для этого подходящей моделью будет использование модели классификации графов, например как GCNSupervisedGraphClassification или DeepGraphCNN. Их можно использовать для кодирования графа в вектор для ввода в отдельный декодер LSTM.

Примечательно, что эти модели не могут легко включать функции / типы ребер, поэтому некоторые аспекты on / next to / standing моделирование должно быть скорректировано; например, включение в узлы в качестве функций.

Например, можно заменить последний слой Dense(units=1, activation="sigmoid") (или несколько слоев Dense) в https://stellargraph.readthedocs.io/en/stable/demos/graph-classification/gcn-supervised-graph-classification.html#Create -the-Keras- graph-classification-model с более сложной моделью декодера (например, LSTM).

(Этот ответ скопирован из моего ответа на очень похожий (тот же?) вопрос, заданный на форуме сообщества StellarGraph: оригинал , архив .)

...