Мягкий запуск продукта AI / ML в качестве индивидуального основателя

Технический подробный обзор того, как я создал Print Nanny, который использует компьютерное зрение для автоматического обнаружения сбоев 3D-печати.

Технические подробности о том, как я создал Print Nanny, который использует компьютерное зрение для автоматического обнаружения сбоев 3D-печати. Я расскажу о каждом этапе разработки: от минимально жизнеспособного прототипа до масштабирования для удовлетворения потребностей клиентов.

Запуск продукта на базе AI / ML в качестве индивидуального учредителя - рискованная ставка. Вот как я максимально использовал свое ограниченное время, определив успешную стратегию машинного обучения и используя правильные сервисы Google Cloud Platform на каждом этапе.

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

Большинство моих отпечатков были безупречными! Иногда, однако, отпечаток не получался впечатляющим. Я установил OctoPrint, веб-интерфейс с открытым исходным кодом для 3D-принтеров. Я часто заглядывал в прямую трансляцию с камеры, задаваясь вопросом, было ли это небольшим вкусом того, что новые родители чувствовали в отношении высокотехнологичных радионяней.

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

Стратегия машинного обучения

Разработка продукта на основе искусственного интеллекта / машинного обучения - это дорогостоящее предложение, поскольку существует высокий риск неудачи до получения какой-либо отдачи от инвестиций.

Согласно глобальному исследованию, проведенному Rackspace в январе 2021 года, 87% проектов в области науки о данных никогда не попадают в производство.

Пытаясь преодолеть трудности, опрошенные компании тратили в среднем 1,06 миллиона долларов на свои инициативы по машинному обучению. Как основатель-одиночка, я не был готов потратить на свою идею больше миллиона долларов!

К счастью, я участвую в программе Google's Developer Expert, в которой полно людей, которые любят делиться своими знаниями со всем миром. Вступая в этот проект, у меня было хорошее представление о том, как быстро и недорого создать прототип, передав недифференцированную тяжелую работу на аутсорсинг нужным облачным сервисам.

Что делает машинное обучение рискованным?

Среди 1870 участников исследования Rackspace, вот краткое изложение текущего использования, планов на будущее и причин неудач, о которых сообщалось в проектах AI / ML.

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

  • Все о данных: низкое качество данных, недоступность данных, недостаточное управление данными и неспособность структурировать / интегрировать данные значимым образом.
  • Не хватает опыта и квалифицированных талантов. Хорошая новость: вы можете развивать навыки и интуицию по ходу дела. Все, о чем я расскажу в этой статье, можно достичь без ученой степени!
  • Отсутствие инфраструктуры для поддержки AI / ML. Я покажу вам, как постепенно создавать инфраструктуру данных и машинного обучения с нуля.
  • Проблемы измерения ценности искусственного интеллекта / машинного обучения для бизнеса.

Я покажу вам, как я увеличиваю шансы (шанс успеха меньше 1:10) с помощью плана быстрой итерации, который стал возможным благодаря использованию правильных технологий и выбора продуктов на каждой стадии зрелости ML. -питательный продукт.

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

Давайте нырнем прямо сейчас. 🤓

Определите проблемы и возможности

В чем проблема? 3D-принтеры чертовски ненадежны.

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

Сегодня 3D-печать все шире используется в мелкомасштабном производстве. Эта тенденция усилилась, когда существующие производственные линии поставок прекратились из-за пандемии COVID-19.

ненадежный инструмент - неудобство для любителя, но потенциальная опасность для небольшого производственного предприятия!

В следующем разделе я обрисую проблемы в этой области и подчеркну возможности их решения с помощью продукта AI / ML.

Что делает 3D-принтеры такими ненадежными?

  1. На выполнение заданий печати уходит часов (иногда дней), и они могут завершиться ошибкой в ​​любой момент. Требует почти постоянного наблюдения со стороны человека.
  2. Отсутствует управление с обратной связью надежных промышленных производственных процессов.
  3. Наиболее распространенная форма 3D-печати включает нагрев материала до расплавления при температуре 190–220 ° C. Если оставить его без присмотра, существует опасность возгорания!
  4. Человеческая ошибка - важный фактор! Инструкции, считываемые 3D-принтерами, создаются из настраиваемых вручную параметров с помощью приложения, известного как «слайсер». Развитие интуиции для правильных настроек требует времени и терпения.

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

