Оптимизация модели обнаружения объектов Tensorflow V2 Модель Centernet для оценки

Я использую модель обнаружения объектов tensorflow centernet_resnet50_v2_512x512_kpts_coco17_tpu-8 на Nvidia Tesla P100 для извлечения ограничивающих рамок и ключевых точек для обнаружения людей в видео. Используя предварительно обученную версию с tenorflow.org, я могу обрабатывать около 16 кадров в секунду. Можно ли как-нибудь улучшить скорость оценки этой модели? Вот несколько идей, над которыми я размышлял:

  • Pruning the model graph since I am only detecting 1 type of object (people)
    • Have not been successful in doing this. Changing the label_map when building the model does not seem to improve performance.
  • Hard coding the input size
    • Have not found a good way to do this.
  • Compiling the model to an optimized form using something like TensorRT
    • Initial attempts to convert to TensorRT did not have any performance improvements.
  • Batching predictions
    • It looks like the pre-trained model has the batch size hard coded to 1, and so far when I try to change this using the model_builder I see a drop in performance.
    • Использование моего графического процессора составляет около 75%, поэтому я не знаю, есть ли здесь что-то полезное.

person Narek    schedule 04.11.2020    source источник


Ответы (1)


TensorRT в большинстве случаев должен давать большое увеличение количества кадров в секунду по сравнению с Tensorflow.

centernet_resnet50_v2_512x512_kpts_coco17_tpu-8 можно найти в зоопарке TensorFlow Model Zoo. Nvidia выпустила сообщение в блоге, в котором описывается, как оптимизировать модели из TensorFlow Model Zoo с помощью Deepstream и TensorRT: https://developer.nvidia.com/blog/deploying-models-from-tensorflow-model-zoo-using-deepstream-and-triton-inference-server/

Теперь по поводу ваших предложений:

  • Обрезка графа модели. Обрезка графа модели может быть выполнена путем преобразования вашей модели тензорного потока в модель TF-TRT.

  • Жесткое кодирование размера ввода: используйте статический режим в TF-TRT. Это режим по умолчанию, включенный: is_dynamic_op=False

  • Составление модели. Я бы посоветовал преобразовать вашу модель в TF-TRT или сначала в ONNX, а затем в TensorRT.

  • Пакетная обработка: об указании размера пакета также рассказывается в сообщении блога NVIDIA.

Наконец, для моей модели значительное увеличение производительности произошло за счет использования FP16 в моем механизме вывода. (смешанная точность) Вы даже можете попробовать INT8, хотя то сначала нужно откалибровать.

person joostblack    schedule 13.11.2020