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

0f98bef3bdbc1cd8b193beec5d7c0cb8.jpeg

Представьте, что вам нужно научить машину «видеть» и понимать мир вокруг. Нет, не просто распознавать лица или выделять дороги на фотографиях –, а по-настоящему разбираться, что изображено на любом снимке, будь то лес, чашка кофе или картина. Классификация изображений — это ключ к машинному зрению. Но как этому научить модель?  

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

Но для начала: что такое классификация? Давайте разберемся.

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

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

  • Общедоступные наборы данных: Вы можете использовать наборы данных, которые уже существуют в открытом доступе. Они предлагают большое количество изображений, но важно убедиться, что они соответствуют вашей задаче.

  • Парсинг и поставщики данных: Использование специализированных инструментов для парсинга изображений с веб-сайтов или обращения к поставщикам данных тоже может значительно ускорить процесс.

  • Собственные архивы и контент пользователей: Если ваша компания имеет собственные архивы изображений или вы хотите привлечь пользователей для создания контента, это отличный способ получить уникальные и релевантные данные.

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

Разметка данных: почему так важно внимание к деталям

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

Вот несколько популярных инструментов для аннотирования изображений:

Инструмент

Описание

CVAT

Опенсорсный инструмент для аннотирования изображений. Поддерживает аннотацию боксами и полигонами.

LabelImg

Простое решение для аннотирования изображений боксами.

VGG Image Annotator

Веб-инструмент, позволяющий аннотировать как изображения, так и видео.

Для обеспечения точности и последовательности лучше привлекать опытную компанию-эксперта по разметке. Это позволяет минимизировать ошибки и повысить качество данных.

Почему это так важно? Не забывайте, что точность разметки (от 95% и выше) является очень важным фактором, который может увеличить точность модели на 20%. А неоднозначная или некорректная разметка могут привести к ряду проблем:

  • Неправильная классификация: Модель может путаться из-за несоответствий в метках, что приведет к неверным прогнозам.

  • Переоценка (Overfitting): Если разметка некачественная, модель может запомнить конкретные изображения, но не справляться с новыми данными.

Применение классификации изображений: реальные кейсы

Классификация изображений находит применение в совершенно разных отраслях. Мы расскажем всего про 4 из них, для которых мы недавно делали разметку:

  1. Здравоохранение: Анализ медицинских изображений (МРТ, рентген) с помощью алгоритмов глубокого обучения помогает точно диагностировать заболевания, улучшая лечение.

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

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

  4. Безопасность: Системы распознавания лиц помогают идентифицировать людей, что расширяет возможности контроля доступа и мониторинга.

Классификация медицинских изображений для диагностики заболеваний легких

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

Компания-разработчик медицинского ПО поставила задачу создать алгоритм, способный классифицировать рентгеновские снимки легких, чтобы автоматически выявлять пневмонию. Основной целью было сократить время на диагностику и повысить точность анализа, минимизируя человеческий фактор.

Решение:

  1. Сбор данных: Команда использовала несколько общедоступных медицинских наборов данных, таких как ChestX-ray14, а также договорилась с несколькими больницами о предоставлении анонимизированных рентгеновских снимков. Это обеспечило разнообразие и достоверность данных.

  2. Разметка данных: Для повышения точности разметки пришлось привлечь экспертов в области радиологии, которые разметили изображения, присвоив метки «пневмония» и «здоровые легкие». Было важно достичь консенсуса между специалистами, чтобы минимизировать ошибки.

  3. Подготовка данных: Данные разделили на тренировочное, валидационное и тестовое подмножества. В ходе подготовки также применялись техники аугментации данных, чтобы увеличить разнообразие и избежать переобучения модели.

  4. Тестирование и внедрение: После обучения модели она достигла точности более 94% на тестовом наборе данных. После этого она была внедрена в медицинскую информационную систему, и теперь врачи могут автоматически получать результаты диагностики в течение нескольких секунд после загрузки изображения.

