Редактирование: Машинное обучение на мобильных телефонах

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
Машинное обучение, как известно, очень тесно связано с нашей жизнью, и во многих областях используются разные модели машинного обучения. Эти модели нужно где-то запускать и сохранять. Самый простой выход из ситуации {{---}} сервер, на котором будет находиться наша модель, и который будет принимать запросы. Однако, что, если мы находимся в глухом лесу и у нас нет доступа к Интернету? Что, если мы не хотим хранить свои данные на чужих серверах? У нас нет своих серверов для машинного обучения, но мобильные телефоны есть почти у каждого. Давайте рассмотрим машинное обучение на телефонах.
+
Машинное обучение, как известно, очень тесно связано с нашей жизнью. Буквально каждая область жизни человека нашла в себе нишу для машинного обучения. Конечно же, модели нужно где то запускать и сохранять. Самый простой выход из ситуации {{---}} сервер, на котором будет находиться наша модель, и который будет приниматься наши запросы. Однако, что, если мы находимся в глухом лесу и у нас нет доступа к Интернету? Что, если мы не хотим хранить свои данные на чужих серверах? У нас нет своих серверов для машинного обучения, но мобильные телефоны есть почти у каждого. Давайте рассмотрим машинное обучение на телефонах.
  
 
== Задачи машинного обучения на телефонах ==
 
== Задачи машинного обучения на телефонах ==
Строка 7: Строка 7:
 
{{main|Рекомендательные_системы}}
 
{{main|Рекомендательные_системы}}
  
Конечно же, самое первое, что может прийти в голову про применение машинного обучения на телефонах {{---}} это кастомизация. Подбор музыки, новостей, любого контента {{---}} все это достигается с помощью машинного обучения. Приложение получает ваши персональные данные и, используя данные старых пользователей, показывает вам то, что понравилось людям с наиболее подходящими данными. Однако такая работа связана с очень большими вычислениями, и, чаще всего, выполняется на сторонних серверах. Самая частая модель для классификации изображений {{---}} [[Сверточные нейронные сети|CNN]], однако порой такая классификация является излишней.
+
Конечно же, самое первое, что может прийти в голову про применения машинного обучения на телефонах {{---}} это кастомизация. Подбор музыки, новостей, любого контента {{---}} все это достигается с помощью машинного обучения. Приложение получает ваши персональные данные и, используя данные старых пользователей, показывает вам то, что понравилось людям с наиболее подходящими данными. Однако такая работа связана с очень большими вычислениями, и, чаще всего, выполняется на сторонних серверах. Самая частая модель для классификации изображений {{---}} [[Сверточные нейронные сети|CNN]], однако порой такая классификация является излишней.
 
 
Пример приложения:
 
*Spotify
 
*TikTok
 
  
 
=== Распознавание фото, текста и видео ===
 
=== Распознавание фото, текста и видео ===
Строка 18: Строка 14:
 
{{main|Компьютерное зрение}}
 
{{main|Компьютерное зрение}}
  
Распознавание фото и видео на мобильных телефонах мало чем отличается от обычных компьютерных методов, только цели немного другие. Например, некоторые мобильные телефоны распознают владельца через Face ID с помощью фронтальной камеры. Есть приложения для определения возраста, пола.
+
Распознавание фото и видео на мобильных телефонах мало чем отличается от обычных компьютерных методов, только цели немного другие. Например, некоторые мобильные телефоны распознают владельца через Face ID с помощью фронтальную камеру. Есть приложения для определения возраста, пола.
  
 
Если же рассмотреть распознавание текста, то и у него тоже есть большое количество применений {{---}} сканирование чеков, кредитные карты, документы, переводить в реальном времени иностранные слова.
 
