Skip to content

complexobject_detection

Moscowsky Anton edited this page Nov 16, 2020 · 21 revisions

Распознавание "сложных" объектов

1. Аннотация

Сложные (или составные) объекты представляют собой набор простых объектов с заданными между собой отношениями. На текущий момент отношения носят сравнительный (больше, меньше) и пространственный характер (быть внутри, быть на расстоянии и т.п.). Имея данный инструмент можно сильно расширить набор объектов, которые могут быть распознаны системой. Часто в научной литературе для такого определения объектов используют термин "сцена" или "ситуация", иногда дополняя его различными конструкциями, например контекстом. На изображении снизу приведен пример всем хорошо известной картины, на которой показаны, как между объектами могут быть заданы отношения.

Задачей алгоритмов распознавания сложных объектов на данном примере может быть "найти человека с веревкой" или "найти человека, стоящего на дороге за кустом". В первом случае ответом будет одна группа объектов, во втором две.

2. Жесткое и мягкое распознавание

Аналогично задаче распознавания простых объектов, распознавание сложных должно быть произведено в двух режимах.

  • Жесткий - когда наличие всех объектов и связей обязательно для распознавания.
  • Мягкий, когда берутся группы объектов, частично попадающие под заданное описание и рассчитывается коэффициент уверенности этой группы.

На данный момент реализовано распознавание только в жестком режиме.

3. XML-описание

Описания сложных объектов располагаются в теге ComplexObjectBase, ссылаясь на простые объекты из SimpleObjectBase и отношения их RelationLib.

3.1. Отношения

Как уже говорилось, отношения указываются в теге RelationLib. Для каждого отношения создается тег RelationShip, у которого имеются слеущим параметры:

  1. Name (string, must be set) Уникальное имя отношения, обязано быть указано.
  2. Type (string, must be set) Тип отношения, должно быть одним из таблицы ниже.
  3. Другие параметры специфичны для каждого типа отношения.
Тип Описание Рабочее пространство* Билинейное Ссылка на раздел
ImageRange Отношение расстояния между объектами на изображении I ✔✔❌ link
3DRange Отношение расстояние между объектами в трехмерном пространстве 3D link
LogicAnd Логическое И над двумя отношениями Унаследовано Унаследовано link
LogicOr Логическое ИЛИ над двумя отношениями Унаследовано Унаследовано link
LogicNot Логическое НЕ к отношению Унаследовано Унаследовано link
SpaceIn Проверяет что один объект полностью внутри другого I link
SpaceOut Проверяет что один объект полностью вне другого I link
SpaceUp Проверяет что центр объекта выше центра другого I link
SpaceDown Проверяет что центр объекта ниже центра другого I link
SpaceLeft Проверяет что центр объекта левее центра другого I link
SpaceRight Проверяет что центр объекта правее центра другого I link

* - Может быть как I, что означает что объекты сравниваются в координатах изображения и 3D, что означает что отношение оперирует в трехмерном пространстве, однако для этого варианта, объекты должны иметь признаки, определяющие трехмерное положение.

3.2. Сложные объекты

Все сложные объекты описываются внутри тега ComplexObjectBase и каждый заключен в тег ComplexObject.

3.2.1. Параметры тега ComplexObject.

  1. ID (int, must be set) Уникальный идентификатор сложного объекта. Может совпадать с идентификаторами простых объектов.
  2. Name (string, must be set) Уникальное имя сложного объекта.

3.2.2. Внутренние теги со своими параметрами

  1. SimpleObject - эти теги отписывают, какие простые объекты составляют сложный
  • Class (string) Имя простого объекта в базе.
  • InnerName (string) Некоторе внутреннее имя, которое будет использовано при задании отношений.
  1. Relation - эти теги описывают, как простые объекты соединены отношениями
  • Obj1 (string) Внутреннее имя первого объекта, соединенного отношением.
  • Obj2 (string) Внутреннее имя второго объекта, соединенного отношением.
  • Relationship (string) Имя отношения из RelationLib.

3.3. Пример

Clone this wiki locally