Ожидаемый размер векторного элемента с использованием Inception-v2 в Tensorflow - PullRequest
0 голосов
/ 25 февраля 2020

I sh для извлечения векторов объектов для областей, представляющих интерес при обнаружении объектов. Я использую Faster RCNN & Inception-v2, по существу следуя этому уроку , но я добавил detection_features в качестве ключа.

У меня сложилось впечатление, что выходной вектор объектов был из CNN, прежде чем он будет классифицирован. Из таблицы 1 в документе Inception-v2 я ожидал, что она будет размером 1x1x1000. Тем не менее, размер output_dict['detection_features'][0] в моем коде равен 4x4x1024, что меня смущает, поскольку кажется, что это не векторный размер, который появляется на любом этапе Inception-v2.

Будем весьма благодарны за любые указания относительно того, почему размеры не совпадают. Я обеспокоен, что я что-то неправильно понял, но я не могу найти много документации по вектору признаков в обнаружении объектов Tensorflow.

Большое спасибо

1 Ответ

1 голос
/ 01 марта 2020

Указанное число c единиц на слой не является архитектурным законом; Сеть, соответствующая архитектуре Inception V2, в первую очередь зависит от потока информации. Ваша ситуация выглядит хорошо. Создатель Keras однажды написал, что использование юнитов, кратных 8, может дать небольшое вычислительное преимущество, поэтому ваши юниты последнего слоя, возможно, немного лучше, чем у бумаги. Что касается бита 4,4, это может быть результатом входных измерений. Вот почему существует минимально возможный размер ввода (в противном случае некоторые операции не будут иметь пикселей для работы). Более крупный вход (изображение), следуя той же процедуре Inception V2 , приведет к увеличению выходных размеров. Это нормально, это просто означает, что прямое выравнивание (между cnn и классификатором) приводит к увеличению количества единиц, или, альтернативно, глобальное объединение отбрасывает больше информации.

В итоге: то, что вы сделали, прекрасно. Архитектура - это вопрос графических операций, тогда как конкретные c реализации (измерения в сети) являются вопросом применения.

Редактировать: более подробное объяснение
Сверточные слои определяются их формой ядра и количеством единиц (количество ядер). Если архитектура использует сверточный уровень с (3,3) матричным ядром, она будет применять это независимо от размера предоставляемого ей контента (по крайней мере, такого же размера, как ядро). Таким образом, если сетевая архитектура, такая как VGG (диаграмма) , требует определенного количества сверточных уровней с (3,3) ядрами, за которыми следует (2,2) пул, тогда действительно не имеет значения, Вы делаете свою форму ввода сети (299,299,3) или (32,32,32). Те же самые операции будут выполняться на входах, только разное количество раз вдоль осей (включая, конечно, последнюю ось, которая является числом единиц, которое является числом уникальных ядер), что приводит к другому выходу форма.

...