Форматы входных данных: числа, строки, изображения

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


Числовые данные

Числовые данные в ml5.js обычно используются для регрессии, классификации и обучения простых нейронных сетей. Основные форматы:

  • Одиночные значения – представляют собой одно число, передаваемое модели. Используются для задач, где каждый пример описывается одной величиной (например, температура, возраст).

  • Массивы чисел – чаще всего применяются для описания векторов признаков. Например, для задачи предсказания стоимости недвижимости один объект может содержать массив [площадь, количество комнат, этаж, удалённость от центра].

Для передачи чисел в ml5.js чаще всего применяются обычные массивы JavaScript:

const features = [180, 75, 30]; // рост, вес, возраст
model.predict(features).then(result => console.log(result));

Ключевой момент: массивы должны иметь одинаковую длину для всех примеров, иначе модель не сможет корректно обучиться или сделать предсказание.


Строковые данные

Строки применяются для работы с текстом: классификация, генерация текста, анализ тональности. В ml5.js используются следующие подходы:

  • Непосредственная передача строки в модели типа LSTM или RNN. Модель сама выполняет токенизацию и векторизацию текста:
const inputText = "Сегодня солнечная погода";
charRNN.predict(inputText, 100, (err, result) => {
    console.log(result.sample);
});
  • Массивы токенов или слов для более точного контроля над предобработкой текста. Например, текст может быть преобразован в массив числовых идентификаторов слов перед подачей в модель.

Особенности работы с текстом:

  • Модели обучаются на фиксированной длине последовательностей. При передаче строки длиннее обучающей выборки необходимо либо обрезать текст, либо разбить его на сегменты.
  • Строки могут содержать любые символы, но предобученные модели чаще всего работают с латиницей или ограниченным набором символов. Для других алфавитов требуется дополнительная токенизация.

Изображения

Изображения являются одним из наиболее часто используемых типов данных в ml5.js благодаря встроенным моделям для распознавания объектов и стилей. Основные форматы входных изображений:

  • HTMLImageElement (<img>), HTMLVideoElement (<video>), HTMLCanvasElement (<canvas>). Это стандартные DOM-элементы, которые можно передавать напрямую в модель:
const image = document.getElementById('inputImage');
imageClassifier.classify(image).then(results => console.log(results));
  • p5.js объекты. В связке с p5.js изображение может быть загружено через loadImage() и передано в модель напрямую.

  • Массивы пикселей (Uint8Array или Float32Array). При использовании кастомных моделей иногда требуется нормализовать значения пикселей в диапазоне [0, 1] или [-1, 1] в зависимости от архитектуры нейросети.

Ключевые моменты при работе с изображениями:

  1. Размер изображения: большинство предобученных моделей ожидают определённый размер (например, 224×224 пикселя). Изображение необходимо масштабировать перед подачей в модель.
  2. Цветовое пространство: модели обычно работают с RGB. Чёрно-белые изображения нужно конвертировать в RGB или использовать специализированные модели.
  3. Нормализация данных: значения пикселей часто делят на 255 для приведения к диапазону [0, 1], что повышает стабильность предсказаний.

Общие принципы работы с входными данными

  • Консистентность – все объекты должны иметь одинаковую структуру данных. Для чисел и массивов – одинаковая длина векторов, для изображений – одинаковый размер и количество каналов.
  • Предобработка – нормализация, токенизация или масштабирование повышает качество работы моделей.
  • Совместимость с моделью – тип входных данных должен соответствовать типу данных, на котором обучена модель. Передача строки в модель для изображений или наоборот приведёт к ошибке.

Использование корректного формата данных позволяет эффективно интегрировать модели ml5.js в интерактивные веб-приложения и добиваться высокой точности предсказаний без дополнительной ручной обработки.