importos | |
importssl | |
fromtimeimporttime | |
fromurllib.requestimporturlopen | |
fromtempfileimportNamedTemporaryFile | |
# Set this appropriately. | |
# os.environ["THEANO_FLAGS"] = "device=cpu" | |
os.environ['KERAS_BACKEND'] ="theano" | |
importtheano | |
importnumpyasnp | |
importmatplotlib.pyplotasplt | |
fromscipy.miscimportimsave | |
fromneural_style.utilsimport* | |
fromneural_style.fast_neural_style.transformer_netimportget_transformer_net | |
classModel: | |
def__init__(self, model_path): | |
self.X=theano.shared(np.array([[[[]]]], dtype=floatX)) | |
transformer_net=get_transformer_net(self.X, model_path) | |
Xtr=transformer_net.output | |
self.get_Xtr=theano.function([], Xtr) | |
self.ssl_context=ssl.SSLContext(ssl.PROTOCOL_TLSv1) | |
defstyle_image_by_path(self, path, size=None, output_path=None): | |
img=load_and_preprocess_img(path, size=size) | |
start=time() | |
self.X.set_value(img) | |
img_tr=self.get_Xtr() | |
img_tr=img_tr[0, :, :, :] | |
add_imagenet_mean(img_tr) | |
img_tr=img_tr[::-1].transpose((1, 2, 0)) | |
img_tr=np.clip(img_tr, 0, 255).astype(np.uint8) | |
time_taken=int((time() -start) *1000) | |
print("Took {}ms".format(time_taken)) | |
plt.figure(figsize=(10, 10)) | |
plt.imshow(img_tr) | |
plt.axis("off") | |
ifoutput_pathisnotNone: | |
imsave(output_path, img_tr) | |
self.X.set_value(np.array([[[[]]]], dtype=floatX)) | |
defstyle_image_by_url(self, url, size=None, output_path=None): | |
withNamedTemporaryFile(buffering=0) asf: | |
imdata=urlopen(url, context=self.ssl_context).read() | |
f.write(imdata) | |
f.flush() | |
os.fsync(f) | |
self.style_image_by_path(f.name, size, output_path) | |
model=Model("stained_glass.h5") |
SpaceApps is a NASA incubator innovation program.