Как да използвате вградената поддръжка на FiftyOne за COCO, за да захранвате работните си процеси

„Наборът от данни COCO“ е един от най-популярните и влиятелни набори от данни за компютърно зрение от пускането му през 2014 г. Той служи като популярен набор от данни за сравнение за различни области на машинното обучение, включително откриване на обекти, сегментиране, откриване на ключови точки и др. Вероятно вашата любима архитектура за откриване на обекти има предварително обучени тегла, налични от набора от данни COCO.

Тази публикация въвежда „нова инициатива на FiftyOne“ за визуализиране и улесняване на достъпа до ресурси за набор от данни „COCO“ и „оценка“. С FiftyOne вече можете да изтегляте конкретни подмножества на COCO, да визуализирате данните и етикетите и да оценявате вашите модели на COCO по-лесно и с по-малко редове код от всякога.

Настройвам

Използването на FiftyOne за достъп и работа с набора от данни COCO е толкова просто, колкото инсталиране на пакета Python с отворен код:

pip install fiftyone

Изтегляне на COCO

Докато съществуващите инструменти или вашите собствени персонализирани скриптове вероятно са ви позволявали да изтегляте COCO разделяния в миналото, искали ли сте някога да можете да изтеглите малка извадка от набор от данни за анализ с по-висока точност, преди да увеличите мащаба до пълния набор от данни?

FiftyOne Dataset Zoo вече поддържа частично изтегляне и зареждане на COCO директно в Python само с една команда. Например, кажете, че работите върху задача за откриване на пътна сцена и се интересувате само от проби, съдържащи превозни средства, хора и светофари. Следният кодов фрагмент ще изтегли 100 от съответните проби и ще ги зареди в FiftyOne:

Командата за зареждане на COCO приема следните аргументи, които ви позволяват да персонализирате точно образците и етикетите, които ви интересуват:

  • label_types: списък с типове етикети за зареждане. Стойностите са ("detections", "segmentations"). По подразбиране се зареждат всички етикети, но не всяка проба ще включва всеки тип етикет. Ако са посочени и max_samples и label_types, тогава всяка проба ще включва посочените типове етикети.
  • split и splits: или низ, или списък от низове, диктуващи разделянията за зареждане. Наличните разделяния са ("test", "train", "validation").
  • classes: списък с низове, указващи необходимите класове за зареждане. Ще бъдат изтеглени само образци, съдържащи поне едно копие на определен клас.
  • max_samples: максимален брой проби за импортиране. По подразбиране всички проби се импортират.
  • shuffle: булево значение, диктуващо дали да се разбърка произволно редът, в който се импортират пробите.
  • seed: произволно семе, което да се използва при разбъркване.
  • image_ids: списък с идентификатори на конкретни изображения за зареждане или път към файл, съдържащ този списък. Идентификаторите могат да бъдат посочени като <split>/<image-id> или <image-id>

Визуализиране на набора от данни

Повечето инженери на ML са интегрирали основна поддръжка за преглед на малки партиди изображения в работните си потоци, напр. инструменти за използване като Tensorboard, но такива работни потоци не позволяват динамично търсене във вашия набор от данни за конкретни примери от интерес. Това е важен пропуск, който трябва да се преодолее, тъй като най-добрият начин да разберете режимите на повреда на вашия модел е да изследвате качеството на набор от данни и анотации е да ги визуализирате и да прегледате някои примери.

Приложението FiftyOne позволява на всеки да визуализира своите набори от данни и етикети, без да е необходимо да харчи време и пари за писане на собствени скриптове или инструменти за визуализация. Когато се комбинира с лекотата на използване на FiftyOne API, сега са необходими само няколко реда код, за да се запознаете с вашите данни.

FiftyOne също така предоставя мощен език за заявки, който ви позволява да създавате „персонализирани изгледи във вашия набор от данни“, за да отговорите на всеки въпрос, който имате относно вашите данни. Например, можете да създадете изглед, който филтрира прогнозите на модел по увереност и сортиране, така че първо да се вземат проби с най-голям брой основни обекти на истината.

Оценяване на модели

COCO API е широко възприет като стандартна метрика за оценка на откриването на обекти. Средната прецизност на COCO се използва за сравняване на модели в почти всяка изследователска статия за откриване на обекти през последното половин десетилетие. Въпреки че е много полезно да имате един показател, който може да се използва за сравняване на модели на високо ниво, на практика има още работа, която трябва да се свърши.

Когато разработвате модел, който ще бъде използван в сценарий от реалния свят, трябва да изградите доверие в представянето на модела в различни ситуации. Един единствен показател няма да ви даде тази информация, единственият начин да разберете точно къде вашият модел се представя добре и къде се представя зле е да „разгледате отделни проби и дори отделни прогнози, за да намерите случаи на успех и неуспех“.

FiftyOne предоставя широки възможности за оценка за различни задачи, но най-вече ви позволява да направите следващата стъпка след изчислението на COCO AP и да се задълбочите в прогнозите на вашите модели. Можете лесно да добавите свои собствени прогнози за модел към набор от данни на FiftyOne.

Примерът по-долу показва как можете да използвате метода evaluate_detections() на FiftyOne, за да оцените прогнозите на модел от FiftyOne Model Zoo.

След това можете да използвате приложението FiftyOne, за да анализирате отделни примери за TP/FP/FN и да правите кръстосани препратки с допълнителни атрибути, като например дали анотацията е тълпа.

След като сте оценили модела си в FiftyOne, можете да използвате върнатия resultsobject, за да прегледате AP, да начертаете криви на прецизност-припомняне и да взаимодействате с матрици на объркване, за да намерите бързо точните проби, където вашият модел е правилен и неправилен за всеки клас.

Забележка: Интерактивни графики в момента са налични само в преносими компютри Jupyter, но скоро ще се поддържат и други контексти!

Резюме

COCO е един от най-популярните и влиятелни набори от данни за компютърно зрение. Сега естествената поддръжка на FiftyOne за COCO улеснява от всякога изтеглянето на конкретни части от набора от данни, визуализирането на COCO и прогнозите на вашия модел и оценката на вашите модели с оценка в стил COCO.

Относно Voxel51

Със седалище в Ан Арбър, Мичиган и основана през 2016 г. от професора от Университета на Мичиган д-р Джейсън Корсо и д-р Брайън Мур, Voxel51 е софтуерна компания за изкуствен интелект, която демократизира достъпа до софтуер 2.0, като предоставя отворени основни софтуерни градивни елементи, които позволяват на инженерите по компютърно зрение и машинно обучение бързо да проектират работни потоци, захранвани от данни.

Научете повече на fiftyone.ai!