Я оцениваю модель Tensorflow на открытых видеокадрах. Мне нужно изменить изображение входящего PIL в измененный массив numpy, чтобы я мог выполнить вывод на нем. Но я вижу, что преобразование изображения PIL в массив numpy происходит вокруг 900+ миллисекунд на моем ноутбуке с 16-гигабайтной памятью и процессором Intel Core i7 с тактовой частотой 2,6 ГГц. Мне нужно сделать это до нескольких миллисекунд, чтобы я мог обрабатывать несколько кадров в секунду на моей камере.
Может ли кто-нибудь предложить, как сделать метод ниже быстрее?
def load_image_into_numpy_array(pil_image):
(im_width, im_height) = pil_image.size
data = pil_image.getdata()
data_array = np.array(data)
return data_array.reshape((im_height, im_width, 3)).astype(np.uint8)
При дальнейшем np.array(data)
я понял, что np.array(data)
занимает большую часть времени... близко к 900+ миллисекундам. Поэтому преобразование данных изображения в массив numpy является реальным виновником.
Вы можете просто позволить numpy обрабатывать преобразование вместо того, чтобы переделывать себя.
def pil_image_to_numpy_array(pil_image):
return np.asarray(pil_image)
Вы конвертируете изображение в формат (высота, ширина, канал). Это преобразование по умолчанию. Функция numpy.asarray выполняет на изображении PIL, поэтому явное переформатирование не должно быть необходимым.
load_image_into_numpy_array
в github.com/tensorflow/models/blob/master/research/…