Для примера, давайте предположим, что мы строим оценку возраста, основанную на изображении человека. Ниже у нас два человека в костюмах, но первый явно моложе второго.
(источник: tinytux.com )
Есть множество особенностей, которые подразумевают это, например, структура лица. Однако наиболее характерной особенностью является соотношение размера головы к размеру тела :
(источник: wikimedia.org )
Итак, предположим, что мы обучили регрессию CNN, чтобы предсказать возраст человека. В большинстве предсказателей возраста, которые я пробовал, приведенное выше изображение ребенка, кажется, обманывает прогнозы, заставляя думать, что он старше, из-за костюма и, вероятно, потому, что они полагаются в первую очередь на лицо:
Мне интересно, насколько хорошо ванильная архитектура CNN может определять соотношение головы и туловища?
По сравнению с региональным RCNN, который может получить ограничивающие рамки на теле и голове, будет ли ванильный CNN всегда работать хуже?
Непосредственно перед глобальным выравниванием в ванильном CNN (то есть сразу после всех извилин) каждый выход имеет соответствующее восприимчивое поле, которое должно иметь ощущение масштаба. Я знаю, что более быстрый RCNN использует это, делая предложения ограничивающего прямоугольника именно на этом этапе, так что все предыдущие сверточные фильтры автоматически обучаются всем масштабам.
Итак, я думаю, что ванильный CNN должен быть в состоянии вывести соотношение размера головы и туловища? Это правильно? Если да, то единственное преимущество использования более быстрой структуры RCNN для использования факта, который, возможно, был предварительно обучен обнаружению людей?
источник
Ответы:
Во-первых, спасибо за размещение очень интересного вопроса.
Чтобы ответить на него в ближайшее время, обученный конец-конец-ванильный ванильный конек для прогнозирования возраста по фотографии будет обычно склонен к неправильной классификации изображений, таких как тот, который вы опубликовали . Во-вторых, обратите внимание, что точная оценка возраста человека является почти невозможной задачей 1 .
Основное отличие от предложенного вами подхода с использованием некоторых детекторов объектов (будь то RCNN, Faster RCNN, YOLO или SSD) заключается в том, что вы используете различную информацию для обучения моделей. CNN обучен только на изображениях и должен сам выяснить все необходимые функции. Скорее всего, он найдет различные черты лица, но он также будет опираться на одежду и, возможно, особенности сцены (дети могут часто быть на фотографии с некоторыми игрушками, взрослые чаще будут в офисе и т. Д.). Эти функции не будут надежными для вашего контрпример.
С другой стороны, если вы обучаете сеть явно обнаруживать объекты как «туловище» и «голова», вы предоставляете дополнительную информацию о том, что эти объекты важны для задачи, и таким образом упрощаете задачу 2 .
Хотя подход обнаружения головы и туловища, а затем оценки соотношения размеров ограничивающих рамок звучит интересно, я вижу несколько препятствий:
Все эти проблемы предполагают, что подход соотношения головы к туловищу также не будет работать идеально, хотя он может быть более устойчивым к вашему конкретному контрпримеру.
Я полагаю, что наилучшим способом выполнения этой задачи было бы: 1) определить лицо, 2) предсказать возраст только по культуре лица (удаляет потенциально вводящую в заблуждение информацию). Обратите внимание, что некоторая R-CNN-подобная архитектура, использующая пул ROI, может быть обучена этому концу 2-конца.
1 Даже с использованием очень сложных медицинских методов (которые, возможно, гораздо более информативны, чем фотография человека) это невозможно сделать точно. Смотрите эту тему Quora для получения дополнительной информации .
2 Просмотрите статью « Вопросы знаний: важность предварительной информации для оптимизации», чтобы узнать, как предоставление промежуточных знаний о задаче может значительно упростить обучение.
источник
CNN - слишком большой класс моделей, чтобы ответить на этот вопрос. LeNet, AlexNet, ZFNet и VGG16 будут вести себя совершенно иначе, чем GoogLeNet, который был создан специально для выполнения большей части того, что делает R-CNN, с архитектурой CNN (вы можете знать, что GoogLeNet с именем Inception, даже если строго говоря, Inception просто базовый блок (подсеть), на котором построен GoogLeNet). Наконец, ResNets будет вести себя по-другому. И все эти архитектуры были построены не для классификации возрастных классов, а для 1000 классов ImageNet, которые не содержат возрастных классов для людей. Можно использовать трансферное обучение(если у вас достаточно тренировочных образов), чтобы обучить одну из широко доступных обученных моделей выше и посмотреть, как они работают. В целом, однако, особенно старые архитектуры (скажем, до VGG16) испытывают трудности с изучением «глобальных особенностей», которые требуют изучения «головы» (уже сложная особенность), «туловища» (еще одна сложная особенность) и их отношение (которое также требует, чтобы эти два объекта находились в определенном пространственном отношении). Такого рода вещи - это то, что Capsule Networks должны были делать.
Convnets были рождены, чтобы делать с точностью до наоборот: быть чувствительными к локальным особенностям и относительно нечувствительными к их относительному положению / масштабу. Хороший Convnet должен распознавать «белого кота», независимо от того, является ли изображение крупным планом или американский снимок. Комбинирование сверточных слоев (которые чувствительны к локальным элементам) с объединением слоев (которые снимают часть чувствительности к изменению масштаба или трансляции изображения) дает вам архитектуру, которая в своей основной форме не очень хороша для изучения пространственных видов отношения между объектами, которые вы ищете. Был где-то пример (но я больше не могу его найти), где после разделения изображения кошки на различные прямоугольные неперекрывающиеся плитки и их объединения в случайном порядке CNN будет продолжать идентифицировать изображение как
cat
, Это указывает на то, что CNN более чувствительны к локальным объектам (текстурам или чему-то в этом роде), чем к пространственным отношениям между объектами высокого уровня. Смотрите также статью о Капсульных сетях для некоторого обсуждения этого. Хинтон также показал пример этого в видео о пределах возможностей сети .Мое предположение состоит в том, что одна из последних архитектур была бы вполне способна (учитывая достаточное количество данных) отличать мужчин от детей, но не из-за «порога» для метрической взаимосвязи между функциями высокого уровня, такими как «голова» и «туловище» , Это выучило бы некоторую статистическую закономерность, может быть, совершенно незаметную для людей, которая отделяет изображения взрослых от изображений детей в тренировочном наборе.
источник
Ну, все зависит от того, как построен ваш набор данных. Исходя из моего опыта, нейронные сети стремятся к простейшим объяснениям. И выводить возраст из одежды на самом деле проще, чем использовать соотношение головы к телу. Если вы можете расширить свой набор данных, имея это в виду, ваш CNN должен работать как положено.
источник