RU2722473C1 - Быстрое вычисление сверточной нейронной сети - Google Patents

Быстрое вычисление сверточной нейронной сети Download PDF

Info

Publication number
RU2722473C1
RU2722473C1 RU2019111961A RU2019111961A RU2722473C1 RU 2722473 C1 RU2722473 C1 RU 2722473C1 RU 2019111961 A RU2019111961 A RU 2019111961A RU 2019111961 A RU2019111961 A RU 2019111961A RU 2722473 C1 RU2722473 C1 RU 2722473C1
Authority
RU
Russia
Prior art keywords
level
output
neural network
convolution
convolutional
Prior art date
Application number
RU2019111961A
Other languages
English (en)
Inventor
Юнчао ЛЮ
Циинь ХУАН
Гочжэнь ПАНЬ
Сычжун ЛИ
Цзяньго СЮЙ
Хайтао Чжан
Линь ВАН
Original Assignee
Алибаба Груп Холдинг Лимитед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Алибаба Груп Холдинг Лимитед filed Critical Алибаба Груп Холдинг Лимитед
Application granted granted Critical
Publication of RU2722473C1 publication Critical patent/RU2722473C1/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Image Analysis (AREA)

Abstract

Группа изобретений относится к нейронным сетям. Техническим результатом является обеспечение быстрого вычисления сверточной нейронной сети. Способ содержит получение обученной сверточной нейронной сети, содержащей один или более сверточных уровней, причем каждый из одного или более сверточных уровней содержит множество фильтров с известными параметрами фильтра; предварительное вычисление коэффициента многократного использования для каждого из одного или более сверточных уровней на основе известных параметров фильтра обученной сверточной нейронной сети; прием входных данных в обученную сверточную нейронную сеть; вычисление вывода каждого из одного или более сверточных уровней с использованием сверточного оператора Winograd на основе предварительно вычисленного коэффициента многократного использования и входных данных; и определение выходных данных обученной сверточной сети на основе вывода каждого из одного или более сверточных уровней. 3 н. и 14 з.п. ф-лы, 4 ил.

Description

