Part 01:课程准备
打开Notebook,来到第212分享章节中,这里已经为大家准备好了图像风格转换的应用。
图像风格转换,顾名思义,就是输入一张标准的图片,模型会自动为我们将其转化为不同的风格。比如说将一张照片转化为一张油画,这张油画可以是抽象风格,也可以是写实风格,风格选择具体要看我们使用怎样的模型。话不多说,来运行一下代码看看吧。
首先需要加载相应的依赖库,然后下载所需要的示例模型。可以看到这一共有5个模型,它们分别代表着不同风格的绘画主题或形式。
由于本次用到的模型是被保存在github仓库,所以大家在下载时候遇到问题,可以重试直至下载成功,下载完毕可以看到模型已经被保存在本地的一个model目录下,这里总共有5个onnx格式的模型,由于OpenVINO可以直接输入onnx格式模型,所以我们不需要将其转化为IR格式。
模型下载完毕后,我们需要对输入的示例图片进行前处理,也就是将它的通道从BGR转到RGB的形式。
Part 02:网络推理
接下来来到了本期课程的重磅环节——网络推理。
我们可以借助一些第三方工具看一下这个模型的基本结构。示例模型相对比较简单,它的输入是一张1×3×224×224的图片,它的输出也是一张1×3×224×224(经过转化后的)图片,所以我们只要通过一些简单的后处理,就可以完成非常好的可视化呈现。
接着我们再来看一下推理部分的代码。
首先我们需要通过 Python的PLT工具来创建视图,为将不同风格的图片进行堆叠展示作准备。
然后来到OpenVINO推理部分,获取它的对象函数。
接下来我们需要进行图像的前处理,将它的layout进行转置。此处我们会通过循环去推理每一个模型,每一个模型会单独生成一张通过转化以后的图片。
可以看到,由于输入图像没有经过resize,因此我们需要将模型reshape到输入图像所对应的维度,再进行模型的编译推理,获取结果数据,最后将这些数据作为堆叠,我们就可以得到最终的呈现效果。
运行一下这个代码段可以看到它首先会去跑每一个模型的推理,然后挨个运行,最后看到呈现效果。通俗来说,也就是我们有一张原始的图片,原始图片会被复制成5份,分别以不同的风格进行展示。
最后,杨老师将自己的形象照作为测试示例,并运行模型,我们来看下杨亦诚老师的验证效果。
看到这里,大家是不是也和Nono一样跃跃欲试了?那就动手操作起来吧。