Рубрики
Без рубрики

Обучение моего робота с Tensorflow

Обучите свой прелестный Anki Cozmo, чтобы найти повседневные объекты в своем доме с Tensorflow и Floydhub. Помечено Python, Tensorflow, машинное обучение, глубокое обучение.

Если вы похожи на меня, то вы сделали что-нибудь, чтобы иметь свой собственный R2-D2 или BB-8 роботизированный приятель. Просто представьте, что очаровательные приключения, которые вы бы вместе!

Я рад сообщить, что Anki Cozmo это дроид, который вы искали.

COZMO – большая личность, упакованная в зрелище живой площадью. Вам не нужно знать, как код для игры с COZMO – Но если вы сделаете – Тогда COZMO имеет еще более феноминальную космическую силу.

В этом посте я собираюсь показать вам, как вы можете преподавать свой собственный COZMO, чтобы распознать повседневные объекты, используя перенос обучения с Tensorflow на Floydhub.

Настройка

Установите COZMO Python SDK Создайте новый VirtualenV и клонировать COZMO-Tensorflow Проект к вашей местной машине.

virtualenv ~/.env/cozmo -p python3
source ~/.env/cozmo/bin/activate
git clone https://www.github.com/whatrocks/cozmo-tensorflow
cd cozmo-tensorflow
pip install -r requirements.txt

Next Up – Войдите в CLI Floydhub (зарегистрируйтесь на A Бесплатная учетная запись здесь ). Если вам нужно установить Floydhub CLI, просто Проверьте это руководство В нашем Документация Отказ

floyd login

1. Используйте COZMO для генерации данных тренировки

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

Начнем с банки вкусных завышенных целей Seltzer. Поместите COZMO прямо перед бакой Seltzer. Убедитесь, что у вашего робота достаточно места, чтобы вращаться вокруг банка, пока он фотографирует. Обязательно введите имя объекта, который COZMO фотографирует, когда вы запускаете COZMO-PAPARAZZI скрипт

python3 cozmo-paparazzi.py seltzer

Повторите этот шаг для столько объектов (ярлыков), как вы хотите, чтобы COZMO учиться! Теперь вы должны увидеть все свои ярлыки изображения как подкаталоги в рамках /data папка вашего локального каталога.

Загрузка набора данных в Floydhub

Давайте загружем наши изображения в Floydhub как Floydhub DataSet Отказ Это позволит нам установить эти изображения во время нашей предстоящей модели обучения и модели, обслуживающей рабочие места на Floydhub. Набор данных на Floydhub – это простой способ для ваших учебных заданий для справки набора данных, управляемого версиями.

cd data
floyd data init cozmo-images
floyd data upload

В нашем случае я назвал этот набор данных изображений COZMO-изображения Отказ Я сделал это Общественный набор данных Поэтому не стесняйтесь использовать его в своих собственных проектах COZMO!

2. Обучение нашей модели на Floydhub

И теперь начинается веселье. Во-первых, убедитесь, что вы находитесь в корневом каталоге проекта, а затем инициализируйте проект Floydhub, чтобы мы могли тренировать нашу модель на одном из полностью сконфигурированных машин GPU Floydhub Tensorflow.

Боковая заметка – если это последнее предложение звучало как горстка, то просто знайте, что Floydhub позаботится о настройке и оптимизации всего на вашей облачной машине, чтобы она была готова к вашим экспериментам глубокого обучения GPU. Вы можете указать точное глубокую структуру обучения, которую вы хотели бы использовать – будь то Tensorflow 1.4 или Pytorch 0.3 или Больше – и Floydhub убедитесь, что ваша машина имеет все, что вам нужно немедленно начать тренировку.

Хорошо, вернемся к бизнесу, давайте инициализируем наш проект:

floyd init cozmo-tensorflow

Теперь мы готовы выбросить глубокую учебную работу на Floydhub.

