利用 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
英文地址,請注明出處:http://en.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:界面簡單,輸出信息較為雜亂,沒有彩色高亮和…

過電壓保護器與傳統的保護方式對比

過電壓保護器主要用于保護電氣設備免受大氣過電壓(如雷擊)和操作過電壓(開關動作等引發)的侵害。它通常由非線性電阻片等元件組成,利用其獨特的伏安特性工作。正常電壓下,保護器呈現高阻態,幾乎…