【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)

简介: 【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)


功能演示

摘要:图像风格迁移(Image Style Transfer)是一种将一张图像的风格应用到另一张图像上的技术。本文详细介绍了其实现的技术原理,同时给出完整的Python实现代码、训练好的Pt模型,并且通过PyQT实现了UI界面,更方便进行功能的展示。图片风格转换系统主要实现了3种风格的图片转移模型(可以自己训练喜欢的风格模型),只需要载入要进行风格转化的图片,并选择自己喜欢的风格,就可以立即得到转化后的图片效果。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习,完整的代码资源文件获取方式见文末。


前言

图像风格迁移(Image Style Transfer)是一种将一张图像的风格应用到另一张图像上的技术。具体来说,它将一张包含艺术风格的图像作为输入(称为"风格图片"),并将其应用到一张包含内容的图像(称为"内容图片")上,以生成一张新的图像,该图像保留了原始内容图片的内容,但具有风格图片的艺术风格。它是一种深度学习技术,利用了卷积神经网络的特征提取能力。通常使用预训练的卷积神经网络,如VGG网络,以提取输入图像的特征表示。然后,通过最小化内容图片和风格图片的特征表示之间的差异,以及保持生成图像与内容图片之间的相似度,生成新的图像。图像风格迁移可以应用于许多场景,如图像编辑、艺术创作、视频处理等,它是计算机视觉领域中的热门研究方向之一。

下面是博主设计的简洁软件界面,能够实现目标图片的风格选择,并且快速的将目标图片转换为指定风格并进行展示,还提供了图片保存功能。感兴趣的小伙伴可以自己试试。

觉得不错的小伙伴,感谢点赞、关注加收藏!如果大家有任何建议或意见,欢迎在评论区留言交流!

初始界面如下图:

图片载入并选择图片风格之后,点击风格转换转换之后,界面如下:(然后点击保存图片,可以将转换后的风格图片保存至默认目录)

一、效果演示

(1)图片风格转移

点击载入图片,默认图片风格为梵高风格,点击风格转换,即可在右边显示出转换后的图片。

(2)更改图片风格

这里提供了3种预训练好的图片风格模型进行选择,通过下拉框选择指定的风格,然后点击风格转换即可。点击保存图片,即可将风格迁移后的图片进行保存。

二、图片迁移原理介绍

1.基本原理

本文主要利用的是基于神经网络的风格转换(Neural style transfer)技术:是一种基于离线模型优化的快速图像风格化迁移算法。核心思想就是利用基于离线模型优化的快速图像重建方法来节省时间。具体来说就是预训练一个前向网络,使得图像经过一次前向计算就可以得到图像重建结果,在依据各自约束来优化这一结果。根据一个训练好的前向网络能够学习到多少个风格作为分类依据,这里可以将这一类算法再细分为单模型单风格(PSPM)、单模型多风格(MSPM)和单模型任意风格(ASPM)的快速风格化迁移算法。

本文使用的是单模型单风格(PSPM)的方式,即基于某一种图片风格以VGG网络为backbone,训练好相应风格的预训练模型,然后可以直接使用该训练好的模型对于图片进行快速的风格迁移。基本原理见下图:

更多原理介绍可参考:https://blog.csdn.net/qq_39297053/article/details/120453246

2.训练模型

可以在自己的输入样式图像上训练自定义模型。为此,需要一个内容图像数据集来进行训练:例如MS-COCO 2014 数据集。

启动训方式,按以下方式运行train.py脚本:

python train.py --dataset_path [PATH_TO_DATASET] --style_image_path [PATH_TO_STYLE_IMAGE]

具体示例如下:

python train.py \
  --dataset_path ms-coco \
  --style_image_path images/style/1.jpg \
  --batch_size 8 \
  --lambda_style 200

dataset_path:包含训练集和验证集的文件夹的路径。该文件夹的结构应如下所示:

train.py的参数说明:

style_image_path:目标样式图像的路径。

root_logdir:保存模型快照和 TensorBoard 日志的根目录。默认=“模型”。

weights_snapshot_path:模型权重快照的路径。在恢复以前的培训工作时使用。默认 = ‘’。

lambda_content:内容项在总损失中的权重。经验上好的范围:1 - 100。默认值 = 10。

lambda_style:样式项在总损失中的权重。经验上好的范围:10 - 100,000。默认值 = 100。

lambda_tv:生成图像的总变化在总损失中的权重。经验上好的范围:0 - 1,000。默认值 = 10。

learning_rate:优化过程中每一步的大小。默认值 = 1e-3。

epochs:要执行的训练时期数。默认值 = 2。

