Сверточная нейронная сеть на основе октодерева

Изобретение относится к области вычислительной техники для обработки изображений. Технический результат заключается в ускорении отображения трехмерной формы/графики в реальном времени. Технический результат достигается за счет получения входа, содержащего октодерево, представляющее трехмерную форму, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя часть трехмерной формы; и для узлов в октодереве с глубиной d, ассоциированной со слоем свертки сверточной нейронной сети, выполнения операции свертки упомянутого слоя свертки, чтобы получить выход данного слоя свертки, причем выход содержит карту признаков трехмерной формы, полученную посредством выполнения операции свертки на узлах с d-глубиной во входе. 3 н. и 12 з.п. ф-лы, 9 ил.

 

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

[0001] В последние годы, с развитием 3D устройств захвата изображения и инструментов моделирования, количество и качество 3D моделей и сцен быстро возрастают. Идентификация и анализ признаков различных трехмерных форм становится более важным во многих задачах анализа формы и распознавания, таких как задачи классификации формы, извлечения формы, сегментации формы и так далее.

[0002] В настоящее время, научное сообщество и промышленность предложили решения для представления трехмерной формы и выполнения обработки сверточной нейронной сети на трехмерной форме. Однако эти решения обычно требуют большого пространства хранения и много вычислительных ресурсов.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0003] В некоторых реализациях, обеспечено устройство, которое содержит память, сконфигурированную, чтобы хранить октодерево, представляющее трехмерную форму. Узлы октодерева включают в себя пустые узлы и непустые узлы. Пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы. Устройство дополнительно включает в себя блок обработки, связанный с памятью и сконфигурированный, чтобы выполнять действия, включающие в себя: получение октодерева для представления трехмерной формы из памяти; и для узлов в октодереве с глубиной, ассоциированной со слоем свертки сверточной нейронной сети, выполнение операции свертки слоя свертки, чтобы получить выход слоя свертки.

[0004] Настоящее краткое описание предусмотрено, чтобы в упрощенной форме ввести выбор концепций, которые дополнительно описаны ниже в подробном описании. Это краткое описание не предназначено, чтобы идентифицировать ключевые признаки или существенные признаки заявленного предмета, и не предназначено, чтобы использоваться для ограничения объема заявленного предмета.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0005] Фиг. 1 схематично иллюстрирует структурную схему вычислительной среды, в которой может быть осуществлено множество реализаций предмета, описанного в данном документе;

[0006] Фиг. 2 иллюстрирует схематичную диаграмму сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе;

[0007] Фиг. 3 схематично иллюстрирует квадродерево для представления сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе;

[0008] Фиг. 4 схематично иллюстрирует квадродерево для представления сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе;

[0009] Фиг. 5 иллюстрирует схематичную диаграмму операции свертки сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе;

[0010] Фиг. 6 иллюстрирует схематичную диаграмму понижающей дискретизации (суб–дискретизации) нейронной сети в соответствии с реализацией предмета, описанного в данном документе;

[0011] Фиг. 7 иллюстрирует схематичную диаграмму операции пулинга (объединения) сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе;

[0012] Фиг. 8 иллюстрирует принципиальную схему операции обращенного пулинга сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе; и

[0013] Фиг. 9 иллюстрирует блок–схему последовательности операций способа для обучения или применения сверточной нейронной сети в соответствии с реализацией предмета, описанного в данном документе.

[0014] На всех чертежах, одинаковые или подобные ссылочные обозначения используются для обозначения одинаковых или подобных элементов.

Подробное описание вариантов осуществления

[0015] Описанный в настоящем документе предмет далее будет описан со ссылкой на несколько примеров реализации. Следует понимать, что эти реализации обсуждаются только с целью предоставления возможности специалистам в данной области техники лучше понять и осуществить описываемый предмет и не предполагают какие–либо ограничения в отношении объема заявленного предмета.

[0016] Как использовано в данном описании, термин “включает в себя” и его варианты следует рассматривать как открытые термины, которые означают “включает в себя, но не ограничивается”. Термин “на основе” следует читать как “по меньшей мере частично на основе”. Термин “одна реализация” и “реализация” следует читать как “по меньшей мере одна реализация”. Термин “другая реализация” следует читать как “по меньшей мере одна другая реализация”. Термины “первый”, “второй” и тому подобное могут относиться к различным или одним тем же объектам. Другие определения, явные и неявные, могут быть включены ниже.

[0017] В области компьютерного зрения, сверточная нейронная сеть успешно продемонстрировала свои преимущества для извлечения данных изображений и видео. Однако весьма трудно приспособить структуру и метод обучения сверточной нейронной сети для регулярной структуры данных (например, изображений) к трехмерной форме. В отличие от данных изображения и видео, которые дискретизированы на регулярных сетках, трехмерные формы представлены треугольными ячейками или нерегулярно дискретизированными трехмерными облаками точек. Однако, поскольку такое представление является не–разреженным представлением, оно требует большого объема пространства хранения. Кроме того, в отличие от данных RGB, сохраненных в двухмерном изображении, не ясно, какой тип данных, определенных на трехмерной форме, будет наилучшим для сверточной нейронной сети.

[0018] В настоящее время, были предложены решения для представления трехмерных форм и выполнения обработки сверточной нейронной сети на трехмерных формах. Однако эти решения обычно требуют большого пространства хранения и много вычислительных ресурсов. С этой целью необходимо предложить решение для сверточной нейронной сети, используемой для трехмерной формы, чтобы по меньшей мере частично решить эти проблемы. Основные принципы и несколько примерных реализаций описанного здесь предмета представлены ниже со ссылками на чертежи.

Примерная операционная среда

[0019] Основные принципы и несколько примерных реализаций описанного здесь предмета будут представлены ниже со ссылками на чертежи. На фиг. 1 показана блок–схема вычислительной системы/сервера 100, в которой(ом) могут быть осуществлены одна или несколько реализаций предмета, описанного в настоящем документе. Следует понимать, что вычислительная система/сервер 100, показанная(ый) на фиг. 1, является только примером и не образует какого–либо ограничения для функционирования и объема реализаций предмета, описанного в настоящем документе.

[0020] Как показано на фиг. 1, вычислительная система/сервер 100 представляет собой вычислительное устройство общего назначения. Компоненты вычислительной системы/сервера 100 могут включать в себя, но без ограничения, один или несколько центральных процессоров или центральных процессорных блоков 100, память 120, одно или несколько устройств 130 ввода, одно или несколько устройств 140 вывода, устройство 150 хранения, один или несколько блоков 160 связи и один или несколько блоков 170 обработки графики. Процессорный блок 100 может быть реальным или виртуальным процессором и способен выполнять различные процессы в соответствии с программами, хранящимися в памяти 120. В многопроцессорной системе, несколько процессорных блоков исполняют исполняемые компьютером инструкции, чтобы повысить возможности обработки.

[0021] Вычислительная система/сервер 100 обычно включает в себя множество компьютерных носителей. Такой носитель может быть любым существующим носителем, доступным для вычислительной системы/сервера 100, включая, но без ограничения, энергозависимый и энергонезависимый носитель, а также съемный и несъемный носитель. Память 120 может представлять собой энергозависимую память (например, регистр, кэш, память с произвольным доступом (RAM)), энергонезависимую память (например, постоянную память (ROM), электрически стираемую программируемую постоянную память (EEPROM), флэш–память) или некоторую их комбинацию. Устройство 150 хранения может быть съемным или несъемным и может включать в себя машиночитаемый носитель, такой как флэш–накопитель, магнитный диск или любой другой носитель, который может использоваться для хранения информации и является доступным в вычислительной системе/сервере 100.

