利用 Python 和 AI 技术创作独特的图像艺术作品


1. 项目目标

  • 生成艺术作品:利用 AI 模型(如 Stable Diffusion)生成具有艺术风格的图像。
  • 自定义风格:通过文本提示(prompt)控制图像的艺术风格(如赛博朋克、印象派、超现实主义等)。
  • 后处理:使用 Python 进行图像增强或风格迁移,增加独特性。
  • 工具:Python, Stable Diffusion (Hugging Face), PyTorch, Pillow, OpenCV。

2. 技术路线

以下是实现步骤:

  1. 安装必要的库
    • 安装 Python 环境(推荐 Python 3.8+)。
    • 安装 AI 和图像处理相关库。
  2. 使用预训练模型生成图像
    • 使用 Stable Diffusion 模型通过文本提示生成基础艺术图像。
  3. 图像后处理
    • 使用 Pillow 或 OpenCV 添加滤镜、调整颜色或进行风格迁移。
  4. 保存和展示
    • 将生成的艺术作品保存为高分辨率图像。

3. 环境准备

安装依赖

确保你有以下库:

pip install diffusers transformers torch pillow opencv-python numpy
硬件要求
  • GPU(推荐):Stable Diffusion 在 GPU 上运行更快(需要 NVIDIA GPU 和 CUDA 支持)。
  • CPU(可选):如果没有 GPU,可以用 CPU,但生成速度较慢。
Hugging Face 登录

Stable Diffusion 模型需要从 Hugging Face 下载,并可能需要登录:

pip install huggingface_hub
huggingface-cli login

输入你的 Hugging Face 令牌(在 Hugging Face 官网获取)。


4. 代码实现

以下是一个完整的 Python 脚本,结合 Stable Diffusion 生成艺术图像,并进行后处理。

import torch
from diffusers import StableDiffusionPipeline
from PIL import Image
import cv2
import numpy as np
import os# 1. 初始化 Stable Diffusion 模型
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")  # 使用 GPU(如果没有 GPU,注释此行)# 2. 定义艺术风格的文本提示
prompt = "A surreal painting of a futuristic city at sunset, vibrant colors, in the style of Salvador Dali"
negative_prompt = "low quality, blurry, text, watermark"  # 避免生成低质量图像# 3. 生成图像
image = pipe(prompt,negative_prompt=negative_prompt,num_inference_steps=50,  # 推理步数,控制生成质量guidance_scale=7.5,     # 提示引导强度
).images[0]# 4. 保存原始生成图像
output_dir = "art_output"
os.makedirs(output_dir, exist_ok=True)
image.save(os.path.join(output_dir, "original_art.png"))# 5. 图像后处理:添加艺术滤镜
def apply_artistic_filter(image_pil, filter_type="edge_enhance"):# 将 PIL 图像转换为 OpenCV 格式image_np = np.array(image_pil)image_cv = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR)if filter_type == "edge_enhance":# 增强边缘,模拟手绘效果kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])image_cv = cv2.filter2D(image_cv, -1, kernel)elif filter_type == "color_boost":# 增强颜色鲜艳度image_cv = cv2.convertScaleAbs(image_cv, alpha=1.2, beta=10)# 转换回 PIL 格式image_filtered = cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB)return Image.fromarray(image_filtered)# 6. 应用滤镜并保存
filtered_image = apply_artistic_filter(image, filter_type="edge_enhance")
filtered_image.save(os.path.join(output_dir, "filtered_art.png"))print("艺术作品已生成并保存至 art_output 目录!")

5. 代码说明

  • Stable Diffusion
    • 使用 runwayml/stable-diffusion-v1-5 模型,通过文本提示生成图像。
    • prompt 定义了图像的内容和风格,例如“超现实的未来城市,达利风格”。
    • negative_prompt 避免生成不需要的元素(如模糊或低质量图像)。
    • num_inference_stepsguidance_scale 控制生成质量和提示的遵循程度。
  • 后处理
    • apply_artistic_filter 函数使用 OpenCV 实现两种滤镜:
      • edge_enhance:增强图像边缘,模拟手绘效果。
      • color_boost:提升颜色鲜艳度,增加艺术感。
    • 可以根据需要扩展更多滤镜(如模糊、素描效果等)。
  • 输出
    • 生成的原始图像和滤镜处理后的图像保存至 art_output 目录。

6. 扩展与优化