Проблема: Интернет ненадежен! 😱

Большинство мелких производителей работают из:

  1. Дом (подвал, гараж, сарай)
  2. Склад или производственное помещение

Во многих частях мира постоянный поток загрузки с нескольких камер может перегрузить интернет-соединение - поддерживать это может оказаться невозможным или экономически невыгодным.

Чтобы гарантировать, что Print Nanny по-прежнему будет работать в автономном режиме, в прототипе я поставил в приоритет вывод на устройстве. Это позволило мне протестировать идею с нулевой инфраструктурой, обслуживающей модели, и использовать свои исследования в области компьютерного зрения для небольших устройств.

Проблема: даже отказы ненадежны 🤪

Нет двух одинаковых неудач 3D-печати! Для этого есть ряд причин, в том числе:

  1. Комплектующие для принтера собираются вручную. Одна и та же модель принтера может давать совершенно разные результаты! Для печати однородных партий требуется экспертная калибровка.
  2. Большинство материалов для 3D-печати гигроскопичны (водопоглощающие), что приводит к колебаниям партий и дефектам, столь же изменчивым, как и погода! 🌧️
  3. Множество настроек для разрезания 3D-модели на инструкции движения X-Y-Z. Выбор правильных настроек требует проб и ошибок для достижения наилучших результатов.

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

Любой ценой, чтобы оставаться подвижным, мне нужно было избегать тактики, которая обременяла меня определенной категорией технического долга машинного обучения:

Изменение всего меняет все (CACE)

CACE - это принцип, предложенный в статье Скрытый технический долг в системах машинного обучения, относящийся к запутанности результатов машинного обучения в системе.

Например, рассмотрим систему, которая использует в модели элементы x1,… xn. Если мы изменим входное распределение значений в x1, важность, веса или использование оставшихся n - 1 функций могут измениться. Это верно независимо от того, полностью ли модель переобучается в пакетном режиме или разрешается адаптироваться в режиме онлайн. Добавление новой функции xn + 1 может вызвать аналогичные изменения, как и удаление любой функции xj. Никакие входы никогда не бывают независимыми.

Чжэн недавно провел убедительное сравнение абстракций государственного машинного обучения с состоянием технологии баз данных [17], отметив, что ничто в литературе по машинному обучению не приближается к успеху реляционной базы данных как базовой абстракции.

Скрытый технический долг в системах машинного обучения

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

Прототип пути

В рамках разработки надежного продукта и стратегии машинного обучения я «рассмотрел прототип до скейтборда». Я использую это высказывание, чтобы описать простейший вид транспорта из пункта А (проблема) в пункт Б (куда хочет отправиться покупатель).

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

Минимум крутого продукта

Вместо создания полнофункционального веб-приложения я разработал прототип как плагин для OctoPrint. OctoPrint предоставляет веб-интерфейс для 3D-принтеров, элементов управления веб-камерой и процветающего сообщества.

Я выделил минимально отличный продукт до следующего:

  1. Обучите модель распознавать следующие метки объектов:
    {печать, рафт, спагетти, адгезия, сопло}
  2. Разверните код предиктора в Raspberry Pi через плагин OctoPrint
  3. Рассчитайте тенденции оценки состояния здоровья
  4. Автоматически останавливать нездоровые задания на печать.
  5. Оставьте отзыв о решениях Print Nanny 👍👎

Необработанный набор данных

Получение данных с маркировкой качества - самая большая начальная стоимость любого проекта машинного обучения! В моем случае энтузиасты часто загружают на YouTube видеоролики с замедленной съемкой.

Разблокирована дополнительная эффективность: я выяснил, как автоматически предлагать ограничивающие рамки в инструменте маркировки виртуальных объектов, используя модель TensorFlow.js (экспортированную из AutoML. Зрение).

Я объясняю, как это сделать, в статье Автоматизация аннотации изображений при небольшом бюджете. 🧠

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

Подготовка данных для Cloud AutoML

Я часто использую продукты Google AutoML на этапе прототипа.

Эти продукты предназначены для людей с ограниченными знаниями в области машинного обучения, поэтому опытные специалисты по данным могут быть не знакомы с этой линейкой продуктов.