[0022] Вычислительная система/сервер 100 может дополнительно включать в себя другой съемный/несъемный, энергозависимый/энергонезависимый носитель хранения вычислительной системы. Хотя это и не показано на фиг. 1, также могут быть обеспечены накопитель на диске для считывания или записи с/на съемный, энергонезависимый диск (например, “гибкий диск”) и накопитель на оптическом диске для считывания или записи с/на съемный, энергонезависимый оптический диск. Память 120 может включать в себя по меньшей мере один программный продукт, имеющий набор программных модулей (например, по меньшей мере один программный модуль), которые сконфигурированы так, чтобы выполнять функции различных реализаций предмета, описанного в настоящем документе.

[0023] Инструмент программы/стандартной программы, имеющий набор программных модулей (по меньшей мере один программный модуль), может быть сохранен например в памяти 120. Такие программные модули включают в себя, но без ограничения, операционную систему, одно или несколько приложений, другие программные модули и операционные данные. Каждый пример или некоторая комбинация этих примеров могут включать в себя реализацию сетевой среды. Программные модули могут выполнять функции и/или способы в соответствии с множеством реализаций предмета, описанного в настоящем документе. В некоторых реализациях, такие программные модули также могут быть сохранены в устройстве 150 хранения.

[0024] Блок(и) 130 ввода может представлять собой один или несколько из различных устройств ввода. Например, блок(и) 130 ввода может включать в себя пользовательское устройство, такое как мышь, клавиатура, трекбол и т.д. Блок(и) 160 связи осуществляет связь по среде связи с другим вычислительным объектом. Кроме того, функциональность компонентов вычислительной системы/сервера 100 может быть реализована в одной вычислительной машине или в нескольких вычислительных машинах, которые способны осуществлять связь по соединениям связи. Таким образом, вычислительная система/сервер 100 может работать в сетевой среде, используя логические соединения с одним или несколькими другими серверами, сетевыми персональными компьютерами (РС) или другим общим сетевым узлом. В качестве примера, а не ограничения, среда связи включает в себя проводные или беспроводные методы сетевого взаимодействия.

[0025] Вычислительная система/сервер 100 также может осуществлять связь, по мере необходимости, с одним или несколькими внешними устройствами (не показаны), такими как устройство хранения, устройство отображения и т.п., одним или несколькими устройствами, которые позволяют пользователю взаимодействовать с вычислительной системой/сервером 100, и/или любым устройством (например, сетевой картой, модемом и т.д.), которое позволяет вычислительной системе/серверу 100 осуществлять связь с одним или несколькими другими вычислительными устройствами. Такая связь может осуществляться ​​с помощью интерфейса(ов) ввода/вывода (I/O) (не показано).

[0026] Центральный процессорный блок 110 может осуществлять связь с блоком 170 обработки графики через шину ускорителя (не показана). Блок 170 обработки графики может передавать данные в центральный процессорный блок 110 через шину и получать данные от центрального процессорного блока через шину. Блок 170 обработки графики включает в себя память 180 графики для хранения данных, ассоциированных со сверточной нейронной сетью. Поскольку пространство хранения для памяти 180 графики ограничено, когда сверточная нейронная сеть обучается с блоком 170 обработки графики, пространство хранения должно полностью использоваться и сберегаться. Блок 170 обработки графики дополнительно включает в себя блок обработки для считывания данных из памяти 180 графики и/или записи данных в память 180 графики и обработки данных. Блок 170 обработки графики и центральный процессорный блок 110 могут быть интегрированы на плате или сформированы на соответствующих платах отдельно.

[0027] Как правило, блок 170 обработки графики сконфигурирован, чтобы ускорять отображение в реальном времени трехмерной графики. По мере возрастания требований к возможностям обработки графики, рабочие характеристики блока обработки графики становятся более производительными и более программируемыми. В настоящее время, блок обработки графики может эффективно выполнять множество других задач, не имеющих отношения к обработке графики. Например, блок обработки графики обладает высокопроизводительными параллельными вычислительными возможностями и, следовательно, может быть использован в модели нейронной сети, в частности, в обучении модели нейронной сети. Модель сверточной нейронной сети, описанная в настоящем документе, может быть, по меньшей мере частично (или полностью), реализована на блоке 170 обработки графики, чтобы уменьшить ограничения на вычисления в центральном процессорном блоке 110 и в полной мере использовать возможности параллельной обработки блока 170 обработки графики.

Примерная архитектура сверточной нейронной сети

[0028] Фиг. 2 иллюстрирует примерную архитектуру 200 сверточной нейронной сети в соответствии с реализацией предмета, описанного в настоящем документе. Следует понимать, что архитектура 200, показанная на фиг. 2, является лишь примером. Реализации предмета, описанного в настоящем документе, могут также быть применены к другим архитектурам сверточной нейронной сети. Предмет, описанный в настоящем документе, не ограничивается в этом отношении.

[0029] Как показано на фиг. 2, входом 210 ​​сверточной нейронной сети является представление октодерева в трехмерной форме. В некоторых реализациях, каждый листовой узел может хранить среднюю норму точек внутри листового узла. Геометрическая структура трехмерной формы может быть аппроксимирована октодеревом с дискретным нормальным полем. Модель сверточной нейронной сети может быть построена на основе представления октодерева. Следует отметить, что нормальный сигнал, и средняя норма являются лишь примерами для представления сигналов данных в трехмерной форме. Описанный здесь предмет также может быть применен к сигналам данных в любой другой подходящей форме. Предмет, описанный в настоящем документе, не ограничивается в этом отношении.

[0030] Как показано на фиг. 2, структура октодерева показана на входе 210. В некоторых реализациях, представления других типов в трехмерной форме могут быть преобразованы в представление октодерева и затем предоставлены в качестве входа 210 в сверточную нейронную сеть. Например, в кубе 212 может содержаться трехмерная геометрическая форма, например, самолет. Куб 212 соответствует корневому узлу октодерева, а именно, с 0–глубиной. Затем, куб 212 может быть разделен на восемь узлов, как показано кубом 214, а именно, с 1–глубиной. Таким образом, каждый узел соответствует дочернему узлу корневого узла.

[0031] Так как трехмерная геометрическая форма не распространена по всему трехмерному пространству, при последующем делении трехмерного пространства, некоторые узлы не будут включать в себя трехмерную форму. В этом случае, такие пустые узлы не будут разделяться, в то время как только непустые узлы далее разделяются. Таким образом, пустые узлы являются также листовыми узлами октодерева. При дальнейшем разделении узлов, содержащих трехмерную форму, получают кубы 216 и 218, соответствующие 2–глубине и 3–глубине, соответственно. Дальнейшее деление узлов генерирует октодерево d–глубины. В последующем описании, представление на основе октодерева в соответствии с некоторыми реализациями предмета, описанного в настоящем документе, будет описано подробно со ссылкой на фиг. 3 и 4.

[0032] После приема входа 210, представленного октодеревом, операции сверточной нейронной сети могут выполняться для узлов октодерева снизу вверх. Как показано на фиг. 2, глубина нейронной сети показана в пунктирном прямоугольнике 260. В примерной архитектуре 200, карту 220 признаков получают путем выполнения операции свертки на узлах с d–глубиной во входе 210. Карта 220 признаков иллюстрируют три канала. Однако следует также понимать, что может применяться любое другое подходящее количество каналов. Предмет, описанный в настоящем документе, не ограничивается в этом отношении. Карта 230 признаков может быть получена путем выполнения операции пулинга (объединения) на карте 220 признаков. Затем одна или более операций свертки и пулинга повторяются последовательно. Например, карта 240 признаков может быть получена путем выполнения операции свертки на узлах с 3–глубиной, а карта 250 признаков может быть получена путем выполнения операции пулинга на карте 240 признаков. Карта 250 признаков может быть предоставлена на другие слои нейронной сети (например, полносвязный слой) для различных целей, таких как классификация.

