Обнаружение и классификация изображений - общий подход? - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь построить модель обнаружения + классификации, которая распознает объект на изображении и классифицирует его. Каждое изображение будет содержать не более 1 объекта среди моих 10 классов (т.е. одно и то же изображение не может содержать 2 класса). Однако изображение не может содержать ни одного из моих классов / объектов. Я борюсь с общим подходом к этой проблеме, особенно из-за характера моей проблемы; мои объекты имеют разные размеры. Вот что я попробовал:

  1. Обучил классификатор изображениями, которые содержат только мои объекты / классы, т.е. каждое изображение - это сам объект с предварительно удаленным фоном. Теперь, поскольку объекты / изображения имеют разные формы (аспект крыса ios), мне пришлось изменить форму изображения до одного размера (уничтожив аспект крысы ios). Это работало бы отлично, если бы моей целью было только построить классификатор, но так как мне также нужно обнаруживать объекты, это не сработало так хорошо.

  2. Второй подход был аналогичным в (1), за исключением того, что я не наивно изменял форму объектов, но сохранил аспект rat ios, дополнив изображение 0 (черный). Это полностью разрушило мою способность классификаторов работать хорошо (точность <5%). </p>

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

Вопрос: Как мне подойти к этой проблеме на общем уровне:

  • Стоит ли строить 2 отдельные модели? (Один для обнаружения / локализации и один для классификации?)

  • Должен ли я аннотировать мои изображения, используя файл аннотаций, как в подходе (3)?

  • Должен ли я изменять форму моих изображений на любом этапе?

Спасибо,

PS. Во всех моих подходах я увеличивал изображения для генерации ~ 500-1000 изображений на класс.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Если вы go пройдете этот урок, вы поймете, что вас волнует. Как обучить собственный детектор объектов с помощью API детектора объектов TensorFlow

Модель твердотельного накопителя небольшая, поэтому для обучения не потребуется много времени. Существует несколько моделей обнаружения объектов.

В RectLabel вы можете сохранять ограничивающие рамки в формате PASCAL VO C. Вы можете экспортировать TFRecord для Tensorflow. https://rectlabel.com/help#tf_record

0 голосов
/ 04 февраля 2020

Чтобы ответить на ваши вопросы:

  • Нет, вам не нужно создавать две отдельные модели. То, что вы описываете, называется Обнаружение объектов , что является классификацией наряду с локализацией. Есть много моделей, которые делают это: Mask_RCNN , Yolo , Detectron , SSD , et c ..

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

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

Вы на правильном пути, пытаясь MaskRCNN .

Кроме MaskRCNN, вы также можете попробовать Yolo . Также имеется сопровождающий простой в использовании аннотирующий инструмент Yolo-Mark .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...