Как результат, автоматизированная система помогла снизить нагрузку на врачей, увеличив скорость обработки снимков в 5 раз и повысив точность диагностики на 15%.

Улучшение безопасности аэропортов с помощью классификации изображений

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

Решение:

  1. Сбор данных: Системы видеонаблюдения аэропорта предоставили данные, включая записи с камер в различных зонах аэропорта. А еще использовались данные из открытых источников и специально организованные съемки с участием актёров для имитации подозрительных действий.

  2. Разметка данных: Команда аннотаторов вручную пометила видеозаписи, выделяя действия, такие как «нормальное ожидание», «быстрая ходьба», «бесцельное перемещение» и «необычная активность». Каждое видео было просмотрено и размечено в CVAT.

  3. Разделение данных: Набор данных был разделен на три подмножества: тренировочное, валидационное и тестовое. Валидационное подмножество использовалось для настройки модели и предотвращения переобучения.

  4. Оптимизация и развертывание: Модель с размеченными данными была интегрирована в систему видеонаблюдения аэропорта. Это позволило ей работать в режиме реального времени и автоматически уведомлять службу безопасности в случае обнаружения подозрительных действий.

Система сократила время реагирования службы безопасности на потенциальные угрозы на 40%, значительно улучшив контроль за ситуацией и повысив безопасность пассажиров.

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

Но давайте пройдем к практическому гайду: как правильно классифицировать изображения? Для примера обсудим все шаги для разметки в CVAT.

Гайд по классификации изображений в CVAT

Шаг 1: Создание проекта
Пройдите авторизацию в CVAT и откройте вкладку Projects на главной странице. Нажмите на кнопку + и выберите Create a new project, чтобы создать новый проект.

ae4f45d01e884a0cd3159acc96fcc9e5.png

Перед вами откроется окно проекта. Присвойте ему название, которое будет его описывать. Затем нажмите на кнопку Add label. В открывшемся разделе вы сможете создать и задать цвет лейблов — это те метки, которые будут присвоены изображениям.

Обратите внимание, что для разметки Image Classification не требуется специальный инструмент, поэтому в центральном поле следует оставить Any.

Для примера мы будем классифицировать содержимое изображений по двум классам: «пицца» и «бургер». Для этой задачи мы создали 2 лейбла:

После того, как вы настроили лейблы для разметки своего изображения, нажмите Submit & Open.

0ba0cce6f1e9a114fc1fa2f3342ca5b1.jpeg

Шаг 2: Создание задачи
Теперь необходимо перейти к созданию задачи. Нажмите на + и выберите Create a new task.

c7099757cd7356d7356c8b3f5fcc32eb.jpeg

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

702b610eeee86171db0e0b545a76d44f.jpeg

После загрузки снова нажмите Submit & Open.

Шаг 3: Разметка изображения

Перед вами откроется основной интерфейс разметки в CVAT. Чтобы начать разметку, перейдите в режим Tag annotation (справа вверху). Выберите из выпадающего списка метку, которая будет соответствовать содержимому изображения и нажмите +, чтобы её добавить. После того, как вы её добавите, она отобразится в левой части экрана. 

8ebb03288c59abe8ef5c85def1a45e81.jpeg

Чтобы перейти к следующему изображению, нажмите стрелку в верхней панели интерфейса или используйте горячую клавишу F. Вы также можете поставить галочку в пункте Automatically go to the next frame, чтобы автоматически переходить к следующим изображениям после присвоения одной метки. 

f8d0b9216f3b27428eb172bfaf830b67.jpeg

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

e686ca9ae04b8ed064fd1b96c9e28f6c.jpeg

Шаг 4: Сохранение

После завершения разметки всех изображений сохраните изменения с помощью кнопки Save.

Шаг 5: Экспорт

Чтобы экспортировать результаты, нажмите Menu → Eхport job dataset и выберите нужный формат для сохранения. 

fad9ed0d208510c0cdefb5d4dd57fee6.jpeg

Вот и все! Полученные данные можно использовать для обучения ML-моделей.

© Habrahabr.ru