[0033] Вследствие характеристик формы данной трехмерной формы, пустые узлы существуют в октодереве как листовые узлы, что позволяет пропускать много узлов в таком октодереве. Например, пустой узел с 1–глубиной будет вызывать то, что все узлы ниже этого пустого узла будут пропускаться, что значительно уменьшает данные узлов, которые должны сохраняться и обрабатываться, тем самым сберегая пространство хранения и повышая эффективность вычислений.

Структура данных

[0034] Обычные реализации структуры октодерева испытывают недостаток эффективного доступа к конкретному узлу. Таким образом, нецелесообразно использовать эти реализации в сверточной нейронной сети, в которой осуществляется частый доступ к данным. Для дальнейшего повышения эффективности доступа октодерева, предложено эффективное решение для хранения данных октодерева, которое поддерживает быстрый доступ к сверточной нейронной сети и обычным операциям сверточной нейронной сети, интегрированным в представление октодерева.

[0035] В архитектуре, показанной на фиг. 2, максимальная глубина октодерева представлена как d. В некоторых реализациях, каждому узлу октодерева может быть назначен ключ или индекс в соответствии с методом перетасованных ключей. Каждый узел октодерева имеет 8 дочерних узлов, которые, поэтому, могут быть закодированы трех–битовым двоичным кодом в диапазоне от 0 до 7. Другими словами, двоичный код может кодировать подобласть, покрываемую каждым дочерним узлом. Например, если х–бит равен 1, то дочерний узел охватывает узлы вдоль направления х–оси. В противном случае, дочерний узел охватывает узлы в обратном направлении по отношению к направлению х–оси. Кроме того, y–бит и z–бит могут быть установлены аналогично.

[0036] В слое l октодерева, целочисленная координата (х, y, z) узла может быть представлена 3 l–битными данными, а именно, х=(х1 х2 … xl), y=(y1 y2 … yl), z=(z1 z2 … zl), хi, yi, zi ∈{0, 1}. Перетасованный ключ узла O, key(O), определяется следующим образом:

(1)

где l представляет глубину узла O в октодереве. Таким образом, перетасованный ключ узла на l–глубине является 3l–битным.

[0037] Каждый узел октодерева может быть представлен перетасованным ключом. В некоторых реализациях, все перетасованные ключи на l–глубине могут быть отсортированы от наименьшего к наибольшему, и этот отсортированный массив определяется как Sl. Следует отметить, что этот подход сортировки является только одним примером, и любой другой подход сортировки также возможен. Предмет, описанный в настоящем документе, не ограничен в этом отношении. Например, сортировка может быть от наибольшего к наименьшему.

[0038] После того, как узлы отсортированы на основе размера перетасованных ключей, восемь дочерних узлов, которые принадлежат одному и тому же родительскому узлу, упорядочены непрерывно и, таким образом, являются всеми дочерними узлами, принадлежащими тому же самому поддереву. Это свойство очень полезно для операций пулинга, которые будут подробно описаны ниже.

[0039] Как указывалось выше, вследствие свойства трехмерной формы, некоторые узлы октодерева являются пустыми, а именно, не содержат какой–либо части трехмерной формы. Чтобы запомнить позиции непустых узлов в Sl, целочисленные метки присвоены этим непустым узлам. Метка может начинаться с 1 и получать приращение, когда следующий узел является непустым. Для пустых узлов, их метки могут быть установлены на заданное значение, например 0. Эти метки могут быть организованы в вектор или массив, который может называться вектором Ll меток. Когда потоки данных направлены снизу вверх (а именно, понижающая дискретизация), может использоваться вектор меток.

[0040] В некоторых реализациях, все Sl (1=0, 1,…, d) могут быть объединены в непрерывный массив, называемый ключевым вектором S. Соответственно, все Ll (l=0, 1,…, d) могут быть объединены в другой непрерывный массив, называемый вектором L меток. Кроме того, индекс первого узла на каждой глубине может быть сохранен в массив J, так что к r–му непустому узлу O на l–глубине в S можно получить доступ немедленно. Первоначально, нормальные сигналы связаны с узлами октодерева на d–глубине и сохранены в непрерывном массиве Td. Данные в Тl (l=0, 1,…, d–1) вычисляются динамически в нейронной сети, а также объединены в непрерывный массив, называемый вектором данных T. Например, в сверточном слое с шагом 1, данные после вычислений свертки сохраняются в узлах глубины, соответствующей слою для последующей обработки, такой как операция пулинга. Следует отметить, что массивы Sl, Ll и Тl имеют одинаковую длину и совместно используют тот же самый индекс. Учитывая перетасованный ключ узла, в массиве Sl может выполняться поиск, чтобы получить соответствующий индекс, где информация, сохраненная Ll и Тl, может быть получена непосредственно. Четыре вектора (S, L, J, Т) могут быть использованы, чтобы представлять структуру данных октодерева.

[0041] В некоторых реализациях, различные трехмерные формы имеют различные структуры октодерева. Для поддержания эффективного обучения или вывода сверточной нейронной сети с помощью пакетного ввода, октодеревья всех трехмерных форм в пакете (батче) могут быть объединены в супер–октодерево. Так, например, все Sl, Ll и Тl октодеревьев в пакете могут быть связаны в вектора , и супер–октодерева, которое может организовываться, как указано выше, и, таким образом, подробности здесь опущены. Супер–октодерево может быть использовано как вход сверточной нейронной сети, так что данные могут эффективным образом обрабатываться без генерации временного массива.

[0042] Так как структура октодерева относится к трехмерному представлению, очень трудно показать структуру октодерева. Таким образом, для обсуждения, структура данных, введенная выше, будет описана подробно со ссылкой на квадродеревья 300 и 400 на фиг. 3 и фиг. 4. Следует понимать, что хотя подробно описано, как определить представление квадродерева (или двумерной сегментации) с 2–глубиной в следующем тексте, следующие примеры представлены только для того, чтобы специалисты в данной области техники более четко поняли техническое решение, а не для ограничения объема заявленного предмета. Последующее обсуждение может быть легко применено к структуре октодерева в соответствии с реализациями предмета, описанного здесь. Как показано на фиг. 3, структура 300 квадродерева представляет собой квадродерево с 2–глубиной, где черные точки представляют графическую информацию или данные; блок, который не содержит черную точку, является пустым узлом, а блок, содержащий черную точкой, является непустым узлом. Родительский узел показан блоком 330 с индексом 0, представленным посредством S0. Соответственно, так как этот узел содержит графические данные, соответствующей ему метке присваивается значение 1, представленное посредством L0.

[0043] В первом слое квадродерева (1–глубины), родительский узел 330 сегментирован на четыре квадранта, обозначенных как 0, 1, 2 и 3, соответственно, как показано блоком 320. На фиг. 3, х–ось установлена как горизонтальное направление, и y–ось установлена как вертикальное направление. Теперь, примем узел 2 в качестве примера, чтобы объяснить, как определить индексы узлов в первом слое. Индексы узлов в первом слое могут быть представлены как x1y1. Как было указано выше, если x–бит равен 1, то дочерний узел охватывает квадранты вдоль положительного направления х–оси (правая сторона), и если y–бит равен 0, то дочерний узел охватывает квадранты вдоль отрицательного направления y–оси (нижняя сторона). Таким образом, xy=10(2)=2(10) представляет квадрант в нижнем правом углу. Так как этот квадрант не содержит графических данных, соответствующей ему метке назначается значение 0. Аналогично, индекс 0, 1 и 3 представляют квадранты в нижнем левом углу, в верхнем левом углу и в правом верхнем углу, соответственно, что показано в блоке 320. Таким образом, эти индексы на первом слое квадродерева могут быть представлены посредством S1, и соответствующие им метки могут быть представлены посредством L1.

