Как обучить Tensorflow Object Detection изображения, не содержащие объектов?

Я обучаю сеть обнаружения объектов, используя обнаружение объектов Tensorflow,

https://github.com/tensorflow/models/tree/master/research/object_detection

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

Насколько я понимаю при обнаружении объектов Tensorflow, мне нужно предоставить ему набор изображений и соответствующих XML-файлов, которые помещают и маркируют объекты на изображении. Сценарии преобразуют XML в CSV, а затем в другой формат для обучения, и не разрешают файлы XML, не содержащие объектов.

Как предоставить изображение и XML-файлы без объектов?

Или как сеть узнает, что не является объектом?

Например, если вы хотите обнаружить «хот-доги», вы можете тренировать его с помощью набора изображений с хот-догами. Но как приучить его к тому, что не хот-дог?


person James    schedule 08.11.2018    source источник
comment
Похоже, это проблема со скриптами, которые мы используем из github.com/datitran/raccoon_dataset, которые они конвертируют XML-файлы ImageNet в csv, а затем в tf-записи, я посмотрю, смогу ли я исправить сценарии, предполагая, что tf-записи могут тренироваться без объектов?   -  person James    schedule 14.11.2018
comment
В итоге мы исправили скрипт для поддержки пустого XML-файла при преобразовании в csv и tfrecords. Мы также создали скрипт, который генерирует пустой XML-файл для набора изображений (без объектов)   -  person James    schedule 08.02.2019


Ответы (2)


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

Существует два основных типа архитектуры:

  1. двухэтапный, первый этап - предложение объекта / региона (RPN), второй - классификация и доработка ограничивающей рамки;
  2. одноэтапный, который напрямую классифицирует и регрессирует BB на основе вектора признаков, соответствующего определенной ячейке на карте признаков.

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

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

person netanel-sam    schedule 11.11.2018
comment
Спасибо за информацию. Скрипты python из github.com/tensorflow/models/tree/master/research/ не допускают, чтобы в XML-файле изображения не было объектов, поэтому это должно быть просто проблемой сценария. - person James; 13.11.2018

Возможно, вам стоит взглянуть на это решение.

Чтобы API обнаружения объектов tensorflow включал ваши отрицательные примеры, вам необходимо добавить отрицательные примеры в файл csv, созданный из xml, либо путем изменения сценария, который генерирует файл csv, либо путем добавления примеров впоследствии.

Для создания xml-файлов без меток классов с помощью LabelImg вы можете сделать это, нажав «Проверить изображение».

person Jurgz    schedule 07.02.2019