Как обнаруживать людей только в API обнаружения объектов Tensorflow

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

Согласно 1-му комментарию в этом ответ, я проверил файл визуализации, но не нашел ничего, связанного с категориями объектов. Затем я заглянул в category_util.py и обнаружил, что есть csv файл, из которого загружаются все категории, но не нашел этот csv файл в проекте. Кто-нибудь может указать мне правильное направление. Спасибо


person S Andrew    schedule 13.11.2018    source источник


Ответы (1)


Из вашего вопроса я предполагаю, что вы не настраивали свою модель самостоятельно, а просто использовали предварительно обученную модель из модельный зоопарк!?

В этом случае я думаю, что модель уже обнаруживает людей И другие объекты, и вы хотите, чтобы эти другие объекты исчезли !? Для этого вам просто нужно изменить свой label_map.pbtxt, удалив все классы, которые вам не нужны. Если вы не знаете, где найти этот файл, загляните в свой .config файл и найдите label_map_path="PATH".

person Janikan    schedule 13.11.2018
comment
Извините, я забыл упомянуть, что да, я использую предварительно обученную модель ssd_mobilenet_v1_coco_11_06_2017, для которой я изменил mscoco_label_map.pbtxt и удалил все объекты, и в нем есть только person. При тестировании с помощью API для других объектов, таких как car, trucks, отображается ограничивающая рамка с меткой NA. Как я могу даже удалить это, чтобы отображалась ограничивающая рамка только для person, а не для каких-либо других объектов. Спасибо - person S Andrew; 13.11.2018
comment
Вы изменили параметр num_classes в своем файле конфигурации? - person Janikan; 13.11.2018
comment
В objection_detection_tutorial.py у меня NUM_CLASSES = 90, надо ли ставить 1.? Есть ли другой файл, в котором мне нужно внести изменения? - person S Andrew; 13.11.2018
comment
Да, попробуйте установить его на 1. - person Janikan; 13.11.2018
comment
После установки значения 1 он по-прежнему отображает всю ограничивающую рамку для других объектов. - person S Andrew; 13.11.2018
comment
Какой скрипт вы используете для обнаружения? - person Janikan; 13.11.2018
comment
Я использую файл Python с учебником по обнаружению возражений, который я загрузил из записной книжки jupyter. - person S Andrew; 13.11.2018
comment
Хорошо, этот скрипт просто использует логическую часть модели. Ничего не меняет, тоже не знаю, где можно настроить параметр num_classes. Используя этот скрипт, вы можете проверить output_dict['detection_classes'] словарь и удалить все записи, не относящиеся к классу «человек». - person Janikan; 13.11.2018
comment
Хорошо, спасибо, я разберусь с этим подробнее. Что касается output_dict['detection_classes'], он сохраняет только такие данные, как [[ 3. 3. 3. 1. 1....., что означают эти значения.? Как мы узнаем, к какому классу относится человек - person S Andrew; 13.11.2018
comment
Это идентификаторы каждого класса. Значение по умолчанию label_map.pbtxt (с 90 классами) сопоставляет каждый идентификатор с одним классом. Поэтому вам нужно следить за идентификатором человека и отбрасывать все остальные строки в этом и других словарях. - person Janikan; 13.11.2018
comment
Спасибо. Наконец-то я это сделал. Я извлекаю все классы с идентификатором 1, поскольку это идентификатор человека на основе оценок, поэтому, если оценка меньше 50%, я игнорирую этот идентификатор. Таким образом я только обнаруживаю человека. Чтобы удалить ограничивающую рамку, я изменил visualization_utils.py, где я игнорирую всю ограничивающую рамку и показываю только рамку для человека. В конце я также подсчитываю количество обнаруженных людей на основе оценок и классов. - person S Andrew; 14.11.2018
comment
@SAndrew Ускоряется ли процесс обнаружения, поскольку он всегда обнаруживает все 90 категорий? Мне нужен был способ указать модели запускать только определенный список классов, чтобы я мог обнаруживать, например, только Person, Car. Или создатели моделей могут добавить гибкости для переподготовки, используя список классов в Интернете, и загрузить только модель, которая будет определять человека и автомобиль в качестве примера. - person KeitelDOG; 06.03.2019