[0044] Как можно видеть из блока 320, в первом слое квадродерева, квадранты 1 и 2 не содержат графику и не требуют дальнейшего сегментирования. Напротив, квадранты 0 и 3 содержат графику и, таким образом, могут быть дополнительно сегментированы. Блок 310, а именно, слой, соответствующий 2–глубине квадродерева, может быть получен после сегментации блока 320. Блок 310 содержит восемь узлов, где узлы 1–3 соответствуют узлу 0 в блоке 320, и узлы 12–15 соответствуют узлу 3 в блоке 320.

[0045] Теперь, примем узел 13 в качестве примера, чтобы объяснить, как определить индексы узлов во втором слое. Индексы узлов во втором слое могут быть представлены как x1×2y1y2, где узел 13 может быть представлено в виде x1y1=01(2), как указано выше. Так как узел 13 охватывает квадрант на левой стороне вдоль направления х–оси и на верхней стороне вдоль направления y–оси, x2y2=01(2). Таким образом, индекс узла 13 имеет вид 1101(2)=13(10).

[0046] Фиг. 4 дополнительно иллюстрирует иерархическую структуру 400 и соответствующее представление данных квадродерева согласно фиг. 3. Как показано на фиг. 4, соответствующий индекс показан в каждом узле. Например, как показано в корневом узле, его индекс равен 0.

[0047] Как показано выше, S0, S1 и S2 объединяются в одномерный вектор или массив S для представления индексов квадродерева. Например, S может быть представлено как “0, 1, 2, 3, 12, 13, 14, 15, 0, 1, 2, 3, 0”. Как показано на фиг. 4, в каждом слое квадродерева, первый квадрант или узел представлен индексом 0 в этом слое. Соответственно, L0, L1 и L2 могут также быть объединены в одномерный вектор или массив L, который представлен посредством “1, 0, 2, 3, 0, 4, 0, 5, 1, 0, 0, 2, 1”. Следовательно, в векторе S, позиции индексов первых узлов трех слоев квадродерева в S представляют собой “12, 8, 0”, соответственно, а именно, в 13–ой позиции, 9–ой позиции и 1–ой позиции в S, соответственно. Эта позиционная информация представлена посредством J. Соответственно индексу S, данные формы, ассоциированные с узлами, также могут быть сохранены как вектор Т с той же размерностью, что и S. Например, данные формы могут быть средней нормой точек внутри соответствующего узла, как указано выше.

[0048] Вышеизложенное вводит только пример способа объединения. Следует понимать, что другие способы объединения также возможны. Предмет, описанный в настоящем документе, не ограничен в этом отношении. Например, S0, S1 и S2 могут быть объединены в “0, 0, 1, 2, 3, 0, 1, 2, 3, 12, 13, 14, 15”. Соответственно, L и J могут быть объединены в “1, 1, 0, 0, 2, 1, 0, 2, 3, 0, 4, 0, 5” и “0, 1, 5”, соответственно.

Операции сверточной нейронной сети

[0049] Основные операции в сверточной нейронной сети представляют собой свертку и пулинг (объединение). Для обработки изображений, эти операции должны быть выполнены для всех областей, потому что каждый пиксел содержит цветовую информацию, и информация должна быть распространена на другие области с помощью этих операций. Тем не менее, для трехмерной формы, геометрическая информация существует только в ограниченных областях. Не требуется распространять информацию в пустые области, что занимало бы много вычислительных ресурсов. В соответствии с некоторыми реализациями описанного здесь предмета, распространение информации ограниченно в октодереве, операции свертки и пулинга выполняются соответствующим образом. Другими словами, операции сверточной нейронной сети выполняются там, где существуют узлы октодерева. Кроме того, операции обращенной свертки и обращенного пулинга распространяются по структуре октодерева.

[0050] Для того, чтобы применить операцию свертки к узлу октодерева, необходимо, чтобы определить соседние узлы с той же глубиной. Для выполнения вычислений эффективным образом, обозначение операции свертки можно записать в следующей развернутой форме:

(2)

где представляет соседние узлы O, Т(∙) представляет вектор признаков, ассоциированный с , Т(n)(∙) представляет n–ый канал вектора признаков, и является весом операции свертки. Если не существует в октодереве, устанавливается на нулевой вектор. В такой форме, операции свертки преобразуются в матричные операции, и эти операции линейной алгебры могут быть эффективно реализованы на графическом вычислительном блоке.

[0051] Если размер ядра свертки (также называемого фильтром) операции свертки равен K, то операция требует получить доступ к K3–1 соседних узлов каждого узла октодерева. Чтобы получить соседние узлы, прохождение по октодереву сверху вниз не является достаточно эффективным вариантом. Если шаг операции свертки равен 1, то операция свертки применяется ко всем узлам в текущем слое октодерева. Обычно, K3–1 запросов необходимо для каждого узла. Однако соседи восьми дочерних узлов при том же родительском узле являются в значительной степени перекрывающимися и имеют только (K+1)3 узлов в общей сложности (включая сами восемь дочерних узлов). Таким образом, поиск соседей может ускорить этот процесс путем поиска только (K+1)3–8 соседних узлов восьми дочерних узлов. Например, если K=3, эта оптимизация может ускорить операцию поиска более чем в два раза.

[0052] Фиг. 5 иллюстрирует пример операции 500 свертки в соответствии с некоторыми реализациями предмета, описанного в настоящем документе. В реализациях, иллюстрируемых на фиг. 5, размер ядра свертки равен 3. Однако следует понимать, что это всего лишь пример. Описанный здесь предмет не ограничен в этом отношении.

[0053] Фиг. 5 иллюстрирует восемь дочерних узлов 510, имеющих один и тот же родительский узел, где 27 узлов (включая сам дочерний узел), смежных с каждым дочерним узлом, представлены соответствующим кубом в восьми кубах 520, соответственно. Например, 27 узлов, смежных с узлом 511 (включая сам узел 511), представлены кубом 521, и 27 узлов, смежных с узлом 513 (включая сам узел 513), представлены кубом 523. Эти кубы имеют много перекрытий, в то время как на самом деле содержится только (K+1)3=64 узла (содержащих сам узел 510), которые представлены кубом 530. В соответствии с традиционным подходом обхода октодерева сверху вниз, должно быть реализовано 8×K3=216 запросов. В противоположность этому, в соответствии со способом, показанным на фиг. 5, должно быть выполнено только 64 запроса, что значительно уменьшает количество запросов.

[0054] Если шаг равен 2, для восьми дочерних узлов при том же самом родительском узле, свертка может быть применена к первому дочернему узлу, пренебрегая семью другими узлами, что эквивалентно понижающей дискретизации разрешения карты признаков с коэффициентом 2. Для операций свертки с шагом 2r (r>1), операции могут быть применены к первому узлу каждого поддерева с высотой r. Затем, карта признаков выполняет понижающую дискретизацию с коэффициентом 2r. Ввиду специальной иерархической структуры октодерева, шаг свертки ограничен целой степенью 2.