Зачем кому-то платить за AutoML, если они могут самостоятельно обучить модели машинного обучения?

Вот почему я предпочитаю использовать AutoML для каждого прототипа:

  • Авансовая и фиксированная стоимость, что намного дешевле, чем «найм себя».

Вот сколько я заплатил за обучение базовой модели Print Nanny.

  • Возврат инвестиций - это легко! По моему опыту, производительность алгоритма / модели - лишь один из многих факторов, влияющих на успех информационного продукта. Выявление других факторов до использования экспертных ресурсов по машинному обучению является важной частью выбора успешных проектов.
  • Быстрые результаты - у меня была готовая к производству модель менее чем за 24 часа, оптимизированная и проанализированная для работы на периферийных устройствах или мобильных устройствах.

Помимо Cloud AutoML Vision, Google предоставляет услуги AutoML для:

Таблицы - набор методов моделирования (линейные, градиентные деревья, нейронные сети, ансамбли) с автоматизированным проектированием признаков.

Перевод - обучение пользовательским моделям перевода.

Видеоаналитика - классифицируйте видеокадры и сегментируйте их по ярлыкам.

Естественный язык

  • Классификация - предсказать категорию / метку
  • Entity Extraction - извлекайте данные из счетов, меню ресторана, налоговых документов, визитных карточек, резюме и других структурированных документов.
  • Анализ настроений - выявление преобладающего эмоционального мнения.

Базовая модель обучения

Cloud AutoML Vision Edge обучает модель TensorFlow, оптимизированную для периферийных / мобильных устройств. Под капотом поиска по архитектуре и параметрам AutoML используется обучение с подкреплением, чтобы найти идеальный компромисс между скоростью и точностью.

Посмотрите MnasNet: На пути к автоматизации проектирования мобильных моделей машинного обучения и MnasNet: платформенно-зависимый поиск нейронной архитектуры для мобильных устройств, если вы хотите узнать больше о внутренней работе облака. AutoML Vision!

Базовые показатели модели

Вы можете получить метрики оценки модели AutoML через API, что является удобным способом сравнения моделей-кандидатов с базовыми показателями. Ознакомьтесь с этой сутью, чтобы увидеть мой полный пример.

from google.cloud import automl
from google.protobuf.json_format import MessageToDict
import pandas as pd

project_id = "your-project-id"
model_id = "your-automl-model-id"

# Initialize AutoMl API Client
client = automl.AutoMlClient()

# Get the full path of the model
model_full_id = client.model_path(project_id, "us-central1", model_id)

# Get all evaluation metrics for model
eval_metrics = client.list_model_evaluations(parent=model_full_id, filter="")

# Deserialize from protobuf to dict
eval_metrics = [MessageToDict(e._pb) for e in eval_metrics ]

# Initialize a Pandas DataFrame
df = pd.DataFrame(eval_metrics)

Улучшение результатов инженера

Возможно, вы помните, что моя базовая модель имела коэффициент отзыва 75% при доверительной вероятности 0,5 и пороге IoU. Другими словами, моя модель не смогла идентифицировать примерно 1/4 объекта в тестовой выборке. Реальная производительность была еще хуже! 😬

К счастью, передача обучения базовой модели в AutoML дала мне время хорошенько подумать о выигрышной стратегии для постоянного улучшения модели. После первоначального мозгового штурма я сократил свои варианты до двух (очень разных) стратегий.

Вариант №1 - Двоичный классификатор

Первый вариант - обучить двоичный классификатор предсказывать, будет ли печать неудачной в любой момент времени: предсказать {сбой, не сбой}.

Решение о предупреждении основывается на оценке достоверности прогноза. 🔔

Вариант №2 - Ансамбль временных рядов

Второй вариант обучает детектор объектов с несколькими этикетками сочетанию позитивных, негативных и нейронных этикеток, таких как {печать, сопло, блистер}.

Затем на основе достоверности каждого обнаруженного объекта рассчитывается взвешенная оценка состояния.

Наконец, полином (линия тренда) подходит для просмотра временных рядов оценок состояния здоровья.

Решение о предупреждении основывается на направлении наклона полинома и расстоянии от точек пересечения. 🔔

