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

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

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

Зоопарк наборов данных FiftyOne содержит более 30 наборов данных, причем новые наборы данных постоянно добавляются! Они охватывают различные варианты использования компьютерного зрения, включая:

  • видео
  • Расположение
  • Облако точек
  • Распознавание действий
  • Классификация
  • Обнаружение
  • Сегментация
  • Отношения

О наборе данных Berkeley Deep Drive

Набор данных Berkeley Deep Drive (BDD) — один из самых больших и разнообразных наборов видеоданных для автономных транспортных средств и гетерогенного многозадачного обучения.

Набор данных BDD100K содержит 100 000 видеоклипов, собранных из более чем 50 000 поездок, охватывающих Нью-Йорк, район залива Сан-Франциско и другие регионы. Набор данных содержит различные типы сцен, такие как городские улицы, жилые районы и автомагистрали. Кроме того, видео были записаны в различных погодных условиях в разное время суток.

Видео разделены на обучающие (70 тыс.), проверочные (10 тыс.) и тестовые (20 тыс.) наборы. Каждое видео длится 40 секунд с разрешением 720p и частотой кадров 30 кадров в секунду. Кадр на 10-й секунде каждого видео аннотируется для задач классификации, обнаружения и сегментации изображений.

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

Краткие сведения о наборе данных

Шаг 1. Загрузите набор данных

Чтобы загрузить набор данных BDD100K в FiftyOne, вы должны загрузить исходные данные вручную с помощью каталога, организованного следующим образом:

Шаг 2. Установите FiftyOne

Если на вашем ноутбуке еще не установлена ​​программа FiftyOne, это займет всего несколько минут! Например, на MacOS:

  • Проверьте свою версию Python
  • Создать и активировать виртуальную среду
  • Установите IPython (необязательно)
  • Обновите свои инструменты настройки
  • Установить пятьдесят один

Узнайте больше о том, как начать работу с FiftyOne в Документах.

Шаг 3. Импорт набора данных

Теперь, когда вы загрузили набор данных и установили FiftyOne, давайте импортируем набор данных в FiftyOne и запустим приложение FiftyOne. Это займет всего несколько минут и еще несколько строк кода. Убедитесь, что вы указали правильный путь к загруженным исходным файлам.

import fiftyone as fo
import fiftyone.zoo as foz

# The path to the source files that you manually downloaded
source_dir = "/path/to/dir-with-bdd100k-files"

dataset = foz.load_zoo_dataset(
    "bdd100k",
    split="validation",
    source_dir=source_dir,
)

session = fo.launch_app(dataset)

Ваш вывод должен выглядеть примерно так:

Preparing split 'validation' in '/path/to/dir-with-bdd100k-files/fiftyone/bdd100k/validation'
Preparing training images...
Preparing training labels...
Preparing validation images...
Preparing validation labels...
Preparing test images...
Parsing dataset metadata
Found 10000 samples
Dataset info written to '/path/to/dir-with-bdd100k-files/fiftyone/bdd100k/info.json'
Loading 'bdd100k' split 'validation'
 100% |███| 10000/10000 [3.2m elapsed, 0s remaining, 62.9 samples/s]      
Dataset 'bdd100k-validation' created
App launched. Point your web browser to http://localhost:5151

Последняя строка в представленном нами фрагменте кода запустит приложение FiftyOne в браузере по умолчанию. Вы должны увидеть следующее начальное представление набора данных в приложении FiftyOne:

Хорошо, давайте приступим к изучению набора данных Berkeley Deep Drive!

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

Для обнаружения объектов необходимо оценить 10 классов. Они включают:

1: person
2: rider
3: car
4: truck
5: bus
6: train
7: motor (motorcycle)
8: bike (bicycle)
9: traffic light
10: traffic sign

Примечание. Поле category_idrange начинается с 1, а не с 0.

Их распределение в наборе данных можно увидеть в приложении FiftyOne под ярлыком detections ›.

Мы можем ограничить просмотр обнаружений определенными ярлыками, выбрав обнаружения › ярлык › грузовик, например:

Атрибуты фрейма

Набор данных BDD100K имеет атрибуты кадра, включая weather, scene и timeofday.

Погода

Как следует из названия, эти метки помогают нам понять, каковы общие погодные условия в выборке.

weather: rainy, snowy, clear, overcast, undefined, partly cloudy, foggy

Например, погодная › метка › снежно:

Сцена

Эти метки помогают нам понять общую транспортно-ориентированную среду, в которой движутся объекты.

scene: tunnel, residential, parking lot, undefined, city street, gas stations, highway

Например, сцена › ярлык › туннель:

Время суток

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

timeofday: daytime, night, dawn/dusk, undefined

Например, timeofday label › рассвет/закат:

Проезжая часть

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

Например, полилинии › маркируют › управляемую область:

Увеличение конкретного образца:

Полосы

Штриховые и сплошные полосы проезжей части, которые влияют на поведение транспортных средств, пешеходов и велосипедистов, можно просмотреть на полилиниях › label › lane:

Увеличение конкретного образца:

Последний пример

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

Начните работу с набором данных

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

Создание представлений набора данных

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

Создавать агрегаты

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

Создание интерактивных графиков

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

Аннотировать наборы данных

FiftyOne предоставляет мощный API-интерфейс аннотаций, который упрощает добавление или редактирование меток к вашим наборам данных или конкретным представлениям в них. Узнайте больше о аннотировании наборов данных в Документах.

Оценить модели

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

Пятьдесят один мозг

Наконец, FiftyOne Brain предоставляет мощные методы машинного обучения, которые вы можете применять в своих рабочих процессах, в том числе:

Что дальше?