[0055] Когда выполняются операции свертки с шагом больше, чем 1, происходит понижающая дискретизация, и длина массива Т данных формы укорачивается. Данные проходят снизу вверх в октодереве, и информация меток, сохраненная в Ll, может быть использована для получения соответствия. Фиг. 6 иллюстрирует пример 600 такого квадродерева. Начальная длина массива Т2 равна 8, и сворачивается до 2, когда выполняется понижающая дискретизация. Однако в случае, когда имеется квадродерево с 1–глубиной, то существует четыре узла, и поэтому длина массива Тl должна быть 4. Путем объединения информации в массиве Ll с дискретизированным с понижением массивом Т(1) можно легко получить обновленный массив Тl. Как показано на фиг. 6, для узлов “1, 0, 2, 3” с 2–глубиной (показаны пунктирным блоком 610), так как родительские узлы, ассоциированные с “1, 0, 2, 3”, обозначены как 1 и 0 в Ll, дискретизированные с понижением данные 620 соответствуют метке 1 в Ll. Таким образом, данные 620 используются для обновления данных 630, соответствующих метке 1 в Ll.

[0056] В некоторых реализациях, как показано на фиг. 2, сверточная нейронная сеть может включать в себя один или несколько слоев пулинга, основной функциональностью которых является постепенно уменьшать пространственный размер представления. Слой пулинга работает независимо по каждому каналу карты признаков и уменьшает его пространственный размер соответственно. Слой пулинга может иметь различные формы, такие как слой максимального пулинга или слой усредненного пулинга.

[0057] Фиг. 7 иллюстрирует схематичную диаграмму операции 700 пулинга в соответствии с некоторыми реализациями предмета, описанного в настоящем документе. Наиболее распространенный слой максимального пулинга предназначен для того, чтобы применять фильтр с размером 2 с шагом 2. В представлении октодерева, операция максимального пулинга эквивалентна нахождению максимальных данных из восьми узлов, имеющих один и тот же родительский узел. В соответствии с некоторыми реализациями предмета, описанного в настоящем документе, восемь узлов при одном и том же родительском узле сохранены непрерывно. Поэтому, применение операции максимального пулинга на октодереве сводится к выбору максимального элемента из восьми непрерывных элементов массива. Как показано на фиг. 7, максимальные данные из восьми узлов, имеющих один и тот же родительский узел, равны 9, и этот максимальный элемент выбирается, чтобы передать данные на родительский узел. Эта операция может быть быстро реализована на блоке обработки графики. Таким образом, разрешение карты признаков будет дискретизировано с понижением с коэффициентом 2, и информация родительского узла может быть использована, чтобы направлять дальнейшую операцию.

[0058] Фиг. 6 также иллюстрирует, как управлять данными в случае максимального пулинга. Например, для узлов “1, 0, 2, 3” с 2–глубиной, соответствующими данными являются “5, 0, 2, 1”. Таким образом, значение, полученное после выполнения операции максимального пулинга на этих узлах, равно 5, как показано в 620. Так как родительские узлы, ассоциированные с “1, 0, 2, 3”, обозначены как 1 и 0 в Ll, дискретизированные с понижением данные 620 соответствуют метке 1 в Ll, а именно, данным 630 может быть назначено значение 5.

[0059] Если операция пулинга относится к фильтрам других размеров и/или других шагов, операция, аналогичная приведенной выше операции свертки, может быть использована, чтобы найти ассоциированные узлы. Например, если слой максимального пулинга применяет фильтр с размером 4 с шагом 4, это соответствует выбору максимального элемента из элементов 64 внучатых узлов некоторого узла.

[0060] В некоторых реализациях, сверточная нейронная сеть может также содержать слой unpooling (обращенного пулинга), что является операцией, обратной слою пулинга, и является операцией повышающей дискретизации. Слой обращенного пулинга может быть использован для визуализации и сегментации изображений для сверточной нейронной сети. Операция обращенного пулинга обычно сопровождается операцией пулинга. После применения операции максимального пулинга, позиция максимального значения в пределах каждой области пулинга может быть записана в наборе переменных переключения. Соответствующая операция максимального обращенного пулинга использует эти переменные переключения, чтобы поместить сигнал в текущей карте признаков в соответствующей позиции дискретизированной с повышением карты признаков.

[0061] Фиг. 8 иллюстрирует схематичную диаграмму операции 800 обращенного пулинга в соответствии с некоторыми реализациями предмета, описанного здесь, что соответствует операции пулинга, показанной на фиг. 7. На фиг. 7, после того, как применена операция максимального пулинга, записывается позиция максимального значения. Таким образом, на фиг. 8, когда применяется операция максимального обращенного пулинга, сигнал в текущей карте признаков (5 в этом примере) помещается в соответствующую позицию дискретизированной с повышением карты признаков.

[0062] В некоторых реализациях, сверточная нейронная сеть может дополнительно включать в себя слой обращенной свертки, что является операцией, обратной слою свертки, а именно, реверсированием прямого вычисления (прямого вычисления свертки) и обратного вычисления (реверсивно передающего градиент вычисления свертки) слоя свертки. Функция прямого вычисления операции обращенной свертки непосредственно использует функцию обратного вычисления свертки, а функция обратного вычисления операции обращенной свертки непосредственно использует функцию прямого вычисления свертки.

[0063] Следует отметить, что операции сверточной нейронной сети изображены подробно в комбинации со структурой данных, описанной в предыдущем разделе. Однако следует понимать, что эти операции могут быть также применены к октодереву, представленному входом 210, показанным на фиг. 2, в комбинации с другими структурами данных.

Пример процесса обучения

[0064] Фиг. 9 иллюстрирует карту последовательности операций способа 900 для обучения сверточной нейронной сети в соответствии с реализацией предмета, описанного в настоящем документе. Способ может быть реализован с помощью блока 170 обработки графики, показанного на фиг. 1.

[0065] В 920, получают октодерево для представления трехмерной формы. Как указано выше, узлы октодерева включают в себя пустые узлы и непустые узлы. Пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы. В некоторых реализациях, представление октодерева в трехмерной форме может быть сохранено в памяти графики блока 170 обработки графики.

[0066] В некоторых реализациях, октодерево может быть представлено по меньшей мере одним из следующего: индексом узлов октодерева; меткой узлов октодерева, причем метка по меньшей мере указывает, являются ли узлы пустыми или непустыми; данными формы узлов октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле, представленной узлами; и иерархической структурой октодерева. В некоторых реализациях, по меньшей мере одно из индекса, метки, данных формы и иерархической структуры определяется как одномерный вектор. Например, индекс, метка, данные формы и иерархическая структура могут быть реализованы векторами S, L, Т и J, рассмотренными выше.

[0067] В некоторых реализациях, принятые сигналы данных могут быть преобразованы в октодерево для представления трехмерной формы. Например, сначала принимаются сигналы данных, представляющие трехмерную форму, и в ответ на прием сигнала данных, определяется октодерево для представления трехмерной формы.

[0068] В 940, для узлов в октодереве с глубиной, ассоциированной со слоем свертки сверточной нейронной сети, операция свертки слоя свертки выполняется для получения выхода слоя свертки. Выполнение операции свертки может быть реализовано, например, путем задействования параметров слоя свертки и ассоциированных данных, например, как показано в уравнении (2). В некоторых реализациях, восемь узлов, имеющих один и тот же родительский узел, могут быть определены из узлов с глубиной, ассоциированной со слоем свертки. Далее, на основе октодерева определяются соседние узлы восьми узлов. Соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов. Затем, операция слоя свертки для восьми узлов выполняются на соседних узлах. Таким образом, операция поиска, требуемая для операции свертки, может быть значительно упрощена, что облегчает считывание данных из памяти 180 графики.