Если же рассмотреть распознавание текста, то и у него тоже есть большое количество применений {{---}} сканирование чеков, кредитные карты, документы, переводить в реальном времени иностранные слова.
  
 
Существует несколько известных библиотек для работы с изображениями в мобильных приложениях: Tesseract<ref>[https://github.com/tesseract-ocr/tesseract Tesseract]</ref>, OpenCV<ref>[https://opencv.org/ OpenCV]</ref>, Mobile Vision Google<ref>[https://developers.google.com/vision Mobile Vision Google]</ref>, ML Kit<ref>[https://developers.google.com/ml-kit ML Kit]</ref>. Изображения легко передавать через сеть, так что можно обрабатывать их и на веб-серверах.
 
Существует несколько известных библиотек для работы с изображениями в мобильных приложениях: Tesseract<ref>[https://github.com/tesseract-ocr/tesseract Tesseract]</ref>, OpenCV<ref>[https://opencv.org/ OpenCV]</ref>, Mobile Vision Google<ref>[https://developers.google.com/vision Mobile Vision Google]</ref>, ML Kit<ref>[https://developers.google.com/ml-kit ML Kit]</ref>. Изображения легко передавать через сеть, так что можно обрабатывать их и на веб-серверах.
 
Пример приложения:
 
*Google Lens
 
*Pinterest
 
  
 
=== Распознавание звука ===
 
=== Распознавание звука ===
Строка 35: Строка 27:
  
 
Для распознавания речи есть библиотека pocketsphinx<ref>[https://github.com/cmusphinx/pocketsphinx pocketsphinx]</ref>
 
Для распознавания речи есть библиотека pocketsphinx<ref>[https://github.com/cmusphinx/pocketsphinx pocketsphinx]</ref>
 
Пример приложения:
 
*Shazam
 
*Google Assistant
 
  
 
=== Анализ данных с сенсоров ===
 
=== Анализ данных с сенсоров ===
Строка 97: Строка 85:
  
 
Телефон получает данные об окружающем мире с помощью специальных датчиков и сенсоров. В мире их существует огромное количество, и, к сожалению, большинство из них работает недостаточно точно. Но это исправляет машинное обучение, уточняя данные с сенсоров. Это важно для людей с опасными для жизни болезнями, например, может произойти сердечный приступ, и процессор лучше любого человека скажет, что это он, и, считав местоположение с навигатора, вызовет скорую помощь в тот же момент.
 
Телефон получает данные об окружающем мире с помощью специальных датчиков и сенсоров. В мире их существует огромное количество, и, к сожалению, большинство из них работает недостаточно точно. Но это исправляет машинное обучение, уточняя данные с сенсоров. Это важно для людей с опасными для жизни болезнями, например, может произойти сердечный приступ, и процессор лучше любого человека скажет, что это он, и, считав местоположение с навигатора, вызовет скорую помощь в тот же момент.
 
Пример приложения:
 
*Карты Google
 
*Gravity Screen
 
  
 
=== Навигация ===
 
=== Навигация ===
Строка 106: Строка 90:
 
Навигационные приложения можно значительно улучшить, если интегрировать в них алгоритмы по распознаванию фото и видео. К примеру, если приложение подключается к камере в автомобиле, оно может анализировать ситуацию на дороге и предупреждать водителя в случае возможной опасности. Так можно распознавать пробки, дорожные знаки по ограничению скорости, агрессивное поведение окружающих водителей и другие характеристики дорожного движения.
 
Навигационные приложения можно значительно улучшить, если интегрировать в них алгоритмы по распознаванию фото и видео. К примеру, если приложение подключается к камере в автомобиле, оно может анализировать ситуацию на дороге и предупреждать водителя в случае возможной опасности. Так можно распознавать пробки, дорожные знаки по ограничению скорости, агрессивное поведение окружающих водителей и другие характеристики дорожного движения.
  
Пример приложения:
+
== Запуск машинного обучения на мобильных телефонах ==
*Карты Google
 
  
== Запуск моделей машинного обучения на мобильных телефонах ==
+
Для запуска [[Глубокое_обучение|глубоких моделей]] необходимо наличием мощных вычислительных ресурсов и большого объема учебных данных. Поэтому построение модели может осуществляться с помощью высокопроизводительных центральных (англ. central processing unit, CPU<ref>[https://en.wikipedia.org/wiki/Central_processing_unit Central processing unit]</ref>) и графических (англ. graphics processing unit, GPU<ref>[https://en.wikipedia.org/wiki/Graphics_processing_unit Graphics processing unit]</ref>) процессоров, а после построения ее можно запустить на мобильном устройстве с гораздо меньшей вычислительной мощностью на CPU, интегральных схем специального назначения (англ.  [https://en.wikipedia.org/wiki/Application-specific_integrated_circuit Application specific integrated circuit, ASIC]), программируемых пользователем вентильных матриц(англ. [https://en.wikipedia.org/wiki/Field-programmable_gate_array Field programmable gate array, FPGA]) или мобильных GPU.
 
 
Для запуска [[Глубокое_обучение|глубоких моделей]] необходимо наличием мощных вычислительных ресурсов и большого объема учебных данных. Поэтому построение модели может осуществляться с помощью высокопроизводительных центральных (англ. central processing unit, CPU<ref>[https://en.wikipedia.org/wiki/Central_processing_unit Central processing unit]</ref>) и графических (англ. graphics processing unit, GPU<ref>[https://en.wikipedia.org/wiki/Graphics_processing_unit Graphics processing unit]</ref>) процессоров, а после построения ее можно запустить на мобильном устройстве с гораздо меньшей вычислительной мощностью на CPU, интегральных схемах специального назначения (англ.  [https://en.wikipedia.org/wiki/Application-specific_integrated_circuit Application specific integrated circuit, ASIC]), программируемых пользователем вентильных матриц (англ. [https://en.wikipedia.org/wiki/Field-programmable_gate_array Field programmable gate array, FPGA]) или мобильных GPU. На рисунках 1-4 представлены модели взаимодействия с соответcтвующими вычислительными устройствами.
 
  
  
 
=== CPU ===
 
=== CPU ===
  
Хотя процессоры могут быть неудачным решением для построения современных моделей глубокого обучения, когда учебные данные очень
+
Хотя процессоры могут быть громоздкими для построения современных моделей глубокого обучения, когда учебные данные очень
большие, они являются приемлемым вариантом для обучения или адаптации моделей к небольшим объемам данных, а также для развертывания предварительно построенных моделей глубокого обучения. Очевидным преимуществом развертывания глубокого обучения на CPU является то, в отличие от других типов вычислительных устройств ими оснащен любой современный телефон или планшет. Кроме того, мобильные устройства часто поставляются с мощными процессорами и имеют широкий выбор встроенных датчиков.  Это означает отсутствие дополнительных затрат на аппаратное обеспечение и таким образом обеспечение большего количества приложений ИИ для потенциально огромного рынка. Real-time приложения могут быть развернуты на стандартном процессоре с минимальными затратами или без дополнительных усилий. Кроме того CPU в современных мобильных устройствах столь же мощны, как и в компьютерах, что позволяет эффективно использовать их для данных целей.
+
большие, они являются приемлемым вариантом для обучения или адаптации моделей к небольшим объемам данных, а также для развертывания предварительно построенных моделей глубокого обучения. Очевидным преимуществом развертывания глубокого обучения на CPU является то, в отличие от других типов вычислительных устройств ими оснащен любой современный телефон или планшет. Кроме того, эти устройства часто поставляются с мощными процессорами и имеют широкий выбор встроенных датчиков.  Это означает отсутствие дополнительных затрат на аппаратное обеспечение и таким образом обеспечение большего количества приложений ИИ для потенциально огромного рынка. Real-time приложения быть развернуты могут быть развернуты на стандартном процессоре с минимальными затратами или без дополнительных усилий. Кроме того CPU в современных мобильных устройвах столь же мощны как и в компьютерах, что позволяет эффективно использовать их для данных целей.
  
 
[[Файл:CPU.jpeg|800px|thumb|center| Рисунок 1. CPU. [https://habr.com/ru/post/455353/ Источник]]]
 
[[Файл:CPU.jpeg|800px|thumb|center| Рисунок 1. CPU. [https://habr.com/ru/post/455353/ Источник]]]
Строка 129: Строка 110:
 
=== FPGA ===
 
=== FPGA ===
 
В то время как CPU создан для вычислений общего назначения, а ASIC сделана исключительно для
 
В то время как CPU создан для вычислений общего назначения, а ASIC сделана исключительно для
специфических вычислений, FPGA находится между ними. FPGA могут быть (повторно) запрограммированы ("перепрошиты") для эффективного выполнения многих специфических задач. На базовом уровне FPGA используют [https://en.wikipedia.org/wiki/Flip-flop_(electronics) схемы flip-flop] для реализации последовательных логических функций и поиска таблиц. Логические функции реализуются посредством программируемой памяти,
+
специфических вычислений, FPGA находится между ними. FPGA могут быть (повторно) запрограммированы ("перепрошиты") для эффективного выполнения многих специфических задач. Также FPGA позволяет достичь баланса между разработкой системы и потреблением энергии. На базовом уровне FPGA используют [https://en.wikipedia.org/wiki/Flip-flop_(electronics) схемы flip-flop] для реализации последовательных логических функций и поиска таблиц. Логические функции реализуются посредством программируемой памяти,
 
которая также контролирует соединения коммутационных цепей, таким образом, FPGA не нужно явно выполнять логическую операцию после того, как она
 
которая также контролирует соединения коммутационных цепей, таким образом, FPGA не нужно явно выполнять логическую операцию после того, как она
 
запрограммирована.  Современные FPGA, как правило, используют SoC подход для интеграции ядра процесса, коммуникационного ядра, и
 
запрограммирована.  Современные FPGA, как правило, используют SoC подход для интеграции ядра процесса, коммуникационного ядра, и
 
память на одной микросхеме. FPGA вендоры, такие как [https://en.wikipedia.org/wiki/Xilinx Xilinx] и [https://en.wikipedia.org/wiki/Altera Altera], создали множество программного обеспечения для облегчения программирования на FPGA. В то время как
 
память на одной микросхеме. FPGA вендоры, такие как [https://en.wikipedia.org/wiki/Xilinx Xilinx] и [https://en.wikipedia.org/wiki/Altera Altera], создали множество программного обеспечения для облегчения программирования на FPGA. В то время как
традиционное программирование для FPGA требует знаний о цифровых схемах и языка описания оборудования (HDL), сейчас оно движется в сторону создания схем высокого уровня (HLS). Существует пять основных категорий инструментов HLS,
+
традиционное программирование для FPGA требует знаний о цифровых схемах и языка описания оборудования (HDL), сейчас оно движется в сторону создания схем высокого уровня(HLS). Существует пять основных категорий инструментов HLS,
 
но для мобильного глубокого обучения наиболее актуален фреймворк параллельных вычислений [https://ru.wikipedia.org/wiki/OpenCL OpenCL]. OpenCL {{---}} это язык основанный на C
 
но для мобильного глубокого обучения наиболее актуален фреймворк параллельных вычислений [https://ru.wikipedia.org/wiki/OpenCL OpenCL]. OpenCL {{---}} это язык основанный на C
 
и являющийся открытой, стандартизированной основой для ускорения алгоритмов. Программы, написанные на OpenCL, могут быть выполнены
 
и являющийся открытой, стандартизированной основой для ускорения алгоритмов. Программы, написанные на OpenCL, могут быть выполнены
Строка 143: Строка 124:
  
  
ASIC {{---}} интегральная схема конкретно под поставленную задачу. Примером можем служить интегральная схема реализующая необходимую нейросеть. За счёт этого, энергопотребление становится меньше, а скорость работы операций выше по сравнению с CPU, GPU и FPGA. Также, большинство вычислительных узлов может работать параллельно, только зависимости по данным и неравномерность вычислений на разных уровнях сети могут помешать постоянно задействовать все [https://en.wikipedia.org/wiki/Arithmetic_logic_unit ALU]. Самым большим недостатком является потеря настраиваемости сети, так как настрока параметров будет связана с изменением интегральной схемы. На текущее время, существует множество ASIC, разработанных для нейронных сетей, например [https://en.wikipedia.org/wiki/Tensor_Processing_Unit TPU] разработанная Google специально для нейросетевого машинного обучения.
+
ASIC (Application-Specific Integrated Circuit) - интегральная схема конкретно под поставленную задачу. Примером можем служить интегральная схема реализующая необходимую нейросеть. За счёт этого, энергопотребление становится меньше, а скорость работы операций выше по сравнению с CPU, GPU и FPGA.Также, большинство вычислительных узлов может работать параллельно, только зависимости по данным и неравномерность вычислений на разных уровнях сети могут помешать постоянно задействовать все [https://en.wikipedia.org/wiki/Arithmetic_logic_unit ALU]. Самым большим недостатком является потеря настраиваемости сети, так как настрока параметров будет связана с изменением интегральной схемы. На текущее время, существует множество ASIC, разработанных для нейронных сетей, например [https://en.wikipedia.org/wiki/Tensor_Processing_Unit TPU] разработанная специально для нейросетевого машинного обучения Google.
  
 
[[Файл:ASIC.jpeg|800px|thumb|center| Рисунок 4. ASIC. [https://habr.com/ru/post/455353/ Источник]]]
 
[[Файл:ASIC.jpeg|800px|thumb|center| Рисунок 4. ASIC. [https://habr.com/ru/post/455353/ Источник]]]
Строка 155: Строка 136:
 
CPU более энергозатратны. ASIC могут быть гораздо более энергоэффективными, так как аппаратное обеспечение изготовлено специально для
 
CPU более энергозатратны. ASIC могут быть гораздо более энергоэффективными, так как аппаратное обеспечение изготовлено специально для
 
некоторых вычислений. Тем не менее, проектирование и разработка микросхем ASIC может занять очень много времени. Таким образом, ASIC используется только тогда, когда модель фиксирована и требуются низкие затраты энергии. FPGA предлагает компромисс между энергопотреблением, точностью прогнозирования и скоростью разработки системы.
 
некоторых вычислений. Тем не менее, проектирование и разработка микросхем ASIC может занять очень много времени. Таким образом, ASIC используется только тогда, когда модель фиксирована и требуются низкие затраты энергии. FPGA предлагает компромисс между энергопотреблением, точностью прогнозирования и скоростью разработки системы.
 
== Вес современных нейронных сетей ==
 
 
В нынешних реалиях глубокие нейронные сети могут весить порядка сотен мегабайт, в то же время современные фреймворки, например, MobileNet позволяют строить нейросети значительно меньшего размера при небольшой потере точности, такие сети отлично подходят для мобильных устройств. Результаты использования MobileNet приведены в сравнении с другими нейросетями приведены в таблице ниже.
 
 
{| class="wikitable" style="width=50%"
 
! Модель || Размер входа || Размер параметров || Размер признаков || Метод || Флопс || Тип модели || Набор данных
 
|-
 
| [https://github.com/albanie/convnet-burden/blob/master/reports/rfcn-res50-pascal.md rfcn-res50-pascal] || 600 x 850 || 122 MB || 1 GB || [https://arxiv.org/abs/1605.06409 r-fcn] || 79 GFLOPS || [https://arxiv.org/abs/1512.03385 resnet50] || [http://host.robots.ox.ac.uk/pascal/VOC/ pascal VOC]
 
|-
 
| [https://github.com/albanie/convnet-burden/blob/master/reports/rfcn-res101-pascal.md rfcn-res101-pascal] || 600 x 850 || 194 MB || 2 GB || [https://arxiv.org/abs/1605.06409 r-fcn] || 117 GFLOPS || [https://arxiv.org/abs/1512.03385 resnet101] || [http://host.robots.ox.ac.uk/pascal/VOC/ pascal VOC]
 
|-
 
| [https://github.com/albanie/convnet-burden/blob/master/reports/ssd-pascal-vggvd-300.md ssd-pascal-vggvd-300] || 300 x 300 || 100 MB || 116 MB || [https://link.springer.com/chapter/10.1007%2F978-3-319-46448-0_2 ssd] || 31 GFLOPS || [https://arxiv.org/abs/1409.1556 vvgd] || [http://host.robots.ox.ac.uk/pascal/VOC/ pascal VOC]
 
|-
 
| [https://github.com/albanie/convnet-burden/blob/master/reports/ssd-pascal-vggvd-512.md ssd-pascal-vggvd-512] || 512 x 512 || 104 MB || 337 MB || [https://link.springer.com/chapter/10.1007%2F978-3-319-46448-0_2 ssd] || 91 GFLOPS || [https://arxiv.org/abs/1409.1556 vvgd] || [http://host.robots.ox.ac.uk/pascal/VOC/ pascal VOC]
 
|-
 
| [https://github.com/albanie/convnet-burden/blob/master/reports/ssd-pascal-mobilenet-ft.md ssd-pascal-mobilenet-ft] || 300 x 300 || 22 MB || 37 MB || [https://link.springer.com/chapter/10.1007%2F978-3-319-46448-0_2 ssd] || 1 GFLOPS ||  [https://arxiv.org/abs/1704.04861 mobilenets] || [http://host.robots.ox.ac.uk/pascal/VOC/ pascal VOC]
 
|-
 
| [https://github.com/albanie/convnet-burden/blob/master/reports/faster-rcnn-vggvd-pascal.md aster-rcnn-vggvd-pascal] || 600 x 850 || 523 MB || 600 MB || [http://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks faster-rcnn] || 172 GFLOPS || [https://arxiv.org/abs/1409.1556 vvgd] || [http://host.robots.ox.ac.uk/pascal/VOC/ pascal VOC]
 
|-
 
|}
 
  
 
== Процессоры ==
 
== Процессоры ==
Строка 211: Строка 171:
 
|}
 
|}
  
Разработчики данного процессора делают упор на сверточные сети, однако там встречаются почти все известные модели машинного обучения. Обеспечивает аппаратное ускорение ML-моделей на связке DSP + GPU + CPU для Snapdragon чипов. Далее приведен листинг на языке C++, который принимает объект класса выборки, преобразует их в модель и сохраняет их в файл:  
+
Разработчики данного процессора делают упор на сверточные сети, однако там встречаются почти все известные модели машинного обучения. Обеспечивает аппаратное ускорение ML-моделей на связке DSP + GPU + CPU для Snapdragon чипов. Далее приведен листинг на языке C++, который принимает на вход данные, преобразует их в модель и сохраняет их в файл:  
 
  #include "zdl.h"
 
  #include "zdl.h"
 
   
 
   
Строка 252: Строка 212:
 
     }
 
     }
 
   }
 
   }
 +
Короткий пример использования ITensors
  
 
===Huawei Ai===
 
===Huawei Ai===
  
Этот процессор заточен под [[Компьютерное_зрение|компьютерное зрение]], распознавание речи и [[Обработка_естественного_языка|интерпретацию естественного языка]].
+
Этот процессор заточен под [[Компьютерное_зрение|компьютерное зрение]], распознавание речи и [[Обработка_естественного_языка|интерпретацию естественного языка]]
  
 
Как можно заметить по картинке, здесь нет никакого обучения, мы берем уже обученную модель и пользуемся ею. Огромное количество классов, предназначенных для различных задач. HiAI SDK дает доступ к заточенному под операции над матрицами NPU. Таким образом, оптимизируются нейронные сети, которые используют матрицы.
 
Как можно заметить по картинке, здесь нет никакого обучения, мы берем уже обученную модель и пользуемся ею. Огромное количество классов, предназначенных для различных задач. HiAI SDK дает доступ к заточенному под операции над матрицами NPU. Таким образом, оптимизируются нейронные сети, которые используют матрицы.
  
Пример кода на Java, распознающего, одинаковые ли люди изображены на картинке.
+
Пример кода, распознающего, одинаковые ли люди изображены на картинке.
  
 
  import com.huawei.hiai.vision.face.FaceComparator;// Класс для сравнивания лиц
 
  import com.huawei.hiai.vision.face.FaceComparator;// Класс для сравнивания лиц
Строка 295: Строка 256:
 
===NeuroPilot SDK===
 
===NeuroPilot SDK===
  
Процессор заточен под [[Определение_положения_человека|отслеживание поз множества людей]], [[Задача_нахождения_объектов_на_изображении|идентификацию множества объектов]], [https://www.kdnuggets.com/2018/10/semantic-segmentation-wiki-applications-resources.html семантическую сегментацию], [[Сегментация_изображений|обработку изображений]]. NeuroPilot SDK позволяет решать ML-задачи с помощью APU + GPU. APU заточен под модели глубоких нейронных сетей. Обеспечивает аппаратное ускорение для [[Сверточные_нейронные_сети|свертки]], полносвязных нейронных сетей (то есть [[Практики_реализации_нейронных_сетей|нейронных сетей без дропаута]]), функции активации.
+
Процессор заточен под [[Задача_нахождения_объектов_на_изображении|отслеживание поз множества людей]], идентификацию множества объектов, [https://www.kdnuggets.com/2018/10/semantic-segmentation-wiki-applications-resources.html семантическую сегментацию], [[Сегментация_изображений|обработку изображений]]. NeuroPilot SDK позволяет решать ML-задачи с помощью APU + GPU. APU заточен под модели глубоких нейронных сетей. Обеспечивает аппаратное ускорение для [[Сверточные_нейронные_сети|свертки]], полностью связанных нейронных сетей (то есть [[Практики_реализации_нейронных_сетей|нейронных сетей без дропаута]]), функции активации.
  
 
У данной разработки есть три пути развития:  
 
У данной разработки есть три пути развития:  
Строка 312: Строка 273:
  
 
Данное программное обеспечение сильно разделено. У нас есть специальная MLModel, которая изначально принимает изображения, и сохраняет их в компактном виде, сохраняя там же уже натренированную сеть (см. рисунок 5).
 
Данное программное обеспечение сильно разделено. У нас есть специальная MLModel, которая изначально принимает изображения, и сохраняет их в компактном виде, сохраняя там же уже натренированную сеть (см. рисунок 5).
Затем данный пакет передается уже программе, и она обрабатывает его. Пример кода на Swift:
+
Затем данный пакет передается уже программе на Swift, и она обрабатывает его. Пример кода:
  
  
Строка 340: Строка 301:
 
  }
 
  }
  
Для работы с кодом и результатами у Apple есть рекомендуется программа XCode (пример работы см. рисунок 6)
+
Для работы с кодом и результатами с CoreSDK у Apple есть рекомендуется программа XCode (пример работы см. рисунок 6)
  
 
==См. также==
 
==См. также==
Строка 349: Строка 310:
 
* [[Распознавание_речи|Распознавание речи]]
 
* [[Распознавание_речи|Распознавание речи]]
 
* [[Компьютерное_зрение|Компьютерное зрение]]
 
* [[Компьютерное_зрение|Компьютерное зрение]]
 
==Примечания==
 
 
[[Категория: Машинное обучение]] [[Категория: Мобильная разработка]]
 
  
 
==Источники информации==
 
==Источники информации==
Строка 358: Строка 315:
 
# [https://habr.com/ru/company/dataart/blog/500956/ habr.com] - железо и процессоры.
 
# [https://habr.com/ru/company/dataart/blog/500956/ habr.com] - железо и процессоры.
 
# [https://www.researchgate.net/publication/331533064_Deep_Learning_on_Mobile_Devices-A_Review researchgate.net] - Deep Learning on Mobile Devices, Yunbin Deng
 
# [https://www.researchgate.net/publication/331533064_Deep_Learning_on_Mobile_Devices-A_Review researchgate.net] - Deep Learning on Mobile Devices, Yunbin Deng
# [https://habr.com/ru/post/455353/ habr.com] - аппаратное ускорение нейронных сетей
+
# [https://habr.com/ru/post/455353/habr.com habr.com] - аппаратное ускорение нейронных сетей
 
# [https://habr.com/ru/company/mobileup/blog/332500/ habr.com] - краткий обзор и пример на CoreML.
 
# [https://habr.com/ru/company/mobileup/blog/332500/ habr.com] - краткий обзор и пример на CoreML.
 
# [https://habr.com/ru/post/345268/ habr.com] - распознавание изображений.
 
# [https://habr.com/ru/post/345268/ habr.com] - распознавание изображений.
Строка 364: Строка 321:
 
# [https://habr.com/ru/post/237589/ habr.com] - использование Pocketsphinx.
 
# [https://habr.com/ru/post/237589/ habr.com] - использование Pocketsphinx.
 
# [https://www.osp.ru/os/2017/03/13052701 osp.ru] - глубинный анализ данных с сенсоров.
 
# [https://www.osp.ru/os/2017/03/13052701 osp.ru] - глубинный анализ данных с сенсоров.
 +
 +
==Примечания==
 +
 +
[[Категория: Машинное обучение]] [[Категория: Мобильная разработка]]

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: