БЫСТРОЕ ВЫЧИСЛЕНИЕ СВЕРТОЧНОЙ НЕЙРОННОЙ СЕТИ
FAST CALCULATION OF CONVOLUTIONAL NEURAL NETWORK

Уровень техники
[0001] Сверточная нейронная сеть (CNN или ConvNet) представляет собой тип искусственной нейронной сети в машинном обучении. Она обычно используется в анализе визуальных изображений, например, в распознавании и классификации изображений. Например, в фазе обучения процесса машинного обучения, CNN может обучаться или подготавливаться на основе обучающих данных. Затем, в фазе прогнозирования процесса машинного обучения, обученная CNN служит в качестве модели, которая принимает входные данные и выводит прогнозирования или решения на основе обработки и анализа входных данных.
Сущность изобретения
[0002] Настоящее раскрытие сущности описывает быстрое вычисление сверточной нейронной сети (CNN).
[0003] В реализации, машинореализованный способ включает в себя получение обученной сверточной нейронной сети, включающей в себя один или более сверточных уровней, причем каждый из одного или более сверточных уровней включает в себя определенное число фильтров с известными параметрами фильтра; предварительное вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети; прием входных данных в обученную сверточную нейронную сеть; вычисление вывода каждого из одного или более сверточных уровней с использованием сверточного оператора Winograd на основе предварительно вычисленного коэффициента многократного использования и входных данных; и определение выходных данных обученной сверточной сети на основе вывода каждого из одного или более сверточных уровней.
[0004] Вышеописанная реализация является реализуемой с использованием машинореализованного способа; энергонезависимого машиночитаемого носителя, сохраняющего машиночитаемые инструкции для того, чтобы осуществлять машинореализованный способ; и машинореализованной системы, включающей в себя компьютерное запоминающее устройство, функционально соединенное с аппаратным процессором, выполненным с возможностью выполнять машинореализованный способ/инструкции, сохраненные на энергонезависимом машиночитаемом носителе.
[0005] Предмет изобретения, описанный в этом подробном описании, может реализовываться в конкретных реализациях таким образом, чтобы реализовывать одно или более следующих преимуществ. Во-первых, описанный предмет изобретения совершенствует CNN-модель посредством выполнения эквивалентной трансформации или преобразования вычислительного графа, чтобы упрощать сетевую структуру CNN, и в силу этого обеспечивает возможность оптимизации реализации CNN независимым от устройств и зависимым от устройств способом. Примерные независимые от устройств оптимизации могут включать в себя удаление избыточных операций (например, удаление операторов идентификации в инфраструктуре глубокого обучения, которая выполняет только передачу данных из входного тензора в выходные тензоры без изменения контента данных) и объединение уровней/операции, чтобы уменьшать вычислительную сложность (например, объединение сверточного уровня с уровнем пакетной нормализации). Примерные зависимые от устройств оптимизации примера могут включать в себя повышение аппаратной эффективности посредством объединения операций (например, объединения сверточного уровня с операцией добавления смещения, которая выполняется сразу после первой из них), чтобы лучше использовать аппаратные вычислительные возможности, и гибкое развертывание операций в другой базовой архитектуре, чтобы максимизировать пропускную способность CNN. Во-вторых, описанный предмет изобретения уменьшает вычислительную нагрузку прогнозирования данных на основе обученной CNN и повышает скорость прогнозирования и в силу этого уменьшает сетевую задержку и повышает пропускную способность CNN. В-третьих, описанный предмет изобретения требует меньшей вычислительной мощности. В-четвертых, описанный предмет изобретения может комбинировать несколько операторов в новый оператор, чтобы использовать преимущество базовых аппаратных ускорителей (таких как GPU, FPGA или ASIC-микросхемы). Например, в CNN, после сверточного уровня типично идет операция добавления смещения или уровень пакетной нормализации. В случае операции добавления смещения, при рассмотрении свертки и добавления смещения в качестве двух отдельных операций, свертка может вычисляться на GPU, а затем значения смещения могут добавляться в результаты предыдущей свертки на GPU. Таким образом, вычислительные возможности GPU не полностью используются вследствие небольшого объема вычислений в операции добавления смещения. Вместо этого, в описанном предмете изобретения, операции свертки и добавления смещения могут комбинироваться в одну операцию в некоторых реализациях. В этой одной операции, соответствующее значение смещения может добавляться в результат свертки непосредственно в идентичном запуске GPU-ядра, за счет этого приводя к более высокой скорости. Аналогично, в случае пакетной нормализации, комбинация сверточного уровня и пакетной нормализации может эквивалентно преобразовываться в комбинацию сверточного уровня и добавления смещения оффлайн, и после этого вышеуказанные зависимые от устройств оптимизации могут применяться к сверточным уровням и операциям добавления смещения, чтобы дополнительно использовать преимущество GPU-мощности для того, чтобы повышать скорость вычислений. Эти примеры также являются применимыми к процессорам или ускорителям, отличным от GPU. Другие преимущества должны становиться очевидными для специалистов в данной области техники.
[0006] В дальнейшем изложены подробности одной или более реализаций предмета изобретения этого описания изобретения в подробном описании, в формуле изобретения и на прилагаемых чертежах и в формуле изобретения. Другие признаки, аспекты и преимущества предмета изобретения должны становиться очевидными из подробного описания, формулы изобретения и прилагаемых чертежей.
Описание чертежей
[0007] Фиг. 1 является блок-схемой, иллюстрирующей примерное эквивалентное преобразование двух вычислительных графов сверточной нейронной сети (CNN), согласно реализации настоящего раскрытия сущности.
[0008] Фиг. 2 является снимком экрана, иллюстрирующим примерный псевдослучайный код быстрого вычисления CNN, согласно реализации настоящего раскрытия сущности.
[0009] Фиг. 3 является блок-схемой последовательности операций, иллюстрирующей примерный способ для быстрого вычисления CNN, согласно реализации настоящего раскрытия сущности.
[0010] Фиг. 4 является блок-схемой, иллюстрирующей примерную компьютерную систему, используемую для того, чтобы предоставлять вычислительные функциональности, ассоциированные с описанными алгоритмами, способами, функциями, процессами, последовательностями операций и процедурами, как описано в настоящем раскрытии сущности, согласно реализации настоящего раскрытия сущности.
[0011] Аналогичные ссылки с номерами и обозначения в различных чертежах указывают аналогичные элементы.
Подробное описание изобретения
[0012] Нижеприведенное подробное описание описывает быстрое вычисление сверточной нейронной сети (CNN) и представляется, чтобы обеспечивать возможность специалистам в данной области техники осуществлять и использовать раскрытый предмет изобретения в контексте одной или более конкретных реализаций. Различные модификации, поправки и перестановки раскрытых реализаций могут вноситься и должны становиться очевидными для специалистов в данной области техники, и заданные общие принципы могут применяться к другим реализациям и вариантам применения, без отступления от объема раскрытия сущности. В некоторых случаях, подробности, необязательные для того, чтобы получать понимание описанного предмета изобретения, могут опускаться, с тем чтобы не затруднять понимание одной или более описанных реализаций необязательными подробностями, и поскольку такие подробности находятся в пределах квалификации специалистов в данной области техники. Настоящее раскрытие сущности не имеет намерение быть ограниченным описанными или проиллюстрированными реализациями, а согласуется с самым широким объемом в соответствии с описанными принципами и признаками.
[0013] Сверточная нейронная сеть (CNN или ConvNet) представляет собой одну из наиболее характерных сетевых структур и технологических новшеств для глубокого обучения. Она очень успешно применяется в области техники изображений, а также широко используется для того, чтобы разрешать проблемы в других областях техники. CNN может включать в себя одно или более из входного уровня, сверточного уровня, функции активации, пакетной нормализации, уровня объединения в пул, полностью соединенного уровня и выходного уровня. Из них, сверточный уровень типично заключает в себе большую часть вычислительной нагрузки и может использовать самое большое время вычисления всей CNN. Сверточный уровень может включать в себя один или более фильтров (также называемых "ядрами"). Сверточный уровень может принимать входные данные, выполнять операцию свертки входных данных с каждым из одного или более фильтров сверточного уровня и формировать выходные данные сверточного уровня. В некоторых случаях, CNN может включать в себя десятки сверточных уровней.
[0014] Описанные технологии могут помогать ускорять операцию свертки, которая представляет собой базовую операцию сверточного уровня. В свою очередь, описанные технологии могут повышать эффективность вычислений и уменьшать вычислительную нагрузку CNN.
[0015] Описанные технологии могут иметь множество вариантов применения. Например, описанные технологии могут применяться в распознавании лиц в таких областях, как супермаркеты без обслуживающего персонала, банки без обслуживающего персонала, защита для обеспечения безопасности и интеллектуальные города. Например, глубокие сверточные нейронные сети использованы в распознавании лиц. Описанные технологии могут помогать решать проблемы, связанные с задачами идентификации по лицам, в частности, для большой плотности населения. Описанные технологии могут улучшать время ответа при распознавании лиц на основе обученной CNN-модели. Описанные технологии могут уменьшать время обработки каждого запроса распознавания лиц. В свою очередь, пропускная способность системы может увеличиваться, и эксплуатационные затраты могут уменьшаться без увеличения объема вычислительных ресурсов.
[0016] В качестве другого примера, описанные технологии могут использоваться в автостраховании. Описанные технологии могут автоматически идентифицировать повреждение поверхности транспортного средства на основе технологии на основе изображений из глубокой сверточной нейронной сети. Например, после автомобильной аварии, повреждение поверхности автомобиля может фотографироваться и затем выгружаться на сервер страховых требований страховой компании, который может выполнять автоматическую идентификацию повреждений и оценку компенсационных квот. Описанные технологии могут использоваться посредством сервера страховых возмещений для того, чтобы выполнять автоматическую идентификацию повреждений на основе глубокой сверточной нейронной сетевой технологии. Описанные технологии могут обеспечивать возможность страховой компании предоставлять более высокую пропускную способность без увеличения бюджета по оборудованию.
[0017] Помимо вышеописанного примера, описанные технологии могут обеспечивать преимущества во множестве других вариантов применения, которые используют CNN-технологию.
[0018] В некоторых реализациях, описанные технологии могут реализовываться с использованием вычислительного графа. Вычислительные графы могут использоваться для того, чтобы представлять алгоритмы машинного обучения, в частности, в области техники глубокого обучения. Вычислительный граф может представлять собой направленный граф, который включает в себя несколько узлов, причем узлы соответствуют операциям или переменным. Переменные могут подавать свое значение в операции, и операции могут подавать свой вывод в другие операции. Таким образом, узел на вычислительном графе может задавать функцию переменных. Значения, которые подаются в узлы (т.е. ввод) и выходят из узлов (т.е. вывод), могут представляться посредством тензоров. Тензор может рассматриваться в качестве многомерного массива. Тензор может охватывать скаляры, векторы, матрицы и тензоры более высокого ранга или размерностей. Использование тензоров для того, чтобы представлять входные и выходные данные переменной и оператора, может помогать достигать автоматического дифференцирования, управления динамическим запоминающим устройством и других функциональностей.
[0019] Для оператора, вычислительный граф должен задавать только функцию оператора. Необязательно указывать конкретную реализацию каждого оператора. Следовательно, вычислительный граф предоставляет гибкость таким образом, что оператор может выполняться или иным образом реализовываться на одном или более из CPU или аппаратного ускорителя, такого как GPU, FPGA или AI-микросхема. Хранение и доступ к переменным данных могут быть локальными или удаленными. Вычислительные графы могут использоваться для обучения модели, прогнозирования на основе модели или логического вывода либо других фаз процесса машинного обучения.
[0020] Фиг. 1 является блок-схемой, иллюстрирующей примерное эквивалентное преобразование 101 двух вычислительных графов 100 и 105 CNN, согласно реализации настоящего раскрытия сущности. Два вычислительных графа 100 и 105 могут представлять идентичную CNN. Для простоты, два вычислительных графа 100 и 105 иллюстрируют операции или функции одного сверточного уровня CNN. CNN может включать в себя несколько уровней и может представляться посредством вычислительного графа, соответственно.
[0021] Как проиллюстрировано, тензор X 110 представляет собой ввод, и тензор Z 170 представляет собой вывод сверточного уровня CNN, представленной посредством вычислительного графа 100, соответственно. Вычислительный граф 100 включает в себя два узла 130 и 150. Каждый узел соответствует переменной или оператору, что может рассматриваться в качестве детальной базовой операции нейронной сети. Узел 130 представляет оператор свертки, Conv2D. Conv2D 130 может представлять операцию свертки тензора X 110 входных данных с помощью тензора W 120, при этом тензор W 120 представляет весовые коэффициенты или параметры фильтров сверточного уровня CNN. После операции свертки, Conv2D 130 может выводить тензор Y 140. Выходной тензор Y 140 и смещение 160 могут служить в качестве ввода в узел 150, который представляет операцию добавления смещения 160 в выходные данные Y 140, приводя к выводу Z 170 сверточного уровня CNN.
[0022] Аналогично, тензор X' 115 представляет собой ввод, и тензор Z' 175 представляет собой вывод сверточного уровня CNN, представленной посредством вычислительного графа 155, соответственно. Вычислительный граф 155 включает в себя два узла 135 и 155. Узел 135 представляет оператор свертки, Wino-Conv2D. Wino-Conv2D 135 может представлять модифицированную операцию свертки тензора 115 входных данных X' с помощью тензора W 125, при этом тензор W 125 представляет модифицированные весовые коэффициенты или параметры фильтров сверточного уровня CNN. После операции свертки, Wino-Conv2D 135 может выводить тензор Y' 145. Выходной тензор Y' 145 и смещение 165 могут служить в качестве ввода в узел 155, который представляет операцию добавления смещения 165 в выходные данные Y' 145, приводя к выводу Z' 175 сверточного уровня CNN.
[0023] В некоторых реализациях, вычислительный граф 105 представляет собой эквивалентное преобразование вычислительного графа 100. С учетом идентичного ввода (т.е. X 110=X' 115), два вычислительных графа 100 и 105 могут формировать идентичный вывод (т.е. Z 170=Z' 175).
[0024] В некоторых реализациях, по сравнению с вычислительным графом 100, вычислительный граф 105 может представлять улучшенную или оптимизированную операцию свертки для быстрого вычисления CNN. Например, после фазы обучения процесса машинного обучения, параметры узлов (например, значения параметра фильтра или ядра в тензоре W 120 или тензоре U 125) вычислительного графа обучены и являются известными. В фазу прогнозирования процесса машинного обучения, значения этих параметров остаются неизменными. Другими словами, независимо от того, как изменяется входной тензор X' 115, значение тензора U 125 не должно изменяться. В связи с этим, тензор U 125 может вычисляться после обучения, перед выполнением прогнозирования на основе любых входных данных X' 115. Посредством вычисления тензора U 125 заранее и многократного использования предварительно вычисленного тензора U 125 для любых входных данных X' 115 в сверточный уровень CNN, вычислительная нагрузка CNN может уменьшаться, в частности для прогнозирования нескольких вводов в CNN.
[0025] В связи с этим, на вычислительном графе 105, новый оператор Wino-Conv2D 135 свертки может заменять исходный оператор Conv2D 130 свертки на исходном вычислительном графе 100. Новый оператор Wino-Conv2D 135 свертки использует тензор U 125 вместо исходного тензора W 120 в качестве параметра фильтра или ядра. Вычислительный граф 105 позволяет достигать повышенной эффективности вычислений при сохранении эквивалентности с исходным вычислительным графом 100.
[0026] Фиг. 2 является снимком экрана, иллюстрирующим примерный псевдокод примерного алгоритма 200 для быстрого вычисления CNN, согласно реализации настоящего раскрытия сущности. Примерный алгоритм 200 основан на алгоритме минимальной фильтрации Winograd, быстром алгоритме для CNN.
in
i
in
i
out
in
out
in
[0027] Операция свертки сверточного уровня CNN может задаваться как указанная корреляция между вводом (например, представленным посредством входного тензора X) и фильтром или ядром сверточного уровня (представленным посредством тензора W фильтра или ядра), приводящим к выводу (например, представленному посредством выходного тензора Y). Для простоты, считается, что операция свертки использует шаг в 1. Для данного сверточного уровня, входной тензор X может иметь размер [n; C; H; W], где N представляет размер пакета входных данных, которые должны обрабатываться (например, пакетной операции N изображений, которые должны свертываться); Cпредставляет число каналов (например, изображение из стандартной цифровой камеры имеет три канала: красный, зеленый и синий. Каждый канал может включать в себя двумерную матрицу, имеющую пиксельные значения (например, в диапазоне от 0 до 255)); H и W представляют высоту и ширину каждого канала (например, 255*255), соответственно. Тензор W фильтра или ядра может иметь размер [C; C; R; S], где C представляет число выходных каналов операции свертки; C представляет число входных каналов операции свертки; R и S представляют высоту и ширину каждого фильтра или ядра сверточного уровня, соответственно. Типично, R и S могут задаваться с возможностью иметь идентичное значение.
out
i
[0028] Выходной тензор Y может иметь размер [n; C; H; W], с элементом:
, (1)
out
где i является целым числом из диапазона [0, N], и o является целым числом из диапазона [0, C].
[0029] Предусмотрено несколько способов реализовывать операцию свертки сверточного уровня, таких как вычисление по определению (например, заданного посредством уравнения (1)), преобразование в матричное умножение или использование быстрого алгоритма Winograd. Например, когда размер каждого сверточного ядра или фильтра составляет 1×1 (т.е. R и S равны 1 одновременно), вышеуказанная операция свертки может преобразовываться в матричное умножение. В некоторых реализациях, например, в случаях, если R>1 или S>1, операция свертки может реализовываться на основе быстрого алгоритма Winograd.
[0030] Согласно быстрому алгоритму Winograd, для свертки входного канала со сверточным фильтром или ядром с размером  и выходным размером , может быть найден алгоритм  минимальной фильтрации, который требует только умножений, чтобы завершать операцию свертки. Например, данный входной канал размера  может разделяться на перекрывающиеся субблоки, при этом каждый субблок имеет размер . Вычисление свертки может выполняться для каждого субблока отдельно, чтобы формировать соответствующий выходной канал (напомним вышеуказанное предположение касательно того, что шаг равен 1). Как описано выше, ширина R и высота S сверточного фильтра или ядра на сверточном уровне, в общем, задаются равным идентичному значению. Типично, для сегментации на субблоки,  и  также задаются равными идентичным значениям.
[0031] Для простоты, примерный алгоритм 200 рассматривает случай, в котором  и . Таким образом, рассматривается алгоритм  минимальной фильтрации. Этапы 1-23 примерного алгоритма 200 показывают примерную реализацию алгоритма Winograd для операции свертки одного сверточного уровня CNN. CNN характеризуется посредством, фильтра или ядра между c-ым входным каналом и o-ым выходным каналом и тензора W, включающего в себя параметры или весовые коэффициенты фильтров или ядер CNN. Тензор X представляет входные данные в CNN.  представляет число входных каналов.  представляет размер входного субблока (смежные субблоки имеют  перекрывающихся элементов).  представляет p-ый субблок c-го входного канала.  представляет p-ый субблок o-го выходного канала.  и  являются матрицами преобразования, соответствующими вводу  и заданными следующим образом:
= (2)
и
= (3)
[0032] В существующих технологиях для вычисления CNN на основе алгоритма Winograd, примерный алгоритм 200 (включающий в себя этапы 1-23) выполняется для каждого входного канала (например, канала изображения) для каждого сверточного уровня CNN. Например, если CNN включает в себя 5 сверточных уровней для каждого входного канала, примерный алгоритм 200 выполняется 5 раз. Если 10 каналов вводятся для прогнозирования, примерный алгоритм 200 должен выполняться 50 раз.
[0033] В отличие от существующих технологий, описанные технологии для быстрого вычисления CNN могут уменьшать вычислительную нагрузку, в частности, с учетом нескольких входных каналов. Описанные технологии для быстрого вычисления CNN могут многократно использовать коэффициенты, которые являются общими и неизменными в течение фазы прогнозирования процесса машинного обучения. Описанные технологии для быстрого вычисления CNN идентифицируют такие коэффициенты и предварительно вычисляют их.
[0034] В связи с этим, вычисление этих коэффициентов многократного использования должно вычисляться только однократно, независимо от значений входных данных. Более конкретно, в примерном алгоритме 200, описанный алгоритм быстрого вычисления может предварительно вычислять тензор U согласно этапам 1-6, поскольку все параметры, необходимые для такого вычисления (например,  и ), известны с учетом обученной CNN и остаются неизменными в течение фазы прогнозирования на основе обученной CNN. Например, тензор можно извлекаться из тензора W посредством оффлайновой обработки. Соответственно, этапы 1-6 (совместно обозначаются 210) примерного алгоритма 200 должны выполняться только однократно для каждого сверточного уровня обученной CNN. Например, если 10 каналов вводятся для прогнозирования, этапы 1-6 примерного алгоритма 200 могут выполняться только однократно, чтобы уменьшать объем вычислений при прогнозировании на основе модели реальном времени, за счет этого уменьшая время выполнения, тогда как оставшиеся этапы 7-23 (совместно обозначаются 220) выполняются 10 раз для каждого сверточного уровня обученной CNN.
[0035] При использовании предварительно вычисленного тензора U на основе примерного алгоритма 200 Winograd, вычислительный граф обученной CNN может модифицироваться, например, согласно эквивалентному преобразованию 101, в вычислительный граф 105, как показано на фиг. 1. Например, предварительно вычисленный тензор U на основе примерного алгоритма 200 Winograd может представлять собой пример тензора U 125, который заменяет исходный тензор W 120 весовых коэффициентов обученной CNN. Оператор Wino-Conv2D 135 свертки может реализовываться на основе этапов 7-23 примерного алгоритма 200 Winograd, который заменяет исходный оператор Conv2D 130 свертки на исходном вычислительном графе 100. Модифицированный вычислительный граф 105 может использоваться для прогнозирования. Поскольку новый вычислительный граф 105 освобождает исходный вычислительный граф 100 от вычисления тензора U 125, вычислительная нагрузка модифицированного вычислительного графа 105 уменьшается и в силу этого повышает эффективность вычислений для выполнения операции свертки CNN. Результаты моделирования показывают то, что вычисление на основе модифицированного вычислительного графа 105 с предварительно вычисленным U 125 и оператором Wino-Conv2D 135 свертки может повышать скорость вычислений вплоть до 30% по сравнению с вычислительным графом 100 с исходным тензором W 120 весовых коэффициентов и оператором Conv2D 130 свертки.
[0036] Следует отметить, что фиг. 2 показывает примерный алгоритм Winograd для случая  и . Описанные технологии для быстрого вычисления CNN могут адаптироваться и применяться к другим случаям, включающим в себя общие CNN, без конкретных требований  и
[0037] Фиг. 3 является блок-схемой последовательности операций примерного способа 300 для быстрого вычисления CNN, согласно реализации. В некоторых реализациях, различные этапы способа 300 могут выполняться параллельно, в комбинации, циклически или в любом порядке. Для ясности представления, нижеприведенное описание, в общем, описывает способ 300 в контексте других чертежей в этом описании. Тем не менее, следует понимать, что способ 300 может осуществляться, например, посредством любой подходящей системы, окружения, программного обеспечения и аппаратных средств либо комбинации систем, окружений, программного обеспечения и аппаратных средств, надлежащим образом. Например, способ 300 может осуществляться посредством оборудования обработки данных, которое выполнено с возможностью выполнять алгоритмы машинного обучения с использованием CNN. Оборудование обработки данных может включать в себя или реализовываться, например, посредством одного или более из CPU общего назначения или аппаратных ускорителей, таких как GPU, FPGA и даже специализированные ASIC-процессоры.
[0038] На 310, обученная CNN получается. Получение обученной CNN может включать в себя, например, вычисление обученной CNN через фазу или процесс обучения в процессе машинного обучения (например, на основе обучающих данных или дискретизированных вводов), извлечение обученной CNN из запоминающего устройства или другого хранилища данных или прием обученной CNN из другого источника (например, другого оборудования обработки данных, которое выполняет процесс обучения). Обученная CNN может принимать и анализировать входные данные (например, входное изображение) и прогнозировать выходные данные (например, соответствующие вероятности категорий или классификаций входного изображения).
[0039] Обученная CNN имеет известную сетевую архитектуру (например, упорядоченную последовательность различных уровней), заданную посредством известных параметров каждого уровня в обученной CNN. Каждый уровень в обученной CNN может работать с входными данными в обученную CNN (прямо или посредством работы с выводом предыдущего уровня в обученной CNN). Уровень, который работает с данными в обученной CNN до другого уровня, упоминается как предшествующий, предыдущий или вышележащий уровень относительно другого уровня. Уровень, который работает с данными в обученной CNN после (following) или после (after) операции другого уровня с данными, упоминается как последующий или нижележащий уровень относительно другого уровня. Типично, вывод предшествующего уровня служит в качестве ввода в смежный последующий уровень. В связи с этим, входные данные в обученную CNN проходят через каждый уровень обученной CNN в порядке от начала CNN (например, от входного уровня, который принимает входные данные, или начального уровня, который работает непосредственно с входными данными) до конца CNN (например, до выходного уровня, который выводит результат CNN).
[0040] В частности, обученная CNN включает в себя один или более сверточных уровней. Каждый из одного или более сверточных уровней включает в себя соответствующее одно или более фильтров (или ядер) с известными параметрами фильтра (например, числом фильтров, размерами фильтров, значениями параметров фильтра и соединительными весовыми коэффициентами). Различные сверточные уровни могут включать в себя идентичное или различное число фильтров. Каждый фильтр задается посредством известных параметров фильтра или весовых коэффициентов. В некоторых реализациях, фильтр может представляться посредством матрицы, такой как фильтр , как описано относительно фиг. 2. Значения матрицы фильтров и соединительные весовые коэффициенты изучаются и являются известными во время процесса обучения, и эти значения не должны изменяться при использовании обученной CNN, например, для прогнозирования на основе входных данных. В некоторых реализациях, фильтры и/или соединительные весовые коэффициенты сверточного уровня могут совместно представляться посредством тензора. Например, каждый сверточный уровень обученной CNN может представляться посредством матриц фильтров и тензора весовых коэффициентов (например, тензора W, как описано относительно фиг. 2), который включает в себя параметры или весовые коэффициенты фильтров или ядер CNN. От 310, способ 300 переходит к 320.
[0041] На 320, коэффициент многократного использования для каждого из одного или более сверточных уровней может предварительно вычисляться на основе известных параметров фильтра обученной CNN. Например, для каждого из одного или более сверточных уровней, коэффициент многократного использования, который зависит только от известных, неизменных параметров, может идентифицироваться и вычисляться независимо от входных данных в CNN. Например, тензор U, как описано относительно примерного алгоритма 200 на фиг. 2, представляет собой пример коэффициента многократного использования для каждого из одного или более сверточных уровней обученной CNN. Тензор может вычисляться согласно этапам 1-6 примерного алгоритма 200, поскольку все параметры, необходимые для такого вычисления (например,  и ), известны с учетом обученной CNN и остаются неизменными в течение фазы прогнозирования на основе обученной CNN.
[0042] В некоторых реализациях, предварительное вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной CNN включает в себя вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной CNN оффлайн независимо от входных данных в обученную CNN. Как результат, для каждого сверточного уровня обученной CNN, коэффициент многократного использования должен вычисляться только однократно, например, посредством оффлайновой обработки и может извлекаться и многократно использоваться в ходе вычисления во время выполнения. От 320, способ 300 переходит к 330.
[0043] На 330, предварительно вычисленный коэффициент многократного использования для каждого из одного или более сверточных уровней может сохраняться, например, в хранилище данных для простоты последующего извлечения при использовании обученной CNN, например, для прогнозирования. В некоторых реализациях, сохраненный предварительно вычисленный коэффициент многократного использования может совместно использоваться, публиковаться или иным образом передаваться в другие устройства обработки данных. От 330, способ 300 переходит к 340.
[0044] На 340, выполняется определение в отношении того, принимаются или нет входные данные в обученную CNN. В ответ на определение того, что входные данные в обученную CNN принимаются, способ 300 переходит к 350. В противном случае, если определяется то, что входные данные в обученную CNN не принимаются, способ 300 переходит к 380, на котором способ 300 прекращается.
[0045] Входные данные могут включать в себя, например, данные изображений для одного или более изображений (например, фотографии, включающей в себя поверхность человека) или другие типы входных данных. Каждое изображение может включать в себя один или более каналов. Например, изображение из стандартной цифровой камеры может рассматриваться как имеющее три канала: красный, зеленый и синий. С другой стороны, полутоновое изображение может рассматриваться как имеющее один канал.
[0046] В некоторых реализациях, входные данные могут представляться посредством тензора, который может включать в себя скаляры, векторы, матрицы и тензоры высокой размерности. В качестве примера, полутоновое изображение может представляться посредством двумерной матрицы пиксельных значений. Значение каждого пиксела в матрице может составлять, например, в диапазоне от 0 до 255, при этом нуль указывает черный цвет, а 255 указывает белый цвет. В некоторых реализациях, значение каждого пиксела нормализуется посредством его деления на 255. Каждый канал цветного изображения может включать в себя двумерную матрицу, имеющую пиксельные значения, например, в диапазоне от 0 до 255 или в диапазоне от 0 до 1,0 после нормализации. Двумерные матрицы, помещенные в стек поверх друг друга (по одной для каждого цвета), могут формировать тензор, который представляет цветное изображение. В некоторых реализациях, данные изображений могут включать в себя тензор, который включает в себя несколько изображений.
[0047] Например, входной тензор X, как описано относительно примерного алгоритма 200 на фиг. 2, представляет собой пример входных данных. Входные данные могут разделяться на субблоки или каналы, например, согласно технологиям, описанным относительно примерного алгоритма 200. Операция свертки может выполняться для каждого из субблоков или каналов данных, например, согласно алгоритму Winograd или другому способу.
[0048] В некоторых реализациях, входные данные в CNN могут проходить через каждый уровень обученной CNN согласно известной сетевой архитектуре обученной CNN. От 340, способ 300 переходит к 350.
[0049] На 350, вывод каждого из одного или более сверточных уровней (скажем, уровня ) вычисляется на основе предварительно вычисленного коэффициента многократного использования и входных данных. Вывод уровня  включает в себя результат операции свертки, выполняемой между вводом в уровень  и фильтрами уровня . Ввод в уровень  может включать в себя входные данные в обученную CNN, вывод предыдущего уровня (например, уровня ) обученной CNN либо комбинацию означенного. В некоторых реализациях, вывод уровня  может вычисляться с использованием сверточного оператора Winograd (например, Wino-Conv2D 135, как описано относительно фиг. 1) на основе предварительно вычисленного коэффициента многократного использования (например, тензора U 125) и входных данных (прямо или косвенно посредством работы с выводом предыдущего уровня). В некоторых реализациях, вывод уровня  может вычисляться согласно алгоритму минимальной фильтрации Winograd (например, примерному алгоритму 200, описанному относительно фиг. 2). От 350, способ 300 переходит к 360.
[0050] На 360, выходные данные обученной сверточной сети определяются на основе вывода каждого из одного или более сверточных уровней. В некоторых реализациях, определение выходных данных обученной сверточной сети включает в себя формирование, прогнозирование или иное вычисление выходных данных обученной CNN. Выходные данные могут включать в себя прогнозирование, классификацию или другие признаки или атрибуты, извлекаемые из входных данных посредством операций обученной CNN. Например, выходные данные могут включать в себя вектор вероятностей возможных категорий (например, человек, собака, автомобиль или дерево) входного изображения. В качестве другого примера, выходные данные могут включать в себя идентификацию объекта во входном изображении (например, для распознавания лиц). В качестве еще одного другого примера, выходные данные могут включать в себя идентификацию или классификацию повреждений транспортных средств на основе входных фотографий транспортного средства. В некоторых реализациях, выходные данные могут включать в себя улучшенную или фильтрованную версию входных данных (например, версию с увеличенной резкостью или размытостью входной фотографии).
[0051] В некоторых реализациях, выходные данные обученной сверточной сети определяются на основе вывода каждого из одного или более сверточных уровней таким образом, выходные данные обученной сверточной сети определяются на основе одного или более из вывода каждого из одного или более сверточных уровней (например, вывода уровня , для , где  является общим числом уровней в обученной CNN). Типично, выходные данные обученной сверточной сети определяются на основе вывода последнего уровня, уровня , обученной CNN, причем вывод уровня  определяется на основе вывода предыдущего уровня, уровня  и т.д., до обратного прослеживания вплоть до входных данных в обученную CNN. В некоторых реализациях, выходные данные обученной сверточной сети могут определяться на основе вывода каждого из одного или более сверточных уровней другим способом. От 360, способ 300 переходит к 370.
[0052] На 370, выходные данные обученной сверточной сети могут выводиться, например, через пользовательский интерфейс (например, графический пользовательский интерфейс). Например, выходные данные обученной сверточной сети могут представляться в таблице, графе, тексте или другом формате и отображаться пользователю через экран или другой пользовательский интерфейс. В некоторых реализациях, выходные данные обученной сверточной сети могут сохраняться, передаваться или иным образом выводиться в другое устройство (например, в устройство хранения данных или другое оборудование обработки данных для последующей обработки).
[0053] От 370, способ 300 возвращается к 340, чтобы определять то, принимаются или нет какие-либо входные данные (например, называемые "вторыми входными данными") в обученную CNN. В некоторых реализациях, вторые входные данные в обученную CNN могут включать в себя дополнительные или обновленные входные данные (например, другой набор изображений) в обученную CNN для анализа и прогнозирования. Соответственно, способ 300 может переходить к 350 для вычисления второго вывода каждого из одного или более сверточных уровней на основе предварительно вычисленного коэффициента многократного использования и вторых входных данных; а затем к 360 для определения вторых выходных данных обученной сверточной сети на основе второго вывода каждого из одного или более сверточных уровней.
[0054] Фиг. 4 является блок-схемой примерной компьютерной системы 400, используемой для того, чтобы предоставлять вычислительные функциональности, ассоциированные с описанными алгоритмами, способами, функциями, процессами, последовательностями операций и процедурами, как описано в настоящем раскрытии сущности, согласно реализации. Проиллюстрированный компьютер 402 имеет намерение охватывать любое вычислительное устройство, такое как сервер, настольный компьютер, переносной компьютер/ноутбук, порт беспроводной передачи данных, смартфон, персональное цифровое устройство (PDA), планшетное вычислительное устройство, один или более процессоров в этих устройствах либо любое другое подходящее обрабатывающее устройство, включающее в себя физические или виртуальные экземпляры (либо и то, и другое) вычислительного устройства. Дополнительно, компьютер 402 может включать в себя компьютер, который включает в себя устройство ввода, такое как клавишная панель, клавиатура, сенсорный экран или другое устройство, которое может подтверждать пользовательскую информацию, и устройство вывода, которое передает информацию, ассоциированную с работой компьютера 402, включающую в себя цифровые данные, визуальную или аудиоинформацию (либо комбинацию информации) или графический пользовательский интерфейс (UI) (или GUI).
[0055] Компьютер 402 может служить в роли клиента, сетевого компонента, сервера, базы данных или другого постоянного хранилища либо любого другого компонента (либо в комбинации ролей) компьютерной системы для выполнения предмета изобретения, описанного в настоящем раскрытии сущности. Проиллюстрированный компьютер 402 соединяется с возможностью связи с сетью 430. В некоторых реализациях, один или более компонентов компьютера 402 могут быть выполнены с возможностью работать в окружениях, включающих в себя основанное на облачных вычислениях, локальное, глобальное или другое окружение (либо комбинацию окружений).
[0056] На высоком уровне, компьютер 402 представляет собой электронное вычислительное устройство, выполненное с возможностью принимать, передавать, обрабатывать, сохранять или управлять данными и информацией, ассоциированной с описанным предметом изобретения. Согласно некоторым реализациям, компьютер 402 также может включать в себя или соединяться с возможностью связи с сервером приложений, почтовым сервером, веб-сервером, сервером кэширования, сервером потоковых данных или другим сервером (либо с комбинацией серверов).
[0057] Компьютер 402 может принимать запросы по сети 430 из клиентского приложения (например, выполняющегося на другом компьютере 402) и отвечать на принимаемые запросы посредством обработки принимаемых запросов с использованием соответствующего приложения(й). Помимо этого, запросы также могут отправляться в компьютер 402 от внутренних пользователей (например, из командной консоли или посредством другого соответствующего способа доступа), внешних или третьих сторон, других автоматизированных приложений, а также любых других соответствующих объектов, людей, систем или компьютеров.
[0058] Каждый из компонентов компьютера 402 может обмениваться данными с использованием системной шины 403. В некоторых реализациях, любые компоненты компьютера 402, аппаратные средства или программное обеспечение (либо комбинации аппаратных средств и программных обеспечений) могут взаимодействовать между собой или с интерфейсом 404 (либо с комбинацией означенного) по системной шине 403 с использованием интерфейса 412 прикладного программирования (API) или уровня 413 предоставления услуг (либо комбинации API 412 и уровня 413 предоставления услуг). API 412 может включать в себя технические требования для процедур, структур данных и классов объектов. API 412 может быть независимым или зависимым от машинного языка и означать полный интерфейс, одну функцию или даже набор API. Уровень 413 предоставления услуг предоставляет программные услуги в компьютер 402 или другие компоненты (независимо от того, проиллюстрированы они или нет), которые соединяются с возможностью связи с компьютером 402. Функциональность компьютера 402 может быть доступной для всех потребителей услуг с использованием этого уровня предоставления услуг. Программные услуги, к примеру, услуги, предоставленные посредством уровня 413 предоставления услуг, предоставляют многократно используемые, заданные функциональности посредством заданного интерфейса. Например, интерфейс может представлять собой программное обеспечение, написанное на JAVA, C++либо на другом подходящем языке, предоставляющем данные в формате расширяемого языка разметки (XML) или в другом подходящем формате. Хотя проиллюстрированы в качестве интегрального компонента компьютера 402, альтернативные реализации могут иллюстрировать API 412 или уровень 413 предоставления услуг в качестве автономных компонентов относительно других компонентов компьютера 402 или других компонентов (независимо от того, проиллюстрированы они или нет), которые соединяются с возможностью связи с компьютером 402. Кроме того, любые части API 412 или уровня 413 предоставления услуг могут реализовываться как дочерние или субмодули другого программного модуля, корпоративного приложения или аппаратного модуля без отступления от объема данного раскрытия сущности.
[0059] Компьютер 402 включает в себя интерфейс 404. Хотя иллюстрируется в качестве одного интерфейса 404 на фиг. 4, два или более интерфейсов 404 могут использоваться согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402. Интерфейс 404 используется посредством компьютера 402 для обмена данными с другими системами, которые соединяются с сетью 430 (независимо от того, проиллюстрирована она или нет) в распределенном окружении. Обычно, интерфейс 404 включает в себя логику, кодированную в программном обеспечении или в аппаратных средствах (либо в комбинации программного обеспечения и аппаратных средств), и выполнен с возможностью обмениваться данными с сетью 430. Более конкретно, интерфейс 404 может включать в себя программное обеспечение, поддерживающее один или более протоколов связи, ассоциированных со связью таким образом, что сеть 430 или аппаратные средства интерфейса выполнены с возможностью обмениваться физическими сигналами в пределах/за пределами проиллюстрированного компьютера 402.
[0060] Компьютер 402 включает в себя процессор 405. Хотя иллюстрируется в качестве одного процессора 405 на фиг. 4, два или более процессоров могут использоваться согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402. Обычно, процессор 405 выполняет инструкции и манипулирует данными, чтобы выполнять операции компьютера 402 и любые алгоритмы, способы, функции, процессы, последовательности операций и процедуры, как описано в настоящем раскрытии сущности.
[0061] Компьютер 402 также включает в себя базу 406 данных, которая может хранить данные для компьютера 402 или других компонентов (либо для комбинации означенного), которые могут соединяться с сетью 430 (независимо от того, проиллюстрирована она или нет). Например, база 406 данных может представлять собой базу данных в запоминающем устройстве, традиционную базу данных либо другой тип базы данных, сохраняющей данных в соответствии с этим раскрытием сущности. В некоторых реализациях, база 406 данных может представлять собой комбинацию двух или более различных типов баз данных (например, гибридной базы данных в оперативном запоминающем устройстве и традиционной базы данных в оперативном запоминающем устройстве) согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402 и описанной функциональности. Хотя иллюстрируется в качестве одной базы 406 данных на фиг. 4, две или более баз данных (идентичного либо комбинации типов) могут использоваться согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402 и описанной функциональности. Хотя база 406 данных проиллюстрирована в качестве неотъемлемого компонента компьютера 402, в альтернативных реализациях, база 406 данных может быть внешней для компьютера 402. Как проиллюстрировано, база 406 данных хранит одну или более обученных CNN 416, предварительно вычисленные коэффициенты 418 многократного использования каждого сверточного уровня одной или более обученных CNN 416 и алгоритм 426 Winograd, для быстрого вычисления CNN.
[0062] Компьютер 402 также включает в себя запоминающее устройство 407, которое может хранить данные для компьютера 402 или других компонентов (либо для комбинации означенного) которые могут соединяться с сетью 430 (независимо от того, проиллюстрирована она или нет). Запоминающее устройство 407 может сохранять любые данные в соответствии с этим раскрытием сущности. В некоторых реализациях, запоминающее устройство 407 может представлять собой комбинацию двух или более различных типов запоминающего устройства (например, комбинацию полупроводникового и магнитного устройства хранения данных) согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402 и описанной функциональности. Хотя иллюстрируется в качестве одного запоминающего устройства 407 на фиг. 4, два или более запоминающих устройств 407 (идентичного либо комбинации типов) могут использоваться согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402 и описанной функциональности. Хотя запоминающее устройство 407 проиллюстрировано в качестве неотъемлемого компонента компьютера 402, в альтернативных реализациях, запоминающее устройство 407 может быть внешним для компьютера 402.
[0063] Приложение 408 представляет собой алгоритмический программный механизм, предоставляющий функциональность согласно конкретным потребностям, желаниям либо конкретным реализациям компьютера 402, в частности, относительно функциональности, описанной в этом раскрытии сущности. Например, приложение 408 может служить в качестве одного или более компонентов, модулей или приложений. Дополнительно, хотя иллюстрируется в качестве одного приложения 408, приложение 408 может реализовываться как несколько приложений 408 на компьютере 402. Помимо этого, хотя иллюстрируется в качестве неотъемлемого в компьютере 402, в альтернативных реализациях, приложение 408 может быть внешним для компьютера 402.
[0064] Компьютер 402 также может включать в себя источник 414 мощности. Источник 414 мощности может включать в себя перезаряжаемый или неперезаряжаемый аккумулятор, который может быть выполнен с возможностью быть заменяемым или незаменяемым пользователем. В некоторых реализациях, источник 414 мощности может включать в себя схемы преобразования или управления мощностью (включающие в себя перезаряд, режим готовности или другую функциональность управления мощностью). В некоторых реализациях, источник 414 мощности может включать в себя силовой штепсель, чтобы обеспечивать возможность подключения компьютера 402 в настенное гнездо или другой источник мощности, например, чтобы подавать мощность в компьютер 402 или перезаряжать перезаряжаемый аккумулятор.
[0065] Может быть предусмотрено любое число компьютеров 402, ассоциированных или внешних по отношению к компьютерной системе, содержащей компьютер 402, причем каждый компьютер 402 обменивается данными по сети 430. Дополнительно, термин "клиент", "пользователь" и другие соответствующие термины могут использоваться взаимозаменяемо, надлежащим образом, без отступления от объема данного раскрытия сущности. Кроме того, это раскрытие сущности предполагает то, что множество пользователей могут использовать один компьютер 402, или то, что один пользователь может использовать несколько компьютеров 402.
[0066] Описанные реализации предмета изобретения могут включать в себя один или более признаков, отдельно или в комбинации.
[0067] Например, в первой реализации, машинореализованный способ включает в себя: получение, посредством оборудования обработки данных, обученной сверточной нейронной сети, включающей в себя один или более сверточных уровней, причем каждый из одного или более сверточных уровней включает в себя определенное число фильтров с известными параметрами фильтра; предварительное вычисление, посредством оборудования обработки данных, коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети; прием, посредством оборудования обработки данных, входных данных в обученную сверточную нейронную сеть; вычисление, посредством оборудования обработки данных, вывода каждого из одного или более сверточных уровней с использованием сверточного оператора Winograd на основе предварительно вычисленного коэффициента многократного использования и входных данных; и определение, посредством оборудования обработки данных, выходных данных обученной сверточной сети на основе вывода каждого из одного или более сверточных уровней.
[0068] Во второй реализации, энергонезависимый машиночитаемый носитель сохраняет одну или более инструкций, выполняемых посредством компьютерной системы, чтобы выполнять операции, включающие в себя: получение обученной сверточной нейронной сети, включающей в себя один или более сверточных уровней, причем каждый из одного или более сверточных уровней включает в себя определенное число фильтров с известными параметрами фильтра; предварительное вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети; прием входных данных в обученную сверточную нейронную сеть; вычисление вывода каждого из одного или более сверточных уровней с использованием сверточного оператора Winograd на основе предварительно вычисленного коэффициента многократного использования и входных данных; и определение выходных данных обученной сверточной сети на основе вывода каждого из одного или более сверточных уровней.
[0069] В третьей реализации, машинореализованная система включает в себя: один или более компьютеров; и одно или более компьютерных запоминающих устройств, функционально соединенных с одним или более компьютеров и имеющих материальные энергонезависимые машиночитаемые носители, сохраняющие инструкции, которые, при выполнении посредством одного или более компьютеров, выполняют операции, включающие в себя: получение обученной сверточной нейронной сети, включающей в себя один или более сверточных уровней, причем каждый из одного или более сверточных уровней включает в себя определенное число фильтров с известными параметрами фильтра; предварительное вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети; прием входных данных в обученную сверточную нейронную сеть; вычисление вывода каждого из одного или более сверточных уровней с использованием сверточного оператора Winograd на основе предварительно вычисленного коэффициента многократного использования и входных данных; и определение выходных данных обученной сверточной сети на основе вывода каждого из одного или более сверточных уровней.
[0070] Вышеприведенные и другие описанные реализации, необязательно, могут включать в себя один или более следующих признаков:
[0071] Первый признак, комбинируемый с любым из следующих признаков, в котором предварительное вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети включает в себя вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети оффлайн независимо от входных данных в обученную сверточную нейронную сеть.
[0072] Второй признак, комбинируемый с любым из предыдущих или последующих признаков, дополнительно включает в себя сохранение предварительно вычисленного коэффициента многократного использования для каждого из одного или более сверточных уровней.
[0073] Третий признак, комбинируемый с любым из предыдущих или последующих признаков, в котором вычисление вывода каждого из одного или более сверточных уровней на основе предварительно вычисленного коэффициента многократного использования и входных данных включает в себя вычисление вывода каждого из одного или более сверточных уровней согласно алгоритму минимальной фильтрации Winograd с предварительно вычисленным коэффициентом многократного использования и входными данными.
[0074] Четвертый признак, комбинируемый с любым из предыдущих или последующих признаков, в котором входные данные в обученную сверточную нейронную сеть включают в себя одно или более изображений.
[0075] Пятый признак, комбинируемый с любым из предыдущих или последующих признаков, способом или операциями, дополнительно включает в себя: прием, посредством оборудования обработки данных, вторых входных данных в обученную сверточную нейронную сеть; вычисление, посредством оборудования обработки данных, второго вывода каждого из одного или более сверточных уровней на основе предварительно вычисленного коэффициента многократного использования и вторых входных данных; и прогнозирование, посредством оборудования обработки данных, вторых выходных данных обученной сверточной сети на основе второго вывода каждого из одного или более сверточных уровней.
[0076] Шестой признак, комбинируемый с любым из предыдущих или последующих признаков, способом или операциями, дополнительно включает в себя вывод выходных данных обученной сверточной сети через пользовательский интерфейс.
[0077] Реализации предмета изобретения и функциональных операций, описанных в этом подробном описании, могут реализовываться в цифровой электронной схеме, в материально осуществленном компьютерном программном обеспечении или микропрограммном обеспечении, в компьютерных аппаратных средствах, включающих в себя структуры, раскрытые в этом подробном описании, и их структурные эквиваленты, либо в комбинациях одного или более из означенного. Программные реализации описанного предмета изобретения могут реализовываться как одна или более компьютерных программ, т.е. один или более модулей компьютерных программных инструкций, кодированных на материальном, энергонезависимом, машиночитаемом компьютерном носителе хранения данных для выполнения посредством или управления работой оборудования обработки данных. Альтернативно или дополнительно, программные инструкции могут кодироваться в/на искусственно сформированном распространяемом сигнале, например, машиносформированном электрическом, оптическом или электромагнитном сигнале, который формируется с возможностью кодировать информацию для передачи в подходящее приемное устройство для выполнения посредством оборудования обработки данных. Компьютерный носитель хранения данных может представлять собой машиночитаемое устройство хранения данных, машиночитаемую плату хранения данных, запоминающее устройство с произвольным или последовательным доступом либо комбинацию компьютерных носителей хранения данных. Конфигурирование одного или более компьютеров означает то, что один или более компьютеров имеют установленные аппаратные средства, микропрограммное обеспечение или программное обеспечение (либо комбинации аппаратных средств, микропрограммного обеспечения и программного обеспечения) таким образом, что когда программное обеспечение выполняется посредством одного или более компьютеров, конкретные вычислительные операции выполняются.
[0078] Термин "реальное время (real-time)", "реальное время (real time)", "реальное время (realtime)", "реальное (быстрое) время (RFT)", "практически реальное время (NRT)", "квазиреальное время" или подобные термины (как должны понимать специалисты в данной области техники) означает то, что действие и ответ являются близкими по времени таким образом, что человек воспринимает действие и ответ как возникающие практически одновременно. Например, разность времен для ответа на отображение (или для инициирования отображения) данных после действия человека, чтобы осуществлять доступ к данным, может составлять менее 1 мс, менее 1 с или менее 5 с. В то время, когда запрашиваемые данные не должны отображаться (или инициироваться для отображения) мгновенно, оно отображаются (или инициируются для отображения) без намеренной задержки, с учетом ограничений обработки описанной вычислительной системы и времени, требуемого, например, для того, чтобы собирать, точно измерять, анализировать, обрабатывать, сохранять или передавать данные.
[0079] Термины "оборудование обработки данных", "компьютер", или "электронное компьютерное устройство" (либо эквиваленты, как должны понимать специалисты в данной области техники) означают аппаратные средства обработки данных и охватывают все виды оборудования, устройств и машин для обработки данных, включающие в себя, в качестве примера, программируемый процессор, компьютер либо несколько процессоров или компьютеров. Оборудование также может представлять собой или дополнительно включать в себя логическую схему специального назначения, например, центральный процессор (CPU), FPGA (программируемую пользователем вентильную матрицу) или ASIC (специализированную интегральную схему). В некоторых реализациях, оборудование обработки данных или логическая схема специального назначения (либо комбинация оборудования обработки данных или логической схемы специального назначения) могут быть на основе аппаратных средств или программного обеспечения (либо представлять собой комбинацию на основе аппаратных средств или программного обеспечения). Оборудование необязательно может включать в себя код, который создает окружение выполнения для компьютерных программ, например, код, который составляет микропрограммное обеспечение процессора, стек протоколов, систему управления базами данных, операционную систему либо комбинацию окружений выполнения. Настоящее раскрытие сущности предполагает использование оборудования обработки данных с/без традиционных операционных систем, например, Linux, Unix, Windows, Android Mac OS, iOS или любой другой подходящей традиционной операционной системы.
[0080] Компьютерная программа, которая также может упоминаться или описываться в качестве программы, программного обеспечения, приложения, модуля, программного модуля, сценария или кода, может быть написана на любой форме языка программирования, включающей в себя компилируемые или интерпретируемые языки либо декларативные или процедурные языки, и она может развертываться в любой форме, в том числе в качестве автономной программы или в качестве модуля, компонента, вложенной процедуры или другого блока, подходящего для использования в вычислительном окружении. Компьютерная программа может, но не обязательно должна, соответствовать файлу в файловой системе. Программа может сохраняться в части файла, который хранит другие программы или данные, например, один или более сценариев, сохраненных в документе на языке разметки, в одном файле, выделенном для рассматриваемой программы, либо в нескольких координированных файлах, например, в файлах, которые сохраняют один или более модулей, подпрограмм или частей кода. Компьютерная программа может развертываться с возможностью выполняться на одном компьютере или на нескольких компьютерах, которые расположены на одном веб-узле или распределены по нескольким веб-узлам и взаимно соединяются посредством сети связи.
[0081] Хотя части программ, проиллюстрированных в различных чертежах, показаны как отдельные модули, которые реализуют различные признаки и функциональность через различные объекты, способы или другие процессы, вместо этого программы могут включать в себя определенное число субмодулей, сторонних услуг, компонентов, библиотек и т.п., надлежащим образом. С другой стороны, признаки и функциональность различных компонентов могут комбинироваться в один компонент, надлежащим образом. Пороговые значения, используемые для того, чтобы выполнять вычислительные определения, могут статически, динамически либо статически и динамически определяться.
[0082] Способы, процессы или логические последовательности операций, описанные в этом подробном описании, могут выполняться посредством одного или более программируемых компьютеров, выполняющих одну или более компьютерных программ, чтобы выполнять функции посредством обработки входных данных и формирования вывода. Способы, процессы или логические последовательности операций также могут выполняться посредством, а оборудование также может реализовываться как логическая схема специального назначения, например, CPU, FPGA или ASIC.
[0083] Компьютеры, подходящие для выполнения компьютерной программы, могут быть основаны на микропроцессорах общего или специального назначения, на том и на другом либо на любом другом виде CPU. Обычно, CPU должен принимать инструкции и данные и записывать из/в запоминающее устройство. Существенные элементы компьютера представляют собой CPU для выполнения или исполнения инструкций и одно или более запоминающих устройств для сохранения инструкций и данных. Обычно, компьютер также должен включать в себя или функционально соединяться с возможностью принимать данные или передавать данные либо выполнять и то, и другое из/в одно или более устройств хранения данных большой емкости для сохранения данных, например, магнитных, магнитооптических дисков или оптических дисков. Тем не менее, компьютер не должен обязательно иметь такие устройства. Кроме того, компьютер может встраиваться в другое устройство, например, в мобильный телефон, персональное цифровое устройство (PDA), мобильный аудио- или видеопроигрыватель, игровую приставку, приемное устройство на основе глобальной системы позиционирования (GPS) или портативное устройство хранения данных, например, флэш-накопитель по стандарту универсальной последовательной шины (USB), помимо прочего.
[0084] Машиночитаемые носители (энергозависимые или энергонезависимые, надлежащим образом), подходящие для сохранения компьютерных программных инструкций и данных, включают в себя все формы долговременных/недолговременных либо энергозависимых/энергонезависимых запоминающих устройств, носителей и запоминающих накопительных устройств, включающих в себя, в качестве примера, полупроводниковые запоминающие устройства, например, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), запоминающее устройство на фазовых переходах (PRAM), статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM), стираемое программируемое постоянное запоминающее устройство (EPROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM) и устройства флэш-памяти; магнитные устройства, например, ленту, картриджи, кассеты, внутренние/съемные диски; магнитооптические диски; и оптические запоминающие устройства, например, цифровой видеодиск (DVD), CD-ROM, DVD+/-R, DVD-RAM, DVD-ROM, HD-DVD и Blu-ray и другие технологии на базе оптических запоминающих устройств. Запоминающее устройство может сохранять различные объекты или данные, включающие в себя кэши, классы, инфраструктуры, приложения, модули, резервные данные, задания, веб-страницы, шаблоны веб-страниц, структуры данных, таблицы базы данных, репозитории, сохраняющие динамическую информацию и любую другую соответствующую информацию, включающую в себя любые параметры, переменные, алгоритмы, инструкции, правила, ограничения либо ссылки на них. Дополнительно, запоминающее устройство может включать любые другие соответствующие данные, такие как журналы регистрации, политики, данные по безопасности или по доступу, файлы с отчетами, а также другие данные. Процессор и запоминающее устройство могут дополняться посредством или включаться в логическую схему специального назначения.
[0085] Чтобы предоставлять взаимодействие с пользователем, реализации предмета изобретения, описанного в этом подробном описании, могут реализовываться на компьютере, имеющем устройство отображения, например, монитор на CRT (электронно-лучевой трубке), ЖК-дисплей (жидкокристаллический дисплей), монитор на светодиодах (светоизлучающих диодах) или плазменный монитор, для отображения информации пользователю, а также клавиатуру и указательное устройство, например, мышь, шаровой манипулятор или сенсорную панель, посредством которых пользователь может предоставлять ввод в компьютер. Ввод также может предоставляться в компьютер с использованием сенсорного экрана, к примеру, поверхности планшетного компьютера с чувствительностью к давлению, мультисенсорного экрана с использованием емкостного или электрического опознавания либо другого типа сенсорного экрана. Другие виды устройств также могут использоваться для того, чтобы предоставлять взаимодействие с пользователем; например, обратная связь, предоставленная пользователю, может представлять собой любую форму сенсорной обратной связи, например, визуальную обратную связь, акустическую обратную связь или тактильную обратную связь; и ввод от пользователя может приниматься в любой форме, включающей в себя акустический, речевой или тактильный ввод. Помимо этого, компьютер может взаимодействовать с пользователем посредством отправки документов и приема документов из устройства, которое используется пользователем; например, посредством отправки веб-страниц в веб-браузер на клиентском устройстве пользователя в ответ на запросы, принимаемые из веб-браузера.
[0086] Термин "графический пользовательский интерфейс", или "GUI", может использоваться в единственном или множественном числе для того, чтобы описывать один или более графических пользовательских интерфейсов и каждый из экранов конкретного графического пользовательского интерфейса. Следовательно, GUI может представлять любой графический пользовательский интерфейс, в том числе, но не только, веб-браузер, сенсорный экран или интерфейс командной строки (CLI), который обрабатывает информацию и эффективно представляет информационные результаты пользователю. В общем, GUI может включать в себя один или более элементов пользовательского интерфейса (UI), часть или все из которых ассоциированы с веб-браузером, к примеру, интерактивные поля, раскрывающиеся списки и кнопки. Эти и другие UI-элементы могут быть связаны или представлять функции веб-браузера.
[0087] Реализации предмета изобретения, описанного в этом подробном описании, могут реализовываться в вычислительной системе, которая включает в себя внутренний интерфейсный компонент, например, в качестве сервера данных, либо которая включает в себя промежуточный программный компонент, например, сервер приложений, либо которая включает в себя внешний интерфейсный компонент, например, клиентский компьютер, имеющий графический пользовательский интерфейс или веб-браузер, через который пользователь может взаимодействовать с реализацией предмета изобретения, описанного в этом подробном описании, либо любую комбинацию одного или более таких внутренних интерфейсных, промежуточных программных или внешних интерфейсных компонентов. Компоненты системы могут взаимно соединяться посредством любой формы или среды проводной или беспроводной цифровой передачи данных (либо комбинации передачи данных), например, посредством сети связи. Примеры сетей связи включают в себя локальную вычислительную сеть (LAN), сеть радиодоступа (RAN), общегородскую вычислительную сеть (MAN), глобальную вычислительную сеть (WAN), сеть по стандарту общемировой совместимости широкополосного беспроводного доступа (WiMax), беспроводную локальную вычислительную сеть (WLAN) с использованием, например, 802.11 a/b/g/n или 802.20 (либо комбинации 802.11x и 802.20 или других протоколов в соответствии с этим раскрытием сущности), весь или часть Интернета или любой другой системы или систем связи в одном или более местоположений (либо комбинацию сетей связи). Сеть может передавать, например, с помощью пакетов по Интернет-протоколу (IP), кадров по протоколу ретрансляции кадров, ячеек по протоколу на основе режима асинхронной передачи (ATM), голос, видео, данные или другую подходящую информацию (либо комбинацию типов связи) между сетевыми адресами.
[0088] Вычислительная система может включать в себя клиенты и серверы. Клиент и сервер, в общем, являются удаленными друг от друга и типично взаимодействуют через сеть связи. Взаимосвязь клиента и сервера осуществляется на основе компьютерных программ, работающих на соответствующих компьютерах и имеющих клиент-серверную взаимосвязь друг с другом.
[0089] Хотя это описание изобретения содержит множество конкретных сведений по реализации, они не должны истолковываться в качестве ограничений на объем изобретения либо на объем того, что может заявляться в качестве формулы изобретения, а вместо этого должны истолковываться в качестве описаний признаков, которые могут быть конкретными для конкретных реализаций конкретных изобретений. Определенные признаки, которые описываются в этом подробном описании в контексте отдельных реализаций, также могут реализовываться, в комбинации, в одной реализации. С другой стороны, различные признаки, которые описываются в контексте одной реализации, также могут реализовываться в нескольких реализациях, отдельно или в любой подходящей субкомбинации. Кроме того, хотя вышеописанные признаки могут описываться как действие в определенных комбинациях и даже первоначально заявляться в формуле изобретения как действия, один или более признаков из заявленной комбинации, в некоторых случаях, могут исключаться из комбинации, и заявленная комбинация может быть направлена на субкомбинацию или варьирование субкомбинации.
[0090] Выше описываются конкретные реализации предмета изобретения. Другие реализации, поправки и перестановки описанных реализаций находятся в пределах объема прилагаемой формулы изобретения, как должно быть очевидным для специалистов в данной области техники. Хотя операции проиллюстрированы на чертежах или в формуле изобретения в конкретном порядке, это не следует понимать как требующее того, что такие операции должны выполняться в конкретном показанном порядке или в последовательном порядке, либо того, что все проиллюстрированные операции должны выполняться (некоторые операции могут считаться необязательными) для того, чтобы достигать требуемых результатов. При определенных обстоятельствах, многозадачность или параллельная обработка (либо комбинация многозадачности и параллельной обработки) может быть преимущественной и выполняться по мере необходимости.
[0091] Кроме того, разделение или интеграция различных системных модулей и компонентов в вышеописанных реализациях не должны пониматься как требующие такого разделения или интеграции во всех реализациях, и следует понимать, что описанные программные компоненты и системы, в общем, могут интегрироваться вместе в одном программном продукте или пакетироваться в несколько программных продуктов.
[0092] Соответственно, вышеописанные примерные реализации не задают или ограничивают это раскрытие сущности. Другие изменения, замены и поправки также являются возможными без отступления от сущности и объема этого раскрытия сущности.
[0093] Кроме того, любая заявленная реализация считается применимой, по меньшей мере, к машинореализованному способу; энергонезависимому машиночитаемому носителю, сохраняющему машиночитаемые инструкции для того, чтобы осуществлять машинореализованный способ; и компьютерной системе, включающей в себя компьютерное запоминающее устройство, функционально соединенное с аппаратным процессором, выполненным с возможностью осуществлять машинореализованный способ или инструкции, сохраненные на энергонезависимом машиночитаемом носителе.