[0069] В некоторых реализациях, сверточная нейронная сеть дополнительно включает в себя слой пулинга. Способ 900 дополнительно включает в себя определение восьми узлов, имеющих один и тот же родительский узел, из узлов с глубиной, ассоциированной со слоем пулинга. Затем, операция понижающей дискретизации выполняется на данных формы восьми узлов. Слой пулинга может быть слоем максимального пулинга или слоем усредненного пулинга. Например, как показано на фиг. 7, в реализации слоя максимального пулинга, могут быть определены восемь узлов, имеющих один и тот же родительский узел, и выбран узел с максимальным значением данных формы.

[0070] В некоторых реализациях, сверточная нейронная сеть дополнительно включает в себя слой обращенного пулинга. Способ 900 дополнительно включает в себя определение восьми узлов, имеющих один и тот же родительский узел, из узлов с глубиной, ассоциированной со слоем обращенного пулинга. Затем, операция повышающей дискретизации выполняется на данных формы восьми узлов. Например, операция обращенного пулинга может сопровождаться операцией пулинга. После того, как применяется операция максимального пулинга, позиция максимального значения внутри каждой области пулинга может записываться. Соответствующая операция максимального обращенного пулинга помещает сигнал в текущей карте признаков в соответствующей позиции дискретизированной с повышением карты признаков.

[0071] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенной свертки. Способ 900 дополнительно включает в себя определение восьми узлов, имеющих один и тот же родительский узел, из узлов с глубиной, ассоциированной со слоем обращенной свертки. Затем на основе октодерева определяются соседние узлы восьми узлов. Соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов. Затем на соседнем узле выполняется операция обращенной свертки для восьми узлов.

[0072] Например, в приложении классификации, результат, полученный с помощью сверточной нейронной сети, может сравниваться с истинно верными данными. Затем градиент функции потерь распространяется в противоположном направлении, чтобы обновить параметры сверточной нейронной сети. Так как сверточная нейронная сеть должна обрабатывать большое количество данных во время процесса обучения, способ 900 особенно полезен для процесса обучения сверточной нейронной сети, во время которого данные могут обучаться в пакетном режиме, и, таким образом, особенно приспособлен для параллельной обработки и подходит для реализации блоком обработки графики. Однако следует отметить, что способ 900 может также применяться к процессу определения с помощью модели сверточной нейронной сети.

Связанные применения сверточной нейронной сети

[0073] В последние годы, сетевая архитектура сверточной нейронной сети быстро развивается. Более глубокие и широкие сети показали свое превосходство в выполнении многих задач. Трехмерная сверточная нейронная сеть может расширять свои возможности с различными сетевыми структурами. Для того чтобы представить более четко преимущества представления на основе октодерева в соответствии с некоторыми реализациями предмета, описанного в настоящем документе, здесь иллюстрируется простая нейронная сеть. Однако следует понимать, что представление на основе октодерева в соответствии с реализациями предмета, описанного в настоящем документе, может быть применено к различным архитектурам сверточных нейронных сетей. Предмет, описанный в настоящем документе, не ограничивается в этом отношении.

[0074] Структура сверточной нейронной сети на основе октодерева включает в себя многократное применение операций свертки и пулинга на структуре данных октодерева снизу вверх. Кроме того, может быть использована функция активации, например, выход может быть активирован с помощью нелинейной функции активации, такой как выпрямленный линейный блок (ReLU). Кроме того, пакетная нормализация (BN) может быть использована для уменьшения внутреннего сдвига ковариации. Последовательность операций “свертка+BN+ReLU+пулинг” является базовой единицей сверточной нейронной сети. Если свертка применяется к узлу l–глубины, то базовая единица может быть представлена посредством Ul. Число каналов карты признаков для Ul может быть установлено как 2max(2, 9–l), где max является функцией максимального значения, и размер ядра свертки может быть установлен как 3, например. Таким образом, сверточная нейронная сеть может быть определена следующей формой:

Вход → Ud → Ud–1 → … → U2

и для удобства, обозначается как O–CNN(d).

[0075] Так как карта признаков ассоциирована только с узлами, ее пространство хранения находится в линейном соотношении с числом узлов на соответствующей глубине. По сравнению с полным воксельным представлением, которое занимает пространство , структура октодерева занимает только пространство , где n представляет показатель разрешения. Таким образом, представление октодерева в соответствии с некоторыми реализациями описанного предмета может существенно уменьшить пространство хранения и очень подходит для блока обработки графики с относительно небольшим пространством хранения.

[0076] В некоторых реализациях, О–CNN, может применяться для анализа формы, например, классификации объекта, извлечения формы, сегментации формы и тому подобного. Для сегментации объекта, два полносвязных (FC) слоя, слой softmax и два слоя Dropout (отсева) могут быть добавлены после O–CNN(d), а именно,

O–CNN(d) → отсев → FC(128) → отсев →

FC(NC) → softmax → выход

где 128 представляет число нейронов в FC, и NC представляет число категорий классификации. Слои отсева используются, чтобы избежать переобучения. Для извлечения формы, выход из приведенной выше классификации объекта может быть использован в качестве ключа для поиска наиболее подобных форм.

[0077] Для сегментации формы, сеть обращенной свертки может быть каскадирована с O–CNN(d), чтобы получить метку сегментации на каждом листовом узле. Обращенная сверточная сеть представляет собой зеркальную топологию O–CNN(d), где операции обращенной свертки и обращенного пулинга заменяют операции свертки и пулинга. “Обращенный пулинг+обращенная свертка+BN+ReLU” определяется как базовая единица и представляется в виде DUl, если обращенный пулинг применяется к узлам с l–глубиной. Обращенная сверточная сеть D–O–CNN(d) может принимать форму:

DU2 → DU3 → … → DUd–1

[0078] Тесты показывают, что эффективность хранения и вычислительная эффективность значительно улучшены для вышеуказанных трех приложений сверточной нейронной сети. Соответственно, глубина представления октодерева может быть существенно увеличена, тем самым дополнительно повышая точность модели нейронной сети.

[0079] Функциональность, описанная здесь, может осуществляться, по меньшей мере частично, с помощью одного или нескольких логических компонентов аппаратных средств. Например, и без ограничения, иллюстративные типы логических компонентов аппаратных средств, которые могут быть использованы, включают в себя программируемые вентильные матрицы (FPGA), специализированные интегральные схемы (ASIC), ориентированные на приложение стандартные продукты (ASSP), однокристальные системы (SOC), сложные программируемые логические устройства (CPLD) и тому подобное.

[0080] Программные коды для осуществления способов согласно заявленному предмету, описанному в настоящем документе, могут быть записаны в любой комбинации одного или нескольких языков программирования. Эти программные коды могут быть предоставлены в процессор или контроллер компьютера общего назначения, компьютера специального назначения или другого программируемого устройства обработки данных, так что программные коды, при исполнении процессором или контроллером, вызывают реализацию функций/операций, указанных в блок–схемах последовательностей операций и/или структурных схемах. Программные коды могут исполняться полностью на машине, частично на машине, как автономный пакет программного обеспечения частично на машине и частично на удаленном компьютере или полностью на удаленном компьютере или сервере.

