Это статья об основах обучения нейронной сети для различения двух (или более) различных наборов пользовательских изображений и последующего использования обученной модели для создания игры «Камень-ножницы-бумага».

Дайте компьютеру алгоритм, и вы накормите его на день, научите компьютер алгоритму, и вы кормите его на всю жизнь. - Неизвестно, 2019 г.

ПРЕАМБУЛА

Модуль 3 в школе FlatIron посвящен обучению нас Vanilla JS. Я хотел сделать проект по машинному обучению для модуля 3 и решил сыграть в игру Rock Paper Scissors где-то во время модуля 1.

Я понятия не имел, как я это сделаю, но решил поверить, что разберусь. Честно говоря, я несколько раз чуть не сдавался, и только благодаря поддержке и поощрению моих замечательных технических тренеров (TCF), Марью и Вачира я упорно продолжал заниматься после 20000 th неудачная попытка научить компьютер распознавать 3 простых жеста. В конце концов, это того стоило, и я очень доволен тем, что в итоге создал.

ИНСТРУМЕНТЫ

Я использовал ml5.js, p5.js и большую помощь из этих руководств (и моих TCF), чтобы добраться до конечной цели.

ml5.js - это библиотека, которая «обеспечивает доступ к алгоритмам и моделям машинного обучения в браузере, создавая поверх TensorFlow.js без каких-либо других внешних зависимостей.». Он делает машинное обучение невероятно доступным и содержит отличную документацию и примеры.

p5.js - это библиотека, которая помогает вам рисовать в браузере, и я использовал ее для видео аспектов приложения.

КАК ОБУЧИТЬ ДРАКОНА

Действия, которые необходимо выполнить:

  1. Если у вас, как и у меня, нет предыдущего опыта работы с машинным обучением, я настоятельно рекомендую вам ознакомиться с Учебниками Coding Train ML. Это займет у вас около часа, но даст вам четкое представление о том, что необходимо сделать.
  2. Обучите и протестируйте модель и сохраните ее.
  3. Используйте обученную модель в классификаторе.
  4. Используйте классификацию из ml5 как ход «игрока» и генерируйте случайный ход для приложения.
  5. Напишите алгоритм, определяющий, выигрывает игрок или проигрывает.
  6. Боб твой дядя.

ML5 ИЗВЛЕЧЕНИЕ ХАРАКТЕРИСТИК И КЛАССИФИКАТОР

Для обучения модели нам необходимо использовать ml5 Классификатор с экстрактором признаков. Код работает почти так же, как описано в примере, однако я потратил часы, пытаясь выяснить, как научить модель распознавать 3 изображения, а не только 2, как показано в примере кода. Для этого нужно явно указать количество изображений, которые вы хотите тренировать:

mobilenet = ml5.featureExtractor('MobileNet', modelReady)
mobilenet.numClasses = 3 // this is the magic line
classifier = mobilenet.classification(video, videoReady)

Остальной код можно найти здесь. (Код выше является частью train.js)

Я обошел кампус и попросил нескольких человек помочь с обучением алгоритма. Разнообразие - ключ к успеху. Я убедился, что у меня есть люди с разным оттенком кожи, и обучил модель, чтобы у нее было достаточно размера выборки.

После того, как вы обучили и протестировали модель, вы можете сохранить ее, чтобы использовать с классификатором видео ml5. Файлы модели сохраняются как model.json и model.weights.bin. Бинарный файл необязательно вызывать явно, а файл json загружается в классификатор:

function modelReady () {
  console.log('Loading Custom Model...')
  classifier.load('./src/model.json ', customModelReady)
}

Вот и все! Основная часть работы была сделана. Я уже написал алгоритм для определения игрового процесса и подсчета очков, и я просто подключил его к ответу классификатора и случайно сгенерированному движению компьютера.

Я также создал Rails API для хранения имени пользователя, результатов игры и действий, выполненных компьютером и игроком. Я использовал это для создания таблицы лидеров.

Надеюсь, это поможет вам начать собственное приключение по машинному обучению. Это было разочаровывающе, но в конечном итоге действительно полезно. Ссылки, которые я предоставил, помогут вам пройти долгий путь. Если у вас возникнут проблемы, оставьте комментарий, и я постараюсь помочь, если знаю ответ. 🤘🏽 📜 ✂️