Положительный пример хаар-каскада

Я делаю свои первые шаги в создании каскада Хаара для распознавания пользовательских объектов. Я потратил много времени на сбор данных и написал несколько сценариев предварительной обработки для преобразования видео в кадры. Мой следующий шаг - обрезать интересный объект, чтобы создать несколько положительных обучающих примеров. У меня есть несколько вопросов, на которые я искренне искал ответы онлайн - я немного растерялся:-

Я прочитал, что должен стремиться к тому, чтобы соотношение сторон оставалось неизменным - означает ли это то же самое, что и исходный кадр, ИЛИ для всех изображений, которые я хочу использовать для положительных примеров обучения (например, кадры из совершенно разных видео)

Размер - пропорции и размеры, очевидно, не совпадают. Итак, еще раз, мне нужно убедиться, что мои положительные образцы имеют одинаковую высоту и ширину (я уверен, что они должны быть, но мысль стоит проверить дважды).

Также с точки зрения размера - я сталкивался с некоторыми блогами, рекомендующими, например, 24 x 24 В x Ш - что если объект, который я хочу обнаружить, не квадратный (в моем случае это прямоугольник, высота которого примерно вдвое больше его ширины для примера) пластиковая бутылка). Я оставляю размер одинаковым или я должен преобразовать его в 24 x 24?

Отрицательные образцы - должны ли они иметь одинаковое соотношение сторон и / или размер?

Я понимаю, что это, вероятно, очень низкий уровень / глупый вопрос, однако было далеко не ясно, какова лучшая практика здесь!

Я встречал пару других ответов здесь, но я не чувствую, что они предлагают удовлетворительный ответ, и область значительно продвинулась за прошлые несколько лет

Спасибо

1 ответ

Решение

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

Размер цели должен соответствовать размеру мимуны, который вы хотите обнаружить для объекта (но если он слишком мал, больше не будет релевантных объектов), а его соотношение сторон должно быть соотношением сторон областей вашего объекта.

Например: у вас много изображений с чашками. Разрешения изображения различаются, но соотношение сторон каждой чашки (только область чашки внутри изображения, а не весь фон) составляет 1:2 (ширина: высота). Таким образом, вы либо обрезаете все изображения, чтобы удерживать только чашку и минимальный фон, и записываете все обрезанное изображение в текстовый файл и публикуете там полные размеры обрезанного изображения, либо выбираете ROI чашки, добавляете полный размер Изображение в TXT-файл и опубликовать этот регион Рой. Вы выбираете целевой размер, например, 20x40 или 10x20 или любое соотношение сторон 1: 2, которое, по вашему мнению, можно обучить.

Отрицательные образцы должны оставаться такими, как есть, обучение автоматически выберет и выполнит поиск изображений этих образцов. Просто убедитесь, что в них нет чашек (согласно примеру).

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

В качестве более конкретного примера я взял два изображения чашки из Викимедиа. 1. 2.

На первом изображении 1 чашка, на втором - 2 чашки. Я решил не использовать ручку во время обучения и выбрать соотношение сторон 0,85 (1:1,176 w:h). Теперь вы можете либо записать области интереса в файл.txt, например:

image1.jpg 1 653 154 1295 1523
image2.jpg 2 1068 406 1551 1824 3036 1159 852 1004

Или вы можете сначала обрезать изображения к этим:

и затем создайте текстовый файл как это:

cropped_image1_cup1.jpg 1 0 0 1295 1523
cropped_image2_cup1.jpg 1 0 0 1551 1824
cropped_image2_cup2.jpg 1 0 0 852 1004

Оба должны создать один и тот же файл.vec (если обрезка не создала никаких артефактов, таких как дополнительное сжатие jpeg - лучше используйте png;)).

Затем вы можете выбрать целевой размер, например, 20х24 (соотношение сторон 1: 1,2). Хорошо написать код или инструмент, который фиксирует соотношение сторон в ваших помеченных входных изображениях, поэтому гораздо проще и интуитивно понятнее не маркировать ваши объекты с идеальным соотношением сторон, а помечать их такими, какие они есть, и выполнять постобработку, добавляя области интереса. чтобы соответствовать соотношению сторон (при необходимости добавьте дополнительный фон слева / справа или сверху / снизу). Или проигнорируйте разницу в соотношении сторон, если вам подходит какая-то деформация.

Другие вопросы по тегам