为了让作品更独特,可以尝试以下方法:

  1. 自定义提示
    • 尝试不同的艺术风格,如:
      • “A cyberpunk cityscape in the style of Van Gogh”
      • “An abstract portrait of a woman, vibrant watercolor style”
    • 使用更复杂的提示,结合艺术家风格或艺术流派。
  2. 风格迁移
    • 使用预训练的神经风格迁移模型(如 PyTorch 的 torchvision.modelsneural-style-transfer)将生成的图像与特定艺术风格(如毕加索、莫奈)融合。
    • 示例库:pytorch-CycleGAN-and-pix2pix
  3. 批量生成
    • 编写循环,生成多个图像并挑选最佳作品:
      for i in range(3):image = pipe(prompt, negative_prompt=negative_prompt).images[0]image.save(os.path.join(output_dir, f"art_{i}.png"))
      
  4. 交互界面
    • 使用 StreamlitGradio 构建一个 Web 界面,让用户输入提示并实时预览生成的艺术作品。
    • 示例:
      pip install gradio
      
      import gradio as gr
      def generate_art(prompt):image = pipe(prompt).images[0]return image
      gr.Interface(fn=generate_art, inputs="text", outputs="image").launch()
      

7. 常见问题与解决方案

  • 显存不足
    • 如果 GPU 显存不足,尝试:
      • 降低 torch_dtypetorch.float16
      • 减少 num_inference_steps(如 30)。
      • 使用 CPU(注释 pipe.to("cuda"))。
  • 生成图像质量不高
    • 增加 num_inference_steps(如 100)。
    • 调整 guidance_scale(7.5~12.5 通常效果较好)。
    • 使用更详细的提示词。
  • 模型下载慢
    • 确保网络稳定,或提前下载模型到本地:
      pipe = StableDiffusionPipeline.from_pretrained(model_id, cache_dir="./models")
      

8. 其他 AI 艺术生成工具

如果你想探索更多 AI 艺术生成工具,可以尝试:

  • DALL·E 3:通过 OpenAI API 生成高质量图像(需要付费)。
  • MidJourney:专注于艺术风格的生成(通过 Discord 操作)。
  • Artbreeder:基于 GAN 的图像混合与生成。
  • VQ-VAE-2:生成像素艺术或低分辨率风格图像。

这些工具可以通过 API 或 Python 脚本集成到你的工作流中。


9. 成果展示

运行上述代码后,你将得到:

  • 一张原始的 AI 生成图像(如超现实的未来城市)。
  • 一张经过滤镜处理的艺术图像(边缘增强或颜色提升)。
  • 保存路径:art_output/original_art.pngart_output/filtered_art.png

你可以进一步将这些图像用于:

  • 数字艺术展览。
  • NFT 创作。
  • 个性化壁纸或印刷品。

10. 总结

通过 Python 和 Stable Diffusion,你可以快速生成独特的艺术图像,并通过后处理增加个性化效果。上述代码提供了从生成到增强的完整流程,且易于扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/77147.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/77147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XR技术赋能艺术展演|我的宇宙推动东方美学体验化

本次广州展览现场引入我的宇宙XR体验模块,通过空间计算与动作捕捉技术,让观众在潮玩艺术氛围中体验虚拟互动,打造“看得懂也玩得动”的展演新场景。 作为科技与文化融合的推动者,我的宇宙正在以“体验科技”为媒介,为潮…

接口的集成测试步骤

一、集成测试是什么 ‌接口的集成测试‌是指在软件开发过程中,将各个模块或组件按照设计要求组合在一起,并测试它们之间的接口是否能够正确交互和协同工作的过程。集成测试是软件开发中的一个重要阶段,通常在单元测试之后进行,目的…

上门服务 APP 30 亿营收商业模式在乌干达的技术赋能与实践

不久前,非洲乌干达出现黑人女技师提供上门足疗服务的消息引发关注。据了解,当地一次40分钟的上门按摩服务仅需约40元人民币,价格仅为国内同类服务的十分之一。这一现象折射出全球健康服务行业正在经历的数字化转型浪潮。 国内领先的上门服务平…

go语言学习笔记:gin + gorm + mysql 用户增删改查案例入门

大家好,我是此林。 Golang 语言现在已经成为了编程的趋势,毕竟是大厂背书嘛,Google 研发的。 目前很多云原生项目都是基于 go 来编写的,比如: Kubernetes (K8s)​ 容器编排系统, Docker​ 容器化技术&…

探索亮数据Web Unlocker API:让谷歌学术网页科研数据 “触手可及”

本文目录 一、引言二、Web Unlocker API 功能亮点三、Web Unlocker API 实战1.配置网页解锁器2.定位相关数据3.编写代码 四、Web Scraper API技术亮点 五、SERP API技术亮点 六、总结 一、引言 网页数据宛如一座蕴藏着无限价值的宝库,无论是企业洞察市场动态、制定…

SpringBoot整合POI实现Excel文件的导出与导入

使用 Apache POI 操作 Excel文件,系列文章: 《SpringBoot整合POI实现Excel文件的导出与导入》 《SpringMVC实现文件的上传与下载》 《C#使用NPOI导出Excel文件》 《NPOI使用手册》 1、Apache POI 的介绍 Apache POI 是一个基于 Java 的开源库,专为读写 Microsoft Office 格…

构建用户友好的记账体验 - LedgerX交互设计与性能优化实践

构建用户友好的记账体验 - LedgerX交互设计与性能优化实践 发布日期: 2025-04-16 引言 在财务管理应用领域,技术实力固然重要,但最终决定用户留存的往往是日常使用体验。本文作为LedgerX技术博客的第二篇,将深入探讨我们如何通过精心的交互…