[0081] В контексте раскрытия, машиночитаемый носитель может представлять собой любой осязаемый носитель, который может содержать или хранить программу для использования посредством или в соединении с системой, устройством или прибором исполнения инструкций. Машиночитаемый носитель может представлять собой машиночитаемый носитель сигнала или машиночитаемый носитель хранения. Машиночитаемый носитель может включать в себя, но без ограничения, электронные, магнитные, оптические, электромагнитные, инфракрасные или полупроводниковые систему, устройство или прибор или любую подходящую их комбинацию. Более конкретные примеры машиночитаемых носителей хранения включают в себя электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету, жесткий диск, память с произвольным доступом (RAM), постоянную память (ROM), стираемую программируемую постоянную память (EPROM или флэш–память), оптическое волокно, постоянную память на портативном компакт–диске (CD–ROM), оптическое устройство хранения, магнитное устройство хранения или любую подходящую их комбинацию.

[0082] Кроме того, хотя операции изображены в определенном порядке, это не следует понимать как требующее, чтобы операции выполнялись в определенном порядке, показанном или в последовательном порядке. При определенных обстоятельствах, многозадачность и параллельная обработка может быть выгодной. Аналогичным образом, в то время как некоторые конкретные детали реализации изложены в приведенных выше обсуждениях, они не должны быть истолкованы как ограничивающие объем предмета, описанного в настоящем документе. Некоторые функции, которые описаны в контексте отдельных реализаций, могут быть также реализованы в комбинации в одной реализации. Наоборот, различные признаки, которые описаны в контексте одной реализации, также могут быть реализованы в нескольких реализациях отдельно или в любой подходящей подкомбинации.

Примерные реализации

[0083] Некоторые примеры реализации предмета, описанного в настоящем документе, перечислены ниже.

[0084] В соответствии с некоторыми реализациями, предложено устройство, содержащее: память, сконфигурированную, чтобы хранить октодерево для представления трехмерной формы, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы; и блок обработки, связанный с памятью и сконфигурированный, чтобы выполнять действия, включающие в себя: получение октодерева для представления трехмерной формы из памяти; и для узлов в октодереве с глубиной, ассоциированной со слоем свертки сверточной нейронной сети, выполнение операции свертки слоя свертки, чтобы получить выход слоя свертки.

[0085] В некоторых реализациях, получение октодерева для представления трехмерной формы содержит получение, на основе пространственной сегментации для трехмерной формы, по меньшей мере одного из: индекса узла октодерева; метки узла октодерева, причем метка по меньшей мере указывает, является ли узел пустым узлом или непустым узлом; данных формы узла октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле; и иерархической структуры октодерева.

[0086] В некоторых реализациях, получение октодерева, представляющего трехмерную форму, содержит: прием сигнала данных, представляющего трехмерную форму; и в ответ на прием сигнала данных, определение октодерева для представления трехмерной формы.

[0087] В некоторых реализациях, выполнение операции свертки слоя свертки содержит: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем свертки; определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и выполнение операции слоя свертки для восьми узлов на соседних узлах.

[0088] В некоторых реализациях, сверточная нейронная сеть включает в себя слой пулинга, и действия дополнительно включают в себя: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем пулинга; и выполнение операции понижающей дискретизации на данных формы восьми узлов.

[0089] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенного пулинга, и действия дополнительно включают в себя: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенного пулинга; и выполнение операции повышающей дискретизации на данных формы восьми узлов.

[0090] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенной свертки, и действия дополнительно включают в себя: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенной свертки; определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и выполнение операции слоя обращенной свертки для восьми узлов на соседних узлах.

[0091] В некоторых реализациях, по меньшей мере одно из индекса, метки, данных формы и иерархической структуры определено как непрерывный вектор.

[0092] На некоторых реализациях устройство представляет собой блок обработки графики (GPU).

[0093] В соответствии с некоторыми реализациями, предложен реализуемый компьютером способ, содержащий: получение октодерева для представления трехмерной формы, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы; и для узлов в октодереве с глубиной, ассоциированной со слоем свертки сверточной нейронной сети, выполнение операции свертки слоя свертки, чтобы получить выход слоя свертки.

[0094] В некоторых реализациях, получение октодерева для представления трехмерной формы содержит получение, на основе пространственной сегментации для трехмерной формы, по меньшей мере одного из: индекса узла октодерева; метки узла октодерева, причем метка по меньшей мере указывает, является ли узел пустым узлом или непустым узлом; данных формы узла октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле; и иерархической структуры октодерева.

[0095] В некоторых реализациях, получение октодерева для представления трехмерной формы содержит: прием сигнала данных, представляющего трехмерную форму; и в ответ на прием сигнала данных, определение октодерева для представления трехмерной формы.

[0096] В некоторых реализациях, выполнение операции свертки слоя свертки содержит: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем свертки; определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и выполнение операции слоя свертки для восьми узлов на соседних узлах.

[0097] В некоторых реализациях, сверточная нейронная сеть включает в себя слой пулинга, и способ дополнительно содержит: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем пулинга; и выполнение операции понижающей дискретизации на данных формы восьми узлов.

[0098] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенного пулинга, и способ дополнительно включает в себя: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенного пулинга; и выполнение операции повышающей дискретизации на данных формы восьми узлов.

[0099] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенной свертки, и способ дополнительно включает в себя: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенной свертки; определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и выполнение операции слоя обращенной свертки для восьми узлов на соседних узлах.

[00100] В некоторых реализациях, по меньшей мере одно из индекса, метки, данных формы и иерархической структуры определено как непрерывный вектор.

[00101] В некоторых реализациях, выполнение операции свертки слоя свертки содержит выполнение операции свертки слоя свертки в блоке обработки графики (GPU).

[00102] В соответствии с некоторыми реализациями, предложен компьютерный программный продукт, включающий в себя инструкции, реально сохраненные на машиночитаемом носителе, причем инструкции, при исполнении машиной, побуждают машину реализовывать способ, содержащий: получение октодерева для представления трехмерной формы, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы; и для узлов октодерева с глубиной, ассоциированной со слоем свертки сверточной нейронной сети, выполнение операции свертки слоя свертки для получения выхода слоя свертки.

[00103] В некоторых реализациях, получение октодерева для представления трехмерной формы содержит получение, на основе пространственной сегментации для трехмерной формы, по меньшей мере одного из: индекса узла октодерева; метки узла октодерева, причем метка по меньшей мере указывает, является ли узел пустым узлом или непустым узлом; данных формы узла октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле; и иерархической структуры октодерева.

[00104] В некоторых реализациях, получение октодерева для представления трехмерной формы содержит: прием сигнала данных, представляющего трехмерную форму; и в ответ на прием сигнала данных, определение октодерева для представления трехмерной формы.

[00105] В некоторых реализациях, выполнение операции свертки слоя свертки содержит: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем свертки; определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и выполнение операции слоя свертки для восьми узлов на соседних узлах.

[00106] В некоторых реализациях, сверточная нейронная сеть включает в себя слой пулинга, и способ дополнительно содержит: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем пулинга; и выполнение операции понижающей дискретизации на данных формы восьми узлов.

[00107] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенного пулинга, и способ дополнительно содержит: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенного пулинга; и выполнение операции повышающей дискретизации на данных формы восьми узлов.

[00108] В некоторых реализациях, сверточная нейронная сеть включает в себя слой обращенной свертки, и способ дополнительно включает в себя: определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенной свертки; определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и выполнение операции слоя обращенной свертки для восьми узлов на соседних узлах.

[00109] В некоторых реализациях, по меньшей мере одно из индекса, метки, данных формы и иерархической структуры определено как непрерывный вектор.