content_block_weights:每个卷积块在内容损失中的权重。这五个数字指的是VGG19模型的以下五个激活:conv1_1、conv2_1、conv3_1、conv4_1、conv5_1。默认值 = (0.0, 1.0, 0.0, 0.0, 0.0)。

style_block_weights:样式损失中每个卷积块的权重。这五个数字指的是VGG19模型的以下五个激活:conv1_1、conv2_1、conv3_1、conv4_1、conv5_1。默认 = (1/5, 1/5, 1/5, 1/5, 1/5)。

input_images_dim:模型输入图像的维度。默认值 = 256。

visualization_interval:间隔(训练迭代次数),之后程式化图像的中间结果将在 TensorBoard 中可视化。默认值 = 50。

snapshot_interval:间隔(训练迭代次数),之后模型的中间快照将被保存到磁盘。默认值 = 1000。

batch_size:用于每次训练迭代的小批量大小。默认值 = 4。

num_data_loader_workers:用于在后台从数据集中加载图像的工作人员数量。默认值 = 5。

3.模型使用方法

命令行方式:

python run.py [PATH_TO_PRETRAINED_MODEL] [PATH_TO_CONTENT_IMAGE] [PATH_TO_STYLIZED_OUTPUT]

编程方式:

import image_utils
from stylize import Stylizer
stylizer = Stylizer('models/style1.pt')
image = image_utils.load('images/content/1.jpg')
stylized = stylizer.stylize(image)
image_utils.save(stylized, f'images/stylized/style1/1.jpg')

4.风格迁移示例

相关文章
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
1392 27
|
机器学习/深度学习 监控 算法
基于mediapipe深度学习的手势数字识别系统python源码
本内容涵盖手势识别算法的相关资料,包括:1. 算法运行效果预览(无水印完整程序);2. 软件版本与配置环境说明,提供Python运行环境安装步骤;3. 部分核心代码,完整版含中文注释及操作视频;4. 算法理论概述,详解Mediapipe框架在手势识别中的应用。Mediapipe采用模块化设计,包含Calculator Graph、Packet和Subgraph等核心组件,支持实时处理任务,广泛应用于虚拟现实、智能监控等领域。
|
机器学习/深度学习 存储 监控
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
本项目基于深度学习的YOLO框架,成功实现了城市道路损伤的自动检测与评估。通过YOLOv8模型,我们能够高效地识别和分类路面裂缝、井盖移位、坑洼路面等常见的道路损伤类型。系统的核心优势在于其高效性和实时性,能够实时监控城市道路,自动标注损伤类型,并生成损伤评估报告。
677 0
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
|
机器学习/深度学习 自动驾驶 算法
基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
在智慧交通和智能驾驶日益普及的今天,准确识别复杂交通场景中的关键元素已成为自动驾驶系统的核心能力之一。传统的图像处理技术难以适应高动态、复杂天气、多目标密集的交通环境,而基于深度学习的目标检测算法,尤其是YOLO(You Only Look Once)系列,因其检测速度快、精度高、可部署性强等特点,在交通场景识别中占据了重要地位。
1289 0
基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1469 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
894 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
存储 JSON JavaScript
WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
本文介绍了如何使用MxPluginContext动态控制MxCAD项目的UI界面。通过该上下文对象,开发者可以灵活设置UI配置,如控制操作栏显隐、编辑按钮、添加侧边栏等。具体方法包括调用`getUiConfig()`获取并修改`mxUiConfig.json`中的属性,实现界面的定制化。此外,还提供了控制命令行聚焦的功能,解决输入框焦点锁定问题。详细代码示例和效果对比图展示了具体实现步骤,帮助开发者更好地适配项目需求。
|
机器学习/深度学习 算法 前端开发
基于Python深度学习果蔬识别系统实现
本项目基于Python和TensorFlow,使用ResNet卷积神经网络模型,对12种常见果蔬(如土豆、苹果等)的图像数据集进行训练,构建了一个高精度的果蔬识别系统。系统通过Django框架搭建Web端可视化界面,用户可上传图片并自动识别果蔬种类。该项目旨在提高农业生产效率,广泛应用于食品安全、智能农业等领域。CNN凭借其强大的特征提取能力,在图像分类任务中表现出色,为实现高效的自动化果蔬识别提供了技术支持。
690 0
基于Python深度学习果蔬识别系统实现
|
机器学习/深度学习 运维 安全
深度学习在安全事件检测中的应用:守护数字世界的利器
深度学习在安全事件检测中的应用:守护数字世界的利器
615 22

推荐镜像

更多