Lsh
@Lsh

MXNet показывает низкую производительность на видеокарте. Где может быть узкое место?

Привет всем!

Пытаюсь разобраться с детектированием лиц на изображениях с использованием нейронных сетей.
Где-то на Хабре прочитал, что хорошим детектором является MTCNN, он точный и быстрый.
Я нашёл два его (её?) варианта для фреймворка MXNet.
1: https://github.com/onnx/models/blob/master/models/...
2: https://github.com/edmBernard/mtcnn
Оно работает и находит лица.
Но: FPS низкий (6 - 10) и видеокарта загружается только на 10 - 15%, память видеокарты занимается максимум на четверть. Т.е. есть какое-то узкое место, которое мешает использовать мощность GPU на полную. Как его найти, куда копать, в чём может быть причина?
Для тестирования у меня крайне простой код (это код для первого варианта, для второго - аналогичный), как мне кажется, тормозить тут просто нечему:
import time
import cv2
import mxnet as mx
import mtcnn_detector
ctx = mx.gpu()
detector = mtcnn_detector.MtcnnDetector("path_to_model", ctx=ctx)
image = cv2.imread("1920x1080.png")
frame_id = 0
time_deltas: = [1 for _ in range(10)]
while True:
    time1 = time.time()
    detector.detect_face(image)
    time2 = time.time()
    td = time2 - time1
    time_deltas[frame_id % 10] = td
    if frame_id % 10 == 0:
        fps = 1 / (sum(time_deltas) / len(time_deltas))
        print(fps)
    frame_id += 1


GPU: Две штуки GTX 1050Ti, CPU: Xeon E5-2660 v2 @ 2.20GHz, RAM: 32GB
Python 3.6.7, mxnet-cu91mkl, Nvidia driver: 390.48
Ubuntu 18.04
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
Arseny_Info
@Arseny_Info
R&D engineer
Для лучшей утилизации нужна батчевая обработка данных.
Ответ написан
Комментировать
@asd111
Зарегистрируйся в ods.ai и спроси там у ребят. Заодно по поводу алгоритма уточнишь у них. Там как раз много спецов по mxnet.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы