Изменить размер n-мерного массива изображений - PullRequest
2 голосов
/ 26 марта 2019

Я работаю с гранями разных размеров, которые генерируются во время вывода из видео. Количество посевов лица в кадре может варьироваться. Допустим, у меня n = 3 лицевой культуры размером (127,321,3), (119,258,3), (135,127,3). Мне нужно изменить их размер за один раз до нового размера (new_w,new_h,3). Изменение размера будет, как правило, понижающей выборкой. Что делать, если некоторые культуры нуждаются в повышении качества?

В настоящее время я использую opencv функцию изменения размера в цикле, но мне нужно сделать это в реальном времени (< 10 ms). Я пытался преобразовать изображения в массивы numey и изменить их размер как массивы numpy, но это искажает изображения. Я также пытался создать пул процессов, но он требует слишком много ресурсов, которые я не могу себе позволить, так как в моей памяти загружена сеть глубокого обучения.

new_w, new_h = 112, 112 #  new shape we need to resize images to
crops_batch = [[...],[...],[...]] # contains 3 images
resized_crops = [len(crops_batch),3,new_w,new_h]

for i in range(0, len(crops_batch)):
    temp_img = crops_batch[i] 
    resized_img = cv2.resize(temp_img, (new_h, new_w))
    resized_img = np.transpose(resized_img , (2,0,1)) # channels, width, height 
    resized_crops[i,:,:,:] = resized_img

Моя цель - получить resized_crops массив формы (n,3,new_w,new_h) с использованием пакетной обработки, поскольку мне придется обрабатывать сотни культур в секунду. ** Редактировать: ** Что, если все face_crops уже одного размера? Как мы можем сделать изменение размера партии? ** Редактировать 2: ** Я открыт для решения в C ++, которое может помочь изменить размер партии.

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