如何用AI辅助软件产品原型设计及工具推荐

以下是针对软件产品原型设计的 AI辅助工具推荐,涵盖国内外主流工具,结合功能特点、优劣势及适用场景分析,并标注是否为国内软件及付费情况: 一、国内工具推荐 1. 墨刀AI(MockingBot AI) 特点:…

MySQL的MVCC机制详解

1. 什么是MVCC? MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库系统中用于实现并发控制的一种技术。它通过保存数据在某个时间点的快照来实现,使得在同一个数据行上可以同时存在多个版本&#xff0…

C语言数字图像处理---2.31统计滤波器

本文介绍空域滤波器中的一种:统计滤波器 [定义与算法] 统计滤波(Statistic Filter)定义:基于图像处理中的邻域统计方法,对邻域内的像素信息进行统计,如基于均值和方差的信息,用于平滑或去噪图像,同时保留边缘信息。 算法步骤如下: 统计滤波器的优点和缺点主要包…

计算机视觉相机模型与标定:如何让计算机“看懂”三维世界?

计算机视觉相机模型与标定:如何让计算机“看懂”三维世界? 一、前言二、相机模型基础​2.1 针孔相机模型​2.1.1 模型原理​2.1.2 代码示例​2.2 透视变换与相机内参​2.2.1 透视变换矩阵​2.2.2 内参矩阵的作用​2.3 相机外参​2.3.1 世界坐标系与相机坐标系的转换​2.3.2 外…

DeepSpeed ZeRO++:降低4倍网络通信,显著提高大模型及类ChatGPT模型训练效率

图1: DeepSpeed ZeRO 简介 大型 AI 模型正在改变数字世界。基于大型语言模型 (LLM)的 Turing-NLG、ChatGPT 和 GPT-4 等生成语言模型用途广泛,能够执行摘要、代码生成和翻译等任务。 同样,DALLE、Microsoft Designer 和 Bing Image Creator 等大型多模…

Seq2Seq - 编码器(Encoder)和解码器(Decoder)

本节实现一个简单的 Seq2Seq(Sequence to Sequence)模型 的编码器(Encoder)和解码器(Decoder)部分。 重点把握Seq2Seq 模型的整体工作流程 理解编码器(Encoder)和解码器&#xff08…

Spring Boot集成MinIO的详细步骤

1. 安装MinIO 使用Docker部署MinIO 拉取MinIO镜像: docker pull minio/minio 这将从Docker Hub中获取最新的MinIO镜像。 创建目录: mkdir -p /home/minio/config mkdir -p /home/minio/data 这些目录将用于持久化MinIO的数据和配置文件 创建MinIO…

基于PLC的停车场车位控制系统的设计

2.1 设计目标 本课题为基于PLC的停车场车位控制系统来设计,在此将功能确定如下: 针对8个车位的停车场进行设计将停车场分为入口处,车位处、以及出口处三个部分;每个车位都有指示灯指示当前位置是否空闲,方便司机查找空…

微服务即时通信系统---(四)框架学习

目录 ElasticSearch 介绍 安装 安装kibana ES客户端安装 头文件包含和编译时链接库 ES核心概念 索引(Index) 类型(Type) 字段(Field) 映射(mapping) 文档(document) ES对比MySQL Kibana访问ES测试 创建索引库 新增数据 查看并搜索数据 删除索引 ES…

除了 `task_type=“SEQ_CLS“`(序列分类),还有CAUSAL_LM,QUESTION_ANS

task_type="SEQ_CLS"是什么意思:QUESTION_ANS 我是qwen,不同模型是不一样的 SEQ_CLS, SEQ_2_SEQ_LM, CAUSAL_LM, TOKEN_CLS, QUESTION_ANS, FEATURE_EXTRACTION. task_type="SEQ_CLS" 通常用于自然语言处理(NLP)任务中,SEQ_CLS 是 Sequence Classif…

Android ViewPager使用预加载机制导致出现页面穿透问题

​ 缘由 在应用中使用ViewPager,并且设置预加载页面。结果出现了一些异常的现象。 我们有4个页面,分别是4个Fragment,暂且称为FragmentA、FragmentB、FragmentC、FragmentD,ViewPager在MainActivity中,切换时&#x…

apt3.0和apt2.0的区别

一,简单区别 更新方式 apt2.0:一次性更新所有内容,没有分阶段更新功能。apt3.0:引入分阶段更新功能,可分批推送更新包。 界面显示 apt2.0:界面简单,输出信息较为杂乱,没有彩色高亮和…

过电压保护器与传统的保护方式对比

过电压保护器主要用于保护电气设备免受大气过电压(如雷击)和操作过电压(开关动作等引发)的侵害。它通常由非线性电阻片等元件组成,利用其独特的伏安特性工作。正常电压下,保护器呈现高阻态,几乎…