Как разметить данные для классификации изображений: руководство с примерами
Представьте, что вам нужно научить машину «видеть» и понимать мир вокруг. Нет, не просто распознавать лица или выделять дороги на фотографиях –, а по-настоящему разбираться, что изображено на любом снимке, будь то лес, чашка кофе или картина. Классификация изображений — это ключ к машинному зрению. Но как этому научить модель?
В этой статье мы поговорим о том, как классификация может использоваться в бизнесе, какие этапы подготовки таких данных существуют, а также разберемся, как выполнить аннотацию для этой задачи.
Но для начала: что такое классификация? Давайте разберемся.
Классификация изображений — это задача, когда вы проставляете метку класса всему изображению. Модели для классификации изображений принимают изображение на вход и возвращают предсказание о том, к какому классу оно принадлежит. В одной из наших статей мы уже подробно писали про разные типы и задачи классификации, а сейчас хотели бы поговорить про подготовку таких данных.
Подготовка к обучению модели начинается с первого и очень важного этапа: со сбора данных. Качество и разнообразие изображений, которые вы соберете, окажут значительное влияние на обучение модели, поэтому сбор и очистка — обязательные этапы, которые предшествуют разметке. Источники для сбора могут включать:
Общедоступные наборы данных: Вы можете использовать наборы данных, которые уже существуют в открытом доступе. Они предлагают большое количество изображений, но важно убедиться, что они соответствуют вашей задаче.
Парсинг и поставщики данных: Использование специализированных инструментов для парсинга изображений с веб-сайтов или обращения к поставщикам данных тоже может значительно ускорить процесс.
Собственные архивы и контент пользователей: Если ваша компания имеет собственные архивы изображений или вы хотите привлечь пользователей для создания контента, это отличный способ получить уникальные и релевантные данные.
Важно помнить: чем разнообразнее ваш набор изображений (различные ракурсы, освещение, качества и т.д.), тем лучше модель научится классифицировать объекты. А вот задача очистки данных — избавиться от большинства ошибок с помощью специальных инструментов и алгоритмов, сделать будущий анализ более точным. После этого можно переходить к разметке.
Разметка данных: почему так важно внимание к деталям
Разметкой или аннотацией называют процесс, в ходе которого каждому изображению присваивается правильная метка. Для этого используются специальные инструменты, которые позволяют аннотировать изображения различными способами — от простых прямоугольных боксов до сложных полигональных областей.
Вот несколько популярных инструментов для аннотирования изображений:
Инструмент | Описание |
CVAT | Опенсорсный инструмент для аннотирования изображений. Поддерживает аннотацию боксами и полигонами. |
LabelImg | Простое решение для аннотирования изображений боксами. |
VGG Image Annotator | Веб-инструмент, позволяющий аннотировать как изображения, так и видео. |
Для обеспечения точности и последовательности лучше привлекать опытную компанию-эксперта по разметке. Это позволяет минимизировать ошибки и повысить качество данных.
Почему это так важно? Не забывайте, что точность разметки (от 95% и выше) является очень важным фактором, который может увеличить точность модели на 20%. А неоднозначная или некорректная разметка могут привести к ряду проблем:
Неправильная классификация: Модель может путаться из-за несоответствий в метках, что приведет к неверным прогнозам.
Переоценка (Overfitting): Если разметка некачественная, модель может запомнить конкретные изображения, но не справляться с новыми данными.
Применение классификации изображений: реальные кейсы
Классификация изображений находит применение в совершенно разных отраслях. Мы расскажем всего про 4 из них, для которых мы недавно делали разметку:
Здравоохранение: Анализ медицинских изображений (МРТ, рентген) с помощью алгоритмов глубокого обучения помогает точно диагностировать заболевания, улучшая лечение.
Розничная торговля: Визуальный поиск позволяет покупателям загружать фотографии товаров и находить похожие. Это не только улучшает пользовательский опыт, но и повышает продажи.
Автономные транспортные средства: Самоуправляемые автомобили используют классификацию изображений для распознавания пешеходов, дорожных знаков и других транспортных средств, обеспечивая безопасную навигацию.
Безопасность: Системы распознавания лиц помогают идентифицировать людей, что расширяет возможности контроля доступа и мониторинга.
Классификация медицинских изображений для диагностики заболеваний легких
Чтобы лучше понять цели и этапы разметки для задач классификации, давайте посмотрим несколько более детальных кейсов:
Компания-разработчик медицинского ПО поставила задачу создать алгоритм, способный классифицировать рентгеновские снимки легких, чтобы автоматически выявлять пневмонию. Основной целью было сократить время на диагностику и повысить точность анализа, минимизируя человеческий фактор.
Решение:
Сбор данных: Команда использовала несколько общедоступных медицинских наборов данных, таких как ChestX-ray14, а также договорилась с несколькими больницами о предоставлении анонимизированных рентгеновских снимков. Это обеспечило разнообразие и достоверность данных.
Разметка данных: Для повышения точности разметки пришлось привлечь экспертов в области радиологии, которые разметили изображения, присвоив метки «пневмония» и «здоровые легкие». Было важно достичь консенсуса между специалистами, чтобы минимизировать ошибки.
Подготовка данных: Данные разделили на тренировочное, валидационное и тестовое подмножества. В ходе подготовки также применялись техники аугментации данных, чтобы увеличить разнообразие и избежать переобучения модели.
Тестирование и внедрение: После обучения модели она достигла точности более 94% на тестовом наборе данных. После этого она была внедрена в медицинскую информационную систему, и теперь врачи могут автоматически получать результаты диагностики в течение нескольких секунд после загрузки изображения.
Как результат, автоматизированная система помогла снизить нагрузку на врачей, увеличив скорость обработки снимков в 5 раз и повысив точность диагностики на 15%.
Улучшение безопасности аэропортов с помощью классификации изображений
Компания, занимающаяся системами безопасности, разрабатывала проект для одного из международных аэропортов. Задача состояла в создании модели для классификации видеозаписей. В результате они планировали автоматически выявлять подозрительное поведение в зале ожидания и у входа на посадку.
Решение:
Сбор данных: Системы видеонаблюдения аэропорта предоставили данные, включая записи с камер в различных зонах аэропорта. А еще использовались данные из открытых источников и специально организованные съемки с участием актёров для имитации подозрительных действий.
Разметка данных: Команда аннотаторов вручную пометила видеозаписи, выделяя действия, такие как «нормальное ожидание», «быстрая ходьба», «бесцельное перемещение» и «необычная активность». Каждое видео было просмотрено и размечено в CVAT.
Разделение данных: Набор данных был разделен на три подмножества: тренировочное, валидационное и тестовое. Валидационное подмножество использовалось для настройки модели и предотвращения переобучения.
Оптимизация и развертывание: Модель с размеченными данными была интегрирована в систему видеонаблюдения аэропорта. Это позволило ей работать в режиме реального времени и автоматически уведомлять службу безопасности в случае обнаружения подозрительных действий.
Система сократила время реагирования службы безопасности на потенциальные угрозы на 40%, значительно улучшив контроль за ситуацией и повысив безопасность пассажиров.
А если вы хотите посмотреть больше полезных кейсов, можете почитать о самых интересных наших проектах. Уверены, это будет полезно.
Но давайте пройдем к практическому гайду: как правильно классифицировать изображения? Для примера обсудим все шаги для разметки в CVAT.
Гайд по классификации изображений в CVAT
Шаг 1: Создание проекта
Пройдите авторизацию в CVAT и откройте вкладку Projects на главной странице. Нажмите на кнопку + и выберите Create a new project, чтобы создать новый проект.
Перед вами откроется окно проекта. Присвойте ему название, которое будет его описывать. Затем нажмите на кнопку Add label. В открывшемся разделе вы сможете создать и задать цвет лейблов — это те метки, которые будут присвоены изображениям.
Обратите внимание, что для разметки Image Classification не требуется специальный инструмент, поэтому в центральном поле следует оставить Any.
Для примера мы будем классифицировать содержимое изображений по двум классам: «пицца» и «бургер». Для этой задачи мы создали 2 лейбла:
После того, как вы настроили лейблы для разметки своего изображения, нажмите Submit & Open.
Шаг 2: Создание задачи
Теперь необходимо перейти к созданию задачи. Нажмите на + и выберите Create a new task.
Присвойте задаче название, а затем загрузите изображения, которые нужно разметить. Вы можете загрузить их в формате ZIP или добавить по отдельности.
После загрузки снова нажмите Submit & Open.
Шаг 3: Разметка изображения
Перед вами откроется основной интерфейс разметки в CVAT. Чтобы начать разметку, перейдите в режим Tag annotation (справа вверху). Выберите из выпадающего списка метку, которая будет соответствовать содержимому изображения и нажмите +, чтобы её добавить. После того, как вы её добавите, она отобразится в левой части экрана.
Чтобы перейти к следующему изображению, нажмите стрелку в верхней панели интерфейса или используйте горячую клавишу F. Вы также можете поставить галочку в пункте Automatically go to the next frame, чтобы автоматически переходить к следующим изображениям после присвоения одной метки.
Последовательно добавьте метки всем изображениям из вашего набора. При работе с большим объёмом данных рекомендуется настроить присвоение меток с помощью горячих клавиш, это значительно ускорит процесс разметки.
Шаг 4: Сохранение
После завершения разметки всех изображений сохраните изменения с помощью кнопки Save.
Шаг 5: Экспорт
Чтобы экспортировать результаты, нажмите Menu → Eхport job dataset и выберите нужный формат для сохранения.
Вот и все! Полученные данные можно использовать для обучения ML-моделей.