Двоичная классификация считается привет миром компьютерного зрения, с множеством примеров использования набора данных MNIST (классификация рукописных цифр). Мой личный фаворит - fashion mnist, который вы можете изучить в записной книжке Colab.

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

Я разрабатываю совершенно новый информационный продукт. Чтобы справиться с первоначальной производственной горкой, я хочу сразу развернуть модель и начать измерение / улучшение производительности по сравнению с реальными данными.

Если я оптимизирую для быстрой итерации и улучшения, какой подход должен Я беру?

Большинство ** специалистов по данным и инженеров по машинному обучению проголосовали за вариант 1!

** Исследование ожидает экспертной оценки и ожидает решения 🤣

Против мудрости толпы: почему я решил реализовать вариант 2 как часть моей успешной стратегии машинного обучения?

Вариант 1. Изменение чего-либо меняет все (CACE)

Напомним, двоичный классификатор предсказывает, является ли печать неудачной в любой момент времени: предсказать {сбой, а не сбой}.

Модель учится кодировать сложный результат, который имеет много детерминант в обучающем наборе (и многие другие, еще не замеченные моделью).

Чтобы улучшить эту модель, я могу использовать только несколько рычагов:

  • Вес образца / этикетки
  • Гиперпараметры оптимизатора, такие как скорость обучения
  • Добавить синтетические и / или дополненные данные

Изменение любого из вышеперечисленных изменяет все результаты решения!

Вариант 2 - Комплексное понимание данных

У второго варианта больше движущихся частей, но также больше возможностей для самоанализа данных и каждого смоделированного результата.

Компоненты:

  1. Детектор объектов с несколькими метками (MnasNet или MobileNet + Single-shot Detector).
  2. Оценка состояния здоровья, взвешенная сумма достоверности детектора.
  3. Подгоните полином (линия тренда) к временному ряду оценки состояния здоровья.

Вместо ответа на один сложный вопрос этот подход строит алгоритм из серии простых вопросов:

  • Какие объекты находятся в этой рамке изображения?
  • Где расположены объекты?
  • Как доверие к «дефектным» ярлыкам сравнивается с нейтральными или положительными ярлыками? Этот показатель является показателем состояния печати.
  • Где находится точка невозврата для невыполненного задания на печать?
  • Постоянна ли оценка состояния здоровья? Увеличивается? Уменьшение? Насколько быстро (наклон) и когда это изменение начало происходить? (y-перехват).
  • Как частота дискретизации влияет на точность ансамбля? Могу ли я обойтись без отправки меньшего количества кадров по сети?

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

Дополнительная информация имеет неоценимое значение для моей миссии по постоянному совершенствованию и укреплению доверия к результатам моей модели.

Изображения автора. Надежность обнаружения обозначена меткой (слева). Временной ряд оценки здоровья (в центре). Подгонка полинома к совокупному ряду оценок состояния здоровья (справа).

Разверните прототип

Первый прототип Print Nanny был запущен менее чем через 2 недели разработки и получил всемирное распространение в считанные дни. 🤯

Я использовал следующие инструменты, технологический стек и сервисы для развертывания проверки концепции:

  • Django, Django Rest Framework и Cookiecutter Django для создания веб-приложения, управляющего закрытыми подписками и приглашениями на бета-тестирование.
  • Тема Hyper Bootstrap для целевой страницы и элементов пользовательского интерфейса.
  • Google Kubernetes Engine для размещения веб-приложения.
  • Cloud SQL для PostgreSQL для базы данных с автоматическим резервным копированием.
  • Google Memorystore (Redis) для встроенного кеша Django.
  • Google Cloud AutoML Vision for Edge для обучения недорогой и простой модели компьютерного зрения, оптимизированной для мобильных устройств.
  • Модель TensorFlow Lite, развернутая на Raspberry Pi, упакована как плагин для OctoPrint.

Совет: изучение инфраструктуры веб-приложений позволит вам проверить свои идеи перед целевой аудиторией. Two Scoops of Django Дэниела Фелдроя и Одри Фолдрой - серьезное руководство по фреймворку Django. 💜

Зеленое освещение следующей фазы

