Машинное обучение на мобильных телефонах
Задача Машинного обучения на мобильных телефонах — очень популярная область машинного обучения. Огромное количество мобильных приложений каким либо образом используют машинное обучение.
Соцсети, редакторы фото и видео, карты, игры и даже ваш плеер — все это использует машинное обучение.
Содержание
Задачи машинного обучения на телефонах
Кастомизация
Конечно же, самое первое, что может прийти в голову про применения машинного обучения на телефонах — это кастомизация. Подбор музыки, новостей, любого контента — все это достигается путем обучения машинного обучения. Приложение получает ваши персональные данные и, используя данные старых пользователей, показывает вам то, что понравилось людям с наиболее подходящими данными. Однако такая работа связана с очень большими вычислениями, и, чаще всего, выполняется на сторонних серверах. Самая частая модель для классификации изображений - CNN, однако часто даже такая классификация является излишней.
Распознавание фото, текста и видео
Основная статья: Распознавание текста.
Основная статья: Компьютерное зрение.
Распознавание фото и видео на мобильных телефонах мало чем отличается от обычных компьютерных методов, только цели немного другие. Например, некоторые мобильные телефоны используют Face ID, которое узнает владельца через фронтальную камеру. Есть приложения для определения возраста, пола.
Если же рассмотреть распознавание текста, то и у него тоже есть большое количество применений — сканирование чеков, кредитные карты, документы, переводить в реальном времени иностранные слова.
Существует несколько известных библиотек для работы с изображениями на мобильных приложениях: Tesseract, OpenCV, Mobile Vision Google, ML Kit. Изображения легко передавать через сеть, так что можно обрабатывать их и на веб-серверах.
Распознавание звука
Основная статья: Распознавание речи.
Распознавание звука и его парсинг тоже очень важная задача машинного обучения. Голосовые помощники, голосовой ввод, умные дома — все это нужно для нашей жизни.
Для распознавания речи есть библиотека pocketsphinx
Анализ данных с сенсоров
Достаточно важная область жизни человека и его связи с телефоном - датчики и сенсоры. В мире их существует огромное количество, и, к сожалению, большинство из них работает недостаточно точно. Но это исправляет машинное обучение, уточняя данные с сенсоров. Это важно для людей с опасными для жизни болезнями, например, может произойти сердечный приступ, и процессор лучше любого человека скажет, что это он, и, считав местоположение с навигатора, вызовет скорую помощь в тот же момент.
Навигация
Запуск машинного обучения на мобильных телефонах
CPU
Хотя процессоры могут быть громоздкими для построения современных моделей глубокого обучения, когда учебные данные очень большие, они являются приемлемым вариантом для обучения или адаптации моделей к небольшим объемам данных, а также для развертывания предварительно построенных моделей глубокого обучения. Очевидным преимуществом развертывания глубокого обучения на CPU является то, что процессоры доступны для большинства планшетов и мобильных телефонов. Кроме того, эти устройства часто поставляются с мощными процессорами и имеют широкий выбор встроенных датчиков. Это означает отсутствие дополнительных затрат на аппаратное обеспечение и таким образом обеспечение большего количества приложений ИИ для потенциально огромного рынка. Приложения в реальном времени могут быть реализованы на стандартном процессоре с минимальными затратами или без дополнительных усилий. Кроме того CPU в соверменных мобильных устройвах столь же мощны как и в компьютерах, что позволяет достачно эффективно их использовать для данных целей.
GPU
FPGA
ASIC и TPU
Процессоры
Из-за медлительности телефонов развитие машинного обучения на телефонах началось совсем недавно. Раньше все данные хранились на серверах компаний, выбор модели был очень широк, и, с точки зрения безопасности, это было плохо. Однако теперь IT-гиганты, такие, как Google, переходят на модель федеративное обучение. Понятно, что обычный телефон не может себе позволить обучаться на тяжелых моделях, таких как, например, нейронные сети. Однако существуют модели, которые потребляют очень малое количество памяти и времени на обучение. В основном именно они используются, когда нет соединения с сервером.
Однако машинное обучение стало настолько актуальным, что производители процессоров задумались о том, что бы создавать процессоры, некоторые чипы которых заточены под задачи машинного обучения.
Существует огромное число процессоров для огромного числа задач, начиная от задачи линейной регрессии до задач глубокого обучения.
Ниже представлены примеры таких процессоров
Qualcomm Neural Processing SDK
Этот процессор заточен под работу с аудио и видео: распознавание речи, умная камера, очистка картинки от шума и подобное.
Разработчики данного процессора делают упор на CNN сети, однако там встречаются почти все известные модели машинного обучения.
void executeNetwork(std::unique_ptr<zdl::SNPE::SNPE>& snpe, std::unique_ptr<zdl::DlSystem::ITensor>& input, std::string OutputDir, int num) { static zdl::DlSystem::TensorMap outputTensorMap; snpe->execute(input.get(), outputTensorMap); zdl::DlSystem::StringList tensorNames = outputTensorMap.getTensorNames(); //Iterate through the output Tensor map, and print each output layer name std::for_each( tensorNames.begin(), tensorNames.end(), [&](const char* name) { std::ostringstream path; path << OutputDir << "/" << "Result_" << num << "/" << name << ".raw"; auto tensorPtr = outputTensorMap.getTensor(name); SaveITensor(path.str(), tensorPtr); }); } // The following is a partial snippet of the function void SaveITensor(const std::string& path, const zdl::DlSystem::ITensor* tensor) { ... std::ofstream os(path, std::ofstream::binary); if (!os) { std::cerr << "Failed to open output file for writing: " << path << "\n"; std::exit(EXIT_FAILURE); } for ( auto it = tensor->cbegin(); it != tensor->cend(); ++it ) { float f = *it; if (!os.write(reinterpret_cast<char*>(&f), sizeof(float))) { std::cerr << "Failed to write data to: " << path << "\n"; std::exit(EXIT_FAILURE); } } }
Короткий пример использования ITensors
Huawei Ai
Этот процессор заточен под компьютерное зрение, распознавание речи и интерпретацию естественного языка
Как можно заметить по картинке, здесь нет никакого обучения, мы берем уже обученную модель и пользуемся ею.
NeuroPilot SDK
Процессор заточен под отслеживание поз множества людей, идентификацию множества объектов, семантическую сегментацию, обработку изображений.
Samsung Neural SDK
Заточен под обработку матриц, которые часто встречаются в задачах машинного обучения. Гайд по установке и использованию
CoreML SDK
Создан для классификации объектов, звуков, движений, текста, табличных данных, обладает рекомендательной системой.