Несколько вещей, чтобы примечание:

  • Мы будем выполнять простую передачу обучения с Модель Placeion V3 предоставляется Google. Вместо того, чтобы обучать модель с нуля, мы можем начать с этой предварительно обученной модели, а затем просто поменяйте свой последний слой, чтобы мы могли научить его распознавать объекты, которые мы хотим, чтобы COZMO учиться. Трансфер обучение – это очень полезная техника, и вы можете прочитать больше об этом на Веб-сайт Tensorflow Отказ
  • Мы собираемся установить набор изображений, который COZMO создан с --дата Флаг на /данные Справочник на нашем машине Floydhub.
  • Я включаю тензорную доску для этой работы с --tensorboard Флаг, чтобы я мог визуально следить за процессом обучения моей работы
  • Я отредактировал retrain.py Скрипт ( Первоначально предоставлен Tensorflow Team ) Чтобы написать свой вывод на /выход каталог. Это супер важно, когда вы используете Floydhub, потому что рабочие места Floydhub всегда хранят свои выходы в /Вывод каталог). В нашем случае мы будем сохранять нашу переподготовку модели ImageNet и связанные с ними учебные метки для работы /Вывод папка.
floyd run \
  --gpu \
  --data whatrocks/datasets/cozmo-images:data \
  --tensorboard \
  'python retrain.py --image_dir /data'

Вот и все! Нет необходимости настроить что-либо на AWS или установить Tensorflow или иметь дело с драйверами GPU или что-то в этом роде. (Если вы платите пристальное внимание, я не включал флаг --en в моей команде работы – это потому, что среда floydhub по умолчанию включает в себя Tensorflow 1.1.0 и KERAS 2.0.6, и это все, что мне нужно для мой тренинг 😎).

Как только ваша работа будет завершена, вы сможете увидеть вашу недавно переподготовку в Выходной справочник вашей работы Отказ

Я рекомендую преобразовать вывод вашей работы в автономный набор данных Floydhub, чтобы вам было легче установить нашу переподготовку в будущих рабочих местах (которые мы будем делать на следующем шаге). Вы можете сделать это, нажав кнопку «Создать набор данных» на выходной странице работы задания. Проверьте набор данных под названием COZMO-ImageNet Чтобы увидеть мою переподготовку и этикетки.

3. Подключение COZMO в нашу переподготовку

Мы можем проверить нашу недавно переподготовку модель, запустив другую работу на Floydhub, которая:

Модель-сервировка Экспериментальная функция на Floydhub – мы хотели бы услышать ваш Обратная связь на Twitter Действительно Для того, чтобы эта функция для работы вам нужно будет включить простое приложение для колбы, называемое app.py в коде вашего проекта.

Для нашего текущего проекта я создал простое приложение Flask, которое получит изображение из COZMO в запросе на почту, оцените его, используя модель, которую мы обучались на нашем последнем шаге, а затем ответили результатами модели. COZMO может затем использовать результаты, чтобы определить, смотрит ли он или нет на определенный объект.

floyd run \
  --data whatrocks/datasets/cozmo-imagenet:model \
  --mode serve

Наконец, давайте запустим наш cozmo-detective.py Скрипт, чтобы попросить COZMO передвигаться по офису, чтобы найти определенный объект.

python3 cozmo-detective.py toothpaste

Каждый раз, когда COZMO движется, робот отправит черно-белое изображение того, что он видел на конечную точку модели на Floydhub – и Floydhub будет запускать модель к этому образу, возвращая следующую полезную нагрузку с «догадками COZMO» и сколько времени потребовалось вычислить догадки.

{
  'answer': 
    {
      'plant': 0.022327899932861328, 
      'seltzer': 0.9057837128639221, 
      'toothpaste': 0.07188836485147476
    }, 
  'seconds': 0.947
}

Если COZMO, по крайней мере, на 80% уверенно, что он смотрит на вопрос о том, что робот будет побежать на него!

Как только Cozmo обнаружил все ваши пропущенные объекты, не забудьте выключить свою службу на Floydhub.

Новая надежда

Это волшебный мир, COZMO, OL ‘Buddy … Давайте пойдем на изучение!

Я хочу посмотреть, что вы и ваш COZMO могут найти вместе с небольшой помощью ваших друзей в Floydhub. Поделитесь своими открытиями с нами на Twitter Действительно

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

Этот проект является расширением @nheidloff ‘s Проект зрительного распознавания COZMO и Google Code Labs Tensorflow для проекта поэтов Отказ Я также написал об этом проекте на моем Персональный сайт – За исключением намного большей ссылки на короткое замыкание и легенду о Зельде.

Оригинал: “https://dev.to/whatrocks/teaching-my-robot-with-tensorflow-3i1a”