2016-04-08 5 views
1

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

Предположим, у вас есть положение конечной точки носов для набора данных с лицами. Чтобы найти конечную точку, вы просто выполняете проблему типа «классификации», где ваш выходной уровень имеет значение 64x64 = 4096 точек, но если нос находится в строке 43 строки и в столбце 20 вашей сетки, вы просто устанавливаете вывод как все ноль, кроме для элемента 43 * 64 + 20 = 2772, где вы устанавливаете его равным 1? Затем просто верните его обратно в свои размеры изображения.

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

ответ

1

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

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

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

+1

Мои документы для чтения, по-видимому, указывают на то, что они используют методики, основанные на регрессии, после того как они больше изучают ее. По существу, нейронная сеть вычисляет позиции и использует сетки свертки для нелинейных эффектов при вычислении. Я собирался попробовать распознать лицевую грань, и в этой области есть много работы, где они получают неплохие результаты с помощью только нейронных сетей и немного менее изящными, чем каскадные классификаторы. Я определенно смотрю на каскадные классификаторы, хотя, думая об использовании двухэтапной атаки с ними и нейронных сетей. – user2927848

+1

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

+1

Моя единственная проблема с каскадными классификаторами заключается в том, что они кажутся очень утонченными, чем те, которые находятся в opencv. Можно ли обучить некоторых, которые не являются вариантами вращения и работают под разными углами? Или необходимо запустить несколько проходов со многими классификаторами для нескольких углов, чтобы убедиться, что вы поймаете лица? – user2927848

Смежные вопросы