Через две недели (и за несколько сотен долларов) я смог представить свой прототип аудитории и начать сбор отзывов. Несколько метрик тщеславия:

  • 3,7 тыс. Посещений целевой страницы
  • 2k заявок на закрытое бета-тестирование
  • Отправлено 200 приглашений (первая когорта)
  • 100 в среднем ежедневно активные пользователи - вау!

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

Уточните результаты, добавьте ценность

Следующий раздел посвящен укреплению доверия к результатам машинного обучения путем уточнения результатов модели и обработки крайних случаев.

Создавайте для постоянного совершенствования

Для обозначения возможностей обучения используются два механизма обратной связи:

  1. При обнаружении сбоя: «Принт-няня сделала хороший звонок?» 👍 👎
  2. Любое видео можно пометить для дополнительного просмотра 🚩

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

Я отслеживаю совокупную статистику по набору данных в целом и отмеченных примерах.

  • Среднее, медиана, режим, стандартное отклонение каналов RGB
  • Субъективная яркость (также называемая относительной яркостью).
  • Средняя средняя точность в отношении пересечения над объединением, с разрывами на этикетку, а также между прямоугольниками с небольшими размерами (1/10 общей площади) и большими прямоугольниками (1/4 Общая площадь).
    mAP iou = 0,5, mAP iou = 0,75, mAP small / large

Это позволяет мне понять, работает ли моя модель недостаточно для определенных условий освещения, цветов нити накала и размера ограничивающей рамки - с разбивкой по этикетке.

Ограничить область интереса

Вскоре после того, как я развернул прототип, я понял ценность гибкости моего ансамбля обнаружения отказов. Когда я разрабатывал модель, я не думал, что большинство 3D-принтеров построено из компонентов, напечатанных на 3D-принтере. 🤦‍♀️

Я добавил возможность выбирать область интереса и исключать объекты за пределами этой области из расчетов оценки состояния.

Получение данных телеметрии

Как я перешел от прогнозов на устройстве к версионным наборам данных, аккуратно организованным в Google Cloud Storage?

Сначала я обрабатывал события телеметрии с помощью REST API. Оказывается, REST не так хорош для непрерывного потока событий через ненадежное соединение. К счастью, существует протокол MQTT, предназначенный для случаев использования Интернета вещей.

Я использовал Cloud IoT Core для управления идентификацией устройства Raspberry Pi и установления двусторонней связи устройства с использованием протокола сообщений MQTT.

MQTT описывает три уровня качества обслуживания (QoS):

  1. Сообщение доставлено не более одного раза - QoS 0
  2. Сообщение доставлено хотя бы один раз - QoS 1
  3. Сообщение доставлено ровно один раз - QoS 2

Примечание: Cloud IoT не поддерживает QoS 2!

Помимо упрощения управления инфраструктурой MQTT (например, балансировкой нагрузки и горизонтальным масштабированием), Cloud IoT Core обеспечивает еще большую ценность:

  • Реестр устройств (база данных метаданных устройств и отпечатков пальцев).
  • Аутентификация JSON Web Token (JWT) с подписью HMAC.
  • Сообщения MQTT автоматически повторно публикуются в темах Pub ​​/ Sub.

После того, как сообщения телеметрии устройства достигнут Cloud Pub / Sub, возможна интеграция со многими другими облачными компонентами и сервисами.

Конвейеры данных и озеро данных

Конвейеры данных Print Nanny написаны с помощью Apache Beam, который поддерживает запись заданий как потоковой, так и пакетной обработки. Beam - это модель программирования высокого уровня, в которой SDK реализованы на Java (лучший вариант), Python (готовится к работе) и Go (альфа). Beam API используется для построения переносимого графа параллельных задач.

Для Beam существует множество механизмов выполнения (называемых бегунами). Cloud Dataflow - это управляемый бегун с автоматическим горизонтальным автоматическим масштабированием. Я разрабатываю конвейеры с помощью связанного с Beam DirectRunner локально, а затем отправляю образ контейнера для использования с Cloud Dataflow.

Я мог бы легко продолжить целую публикацию в блоге (или даже серию) о начале работы с Apache Beam! Прокомментируйте ниже, если вам интересно узнать больше о написании конвейеров машинного обучения с помощью TensorFlow Extended (TFX) и Apache Beam.

Трубопроводы текут в озеро данных.

