Voxel51 совместно с сообществом FiftyOne рады объявить об общедоступной версии FiftyOne 0.18!
Подожди, а что такое FiftyOne?
FiftyOne — это набор инструментов машинного обучения с открытым исходным кодом, который позволяет группам специалистов по обработке и анализу данных повышать производительность своих моделей компьютерного зрения, помогая им выбирать высококачественные наборы данных, оценивать модели, находить ошибки, визуализировать встраивания и быстрее приступать к работе.
- Если вам нравится то, что вы видите на GitHub, поставьте звезду проекту.
- "Начать!" Мы упростили запуск и запуск за несколько минут.
- Присоединяйтесь к сообществу Slack FiftyOne, мы всегда рады помочь.
Хорошо, давайте погрузимся в выпуск!
tl;dr: Что нового в этом релизе?
Этот выпуск включает в себя:
- Значительные улучшения производительности приложения FiftyOne
- Новые режимы боковой панели для дальнейшей оптимизации работы пользователей с большими наборами данных
- Возможность объявления и фильтрации по атрибутам пользовательских меток
- Поддержка хранения и просмотра метаданных полей в приложении
- Новая опция облегченного режима
Ознакомьтесь с примечаниями к выпуску для получения полного списка дополнительных улучшений и исправлений.
Присоединяйтесь ко мне для живой демонстрации и AMA 1 декабря
Вы можете увидеть все новые функции в действии на живом вебинаре и AMA 1 декабря 2022 года в 10:00 по тихоокеанскому времени. Я продемонстрирую все новые функции, а затем проведу открытые вопросы и ответы, где вы сможете получить ответы на любые вопросы, которые у вас могут возникнуть. Зарегистрируйтесь здесь.
А теперь краткий обзор некоторых новых функций, которые мы включили в этот выпуск.
Улучшения производительности приложения
FiftyOne 0.18 включает в себя основные обновления «внутри», которые привели к значительному повышению производительности при работе с большими наборами данных с большим количеством выборок и/или полей в приложении.
Например, вот поиск среди 185 000 объектов в FiftyOne 0.17:
Тот же поиск в FiftyOne 0.18 теперь в 10 раз быстрее!
Какие ключевые изменения лежат в основе этих улучшений?
- Статистика боковой панели теперь лениво вычисляется только для видимых в данный момент полей, поэтому загружаются только те данные, которые вам нужны.
- Данные одинаковой формы оптимизируются в многогранные агрегаты базы данных.
- Улучшенная архитектура запросов, обеспечивающая асинхронную загрузку компонентов без блокировки.
Режимы боковой панели приложения
Еще одна функция, ориентированная на производительность, — это новый настраиваемый режим боковой панели, включая обновленное поведение по умолчанию, которое дополнительно оптимизирует производительность приложения для больших наборов данных.
Для контекста: каждый раз, когда вы загружаете новый набор данных или представление в приложении FiftyOne, боковая панель обновляется, чтобы показать статистику для текущей коллекции. Для больших наборов данных со многими выборками или полями это может потребовать значительных вычислений.
Приложение теперь поддерживает три режима боковой панели, которые вы можете выбрать:
- "все": всегда вычислять счетчики для всех видимых полей и статистику для всех полей, панель фильтров которых развернута.
- "быстро": вычисляются только счетчики и статистика для полей, панель фильтров которых развернута.
- "лучший" (по умолчанию): автоматический выбор между "все" и "быстрый" режим в зависимости от размера набора данных
Когда режим боковой панели «лучший», приложение выберет «быстрый» режим, если выполняется одно из следующих условий:
- Любой набор данных с более чем 10 000 образцов
- Любой набор данных с более чем 1000 образцов и более 15 полей верхнего уровня на боковой панели.
- Любой набор видеоданных с полями меток на уровне кадра
Вы можете динамически переключать режим боковой панели для текущего сеанса через меню настроек приложения:
Вы также можете навсегда настроить режим боковой панели по умолчанию для набора данных, изменив свойство sidebar_mode
в конфигурации приложения набора данных:
# Set the default sidebar mode to "fast" dataset.app_config.sidebar_mode = "fast" dataset.save() # must save after edits session.refresh()
Ознакомьтесь с документацией для получения дополнительной информации о режимах боковой панели и о том, как их настроить для каждого набора данных.
Пользовательские группы боковой панели
Если вы уже являетесь пользователем FiftyOne, вы, возможно, обнаружили, что можете настроить макет боковой панели приложения, создавая/переименовывая/удаляя группы и перетаскивая поля между группами непосредственно в приложении, при этом все изменения, которые вы вносите, автоматически сохраняются между сеансами.
Что ж, теперь вы можете программно изменить группы боковой панели вашего набора данных, отредактировав свойство sidebar_groups
конфигурации приложения набора данных, включая возможность настроить, расширяется ли группа по умолчанию:
import fiftyone as fo import fiftyone.zoo as foz dataset = foz.load_zoo_dataset("quickstart") # Get the default sidebar groups for the dataset sidebar_groups = fo.DatasetAppConfig.default_sidebar_groups(dataset) # Collapse the `metadata` section by default print(sidebar_groups[2].name) # metadata sidebar_groups[2].expanded = False # Modify the dataset's App config dataset.app_config.sidebar_groups = sidebar_groups dataset.save() session = fo.launch_app(dataset)
Ознакомьтесь с документацией, чтобы узнать больше о настройке групп боковой панели вашего набора данных с помощью приложения и SDK.
Атрибуты пользовательских ярлыков
Волнующие новости! Наконец-то доступна долгожданная функция: теперь вы можете объявлять настраиваемые атрибуты в полях меток (или, вообще, в любых встроенных полях) и фильтровать по ним в приложении FiftyOne.
Это может быть достигнуто различными способами, в том числе:
1. Использование add_sample_field()
для прямого объявления нового атрибута метки:
# Declare a new `iscrowd` attribute on the `ground_truth` objects dataset.add_sample_field("ground_truth.detections.iscrowd", fo.FloatField)
2. Предоставление новой опции dynamic=True
при добавлении образцов в наборы данных с использованием таких методов, как add_samples()
и from_dir()
, для автоматического объявления любых динамических атрибутов, встречающихся при импорте данных:
# Automatically declare all new dynamic attributes dataset.add_samples(samples, dynamic=True)
3. Использование get_dynamic_field_schema()
для определения имен и типов любых необъявленных динамических атрибутов, а затем использование add_dynamic_sample_fields()
для их автоматического объявления:
# View any undeclared dynamic attributes print(dataset.get_dynamic_field_schema()) # Declare them dataset.add_dynamic_sample_fields()
Любые динамические атрибуты, которые вы объявляете в схеме набора данных, теперь доступны для фильтрации в приложении FiftyOne!
Обратитесь к документам для получения дополнительной информации о настраиваемых атрибутах, включая просмотр, выбор и исключение их из схемы вашего набора данных.
Хранение и визуализация метаданных полей
Теперь вы можете хранить метаданные, такие как описания и другую информацию, такую как URL-адреса, в полях вашего набора данных!
import fiftyone as fo import fiftyone.zoo as foz dataset = foz.load_zoo_dataset("quickstart") dataset.add_dynamic_sample_fields() field = dataset.get_field("ground_truth") field.description = "Ground truth annotations" field.info = {"url": "https://fiftyone.ai"} field.save() field = dataset.get_field("ground_truth.detections.area") field.description = "Area of the box, in pixels^2" field.info = {"url": "https://fiftyone.ai"} field.save() session = fo.launch_app(dataset)
Кроме того, вы можете просмотреть эту информацию в приложении FiftyOne, наведя указатель мыши на имена полей или атрибутов на боковой панели приложения!
Ознакомьтесь с документацией для получения дополнительной информации о хранении и просмотре метаданных полей.
Сейчас в легком режиме
И последнее, но не менее важное: FiftyOne теперь поддерживает легкий режим! Вы можете переключиться в легкий режим, щелкнув значок солнца/луны справа от Есть команда? кнопка в приложении FiftyOne:
По умолчанию ваш браузер запомнит вашу последнюю тему, но вы также можете сохранить тему по умолчанию в конфигурации вашего приложения.
Вклад сообщества
Спасибо следующим членам сообщества, которые внесли свой вклад в этот релиз!
- Jan Steeg предоставил #2114 — новый вариант экспорта YOLOv5
- Daniel Langenkämper предоставил #2122 — новый вариант импорта COCO
- Conor Doyle предоставил #2128 — вариант интерполяции для изменения размера изображения
- Лаура Лин предоставила # 2198 — предоставление информации о наборе данных в приложении
- Odd Eirik Igland внес вклад #2145 — обработка недостающих данных с помощью Label Studio
- Kishan Savant предоставил #2107 — исправления документации и #2206 — обновления README
- andife предоставил #2177 — исправления документации CVAT
- oguz-hanoglu внес вклад #2132 — исправление опечаток
Обновления сообщества FiftyOne
Сообщество FiftyOne продолжает расти!
- 1100+ участников FiftyOne Slack
- 2100+ звезд на GitHub
- 1500+ участников встречи
- Использовано 190+ репозиториев
- 46+ авторов
Что дальше?
- Если вам нравится то, что вы видите на GitHub, поставьте звезду проекту.
- "Начать!" Мы упростили запуск и запуск за несколько минут.
- Присоединяйтесь к сообществу Slack FiftyOne, мы всегда рады помочь.