Добро пожаловать в последний выпуск нашей продолжающейся серии блогов, в которой мы освещаем набор данных из 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 тыс. изображений, извлеченных из видео, как описано выше, вместе с метками классификации, обнаружения и сегментации изображений.
Краткие сведения о наборе данных
- Исследовательская работа:BDD100K: разнообразный набор данных о вождении для гетерогенного многозадачного обучения
- Авторы: Фишер Ю, Хаофэн Чен, Синь Ван, Вэньци Сянь, Инъин Чен, Фангчен Лю, Вашишт Мадхаван, Тревор Даррелл
- GitHub: README и код
- Документация: Документация BDD100K
- Источник набора данных: данные и аннотации BDD100K
- Размер набора данных: 7,10 ГБ.
- Лицензия: лицензия BSD, 3 пункта
- Последняя версия: 21 сентября 2020 г.
- Название набора данных FiftyOne: bdd100k
- Теги: изображение, мультиэтикетка, автомобиль, инструкция
- Поддерживаемые разделения: обучение, проверка, тестирование
- Класс набора данных зоопарка: BDD100KDataset
Шаг 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_id
range начинается с 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 предоставляет мощные методы машинного обучения, которые вы можете применять в своих рабочих процессах, в том числе:
- Визуализируйте встраивания, чтобы выявить шаблоны и кластеры
- Найти и работать с визуально похожими данными
- Определить уникальность данных для оптимального обучения
- Найти ошибки в аннотациях
- Подсчитайте, насколько легко или сложно вашей модели понять тот или иной образец
Что дальше?
- Если вам нравится то, что вы видите на GitHub, поставьте звезду проекту.
- "Начать!" Мы упростили запуск и запуск за несколько минут.
- Присоединяйтесь к сообществу Slack FiftyOne, мы всегда рады помочь.