Ранее на этой неделе Джейкоб Маркс, доктор наук и инженер по машинному обучению в Voxel51, представил семинар Начало работы с FiftyOne. Этот семинар был первым в серии практических образовательных мероприятий, направленных на то, чтобы шаг за шагом показать вам, как использовать FiftyOne. В этом посте мы подводим итоги семинара, резюмируем вопросы и ответы на них, возникшие во время мероприятия, и сообщаем о предстоящих датах семинара на случай, если вы захотите присоединиться или поделиться ими с коллегами.

Подожди, а что такое FiftyOne?

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

Объявлено о новых мастер-классах!

Мы рады объявить даты и время проведения еще трех семинаров по началу работы с FiftyOne!

В дополнение к семинарам «Начало работы с FiftyOne» мы также создаем каталог продвинутых семинаров, которые познакомят вас не только с основами начала работы, но и с тем, как FiftyOne может улучшить и оптимизировать рабочие процессы компьютерного зрения. Следите за будущими объявлениями с расписанием дополнительных тем.

Итоги семинара

Мы создали семинар «Начало работы с FiftyOne», чтобы помочь вам лучше понять качество ваших наборов данных и моделей компьютерного зрения. Семинар представлял собой наполовину лекцию и наполовину лабораторную работу, чтобы вы получили четкое представление об основах набора инструментов, архитектуры и популярных рабочих процессов FiftyOne, а также узнали, как установить FiftyOne, работать с Python SDK и приложением и выполнять основные задачи, такие как импорт наборов данных, создание представлений и извлечение информации из ваших данных и моделей.

Лекция: Познакомьтесь с основами

Джейкоб начал семинар ровно в 51:00 😂 и объяснил FiftyOne на высоком уровне: «Он помогает вам визуализировать, очищать и курировать ваши данные, находить скрытую структуру в этих данных, оценивать прогнозы моделей на ваших наборах данных, а также как разные подмножества ваших наборов данных. И его философия дизайна заключается в гибкости и настраиваемости. Таким образом, FiftyOne дает вам возможность исследовать и понимать ваши данные, независимо от вашего конкретного рабочего процесса или конвейера машинного обучения».

Затем Джейкоб подробно рассказал нам об основных понятиях, кратко изложенных ниже.

Курировать данные

На семинаре Джейкоб продемонстрировал, как FiftyOne помогает вам обрабатывать данные:

  • Найти: фильтровать, сопоставлять, сортировать, выбирать
  • Удалить: дубликаты
  • Добавить: теги, метаданные, прогнозы
  • Правильно: ошибки в аннотации
  • Сохраните: интересные «взгляды»

Понимание данных

Джейкоб также рассказал, как FiftyOne помогает вам понять ваши данные с помощью:

  • Агрегированная статистика: FiftyOne поддерживает различные гистограммы и все традиционные агрегации для числовых величин, которые вы ожидаете: минимум, максимум, среднее, стандартная авиация и многое другое.
  • Вложения: вложения — это числовые векторные представления определенных аспектов свойств наших данных. И они помогают нам понимать наши данные разными способами. На семинаре Джейкоб изучил набор данных Berkeley Deep Drive (BDD), чтобы показать встраивания в действии, включая кластеры дневных и ночных изображений. Вложения могут помочь идентифицировать скрытые структуры в наборах данных, о которых мы могли бы и не знать.
  • Интерактивная визуализация: Джейкоб отметил, что все эти визуализации были и остаются интерактивными. Примеры: если вы зачеркнете точки на графике встраивания, вы увидите только эти образцы; если вы исследуете ячейку в матрице беспорядка, вы можете увидеть только эти образцы.

Оценить данные

Джейкоб объяснил: «Оценка является ключевым компонентом многих рабочих процессов компьютерного зрения. Таким образом, FiftyOne поддерживает множество показателей, состоящих из одного числа: точность, полнота, оценка F1, пересечение над объединением и так далее. Есть поддержка всех ваших любимых графиков, включая кривые PR и матрицы путаницы. Вы также можете выполнять анализ образцов, этикеток и целых наборов данных».

Воспользуйтесь гибкостью FiftyOne

Джейкоб отметил: «Философия дизайна FiftyOne заключается в гибкости и возможности настройки. Все, что я упомянул до сих пор, связано с гибкостью, потому что мы знаем, что компьютерное зрение не является универсальным решением».

Джейкоб описал гибкость FiftyOne в отношении:

Ключевые компоненты FiftyOne

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

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

  • Сравнение табличных данных (структурированные данные) и данных компьютерного зрения (неструктурированные данные); FiftyOne — панды компьютерного зрения
  • Загляните внутрь схемы, включая набор данных, образцы, поля, метаданные, путь к файлу, метки, тип носителя и многое другое.

Лаборатория: запустите FiftyOne и убедитесь в этом сами!

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

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

  • Установить пятьдесят один
  • Загружайте наборы данных и модели из FiftyOne Dataset Zoo и FiftyOne Model Zoo
  • Удобная навигация по функциям приложения FiftyOne
  • Программная проверка атрибутов набора данных
  • Добавление новых образцов и пользовательских атрибутов в набор данных
  • Оценка прогнозов модели
  • Сохраняйте проницательные представления в данных
  • Более!