Мой первый конвейер (слева) довольно большой - ничего страшного! По мере необходимости я буду разбивать его на более общие компоненты.

Ключевые функции этого конвейера:

  • Чтение данных телеметрии устройства из Pub / Sub
  • Создание окон и расширение потока данных с помощью калибровки устройства и других метаданных
  • Упаковка TF Records и паркетных столов
  • Запись необработанных входных данных и оконных представлений в Google Cloud Storage
  • Поддержание агрегированных показателей в оконных представлениях потока данных.

Справа - более простой конвейер, который преобразует файлы .jpg в видео .mp4.

Дополнительное обучение модели AutoML

При увеличении масштаба прототипа я пытаюсь понять качественное влияние повышения производительности с точки зрения моих клиентов. Без этого якоря легко попасть в ловушку ранней оптимизации.

По моему опыту, улучшение показателя эффективности - это простая часть, а сложная часть - это понимание:

  • Является ли показатель эффективности / метрика хорошим показателем фактической или предполагаемой ценности?
  • Если нет… почему этот показатель не отражает реальную ценность? Могу ли я сформулировать и изучить более выразительную метрику?
  • Когда я увижу убывающую отдачу от вложенного времени?

Я снова использовал Cloud AutoML Vision здесь, на этот раз обучаясь на смешанном наборе данных из бета-когорты и YouTube.

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

Обучение детектора объектов

Наконец-то! Здесь начинается настоящее машинное обучение, верно?

TensorFlow Модель сада

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

Репо разделено на коллекции в зависимости от уровня стабильности и поддержки:

  • Официально. Официально поддерживается, поддерживается и постоянно обновляется с помощью новейших API-интерфейсов TensorFlow 2 от TensorFlow, оптимизированных для удобочитаемости и производительности.
  • "Исследовать". Реализован и поддерживается исследователями, TensorFlow 1 и 2.
  • "Сообщество". Кураторский список внешних репозиториев Github.

К вашему сведению: официальная структура TensorFlow для видения проходит обновление!

Приведенные ниже примеры относятся к API обнаружения объектов, который является основой коллекции исследований.

API обнаружения объектов

TensorFlow 2 Detection Model Zoo - это набор предварительно обученных моделей (набор данных COCO2017). Веса - полезная точка инициализации, даже если ваша проблема находится за пределами области, охватываемой COCO.

Моя предпочтительная архитектура для логического вывода на устройстве с Raspberry Pi - это извлечение / магистраль функций MobileNet с головкой детектора одиночного выстрела. Операции, используемые в них, совместимы со средой выполнения TensorFlow Lite.

Ознакомьтесь с Руководством по быстрому запуску, если хотите увидеть примеры в действии.

API обнаружения объектов использует файлы protobuf для настройки обучения и оценки (на фото ниже). Помимо гиперпараметров, в конфиге можно указать операции увеличения данных (выделены ниже). Ожидается, что TFRecords будут входными данными.

Регистрация параметров, показателей, артефактов с помощью MLFlow

Ваши эксперименты и лабораторные заметки похожи на этот беспорядок из записной книжки? Вот как выглядело мое отслеживание экспериментов, когда я портировал AnyNet из Модельного зоопарка Facebook Research в TensorFlow 2 / Keras.

Я начал использовать MLFlow для регистрации гиперпараметров модели, версий кода, показателей и хранения обучающих артефактов в центральном репозитории. это изменило мою жизнь!

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

Спасибо за чтение! 🌻

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

Я надеюсь, что, объясняя свой процесс принятия решений, я продемонстрирую, где эти фундаментальные навыки поддерживают успешную продуктовую стратегию AI / ML.

  • Архитектура данных - все, что связано с перемещением, преобразованием, хранением и доступностью данных.
  • Программная инженерия
  • Инфраструктура и облачная инженерия
  • Статистическое моделирование

Вас интересует закрытая бета-версия Print Nanny?

Щелкните здесь, чтобы запросить бета-приглашение

Ищете другие практические примеры машинного обучения для Raspberry Pi и других небольших устройств? Подпишитесь на мою рассылку, чтобы получать новые обучающие материалы и подробные инструкции прямо на свой почтовый ящик.

Первоначально опубликовано на сайте bitsy.ai.

Google поддержал эту работу, предоставив кредит Google Cloud