Как быстро преобразовать возвращаемый массив numpy Python-in-Lua в тензор Lua Torch?
У меня есть функция Python, которая возвращает многомерный массив NumPy. Я хочу вызвать эту функцию Python из Lua и как можно быстрее передать данные в тензор Lua Torch. У меня есть решение, которое работает довольно медленно, и я ищу способ, который значительно быстрее (порядка 10 кадров в секунду или более). Я не уверен, возможно ли это.
Я полагаю, что это будет полезно для других, учитывая растущую популярность поддерживаемого Facebook Torch и обширные простые в использовании инструменты обработки изображений, доступные в Python, которых Lua не хватает.
Я использую вилку Bastibe из lunatic-python для вызова функции Python из Lua. С помощью этого предыдущеговопрос и этодокументацияЯ пришел с кодом, который работает, но слишком медленно. Я использую Lua 5.1 и Python 2.7.6 и могу обновить их при необходимости.
Lua Code: "test_lua.lua"
require 'torch'
print(package.loadlib("libpython2.7.so", "*"))
require("lua-python")
getImage = python.import "test_python".getImage
pb = python.builtins()
function getImageTensor(pythonImageHandle,width,height)
imageTensor = torch.Tensor(3,height,width)
image_0 = python.asindx(pythonImageHandle(height,width))
for i=0,height-1 do
image_1 = python.asindx(image_0[i])
for j=0,width-1 do
image_2 = python.asindx(image_1[j])
for k=0,2 do
-- Tensor indices begin at 1
-- User python inbuilt to-int function to return integer
imageTensor[k+1][i+1][j+1] = pb.int(image_2[k])/255
end
end
end
return imageTensor
end
a = getImageTensor(getImage,600,400)
Код Python: "test_python.py"
import numpy
import os,sys
import Image
def getImage(width, height):
return numpy.asarray(Image.open("image.jpg"))