Машинное обучение в браузере: использование предварительно обученных моделей

искусственный интеллект

В предыдущей статье "Распознавание рукописных цифр в браузере", об обучении модели сверточной нейронной сети в браузере распознавать рукописные цифры. Стоит отметить, что этот процесс обучения выполняется в браузере с использованием клиентских ресурсов.

Хотя видение TensorFlow.js заключается в том, что машинное обучение есть везде, даже на мобильных телефонах и встроенных устройствах, пока работает браузер, модели искусственного интеллекта можно обучать, но с учетом ограниченной вычислительной мощности мобильных телефонов и встроенных устройств. (хотя производительность мобильных телефонов продолжает стремительно расти), и более целесообразно, чтобы сложные модели искусственного интеллекта обучались на более мощных серверах. Более того, в настоящее время основное машинное обучение использует язык python.По оценкам, все не согласятся позволить большинству инженеров по машинному обучению перейти с python на js.

Если да, то в чем смысл запуска TensorFlow.js?

Эта проблема на самом деле похожа на TensorFlow Lite.Мы можем тренироваться на стороне сервера и использовать обученную модель для вывода на мобильном телефоне.Обычно для вывода не требуются такие мощные вычислительные мощности.

В этой статье мы рассмотрим, как загрузить предварительно обученную модель машинного обучения в TensorFlow.js для задач классификации изображений.

На официальном сайте TensorFlow посетитеwww.tensorflow.org/js/models/На этом веб-сайте вы можете увидеть, что существуют модели прогнозирования отношения в реальном времени, модели обнаружения целей, модели распознавания речи, модели классификации и т. д.:

Здесь мы выбираем модель MobileNets.MobileNets — это небольшие модели с малой задержкой и низким энергопотреблением для различных сценариев использования с ограниченными ресурсами, которые можно использовать для классификации, обнаружения, встраивания и сегментации, и они функционально аналогичны другим популярным крупномасштабным моделям (таким как Зарождение). MobileNets обеспечивают баланс между задержкой, размером и точностью.

Существует два сценария использования моделей MobileNets:

  1. Библиотека пакетов JS, которая напрямую вызывает модель MobileNets.
  2. Напишите собственный код для загрузки модели MobileNets в формате json.

Библиотека пакетов JS, которая напрямую вызывает модель MobileNets.

Библиотека инкапсуляции JS напрямую инкапсулирует модель MobileNets в объект JS. Мы вызываем метод объекта так же, как вызов общего объекта JS для завершения загрузки модели и вывода.

такие как доступGitHub.com/tensorflow/…, мы видим, что объект мобильной сети предоставляет два основных API:

mobilenet.load(
  version?: 1,
  alpha?: 0.25 | .50 | .75 | 1.0
)

параметр:

  • Версия: номер версии MobileNet. 1 означает MobileNet V1, 2 означает использование MobileNet V2. Значение по умолчанию — 1.
  • альфа: меньшая альфа снижает точность, но повышает производительность. Значение по умолчанию — 1,0.
model.classify(
  img: tf.Tensor3D | ImageData | HTMLImageElement |
      HTMLCanvasElement | HTMLVideoElement,
  topk?: number
)

параметр:

  • img: тензор или элемент изображения для классификации.
  • topk: Сколько Вероятностей вернется. Значение по умолчанию — 3.

Использование MobileNets в браузере довольно просто благодаря упакованной библиотеке JS:

<html>
  <head>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.1"> </script>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@1.0.0"> </script>
  </head>
  <body>
    <img id="img" src="cat.jpg"></img>
    <script>
      const img = document.getElementById('img');

      // Load the model.
      mobilenet.load().then(model => {
        // Classify the image.
        model.classify(img).then(predictions => {
          console.log('Predictions: ');
          console.log(predictions);
        });
      });
    </script>
  </body>
</html>

Уведомление:Код js здесь будет отправлен в хранилище Google для загрузки модели формата JSON MobileNets, и по каким-то необъяснимым причинам к нему нельзя получить доступ в Китае, пожалуйста, перейдите через стену самостоятельно.

Этот пример относительно прост в написании. Он выводит журнал из консоли браузера и отображает результаты. В браузере Chrome вы можете открыть инструменты разработчика для просмотра:

Загрузите модель MobileNets в формате json.

Использовать инкапсулированные JS-объекты действительно удобно, но при использовании собственных обученных моделей инкапсулированные объекты нам никто не предоставляет. В настоящее время нам нужно рассмотреть загрузку модели самостоятельно и вывести ее. В мире JS JSON является очень распространенным форматом обмена данными. TensorFlow.js также использует JSON в качестве формата модели, а также предоставляет инструменты для преобразования.

Изначально я хотел подробно написать, как загрузить модель MobileNets в формате json, но, поскольку JS-модель MobileNets размещена на сервере Google и недоступна в Китае, этот шаг здесь пропущен. В следующей статье я объясню, как преобразовать существующую модель TensorFlow в модель TensorFlow.js и загрузить ее, так что следите за обновлениями!

В приведенном выше примере есть полный код, нажмите, чтобы прочитать исходный текст, и перейдите к примеру кода, который я создал на github. Кроме того, вы также можете получить доступ непосредственно в своем браузере:Я Lego.club/love/index.contract…, испытайте машинное обучение прямо в браузере.

использованная литература:

  1. официальный сайт тензорфлоу

вы также можете прочитать

  1. Шаг за шагом, чтобы улучшить скорость распознавания рукописных цифр(1)(2)(3)
  2. Введение в TensorFlow.js
  3. Распознавание рукописных цифр в браузере

image