[00110] Хотя заявленный предмет был описан в терминологии, характерной для структурных характеристик и/или логических действий способа, следует понимать, что заявленный предмет, определяемый прилагаемой формулой изобретения, не ограничивается описанными выше конкретными характеристиками и действия. Напротив, описанные выше конкретные характеристики и действия являются лишь примерными формами для реализации пунктов формулы изобретения.

1. Вычислительная система (100) для ускорения обработки трехмерной графики, содержащая:

память (180), сконфигурированную, чтобы хранить октодерево для представления трехмерной формы, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы; и

блок (170) обработки графики, связанный с памятью и сконфигурированный, чтобы выполнять действия, включающие в себя:

получение (920) входа (210), содержащего октодерево, представляющее трехмерную форму, из памяти (180); и

для узлов в октодереве с глубиной d, ассоциированной со слоем свертки сверточной нейронной сети, выполнение (940) операции свертки упомянутого слоя свертки, чтобы получить выход данного слоя свертки, причем выход содержит карту (220) признаков трехмерной формы, полученную посредством выполнения операции свертки на узлах с d-глубиной во входе (210).

2. Вычислительная система (100) по п. 1, в которой блок (170) обработки графики сконфигурирован для выполнения действий, дополнительно включающих в себя:

получение другой карты (230) признаков трехмерной формы посредством выполнения операции пулинга на карте (220) признаков с использованием слоя пулинга сверточной нейронной сети, при этом слой пулинга работает независимо на каждом канале карты признаков, чтобы уменьшить его пространственный размер.

3. Вычислительная система (100) по п. 1 или 2, в которой сверточная нейронная сеть также содержит слой обращенного пулинга, который выполняет повышающую дискретизацию операцию обратного пулинга.

4. Вычислительная система (100) по п. 1, причем получение октодерева для представления трехмерной формы содержит получение, на основе пространственной сегментации для трехмерной формы, по меньшей мере одного из:

индекса узла октодерева;

метки узла октодерева, причем метка по меньшей мере указывает, является ли узел пустым узлом или непустым узлом;

данных формы узла октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле; и

иерархической структуры октодерева.

5. Вычислительная система (100) по п. 1, причем выполнение операции свертки слоя свертки содержит:

определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем свертки;

определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и

выполнение операции слоя свертки для восьми узлов на соседних узлах.

6. Вычислительная система (100) по п. 1, причем сверточная нейронная сеть включает в себя слой пулинга, и причем действия дополнительно включают в себя:

определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем пулинга; и

выполнение операции понижающей дискретизации на данных формы восьми узлов.

7. Вычислительная система (100) по п. 1, причем сверточная нейронная сеть включает в себя слой обращенного пулинга, и действия дополнительно включают в себя:

определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенного пулинга; и

выполнение операции повышающей дискретизации на данных формы восьми узлов.

8. Вычислительная система (100) по п. 1, причем сверточная нейронная сеть включает в себя слой обращенной свертки, и действия дополнительно включают в себя:

определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем обращенной свертки;

определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и

выполнение операции слоя обращенной свертки для восьми узлов на соседних узлах.

9. Вычислительная система (100) по п. 2, причем по меньшей мере одно из индекса, метки, данных формы и иерархической структуры определено как непрерывный вектор.

10. Реализуемый компьютером способ (900) для ускорения обработки трехмерной графики, содержащий:

получение (920) входа, содержащего октодерево, представляющее трехмерную форму, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы; и

для узлов в октодереве с глубиной d, ассоциированной со слоем свертки сверточной нейронной сети, выполнение (940) операции свертки упомянутого слоя свертки, чтобы получить выход данного слоя свертки, причем выход содержит карту (220) признаков трехмерной формы, полученную посредством выполнения операции свертки на узлах с d-глубиной во входе (210).

11. Способ по п. 10, причем получение октодерева для представления трехмерной формы содержит получение, на основе пространственной сегментации для трехмерной формы, по меньшей мере одного из:

индекса узла октодерева;

метки узла октодерева, причем метка по меньшей мере указывает, является ли узел пустым узлом или непустым узлом;

данных формы узла октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле; и

иерархической структуры октодерева.

12. Способ по п. 10, причем получение октодерева для представления трехмерной формы содержит:

прием сигнала данных, представляющего трехмерную форму; и

в ответ на прием сигнала данных, определение октодерева для представления трехмерной формы.

13. Способ по п. 10, причем выполнение операции свертки слоя свертки содержит:

определение восьми узлов, имеющих тот же самый родительский узел, из узлов с глубиной, ассоциированной со слоем свертки;

определение соседних узлов восьми узлов на основе октодерева, причем соседние узлы включают в себя узлы, смежные с по меньшей мере одним из восьми узлов; и

выполнение операции слоя свертки для восьми узлов на соседних узлах.

14. Считываемый компьютером носитель, хранящий инструкции, которые, при исполнении машиной, побуждают машину реализовывать способ (900), содержащий:

получение (920) входа, содержащего октодерево для представления трехмерной формы, узлы октодерева включают в себя пустые узлы и непустые узлы, причем пустые узлы исключают трехмерную форму и являются листовыми узлами октодерева, а непустые узлы включают в себя по меньшей мере часть трехмерной формы; и

для узлов октодерева с глубиной, ассоциированной со слоем свертки сверточной нейронной сети, выполнение (940) операции свертки упомянутого слоя свертки, чтобы получить выход данного слоя свертки, причем выход содержит карту (220) признаков трехмерной формы, полученную посредством выполнения операции свертки на узлах с упомянутой глубиной во входе (210).

15. Считываемый компьютером носитель по п. 14, причем получение октодерева для представления трехмерной формы содержит получение, на основе пространственной сегментации для трехмерной формы по меньшей мере одного из:

индекса узла октодерева;

метки узла октодерева, причем метка по меньшей мере указывает, является ли узел пустым узлом или непустым узлом;

данных формы узла октодерева, причем данные формы по меньшей мере указывают форму трехмерной формы в узле; и

иерархической структуры октодерева.



 

Похожие патенты:

Группа изобретений относится к области искусственного интеллекта (ИИ) и может быть использована для формирования выходного изображения с помощью нейронной сети. Техническим результатом является обеспечение совместного выполнения дебайеризации и устранения цифрового шума на изображениях для повышения качества изображений.

Изобретение относится к области прогнозирования погодных условий. Заявлен способ формирования прогноза погоды, который выполняется сервером, содержащим процессор, способный выполнять алгоритм машинного бучения (MLA).

Изобретение относится к области прогнозирования погодных условий. Заявлен способ формирования прогноза погоды, который выполняется сервером, содержащим процессор, способный выполнять алгоритм машинного бучения (MLA).

Изобретение относится к системе, носителю данных и способу преобразования последовательности на основе внимания. Технический результат заключается в повышении быстродействия преобразования последовательности.

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

Изобретение относится к вычислительной технике. Технический результат заключается в повышении производительности нейронных сетей.

Изобретение относится к области вычислительной техники. Способ обнаружения дорожной полосы включает получение изображения участка дорожной полосы и его обработку.

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

Изобретение относится к областям компьютерного зрения и компьютерной графики с использованием нейронных сетей, машинного обучения для интерактивной сегментации объектов на изображениях, и в частности к способу интерактивной сегментации объекта на изображении и электронному вычислительному устройству для реализации данного способа.

Изобретение относится к бионике, моделированию функциональных аспектов человека и может найти применение в вычислительной технике при построении интеллектуальных машин и систем. Техническим результатом является повышение интеллектуальности обработки информации в нейронной сети, улучшение распознавания, запоминания, формирования новых полезных сигналов и извлечения их из памяти сети.

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