javascript42
Главная
Все учебники
Блог
Учебник ml5.js
Введение в ml5.js
Что такое ml5.js и зачем он нужен
Место ml5.js в экосистеме машинного обучения
Связь с TensorFlow.js
Требования к окружению и браузеру
Установка через CDN и npm
Структура проекта и подключение библиотеки
Первый запуск: проверка работоспособности
Основы работы с библиотекой
Архитектура ml5.js: как устроена библиотека изнутри
Асинхронность в ml5.js: callbacks, promises и async/await
Жизненный цикл модели: загрузка, готовность, предсказание
Обработка ошибок и отладка
Работа с объектом ml5 и его пространством имён
Совместная работа с p5.js
Совместная работа с vanilla JavaScript и другими фреймворками
Работа с изображениями и видео
Источники данных: изображения, веб-камера, видеофайлы
Объект p5.VideoCapture и HTMLVideoElement
Захват кадров и работа с потоком в реальном времени
Предобработка изображений перед подачей в модель
Работа с Canvas API совместно с ml5.js
Масштабирование, кадрирование и нормализация входных данных
Классификация изображений
Принцип работы классификатора изображений
MobileNet: архитектура и возможности
Загрузка и использование предобученной модели MobileNet
Интерпретация результатов: метки и уровень уверенности
Классификация статичного изображения
Классификация в реальном времени с веб-камеры
DoodleNet: распознавание рисунков
Создание собственного классификатора на основе Teachable Machine
Загрузка пользовательской модели из Google Teachable Machine
Настройка порога уверенности и фильтрация результатов
Transfer Learning и обучение на своих данных
Что такое transfer learning и как он работает в ml5.js
ml5.featureExtractor: принцип работы
Сбор обучающих примеров через веб-камеру
Обучение классификатора поверх MobileNet
Обучение регрессора поверх MobileNet
Параметры обучения: эпохи, learning rate, скрытые юниты
Сохранение обученной модели
Загрузка ранее сохранённой модели
Оценка качества обученной модели
Обнаружение объектов
Отличие классификации от детекции объектов
YOLO: принцип работы и реализация в ml5.js
CocoSsd: принцип работы и реализация в ml5.js
Получение ограничивающих рамок (bounding boxes)
Отрисовка результатов детекции на Canvas
Детекция в реальном времени
Производительность и оптимизация при детекции объектов
Фильтрация классов объектов
Распознавание поз тела
PoseNet: архитектура и ключевые точки тела
Загрузка и настройка PoseNet
Режимы работы: одиночная и множественная поза
Структура данных: skeleton и keypoints
Отрисовка скелета и ключевых точек
Отслеживание поз в реальном времени
Вычисление углов и расстояний между точками
MoveNet и BlazePose: более новые альтернативы
Применение данных о позе для управления интерфейсом
Распознавание рук
Handpose: обзор и возможности
Ключевые точки руки: структура данных
Загрузка и запуск Handpose
Отслеживание жестов в реальном времени
Вычисление жестов на основе геометрии пальцев
Совместное использование Handpose и PoseNet
Распознавание лиц и выражений
Детекция лица и ограничивающие рамки
Ключевые точки лица (landmarks)
Распознавание выражений лица
Определение возраста и пола
Отрисовка результатов поверх видеопотока
Работа с несколькими лицами одновременно
Производительность FaceApi и способы её улучшения
Сегментация тела
BodyPix: принцип работы и задачи сегментации
Сегментация персоны на фоне
Попиксельная классификация частей тела
Замена и размытие фона
Настройка параметров: stride, multiplier, outputStride
Применение масок к видеопотоку
Оптимизация BodyPix для работы в реальном времени
Обработка естественного языка
Обзор NLP-инструментов в ml5.js
Word2Vec: векторные представления слов
Загрузка предобученных векторов Word2Vec
Поиск похожих слов и аналогий
Вычисление близости слов
Sentiment: анализ тональности текста
Загрузка и настройка модели Sentiment
Интерпретация числового результата тональности
Генерация текста и работа с языковыми моделями
CharRNN: рекуррентные сети для генерации символов
Загрузка предобученной модели CharRNN
Параметры генерации: temperature, length, seed
Обучение собственной модели CharRNN
Подготовка текстового датасета
Потоковая генерация текста
Работа с кириллицей и нестандартными наборами символов
Генерация изображений
SketchRNN: генерация векторных рисунков
Загрузка моделей SketchRNN
Управление процессом генерации
Параметры temperature и длина последовательности
Интерактивная дорисовка пользовательских набросков
StyleTransfer: перенос художественного стиля
Загрузка модели стиля и изображения контента
Применение стиля к изображению и видео
Нейронные сети общего назначения
ml5.neuralNetwork: обзор и назначение
Типы задач: классификация, регрессия, генерация
Определение архитектуры сети вручную
Автоматическое определение архитектуры по данным
Подготовка и нормализация входных данных
Добавление обучающих примеров: addData
Обучение модели: train и параметры обучения
Коллбэки в процессе обучения: whileTraining, finishedTraining
Классификация новых примеров: classify
Регрессия на новых примерах: predict
Сохранение и загрузка модели нейронной сети
Работа с многомерными входами и выходами
Визуализация процесса обучения
Работа с данными и датасетами
Форматы входных данных: числа, строки, изображения
Загрузка данных из CSV и JSON
Нормализация и денормализация данных в ml5.neuralNetwork
Разбивка на обучающую и тестовую выборки
Балансировка классов в обучающем датасете
Аугментация данных для изображений
Работа с временными рядами
Производительность и оптимизация
Бэкенды TensorFlow.js: CPU, WebGL, WASM
Выбор и переключение бэкенда
Управление памятью и утечки тензоров
Throttling и регулировка частоты предсказаний
Влияние размера изображения на скорость обработки
Профилирование производительности в браузере
Оптимизация для мобильных устройств
Квантизация моделей
Сохранение и загрузка моделей
Форматы сохранения моделей в ml5.js
Сохранение модели в браузерное хранилище (IndexedDB)
Сохранение модели в файловую систему (downloads)
Загрузка модели из файла
Загрузка модели по URL
Конвертация моделей TensorFlow и Keras для использования в ml5.js
Версионирование и совместимость моделей
Интеграция с браузерными API
Доступ к медиаустройствам через MediaDevices API
Работа с несколькими камерами
Доступ к микрофону и аудиопотоку
Работа с File API для загрузки изображений пользователем
Drag-and-drop загрузка файлов
Использование OffscreenCanvas для оптимизации
Web Workers и ограничения ml5.js в них
Звук и аудио
SoundClassifier: классификация звуков
Загрузка модели SoundClassifier
Использование модели SpeechCommands
Обучение пользовательского классификатора звуков
PitchDetection: определение высоты тона
Подключение микрофона и аудиоисточников
Обработка аудио в реальном времени
Построение интерактивных приложений
Проектирование интерфейса для ML-приложений в браузере
Отображение результатов предсказания в реальном времени
Индикаторы загрузки моделей и состояний
Управление состоянием приложения при работе с моделями
Обработка краевых случаев: нет камеры, нет разрешений, медленное устройство
Доступность и UX при использовании ML в интерфейсе
Тестирование ML-приложений в браузере