Если вы похожи на меня, то вы сделали что-нибудь, чтобы иметь свой собственный 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”