半小时完成图像风格迁移应用,从代码到部署。

Hello! 这里是GIS宇宙,最近在填坑。
前段时间看到一些玩摄影的朋友们用Dream这款软件创作了不少有意思的图片,什么莫奈风格的图像啦,所以就想着复刻一下,顺便使用最近发现的一款强大的Python构建应用的库来做,从构建到发布大概半小时不到吧(绝对不是标题党!)。

本次代码都是在云端上进行,所以没有设备的同学也可以尝试哦,从构建自己的代码到发布到网站,不需要掌握服务器相关知识轻轻松松做网页。

1 基本步骤

  • 首先在Colab写好代码
  • 然后在huggingface发布网站
  • 访问网站

是不是听起来很简单呢?好的本期就到这里了,我们下期再见~

言归正传,先来介绍一下今天的主角:gradiogradio这个库很方便,首先开源,其次提供了很多丰富的组件,直接无脑使用就完事了,案例如下:

import gradio as gr

def sketch_recognition(img):

iface = gr.Interface(
    fn=sketch_recognition, 
    inputs="sketchpad",
    outputs="label"
    ).launch()

定义了一个处理函数,然后定义一下你的输入组件,输出组件,最后一起传给gr的interface就行,然后你会得到下面的效果:

2 Colab写代码

Colab是一个结合谷歌网盘的服务器,你可以把自己的代码上传到这里运行,它自带GPU和空间,就当做自己的电脑使用,编译代码采用的是Jupyter Notebook的形式,

注意就是有些库是没有需要自己安装一下,不过Tesorflow是有的,所以不需要自己配环境,就很爽。
安装命令:!pip install xxx
本次的图像风格迁移我没有自己构建模型,而是用了别人的,毕竟要半小时嘛,能省时间就省时间(狗头)。

定义函数

首先简单定义一个函数,首先我们会获取两张图片,一张作为提取风格的,一张用作变成这一风格的,然后用TFhub里面的模型预测一下,然后返回即可。

def sepia(input_path,input_path2):
  input_img = load_img(input_path)
  input_img2 = load_img(input_path2)

  hub_model = hub.load('https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2')
  stylized_image = hub_model(tf.constant(input_img), tf.constant(input_img2))[0]
  pre_img = tensor_to_image(stylized_image)
  return pre_img

可视化界面

然后把前面定义好的函数传给gr.Interface,第一个是函数,第二个是案例,可以给一下例子,然后title是你的标题,input因为有两个参数所以用一个列表传入两个图片组件,output我们也选择图片的组件就行。这样就搞定了。

demo = gr.Interface(
    sepia,examples=[[demo_path,demo_path2],],
    title="上传两个图片,将图片转成另一图片风格",
    inputs=[gr.inputs.Image(label="待转换图片",type="filepath"),gr.inputs.Image(label="风格图片",type="filepath")],
    outputs=gr.outputs.Image(type="auto", label="输出"),theme="dark-seafoam"
          )

写代码算它15分钟吧,还剩15分钟部署一下代码

3 部署代码

来到https://huggingface.co/

创建一个仓库,就和Github一个调调啦,记得选择Gradio:


然后来到我们的仓库(或者美名其曰Space)上传一下我们的Notebook,在Colab文件里导出成py文件,记得改名为app.py,或者你自己创建一个py文件复制代码也可。


上传完后,我们新建一个requirements.txt文件:


这里写着我们的代码需要的库,因为人家服务器是没有这些库的,需要装一下。
之后它就会自动Building啦,看到running就是可以成功访问了
在这里插入图片描述
访问连接
今天就分享这么多吧,感兴趣大家都可以试试,还是比较有意思的,具体的模型原理下来我再好好学习学习,这里是GIS宇宙,我们下期再见!

GIS宇宙公众号

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
当涉及到图像风格迁移时,MATLAB提供了一些强大的工具和函数来实现这个任务。下面是一个基本的MATLAB图像风格迁移代码的示例: ```matlab % 读取原始图像和风格图像 contentImage = imread('path_to_content_image.jpg'); styleImage = imread('path_to_style_image.jpg'); % 将图像转换为双精度浮点数 contentImage = im2double(contentImage); styleImage = im2double(styleImage); % 定义风格迁移参数 alpha = 0.5; % 控制风格和内容的权重 numIterations = 1000; % 迭代次数 % 使用预训练的VGG网络提取特征 net = vgg19(); % 加载预训练的VGG-19网络 contentLayers = {'relu4_2'}; % 内容层 styleLayers = {'relu1_1', 'relu2_1', 'relu3_1', 'relu4_1', 'relu5_1'}; % 风格层 % 提取内容图像和风格图像的特征 contentFeatures = getVGGFeatures(net, contentImage, contentLayers); styleFeatures = getVGGFeatures(net, styleImage, styleLayers); % 初始化生成的图像为内容图像 generatedImage = contentImage; % 使用梯度下降法进行优化 for iteration = 1:numIterations % 计算生成图像的特征 generatedFeatures = getVGGFeatures(net, generatedImage, [contentLayers, styleLayers]); % 计算内容损失 contentLoss = computeContentLoss(generatedFeatures, contentFeatures); % 计算风格损失 styleLoss = computeStyleLoss(generatedFeatures, styleFeatures); % 计算总损失 totalLoss = alpha * contentLoss + (1 - alpha) * styleLoss; % 计算总损失对生成图像的梯度 gradient = computeGradient(net, generatedFeatures, contentFeatures, styleFeatures, alpha); % 使用梯度更新生成图像 generatedImage = generatedImage - 0.1 * gradient; end % 显示生成的图像 imshow(generatedImage); ``` 这只是一个简单的示例,实际的图像风格迁移算法可能更加复杂。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS_宇宙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值