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

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

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

Хорошо, давайте погрузимся в советы и рекомендации этой недели!

Немного о конфигурациях

FiftyOne создан для обеспечения гибкости, настройки и расширяемости. Хотите интегрироваться с инструментами аннотации? Оцените нашу тесную интеграцию с CVAT, Labelbox и Label Studio. Хотите работать с эталонными наборами данных или процедурами оценки? Мы обеспечим вас встроенной поддержкой COCO, Open Images и многого другого. FiftyOne легко интегрируется в различные рабочие процессы компьютерного зрения, позволяя вам адаптировать свой опыт к вашим конкретным потребностям.

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

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

Доступ к вашим конфигурациям

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

Чтобы просмотреть глобальную конфигурацию FiftyOne, используйте

import fiftyone as fo
print(fo.config)

И чтобы получить глобальную конфигурацию приложения, выполните аналогичную команду

import fiftyone as fo
print(fo.app_config)

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

import fiftyone as fo
import fiftyone.zoo as foz

## load in dataset
dataset = foz.load_zoo_dataset("quickstart")

## create a session that doesn't display automatically
session = fo.launch_app(dataset, auto=False)

print(session.config)

Узнайте больше о сеансах в FiftyOne Docs.

Измените свои конфиги

После того, как вы определили свои конфигурации, есть несколько способов их изменить. Если вы хотите настроить поведение FiftyOne по умолчанию для отображения индикаторов выполнения, вы можете сделать это, либо создав файл конфигурации JSON ~/.fiftyone/config.json с кодом:

{
    "show_progress_bars": true
}

Или вы можете использовать соответствующую переменную среды из командной строки:

export FIFTYONE_SHOW_PROGRESS_BARS=true

Наконец, вы можете добиться того же эффекта, настроив конфигурацию непосредственно в коде Python:

import fiftyone as fo
fo.config.show_progress_bars = True

Узнайте больше о порядке приоритета для конфигураций в FiftyOne Docs.

Упростите рабочие процессы машинного обучения

С помощью конфигураций FiftyOne вы можете настроить FiftyOne для оптимального использования в рабочих процессах машинного обучения. При загрузке моделей из FiftyOne Model Zoo иногда в модели доступны реализации как TensorFlow, так и PyTorch. Установив свойство default_ml_backend в конфигурации FiftyOne, вы можете указать предпочтительную библиотеку машинного обучения для использования в этих сценариях.

Если вы предпочитаете Pytorch TensorFlow, вы можете сделать это по умолчанию:

import fiftyone as fo
fo.config.default_ml_backend = "torch"

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

import fiftyone as fo
fo.config.default_batch_size = 100

Узнайте больше об API для FiftyOne’s Model Zoo в FiftyOne Docs.

Включить плагины

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

Конфигурации плагина управляются с помощью ключа "plugins" в конфигурации приложения. Если вы хотите установить положение камеры по умолчанию в 3D-визуализаторе, вы можете сделать это, изменив свойства конфигурации "plugins.3d" в ~/.fiftyone/app_config.json:

// The default values are shown below
{
    "plugins": {
        "3d": {
            // Whether to show the 3D visualizer
            "enabled": true,
            // The initial camera position in 3D space
            "defaultCameraPosition": {"x": 100, "y": 0, "z": 20},
      }
   }
}

Когда мы используем конфигурацию приложения для установки положения камеры по умолчанию в 3D-визуализаторе, набор данных Quickstart Groups выглядит следующим образом:

Узнайте больше о разработке и установке плагинов в FiftyOne Docs.

Настройка приложения для каждого набора данных

В дополнение к глобальной конфигурации приложения каждый набор данных имеет собственную конфигурацию приложения, хранящуюся в атрибуте dataset.app_config. Это позволяет настраивать поведение в приложении FiftyOne для каждого набора данных!

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

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

pos = {'x':100, 'y':0, 'z':0}
dataset.app_config.plugins["3d"]["defaultCameraPosition"] = pos

Узнайте больше о конфигурациях приложений для набора данных в FiftyOne Docs.

Присоединяйтесь к сообществу FiftyOne!

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

Что дальше?

Присоединяйтесь к сообществу Slack FiftyOne, мы всегда рады помочь.

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