Слабая нагрузка на видеокарту при распозновании лиц
Работаю с распознаванием лиц в связке Python + dlib + face_recognition.
Dlib взят с официального сайта и скомпилирован для использования CUDA, в face_recognition используется модель CNN. Тестировалось на двух ноутах с видюхами GTX 970 и 3060. Всё работает и там и там, но видюхи нагружены только на 6-10%. В каких-то других задачах, где доводилось подключать использование GPU, нагрузка всегда была под 100%.
Вопрос в следующем: так и должно быть, или я что-то недопонимаю и делаю не так? Запуск двух копий "приложения" на обработку двух разных видеофайлов нагрузку не увеличивает.
Кодовая основа моего детектирования:
video_file = 'my_video.mp4'
cap = cv2.VideoCapture(video_file)
while True:
ret, frame = cap.read()
if not ret:
break
frame = frame[:, :, ::-1]
face_locations = face_recognition.face_locations(frame, model="cnn")
for face_location in face_locations:
top, right, bottom, left = face_location
face_image = frame[top - 35:bottom + 30, left - 30:right + 25]
pil_image = Image.fromarray(face_image)
pil_image.show()
Проверка на подключение CUDA:
>>>print(dlib.DLIB_USE_CUDA)
>>>True
UPD: Скомпилировал и запустил то же самое на Ubuntu. Видюха загрузилась до 60-65% и итоговая скорость обработки тестового файла увеличилась примерно в 2,5 раза.