Приложение для iOS и развертывание Skafos

Анонсированная в этом году на WWDC 2019 и новинка iOS 13 и macOS 10.15, возможность анализировать и классифицировать звук с помощью машинного обучения в Core ML 3!

Это вторая часть из серии, состоящей из двух частей. Часть 1: Обнаружение звуков птиц с помощью Create ML, CoreML3 и Skafos была введением в классификацию звука в Create ML. Мы обучили модель распознавать звуки птиц в аудиофайле или потоке. В этом посте мы интегрируем эту модель в пример приложения для iOS, используя Скафос для развертывания и мониторинга. Кто готов слушать птиц?

Начиная

В конце Части 1 мы закончили с моделью Core ML, показанной ниже. В оставшейся части этого поста мы будем работать над подключением этой модели к сопутствующему приложению для iOS.

Настройка Скафоса

Если у вас уже есть учетная запись Skafos и приложение, использующее модель классификации звуков, вы можете пропустить эти инструкции по настройке!

Создать учетную запись

Создайте новое приложение и модель

  • Создайте новую интеграцию приложения и назовите ее BirdDetector.
  • Внутри приложения создайте новую модель и назовите ее BirdSoundClassifier.
  • Щелкните вкладку «Управление».

Создание приложения и интеграция вашей модели

BirdDetector Настройка приложения

Для полной прозрачности, я не являюсь разработчиком iOS по профессии; Я инженер по машинному обучению. К счастью, создание приложения, использующего модель классификатора звука, довольно просто благодаря каркасам Core ML и SoundAnalysis от Apple. Мы поделились этим проектом, чтобы вы могли загрузить его на Github и использовать для выполнения этого руководства:

$ git clone [email protected]:skafos/BirdDetector.git
$ cd BirdDetector/

Используйте CocoaPods, чтобы установить Skafos iOS Framework, а затем откройте xcworkspace, чтобы запустить приложение в Xcode:

$ pod install --repo-update
$ open BirdDetector.xcworkspace/

После открытия вы должны увидеть несколько файлов, включая AppDelegate.swift и ViewController.swift. Это два файла, которые мы исследуем дальше.

Установить ключи среды

Skafos позволяет развертывать модели по беспроводной сети в ваших приложениях, управляемых двумя средами: Dev и Prod. Это означает, что вам не нужно повторно выпускать приложение в App Store, чтобы предоставить новую модель. Когда ваше приложение работает в режиме DEBUG (т. е. во время разработки или тестирования), Skafos отправит модель, развернутую в среде Dev. В противном случае Skafos отправит модель, развернутую в среде Prod. Таким образом, вы можете протестировать новую модель на подмножестве пользователей, прежде чем выпускать ее для всей своей пользовательской базы. В оставшейся части этого руководства мы будем обновлять только среду разработки, поскольку мы не будем выпускать это приложение в магазин приложений.

На вкладке Управление на панели инструментов Skafos вы можете увидеть две карты среды, которые изначально пусты:

Откройте файл AppDelegate.swift в XCode и найдите раздел, предлагающий ввести ключи среды. Это должно выглядеть примерно так:

Найдите два ключа среды на вкладке Интеграция на Панели инструментов Skafos и добавьте их сюда. Теперь приложение готово к доставке модели Скафоса!

Краткий обзор приложения

Затем откройте файл ViewController.swift. Мы не будем углубляться в подробности того, что здесь происходит под капотом, но я выделю несколько общих моментов, которые помогут вам при работе с базой кода:

  • Строки 17–23: мы создаем экземпляр исходной модели Core ML BirdSoundClassifier(), звуковой движок и анализатор сигналов, обратный вызов результатов и очередь обработки.
  • Строка 26: при первой загрузке представления пользовательского интерфейса мы вызываем Skafos, чтобы проверить и обновить модель в приложении, если вы развернули новую на панели управления. Это зафиксировано в функции reloadModel() в строке 51.
  • Строка 40: когда появляется представление пользовательского интерфейса, мы немедленно начинаем записывать звук с датчиков на вашем устройстве iOS. Это подробно описано в функции startCapturingAudio() в строке 67.
  • Строка 120: когда модель классифицирует входящий звук как hasbird или nobird, наблюдатель обрабатывает этот результат и передает его пользовательскому интерфейсу, чтобы вы могли его увидеть. В строке 105 даже есть забавная анимация.

Сборка и запуск

Хватит объяснений! Давайте поиграем с нашим приложением для мониторинга звука птиц!

  • Подключите устройство iOS с версией 13+ ИЛИ используйте одно из устройств-симуляторов, перечисленных в верхнем левом углу окна Xcode:

  • Нажмите кнопку воспроизведения в верхнем левом углу, чтобы построить и запустить. Создание приложения может занять несколько минут.

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

Не увлекайтесь сложным UI / UX :). С моей точки зрения, для этого варианта использования лучше, потому что вы можете заменить любую другую модель классификатора звука Create ML, и приложение по-прежнему будет работать так же, как вы видите здесь, но с другими метками классов. За стандартизацию! Завершив интеграцию машинного обучения, вы можете изменять приложение по своему усмотрению.

Доставка новых моделей

Рекомендуется поставлять начальную модель с приложением для iOS. Приложение BirdDetector поставляется с файлом .mlmodel, который содержит спецификацию Core ML для нашего звукового классификатора, обученного в Части 1. Однако модели машинного обучения необходимо периодически переобучать, поскольку мы собираем дополнительные данные и улучшаем понимание мира вокруг нас. К счастью, мы можем использовать Скафос для управления, развертывания и мониторинга обновленных моделей по воздуху.

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

Загрузить в Личном кабинете

На вкладке «Управление» вы увидите раздел внизу, предназначенный для перетаскивания модели. Заархивируйте свой .mlmodel файл, перетащите его на экран и введите описание.

Загрузить с помощью Python SDK

Установите наш Python SDK и используйте его для загрузки артефакта модели. Как правило, этот метод наиболее полезен, если вы обучаете модель в среде Python, поэтому я не буду здесь подробно останавливаться. Но прочтите остальную документацию, если вы заинтересованы в использовании этого инструмента!

Загрузить прямо из Create ML

Create ML предлагает вам несколько полезных способов распространения ваших моделей Core ML, нажав кнопку «Поделиться», включая Skafos!

Чтобы включить эту функцию, просто скачайте наше приложение для обмена листами и следуйте инструкциям. Это позволит вам загружать модели прямо из Create ML в Skafos.

Переподготовка моделей

Зачем вам переучивать другую модель?

Отличный вопрос. На то есть несколько причин. Допустим, вы хотели улучшить эту модель, фактически классифицируя виды птиц, а не просто указывая присутствие птичьих криков. Хотя вам нужно будет найти другой набор данных, чем тот, который мы использовали, вы все равно можете использовать Create ML для построения модели, как описано в Части 1. Create ML разработан для такого рода вещей и позволяет чрезвычайно легко выполнять итерацию, поэтому вы можете опробовать различные комбинации данных и параметров, чтобы получить лучшую модель для имеющегося набора данных.

Теперь у вас есть сквозное соединение конвейера классификатора звука. У вас есть модель, приложение для iOS и удобный способ обновления моделей в вашем приложении при переподготовке. Покорите мир!