Уровень техники
[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.
[0027] Операция свертки сверточного уровня CNN может задаваться как указанная корреляция между вводом (например, представленным посредством входного тензора X) и фильтром или ядром сверточного уровня (представленным посредством тензора W фильтра или ядра), приводящим к выводу (например, представленному посредством выходного тензора Y). Для простоты, считается, что операция свертки использует шаг в 1. Для данного сверточного уровня, входной тензор X может иметь размер [n; Cin; H; Wi], где N представляет размер пакета входных данных, которые должны обрабатываться (например, пакетной операции N изображений, которые должны свертываться); Cin представляет число каналов (например, изображение из стандартной цифровой камеры имеет три канала: красный, зеленый и синий. Каждый канал может включать в себя двумерную матрицу, имеющую пиксельные значения (например, в диапазоне от 0 до 255)); H и Wi представляют высоту и ширину каждого канала (например, 255*255), соответственно. Тензор W фильтра или ядра может иметь размер [Cout; Cin; R; S], где Cout представляет число выходных каналов операции свертки; Cin представляет число входных каналов операции свертки; R и S представляют высоту и ширину каждого фильтра или ядра сверточного уровня, соответственно. Типично, R и S могут задаваться с возможностью иметь идентичное значение.
[0028] Выходной тензор Y может иметь размер [n; Cout; H; Wi], с элементом:
Figure 00000001
, (1)
где i является целым числом из диапазона [0, N], и o является целым числом из диапазона [0, Cout].
[0029] Предусмотрено несколько способов реализовывать операцию свертки сверточного уровня, таких как вычисление по определению (например, заданного посредством уравнения (1)), преобразование в матричное умножение или использование быстрого алгоритма Winograd. Например, когда размер каждого сверточного ядра или фильтра составляет 1×1 (т.е. R и S равны 1 одновременно), вышеуказанная операция свертки может преобразовываться в матричное умножение. В некоторых реализациях, например, в случаях, если R>1 или S>1, операция свертки может реализовываться на основе быстрого алгоритма Winograd.
[0030] Согласно быстрому алгоритму Winograd, для свертки входного канала со сверточным фильтром или ядром с размером
Figure 00000002
и выходным размером
Figure 00000003
, может быть найден алгоритм
Figure 00000004
минимальной фильтрации, который требует только
Figure 00000005
умножений, чтобы завершать операцию свертки. Например, данный входной канал размера
Figure 00000006
может разделяться на перекрывающиеся субблоки, при этом каждый субблок имеет размер
Figure 00000003
. Вычисление свертки может выполняться для каждого субблока отдельно, чтобы формировать соответствующий выходной канал (напомним вышеуказанное предположение касательно того, что шаг равен 1). Как описано выше, ширина R и высота S сверточного фильтра или ядра на сверточном уровне, в общем, задаются равным идентичному значению. Типично, для сегментации на субблоки,
Figure 00000007
и
Figure 00000008
также задаются равными идентичным значениям.
[0031] Для простоты, примерный алгоритм 200 рассматривает случай, в котором
Figure 00000009
и
Figure 00000010
. Таким образом, рассматривается алгоритм
Figure 00000011
минимальной фильтрации. Этапы 1-23 примерного алгоритма 200 показывают примерную реализацию алгоритма Winograd для операции свертки одного сверточного уровня CNN. CNN характеризуется посредством
Figure 00000012
, фильтра или ядра между c-ым входным каналом и o-ым выходным каналом и тензора W, включающего в себя параметры или весовые коэффициенты фильтров или ядер CNN. Тензор X представляет входные данные в CNN.
Figure 00000013
представляет число входных каналов.
Figure 00000014
представляет размер входного субблока (смежные субблоки имеют
Figure 00000015
перекрывающихся элементов).
Figure 00000016
представляет p-ый субблок c-го входного канала.
Figure 00000017
представляет p-ый субблок o-го выходного канала.
Figure 00000018
и
Figure 00000019
являются матрицами преобразования, соответствующими вводу
Figure 00000020
и заданными следующим образом:
Figure 00000021
=
Figure 00000022
(2)
и
Figure 00000023
=
Figure 00000024
(3)
[0032] В существующих технологиях для вычисления CNN на основе алгоритма Winograd, примерный алгоритм 200 (включающий в себя этапы 1-23) выполняется для каждого входного канала (например, канала изображения) для каждого сверточного уровня CNN. Например, если CNN включает в себя 5 сверточных уровней для каждого входного канала, примерный алгоритм 200 выполняется 5 раз. Если 10 каналов вводятся для прогнозирования, примерный алгоритм 200 должен выполняться 50 раз.
[0033] В отличие от существующих технологий, описанные технологии для быстрого вычисления CNN могут уменьшать вычислительную нагрузку, в частности, с учетом нескольких входных каналов. Описанные технологии для быстрого вычисления CNN могут многократно использовать коэффициенты, которые являются общими и неизменными в течение фазы прогнозирования процесса машинного обучения. Описанные технологии для быстрого вычисления CNN идентифицируют такие коэффициенты и предварительно вычисляют их.
[0034] В связи с этим, вычисление этих коэффициентов многократного использования должно вычисляться только однократно, независимо от значений входных данных. Более конкретно, в примерном алгоритме 200, описанный алгоритм быстрого вычисления может предварительно вычислять тензор U согласно этапам 1-6, поскольку все параметры, необходимые для такого вычисления (например,
Figure 00000025
и
Figure 00000026
), известны с учетом обученной 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 для случая
Figure 00000009
и
Figure 00000010
. Описанные технологии для быстрого вычисления CNN могут адаптироваться и применяться к другим случаям, включающим в себя общие CNN, без конкретных требований
Figure 00000009
и
Figure 00000027
[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 включает в себя один или более сверточных уровней. Каждый из одного или более сверточных уровней включает в себя соответствующее одно или более фильтров (или ядер) с известными параметрами фильтра (например, числом фильтров, размерами фильтров, значениями параметров фильтра и соединительными весовыми коэффициентами). Различные сверточные уровни могут включать в себя идентичное или различное число фильтров. Каждый фильтр задается посредством известных параметров фильтра или весовых коэффициентов. В некоторых реализациях, фильтр может представляться посредством матрицы, такой как фильтр
Figure 00000028
, как описано относительно фиг. 2. Значения матрицы фильтров и соединительные весовые коэффициенты изучаются и являются известными во время процесса обучения, и эти значения не должны изменяться при использовании обученной CNN, например, для прогнозирования на основе входных данных. В некоторых реализациях, фильтры и/или соединительные весовые коэффициенты сверточного уровня могут совместно представляться посредством тензора. Например, каждый сверточный уровень обученной CNN может представляться посредством матриц фильтров и тензора весовых коэффициентов (например, тензора W, как описано относительно фиг. 2), который включает в себя параметры или весовые коэффициенты фильтров или ядер CNN. От 310, способ 300 переходит к 320.
[0041] На 320, коэффициент многократного использования для каждого из одного или более сверточных уровней может предварительно вычисляться на основе известных параметров фильтра обученной CNN. Например, для каждого из одного или более сверточных уровней, коэффициент многократного использования, который зависит только от известных, неизменных параметров, может идентифицироваться и вычисляться независимо от входных данных в CNN. Например, тензор U, как описано относительно примерного алгоритма 200 на фиг. 2, представляет собой пример коэффициента многократного использования для каждого из одного или более сверточных уровней обученной CNN. Тензор может вычисляться согласно этапам 1-6 примерного алгоритма 200, поскольку все параметры, необходимые для такого вычисления (например,
Figure 00000025
и
Figure 00000026
), известны с учетом обученной 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, вывод каждого из одного или более сверточных уровней (скажем, уровня
Figure 00000029
) вычисляется на основе предварительно вычисленного коэффициента многократного использования и входных данных. Вывод уровня
Figure 00000029
включает в себя результат операции свертки, выполняемой между вводом в уровень
Figure 00000029
и фильтрами уровня
Figure 00000029
. Ввод в уровень
Figure 00000029
может включать в себя входные данные в обученную CNN, вывод предыдущего уровня (например, уровня
Figure 00000030
) обученной CNN либо комбинацию означенного. В некоторых реализациях, вывод уровня
Figure 00000029
может вычисляться с использованием сверточного оператора Winograd (например, Wino-Conv2D 135, как описано относительно фиг. 1) на основе предварительно вычисленного коэффициента многократного использования (например, тензора U 125) и входных данных (прямо или косвенно посредством работы с выводом предыдущего уровня). В некоторых реализациях, вывод уровня
Figure 00000029
может вычисляться согласно алгоритму минимальной фильтрации Winograd (например, примерному алгоритму 200, описанному относительно фиг. 2). От 350, способ 300 переходит к 360.
[0050] На 360, выходные данные обученной сверточной сети определяются на основе вывода каждого из одного или более сверточных уровней. В некоторых реализациях, определение выходных данных обученной сверточной сети включает в себя формирование, прогнозирование или иное вычисление выходных данных обученной CNN. Выходные данные могут включать в себя прогнозирование, классификацию или другие признаки или атрибуты, извлекаемые из входных данных посредством операций обученной CNN. Например, выходные данные могут включать в себя вектор вероятностей возможных категорий (например, человек, собака, автомобиль или дерево) входного изображения. В качестве другого примера, выходные данные могут включать в себя идентификацию объекта во входном изображении (например, для распознавания лиц). В качестве еще одного другого примера, выходные данные могут включать в себя идентификацию или классификацию повреждений транспортных средств на основе входных фотографий транспортного средства. В некоторых реализациях, выходные данные могут включать в себя улучшенную или фильтрованную версию входных данных (например, версию с увеличенной резкостью или размытостью входной фотографии).
[0051] В некоторых реализациях, выходные данные обученной сверточной сети определяются на основе вывода каждого из одного или более сверточных уровней таким образом, выходные данные обученной сверточной сети определяются на основе одного или более из вывода каждого из одного или более сверточных уровней (например, вывода уровня
Figure 00000029
, для
Figure 00000031
, где
Figure 00000032
является общим числом уровней в обученной CNN). Типично, выходные данные обученной сверточной сети определяются на основе вывода последнего уровня, уровня
Figure 00000032
, обученной CNN, причем вывод уровня
Figure 00000032
определяется на основе вывода предыдущего уровня, уровня
Figure 00000033
и т.д., до обратного прослеживания вплоть до входных данных в обученную 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] Кроме того, любая заявленная реализация считается применимой, по меньшей мере, к машинореализованному способу; энергонезависимому машиночитаемому носителю, сохраняющему машиночитаемые инструкции для того, чтобы осуществлять машинореализованный способ; и компьютерной системе, включающей в себя компьютерное запоминающее устройство, функционально соединенное с аппаратным процессором, выполненным с возможностью осуществлять машинореализованный способ или инструкции, сохраненные на энергонезависимом машиночитаемом носителе.

Claims (41)

1. Машинореализованный способ вычисления выходных данных обученной сверточной нейронной сети, содержащий этапы, на которых:
получают, посредством оборудования обработки данных, обученную сверточную нейронную сеть, содержащую по меньшей мере первый сверточный уровень и второй сверточный уровень, причем каждый из по меньшей мере первого сверточого уровня и второго сверточного уровня содержит соответствующее множество фильтров с известными параметрами фильтра;
- предварительно вычисляют, посредством оборудования обработки данных, первый коэффициент многократного использования для первого сверточного уровня на основе известных параметров фильтра независимо от каких-либо входных данных в обученную сверточную нейронную сеть;
- предварительно вычисляют, посредством оборудования обработки данных, второй коэффициент многократного использования для второго сверточного уровня на основе известных параметров фильтра независимо от каких-либо входных данных в обученную сверточную нейронную сеть;
- определяют, посредством оборудования обработки данных, первые входные данные в первый сверточный уровень обученной сверточной нейронной сети;
- вычисляют, посредством оборудования обработки данных, первый вывод первого сверточного уровня с использованием сверточного оператора Winograd на основе первого коэффициента многократного использования и первых входных данных;
- используют, посредством оборудования обработки данных, первый вывод как вторые входные данные во второй сверточный уровень обученной сверточной нейронной сети; и
- вычисляют, посредством оборудования обработки данных, второй вывод второго сверточного уровня с использованием сверточного оператора Winograd на основе второго коэффициента многократного использования и вторых входных данных.
2. Машинореализованный способ по п. 1, содержащий также этап, на котором сохраняют первый коэффициент многократного использования для первого сверточного уровня.
3. Машинореализованный способ по п. 1, в котором вычисление первого вывода первого сверточного уровня с использованием сверточного оператора Winograd на основе первого коэффициента многократного использования и первых входных данных содержит вычисление первого вывода первого сверточного уровня согласно алгоритму минимальной фильтрации Winograd с первым коэффициентом многократного использования и первыми входными данными.
4. Машинореализованный способ по п. 1, в котором первые входные данные в обученную сверточную нейронную сеть содержат одно или более изображений.
5. Машинореализованный способ по п. 1, содержащий также этап, на котором определяют, посредством оборудования обработки данных, выходные данные обученной сверточной нейронной сети на основе второго вывода второго сверточного уровня.
6. Машинореализованный способ по п. 1, содержащий также этап, на котором выводят выходные данные обученной сверточной нейронной сети через пользовательский интерфейс.
7. Энергонезависимый машиночитаемый носитель, сохраняющий одну или более инструкций, выполняемых посредством компьютерной системы, чтобы выполнять операции, содержащие:
- получение обученной сверточной нейронной сети, содержащей по меньшей мере первый сверточный уровнь и второй сверточный уровень, причем каждый из по меньшей мере первого сверточого уровня и второго сверточного уровня содержит соответствующее множество фильтров с известными параметрами фильтра;
- предварительное вычисление первого коэффициента многократного использования для первого сверточного уровня на основе известных параметров фильтра независимо от каких-либо входных данных в обученную сверточную нейронную сеть;
- предварительное вычисление второго коэффициента многократного использования для второго сверточного уровня на основе известных параметров фильтра независимо от каких-либо входных данных в обученную сверточную нейронную сеть;
- определение первых входных данных в первый сверточный уровень обученной сверточной нейронной сети;
- вычисление первого вывода первого сверточного уровня с использованием сверточного оператора Winograd на основе первого коэффициента многократного использования и первых входных данных;
- использование первого вывода как вторых входных данных во второй сверточный уровень обученной сверточной нейронной сети; и
- вычисление второго вывода второго сверточного уровня с использованием сверточного оператора Winograd на основе второго коэффициента многократного использования и вторых входных данных.
8. Энергонезависимый машиночитаемый носитель по п. 7, в котором операции также содержат сохранение первого коэффициента многократного использования для первого сверточного уровня.
9. Энергонезависимый машиночитаемый носитель по п. 7, в котором вычисление первого вывода первого сверточного уровня с использованием сверточного оператора Winograd на основе первого коэффициента многократного использования и первых входных данных содержит вычисление первого вывода первого сверточного уровня согласно алгоритму минимальной фильтрации Winograd с первым коэффициентом многократного использования и первыми входными данными.
10. Энергонезависимый машиночитаемый носитель по п. 7, в котором первые входные данные в обученную сверточную нейронную сеть содержат одно или более изображений.
11. Энергонезависимый машиночитаемый носитель по п. 7, в котором операции также содержат определение выходных данных обученной сверточной нейронной сети на основе второго вывода второго сверточного уровня.
12. Энергонезависимый машиночитаемый носитель по п. 7, в котором операции также содержат вывод выходных данных обученной сверточной нейронной сети через пользовательский интерфейс.
13. Машинореализованная система вычисления выходных данных обученной сверточной нейронной сети, содержащая:
- один или более компьютеров; и
- одно или более компьютерных запоминающих устройств, функционально соединенных с одним или более компьютерами и имеющих материальные энергонезависимые машиночитаемые носители, сохраняющие инструкции, которые, при выполнении посредством одного или более компьютеров, выполняют операции, содержащие:
- получение обученной сверточной нейронной сети, содержащей по меньшей мере первый сверточный уровень и второй сверточный уровнень, причем каждый из по меньшей мере первого сверточого уровня и второго сверточного уровня содержит соответствующее множество фильтров с известными параметрами фильтра;
- предварительное вычисление первого коэффициента многократного использования для первого сверточного уровня на основе известных параметров фильтра независимо от каких-либо входных данных в обученную сверточную нейронную сеть;
- предварительное вычисление второго коэффициента многократного использования для второго сверточного уровня на основе известных параметров фильтра независимо от каких-либо входных данных в обученную сверточную нейронную сеть;
- определение первых входных данных в первый сверточный уровень обученной сверточной нейронной сети;
- вычисление первого вывода первого сверточного уровня с использованием сверточного оператора Winograd на основе первого коэффициента многократного использования и первых входных данных; и
- использование первого вывода как вторых входных данных во второй сверточный уровень обученной сверточной нейронной сети; и
- вычисление второго вывода второго сверточного уровня с использованием сверточного оператора Winograd на основе второго коэффициента многократного использования и вторых входных данных.
14. Машинореализованная система по п. 13, в которой операции также содержат сохранение первого коэффициента многократного использования для первого сверточного уровня.
15. Машинореализованная система по п. 13, в которой вычисление первого вывода первого сверточного уровня с использованием сверточного оператора Winograd на основе первого коэффициента многократного использования и первых входных данных содержит вычисление первого вывода первого сверточного уровня согласно алгоритму минимальной фильтрации Winograd с первым коэффициентом многократного использования и первыми входными данными.
16. Машинореализованная система по п. 13, в которой операции также содержат:
- определение выходных данных обученной сверточной нейронной сети на основе второго вывода второго сверточного уровня.
17. Машинореализованная система по п. 13, содержащая также пользовательский интерфейс и в которой операции также содержат вывод выходных данных обученной сверточной нейронной сети через пользовательский интерфейс.
RU2019111961A 2018-10-24 2018-10-24 Быстрое вычисление сверточной нейронной сети RU2722473C1 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/111655 WO2020082263A1 (en) 2018-10-24 2018-10-24 Fast computation of convolutional neural network

Publications (1)

Publication Number Publication Date
RU2722473C1 true RU2722473C1 (ru) 2020-06-01

Family

ID=66850328

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2019111961A RU2722473C1 (ru) 2018-10-24 2018-10-24 Быстрое вычисление сверточной нейронной сети

Country Status (14)

Country Link
US (1) US10635951B1 (ru)
EP (1) EP3662414A4 (ru)
JP (1) JP6798021B1 (ru)
KR (1) KR102141324B1 (ru)
CN (1) CN110537193A (ru)
AU (1) AU2018353930B2 (ru)
BR (1) BR112019008055B1 (ru)
CA (1) CA3040685C (ru)
MX (1) MX2019004654A (ru)
PH (1) PH12019500889A1 (ru)
RU (1) RU2722473C1 (ru)
SG (1) SG11201903591QA (ru)
WO (1) WO2020082263A1 (ru)
ZA (1) ZA201902547B (ru)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US11494608B2 (en) * 2019-08-14 2022-11-08 Intel Corporation Methods and apparatus to tile walk a tensor for convolution operations
US11657282B2 (en) * 2019-09-16 2023-05-23 Qualcomm Incorporated Efficient inferencing with fast pointwise convolution
CN112766471B (zh) * 2019-11-01 2024-03-29 中科寒武纪科技股份有限公司 运算装置及相关产品
CN112784206A (zh) * 2019-11-01 2021-05-11 中科寒武纪科技股份有限公司 winograd卷积运算方法、装置、设备及存储介质
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
CN111294512A (zh) * 2020-02-10 2020-06-16 深圳市铂岩科技有限公司 图像处理方法、装置、存储介质及摄像装置
CN111475775B (zh) * 2020-04-14 2023-09-15 腾讯科技(深圳)有限公司 图形处理器的数据处理方法、文本处理方法、装置和设备
CN111415000B (zh) * 2020-04-29 2024-03-22 Oppo广东移动通信有限公司 卷积神经网络、基于卷积神经网络的数据处理方法和装置
CN111553466B (zh) * 2020-04-30 2024-03-22 上海商汤智能科技有限公司 信息处理方法、装置及设备
CN111580828B (zh) * 2020-04-30 2021-08-27 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
US11687336B2 (en) * 2020-05-08 2023-06-27 Black Sesame Technologies Inc. Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks
CN111767964A (zh) * 2020-07-08 2020-10-13 福州大学 基于改进的DenseNet的多通道特征重标记图像分类方法
JP2022018997A (ja) * 2020-07-17 2022-01-27 ソニーセミコンダクタソリューションズ株式会社 固体撮像素子、撮像装置、および、情報処理システム
WO2022064901A1 (ja) * 2020-09-28 2022-03-31 富士フイルム株式会社 学習済みモデル変換方法、推論方法、学習済みモデル変換装置、学習済みモデル、及び推論装置
WO2022119466A1 (en) * 2020-12-01 2022-06-09 Huawei Technologies Co., Ltd. Device and method for implementing a tensor-train decomposition operation
JP7420100B2 (ja) 2021-03-15 2024-01-23 オムロン株式会社 処理装置、処理方法、およびプログラム
KR20220162971A (ko) * 2021-06-02 2022-12-09 세메스 주식회사 데이터 처리 방법 및 데이터 비교 방법
CN117495833B (zh) * 2023-11-16 2024-05-28 广州思沛医药科技股份有限公司 一种基于大数据的脑卒中预测方法、系统及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
CN107844833A (zh) * 2017-11-28 2018-03-27 郑州云海信息技术有限公司 一种卷积神经网络的数据处理方法、装置及介质
US20180101763A1 (en) * 2016-10-06 2018-04-12 Imagination Technologies Limited Buffer Addressing for a Convolutional Neural Network
RU2651147C1 (ru) * 2017-03-27 2018-04-18 Акционерное общество "ЭЛВИС-НеоТек" Устройство и способ каскадной обработки потока изображений с помощью свёрточных нейронных сетей
WO2018081126A1 (en) * 2016-10-24 2018-05-03 Sonicwall Us Holdings Inc. Edge protection for internal identity providers

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201407381VA (en) * 2012-05-04 2014-12-30 Rearden Llc System and methods for coping with doppler effects in distributed-input distributed-output wireless systems
WO2016132152A1 (en) * 2015-02-19 2016-08-25 Magic Pony Technology Limited Interpolating visual data
US10403269B2 (en) * 2015-03-27 2019-09-03 Google Llc Processing audio waveforms
CN105740894B (zh) * 2016-01-28 2020-05-29 北京航空航天大学 一种高光谱遥感图像的语义标注方法
CN106407986B (zh) * 2016-08-29 2019-07-19 电子科技大学 一种基于深度模型的合成孔径雷达图像目标识别方法
US10482155B2 (en) * 2016-12-30 2019-11-19 Intel Corporation Winograd algorithm on a matrix processing architecture
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
CN107480707B (zh) * 2017-07-26 2020-08-07 天津大学 一种基于信息无损池化的深度神经网络方法
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
KR102452953B1 (ko) * 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US10372787B2 (en) * 2017-12-12 2019-08-06 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US20180101763A1 (en) * 2016-10-06 2018-04-12 Imagination Technologies Limited Buffer Addressing for a Convolutional Neural Network
WO2018081126A1 (en) * 2016-10-24 2018-05-03 Sonicwall Us Holdings Inc. Edge protection for internal identity providers
RU2651147C1 (ru) * 2017-03-27 2018-04-18 Акционерное общество "ЭЛВИС-НеоТек" Устройство и способ каскадной обработки потока изображений с помощью свёрточных нейронных сетей
CN107844833A (zh) * 2017-11-28 2018-03-27 郑州云海信息技术有限公司 一种卷积神经网络的数据处理方法、装置及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANDREW LAVIN et al. "Fast algorithms for convolutional neural networks", [он-лайн] 10.11.2015, [найдено 05.02.2020]. Найдено в Интернет: URL: https://arxiv.org/pdf/1509.09308.pdf >. *

Also Published As

Publication number Publication date
AU2018353930B2 (en) 2020-10-08
JP2021501377A (ja) 2021-01-14
JP6798021B1 (ja) 2020-12-09
AU2018353930A1 (en) 2020-05-14
PH12019500889A1 (en) 2019-06-17
US10635951B1 (en) 2020-04-28
ZA201902547B (en) 2021-02-24
MX2019004654A (es) 2022-05-04
EP3662414A4 (en) 2020-07-22
CN110537193A (zh) 2019-12-03
EP3662414A1 (en) 2020-06-10
KR102141324B1 (ko) 2020-08-05
WO2020082263A1 (en) 2020-04-30
BR112019008055B1 (pt) 2022-02-01
US20200134400A1 (en) 2020-04-30
SG11201903591QA (en) 2020-05-28
CA3040685C (en) 2020-07-28
BR112019008055A2 (pt) 2021-05-18
CA3040685A1 (en) 2020-04-28
KR20200049695A (ko) 2020-05-08

Similar Documents

Publication Publication Date Title
RU2722473C1 (ru) Быстрое вычисление сверточной нейронной сети
US20200302230A1 (en) Method of incremental learning for object detection
US20210304063A1 (en) Machine Learning Model For Micro-Service Compliance Requirements
KR20180050928A (ko) 컨볼루션 신경망 처리 방법 및 장치
CN113570064A (zh) 利用复合机器学习模型来执行预测的方法及系统
US11928583B2 (en) Adaptation of deep learning models to resource constrained edge devices
WO2023045149A1 (zh) 图像融合方法、装置、电子设备和存储介质
US20240135698A1 (en) Image classification method, model training method, device, storage medium, and computer program
CN111104954A (zh) 一种对象分类的方法与装置
US20210111736A1 (en) Variational dropout with smoothness regularization for neural network model compression
CN110633717A (zh) 一种目标检测模型的训练方法和装置
CN115170815A (zh) 视觉任务处理及模型训练的方法、装置、介质
CN113822290A (zh) 数据融合方法、装置、电子设备和计算机可读存储介质
WO2023160290A1 (zh) 神经网络推理加速方法、目标检测方法、设备及存储介质
US11445198B2 (en) Multi-quality video super resolution with micro-structured masks
CN115293252A (zh) 信息分类的方法、装置、设备和介质
CN113052309A (zh) 压缩神经网络模型的方法、计算机系统以及存储介质
CN113298083A (zh) 一种数据处理方法及装置
US20230064500A1 (en) Optimizing machine learning as-a-service performance for cellular communication systems
CN113569092B (zh) 一种视频分类方法、装置、电子设备及存储介质
US20230009941A1 (en) Method of processing data for target model, electronic device, and storage medium
Anton Fu Using Quantization and Serialization to Improve AI Super-Resolution Inference Time on Cloud Platform
CN116091824A (zh) 车辆分类模型的微调方法、车辆分类方法、装置及设备
CN113344199A (zh) 用于训练可分离卷积网络的方法、路侧设备及云控平台
CN116010745A (zh) 基于人工智能的页面资源分配方法及大数据服务系统

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20210311

PC41 Official registration of the transfer of exclusive right

Effective date: 20210420