¿Cómo convertir rápidamente una matriz numpy Python-in-Lua devuelta en un Lua Torch Tensor?
Tengo una función de Python que devuelve una matriz numpy multidimensional. Quiero llamar a esta función de Python desde Lua y obtener los datos en un Tensor de antorcha Lua lo más rápido posible. Tengo una solución que funciona bastante lento y estoy buscando una forma que sea significativamente más rápida (orden de 10 fps o más). No estoy seguro si esto es posible.
Creo que esto será de utilidad para otros, teniendo en cuenta la creciente popularidad de Torch respaldado por Facebook y las amplias herramientas de procesamiento de imágenes fáciles de usar disponibles en Python de las que Lua carece.
Estoy usando la bifurcación Bastibe de lunatic-python para llamar a una función Python desde Lua. Con ayuda de este anteriorpregunta y estodocumentación, Se me ocurrió un código que funciona, pero es demasiado lento. Estoy usando Lua 5.1 y Python 2.7.6 y puedo actualizarlos si es necesario.
Código Lua: "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)
Código de Python: "test_python.py"
import numpy
import os,sys
import Image
def getImage(width, height):
return numpy.asarray(Image.open("image.jpg"))