Машинная игра

Преамбула

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

Набег Amazon на рынок компьютерного зрения некоторое время назад назывался DeepLens. Мне показалось странным, что они объединили как программную, так и аппаратную часть продукта (камера; обратите внимание, камера подходит только для использования в помещении). Какого черта вы включили камеру в такой продукт!?! Несколько месяцев спустя Goog предоставил доступ к своему универсальному бэкенду ML; Облачное видение Google на фоне AutoML было отдано тебе.

Что ж, после использования Google Cloud Vision и сторонней наружной веб-камеры, чтобы собрать систему, которая отправляет мне SMS, когда одна из крышек мебели срывается ветром (разбивка проекта ниже), я теперь точно понимаю, почему Amazon объединил их. Я только хотел бы, чтобы они предоставили версию предложения камеры для наружного применения. Неудивительно, что изображения, которые вы загружаете в серверную часть, являются настолько неотъемлемой частью процесса обучения/прогнозирования, что очень важно тесно связать их (молодцы менеджеры по продуктам Amazon, которые поняли это раньше). Я считаю, что Amazon также делает встроенные прогнозы моделей, что звучит круто, но я не понимаю необходимости этой функции. Я думаю, что Goog поступил правильно, просто разгрузив оценочный бит в сеть (очевидно, их метод работы) через поиск данных изображения по URL. Конечно, есть приложения для встроенного исполнения, но они кажутся более специализированными, чем требуется для большинства вариантов использования.

Проект

Я накрываю уличную мебель на террасе на крыше чехлами, чтобы защитить их от непогоды (Колорадо довольно суров к погодным условиям). Там часто очень ветрено, и одеяло регулярно сдувает. Проблема в том, что я не так часто выбираюсь наверх, как хотелось бы, а мебель можно оставить на некоторое время открытой, подвергая ее палящему солнцу. Итак, я хотел получить уведомление, когда их сдуло, чтобы я мог восстановить их. Очевидно, что традиционные решения для синтаксического анализа/распознавания изображений были бы ужасно ненадежными и трудными в использовании для достижения этой цели, так что используйте ML. Я хотел, чтобы наружная веб-камера делала фотографии палубы, а Google Cloud Vision определял с высокой точностью (90%+), было ли сорвано покрытие, и если да, то отправлял мне текстовое сообщение.

Кусочки

Ввод

  • Уличная IP-камера Amcrest — устанавливается снаружи и направлена ​​на палубную мебель. Аппаратное обеспечение камеры для этого великолепно, прошивка/встроенный HTTP-сервер/приложение ужасны и застряли в конце 1990-х годов. если у кого-то есть опыт работы с более качественной наружной IP-камерой (нет, Nest изначально не работает), сообщите мне.

Узлы обработки

  • (LAN) — сервер Raspberry Pi (ОС NOOBS) — репозиторий изображений для камеры (файловая система) и сервер (HTTP) для обслуживания последнего изображения.
  • (WAN) — Дроплет Digital Ocean (Ubuntu) — размещает приложение

Программное обеспечение

  • мое приложение/драйвер — скрипт Python (код здесь), который cron запускает каждые десять минут на дроплете.
  • FTP-сервер — vsftpd. дизайн прошивки веб-камеры стар как грязь и использует FTP только для моментальных снимков.
  • сценарий bash, который cron запускается каждые десять минут для копирования/переименования последнего снимка изображения на HTTP-сервер, чтобы основное приложение могло получить к нему доступ.
  • Google Cloud Vision — используется, чтобы предсказать, есть ли на изображении моей палубной мебели какая-либо крышка.

Вывод

  • Twilio API — использовалось для отправки мне SMS-сообщения, когда крышка была сорвана.

Обучение

Процесс сборки модели на чужом движке невероятно прост. Если вы можете себе это представить… компьютер может это смоделировать и предсказать.

Маркировка данных изображения является серьезной проблемой и требует очень много времени. В то время как прогнозирование/выполнение модели происходит очень быстро после того, как вы ее обучили, процесс маркировки, необходимый для обучения, ужасно громоздкий. Похоже, кто-то вышел на рынок, чтобы начать делать за нас тяжелую работу; Я попробую CloudFactory в следующий раз, когда мне нужно будет построить модель (что довольно скоро, учитывая, что конфигурация моего покрытия уже изменилась).

Мы собираемся очень быстро ускориться с нуля до шестидесяти с помощью приложений для изображений, поддерживаемых машинным обучением. Я представляю поставщиков приложений, предлагающих решения для интеграции с существующими настройками веб-камеры, которые позволяют потребителям легко обучать модель любому визуальному сценарию, о котором они хотят получать уведомления (кошке не хватает еды, растению не хватает воды, дверь гаража открыта, велосипед не заперт, дальше и дальше и дальше). Конечно, вы можете применить всю эту логику и к аудио. Будущее будет крутым!

Что может быть лучше

  • Я должен свернуть файловый / FTP-сервер и сервер приложений либо на дроплет на основе глобальной сети, либо на сервер Pi на основе локальной сети.
  • Веб-камера. Хотя аппаратное обеспечение отличное, программное обеспечение камеры поддерживает только SMB/FTP для хранения моментальных снимков. Если бы камера поддерживала моментальные снимки через HTTP, я мог бы полностью отказаться от этой временной структуры промежуточного хранения изображений. В этом сообщении на форуме может быть радость… Мне нужно покопаться и посмотреть; https://amcrest.com/forum/technical-discussion-f3/url-cgi-http-commands--t248.html
  • Мне нужно отформатировать SMS-сообщение, чтобы оно соответствовало форм-фактору Apple Watch.
  • Мне нужно собирать/отбирать изображения через некоторое время.
  • Насколько я могу судить, модели данных Google Cloud Vision не могут быть дополнены *после* их обучения. Я хотел бы добавить измененные данные изображения без перестройки/переобучения всей модели. Это кажется довольно большой ошибкой. Все сценарии прогнозирования изображений ML, о которых я могу думать, будут иметь тенденцию к желанию дополнять/добавлять новые данные изображения с течением времени без необходимости поддерживать исходные данные исходной модели.

Первоначально опубликовано на one.valeski.org 26 декабря 2018 г.