Резюме вопросов и ответов

Если мы вручную создадим представление в графическом интерфейсе, можно ли его каким-то образом экспортировать для последующего использования на другом компьютере?

Благодаря FiftyOne с открытым исходным кодом любые представления, которые вы сохраняете в графическом интерфейсе, в будущем могут быть загружены в Python на том же компьютере. Если вы хотите поделиться этими представлениями с другими, вы можете сериализовать представления в JSON, передать их, а затем перестроить:

stages = view._serialize()
still_view = fo.DatasetView._build(dataset, stages)

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

Можно ли визуализировать приложение FiftyOne в JupyterLab?

Ага! Он отображается в выходной ячейке, которую вы можете открывать и перемещать на разные вкладки в JupyterLab. FiftyOne также поддерживает блокноты Colab, блокноты Databricks и многое другое.

Работает ли подключение MongoDB в среде JupyterLab?

Да! На бэкэнде FiftyOne использует нереляционную структуру базы данных с MongoDB. База данных запускается в отдельном процессе, даже если она запущена внутри среды JupyterLab. Вы можете указать свою конфигурацию MongoDB в блокноте Jupyter.

Узнайте как настроить MongoDB вручную.

Есть ли у вас какие-либо документы, чтобы узнать больше об интеграции Colab или Databricks?

Да! Посетите документы по средам ноутбуков.

Кроме того, вы можете попробовать FiftyOne в Colab прямо в браузере.

Какова типичная частота новых выпусков?

Основные выпуски в основном становятся доступными после завершения новых функций. Однако между основными выпусками чаще появляются второстепенные выпуски для устранения ошибок. Вы можете ознакомиться с примечаниями к выпуску для всех версий здесь: https://docs.voxel51.com/release-notes.html.

Я хочу использовать приложение FiftyOne, чтобы быстро просмотреть свой набор данных YOLOv5 и аннотации. Я хотел бы быстро проанализировать свои данные и выполнить некоторые очень простые задачи, такие как удаление дубликатов, отображение дистрибутивов и т. д. Можете ли вы объяснить, что можно сделать в приложении, а что требует Python SDK?

Сегодня вам нужно сначала загрузить свой набор данных в FiftyOne либо через Python SDK, либо через интерфейс командной строки. Но не нужно бояться, загрузка набора данных YOLOv5 занимает всего несколько строк кода.

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

Отмечая, что для поиска повторяющихся образцов потребуется еще пара строк кода для вычисления сходства.

Есть ли руководство по интеграции FiftyOne и Label Studio?

Да! Ознакомьтесь с разделом Интеграция и примеры Label Studio в документации.

И если вам интересна интеграция с другими инструментами аннотаций, FiftyOne также интегрируется с CVAT, Labelbox и Scale.

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

Отличный вопрос! Вы можете вычислить вложения один раз, а затем повторно использовать их для уникальности, сходства, визуализации и т. д.

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

Например, по сходству:

# Compute embeddings each time
results = fob.compute_similarity(dataset, model=foz.load_zoo_model(...), ...)

# Compute embeddings once and reuse them
results = fob.compute_similarity(dataset, embeddings=np.array(...), ...)

Узнайте больше об этом примере сходства в документации.

Можно ли извлечь основные данные из этих гистограмм с помощью Python?

Да! Основные данные в этих гистограммах могут быть извлечены с помощью Python. Посетите документацию по использованию агрегатов, чтобы узнать, как это сделать.

Можно ли преобразовать набор данных изображения в набор видеоданных?

Да, вы можете преобразовать набор данных изображения в набор видеоданных. Существует множество различных форматов видео, поэтому вам нужно подумать о том, как вы это сделаете, но это абсолютно возможно. Кроме того, для набора видеоданных в FiftyOne сегодня требуется видеофайл мультимедиа (например, файл .mp4). Итак, если у вас есть набор данных, представляющий собой набор изображений, вы можете преобразовать их в видео с помощью чего-то вроде FFmpeg, а затем загрузить эти видео в FiftyOne. Следите за обновлениями по этому поводу в ближайшем будущем.

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

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

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

См. Документацию по клонированию набора данных здесь.

Если я выполняю оценку полного набора данных, можно ли получить показатели для отфильтрованного DatasetView без повторного выполнения полной оценки? (Например, выполнение оценки набора данных, содержащего данные по всем странам, а затем получение/извлечение показателей для каждой страны (точность, полнота, mAP).)

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

Есть ли простой способ импортировать прогнозы YOLO в FiftyOne?

Да! Здесь есть однострочный способ.

И вы можете узнать еще больше о работе с YOLOv8 (и, следовательно, с v5, потому что они используют один и тот же формат) в учебнике YOLO.

Для других версий YOLO обратитесь в Slack, и мы можем помочь.

Дополнительные ресурсы

Если вы пропустили семинар или хотели бы посетить его снова, вот несколько дополнительных ресурсов для вас:

Следите за видеообзором семинара «Начало работы с FiftyOne», который выйдет в ближайшее время.

Что дальше

Первоначально опубликовано на https://voxel51.com 3 апреля 2023 г.