驾驭AI绘画:《AI魔法绘画》带你秒变顶级画手!

  大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。

  今天给大家带来的文章是驾驭AI绘画:《AI魔法绘画》带你秒变顶级画手!,希望能对学习AI绘画的同学们有所帮助。

文章目录

  • 1. 前言
  • 2. 书籍推荐《AI魔法绘画:用Stable Diffusion挑战无限可能》
  • 3. 粉丝福利
  • 4. 自主购买

1. 前言

同学们,抖音买家秀中的那些极具设计感的作品是怎么来的?

你还在羡慕别人的绘画天赋,对着空白的画纸发呆吗?

有没有想过将生硬的代码和灵动的艺术完美融合?

有没有感到现代技术带来了戏剧性改变,从替代马车的汽车,到取代传统影像的数字摄影,再到今天的AI美术创作?

是的,“AI绘画”,它来了。

AI绘画,如雷贯耳,无处不在。

曾几何时,人们认为艺术需要人工创作,需要才情与灵感的瞬间迸发。

然而,技术的高速发展,打破了这种观念,AI绘画正在逐渐崭露头角,成为新的画坛巨擘。

但聊一聊看似高大上的AI技术可能让你觉得高不可攀。那就跟我一起,用Stable Diffusion挑战无限可能,一窥AI绘画的花花世界!


  Stable Diffusion WebUI 中的核心组件,人脸图像面部画面修复模型 CodeFormer的核心代码如下所示:

import math
import torch
from torch import nn, Tensor
import torch.nn.functional as F
from typing import Optionalfrom modules.codeformer.vqgan_arch import VQAutoEncoder, ResBlock
from basicsr.utils.registry import ARCH_REGISTRYclass CodeFormer(VQAutoEncoder):def __init__(self, dim_embd=512, n_head=8, n_layers=9,codebook_size=1024, latent_size=256,connect_list=('32', '64', '128', '256'),fix_modules=('quantize', 'generator')):super(CodeFormer, self).__init__(512, 64, [1, 2, 2, 4, 4, 8], 'nearest',2, [16], codebook_size)if fix_modules is not None:for module in fix_modules:for param in getattr(self, module).parameters():param.requires_grad = Falseself.connect_list = connect_listself.n_layers = n_layersself.dim_embd = dim_embdself.dim_mlp = dim_embd*2self.position_emb = nn.Parameter(torch.zeros(latent_size, self.dim_embd))self.feat_emb = nn.Linear(256, self.dim_embd)# transformerself.ft_layers = nn.Sequential(*[TransformerSALayer(embed_dim=dim_embd, nhead=n_head, dim_mlp=self.dim_mlp, dropout=0.0)for _ in range(self.n_layers)])# logits_predict headself.idx_pred_layer = nn.Sequential(nn.LayerNorm(dim_embd),nn.Linear(dim_embd, codebook_size, bias=False))self.channels = {'16': 512,'32': 256,'64': 256,'128': 128,'256': 128,'512': 64,}# after second residual block for > 16, before attn layer for ==16self.fuse_encoder_block = {'512':2, '256':5, '128':8, '64':11, '32':14, '16':18}# after first residual block for > 16, before attn layer for ==16self.fuse_generator_block = {'16':6, '32': 9, '64':12, '128':15, '256':18, '512':21}# fuse_convs_dictself.fuse_convs_dict = nn.ModuleDict()for f_size in self.connect_list:in_ch = self.channels[f_size]self.fuse_convs_dict[f_size] = Fuse_sft_block(in_ch, in_ch)def _init_weights(self, module):if isinstance(module, (nn.Linear, nn.Embedding)):module.weight.data.normal_(mean=0.0, std=0.02)if isinstance(module, nn.Linear) and module.bias is not None:module.bias.data.zero_()elif isinstance(module, nn.LayerNorm):module.bias.data.zero_()module.weight.data.fill_(1.0)def forward(self, x, w=0, detach_16=True, code_only=False, adain=False):# ################### Encoder #####################enc_feat_dict = {}out_list = [self.fuse_encoder_block[f_size] for f_size in self.connect_list]for i, block in enumerate(self.encoder.blocks):x = block(x)if i in out_list:enc_feat_dict[str(x.shape[-1])] = x.clone()lq_feat = x# ################# Transformer #################### quant_feat, codebook_loss, quant_stats = self.quantize(lq_feat)pos_emb = self.position_emb.unsqueeze(1).repeat(1,x.shape[0],1)# BCHW -> BC(HW) -> (HW)BCfeat_emb = self.feat_emb(lq_feat.flatten(2).permute(2,0,1))query_emb = feat_emb# Transformer encoderfor layer in self.ft_layers:query_emb = layer(query_emb, query_pos=pos_emb)# output logitslogits = self.idx_pred_layer(query_emb) # (hw)bnlogits = logits.permute(1,0,2) # (hw)bn -> b(hw)nif code_only: # for training stage II# logits doesn't need softmax before cross_entropy lossreturn logits, lq_feat# ################# Quantization #################### if self.training:#     quant_feat = torch.einsum('btn,nc->btc', [soft_one_hot, self.quantize.embedding.weight])#     # b(hw)c -> bc(hw) -> bchw#     quant_feat = quant_feat.permute(0,2,1).view(lq_feat.shape)# ------------soft_one_hot = F.softmax(logits, dim=2)_, top_idx = torch.topk(soft_one_hot, 1, dim=2)quant_feat = self.quantize.get_codebook_feat(top_idx, shape=[x.shape[0],16,16,256])# preserve gradients# quant_feat = lq_feat + (quant_feat - lq_feat).detach()if detach_16:quant_feat = quant_feat.detach() # for training stage IIIif adain:quant_feat = adaptive_instance_normalization(quant_feat, lq_feat)# ################## Generator ####################x = quant_featfuse_list = [self.fuse_generator_block[f_size] for f_size in self.connect_list]for i, block in enumerate(self.generator.blocks):x = block(x)if i in fuse_list: # fuse after i-th blockf_size = str(x.shape[-1])if w>0:x = self.fuse_convs_dict[f_size](enc_feat_dict[f_size].detach(), x, w)out = x# logits doesn't need softmax before cross_entropy lossreturn out, logits, lq_feat

2. 书籍推荐《AI魔法绘画:用Stable Diffusion挑战无限可能》

俗话说,知识就是力量,掌握AI绘画技术,你不仅可以创造出令人眼花缭乱的艺术作品,还可能在众多同行中脱颖而出,走上职业生涯的新高峰。

看看那些因为AI的到来,开始大规模裁员的公司,你是否意识到了自己该学习AI绘画的重要性?答案是明显的。掌握潮流,主宰未来,你准备好了吗?

这里,向大家强烈推荐一本书——《AI魔法绘画:用Stable Diffusion挑战无限可能》

它是一本以实际操作为导向的入门级AI绘画图书。

书中详细讲解了基于Stable Diffusion进行AI绘画的完整学习路线,包括绘画技巧、图片生成、提示词编写、ControlNet插件、模型训练等等。

如果你是零基础,无须恐惧,书中涵盖了丰富的实际操作案例,易懂易学,轻松入门。

如果你已经步入职场,那么这本书中的丰富技术内容,绝对能让你大有收获。

重要的是,本书的内容超级全面。无论是始于入门的基础理论知识,还是No-Code模型训练必备的ControlNet插件的详解,甚至是AI绘画全流程的操作教程,本书一应俱全,让你提前预知并掌握AI绘画的全貌,将你从菜鸟级别提升至大师级

此外,**书中包括了一些非常实用的商业设计案例,**如家具效果图、AI插画与插图、AI宠物、原创IP角色、自媒体运营等,这将为你的创新设计思路添砖加瓦!

……

资源丰富,内容详细,各章节知识体系完备,示例形象生动,操作步骤清晰明了,还有读者交流群可与作者互动,本书简直是你学习AI绘画的绝佳教程!

朋友们,生活永远充满无限可能。

但是,如果你想把握未来的潮流,扬帆起航,那么记得装备自己,勇往直前。

快来!开始你的AI绘画之旅,与我一起,**用《AI魔法绘画,用stable Diffusion挑战无限可能》探秘AI绘画的奥妙之处,**在不断迭代的技术驱动下,一起走进神奇的AI绘画世界,一起挑战无限可能吧!

3. 粉丝福利

  🎁本次送书1~3本【取决于阅读量,阅读量越多,送的越多】👈
  ⌛️活动时间:截止到2024-1月13号
  ✳️参与方式:关注博主+三连(点赞、收藏、评论)

4. 自主购买

  小伙伴也可以访问链接进行自主购买哦~

  直达京东购买链接🔗:购买地址《AI魔法绘画:用Stable Diffusion挑战无限可能》

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

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

相关文章

从零开发短视频电商 Tesseract OCR 的 Java 拓展库 javacpp-presets

文章目录 简介添加依赖识别示例示例一 识别本地图片示例二 识别图像中的各个组件(比如文本行,单词,或单个字符)示例三 使用迭代器遍历识别结果及其选择项示例四 方向和脚本检测示例五 结果迭代器示例六 设置引擎、页面分割模式、语…

redis之布隆过滤

目录 1、redis之布隆过滤 2、布隆过滤器原理 3、布隆过滤器使用步骤 初始化bitmap 添加占坑位 判断是否存在圜 1、redis之布隆过滤 布隆过滤:有一个初值都为0的bit数组和多个哈希函数构成,用来快速判断集合中是否存在某个元素。目的:减…

Python Paramiko 使用交互方式获取终端输出报错

近期接到一个需求,要批量登录网络设备获取配置。 原计划使用 Paramiko exec即可,但是后来发现,有些设备命令也执行了,但是没有回显。 于是尝试使用 invoke_shell() 方式。 前期调试倒是OK,直到遇见一个输出内容较长的…

python官网下载慢怎么办?这里是一些解决方法

为什么Python官网下载速度慢? Python官网是开源软件的官方网站,提供了Python编程语言的最新版本和相关资源供开发者下载。然而,由于全球用户访问量较大,有时候会导致Python官网的下载速度变慢或不稳定。这对于急需获取Python的开…

Kubernetes基础(十五)-k8s网络通信

1 k8s网络类型 2 Pod网络 2.1 同一pod内不同容器通信 Pod是Kubernetes中最小的可部署单元,它是一个或多个紧密关联的容器的组合,这些容器共享同一个网络命名空间和存储卷,因此Pod中的所有容器都共享相同的网络命名空间和IP地址——PodIP&a…

web 前端实现一个根据域名的判断 来显示不同的logo 和不同的标题

1.需求 有可能我做一个后台 web端 我想实现一套代码的逻辑 显示不同的公司主题logo以及内容,但是实际上 业务逻辑一样 2.实现 建一个store oem.ts 这个名为是 oem系统 oem.ts import { defineStore } from pinia;import { store } from /store;const oemDataLis…

Vue中v-on 可以监听多个方法吗

当然可以!Vue.js是一款非常强大的JavaScript库,它提供了很多方便的方法和指令,使我们可以更容易地构建交互式的Web应用程序。其中,v-on指令是Vue.js中一个非常重要也非常常用的指令,它用于监听DOM事件,并在…

质数基础筛法

文章目录 埃氏筛线性筛 埃氏筛 埃氏筛是一种筛素数的方法&#xff0c;埃氏筛的思想很重要&#xff0c;主要是时间复杂度 朴素的埃氏筛的时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn) 这个复杂度是调和级数 vector<int>p; int vis[N];void solve() {rep(i,2,n){if(…

07-Java桥接模式 ( Bridge Pattern )

Java桥接模式 摘要实现范例 桥接模式&#xff08;Bridge Pattern&#xff09;是用于把抽象化与实现化解耦&#xff0c;使得二者可以独立变化 桥接模式涉及到一个作为桥接的接口&#xff0c;使得实体类的功能独立于接口实现类&#xff0c;这两种类型的类可被结构化改变而互不影…

【知识整理】管理即服务,识人、识己

1. 背景 一个人的力量是有限的&#xff0c;如何规模化生产&#xff0c;人员的规模化组织&#xff0c;如何提升合作的规模和效率。 管理的本质&#xff1a; 1、服务他人&#xff1f; 2、激发主动性&#xff1f; 3、氛围宽松&#xff1f; 上面是理念&#xff0c; 1、那如何…

计划任务功能优化,应用商店上架软件超过100款,1Panel开源面板v1.9.6发布

2024年2月7日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.9.6版本。 在v1.9.5和v1.9.6这两个小版本中&#xff0c;1Panel针对计划任务等功能进行了多项优化和Bug修复。此外&#xff0c;1Panel应用商店新增了3款应用&#xff0c;上架精选软件应用超过1…

Python解决SSL不可用问题

参考&#xff1a;https://blog.csdn.net/weixin_44894162/article/details/126342591 一、问题描述&#xff1a; 报错概述&#xff1a; WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. ## 警告:pip配…

酷开科技AIGC技术:重塑多媒体内容与交互体验

在当今数字媒体时代&#xff0c;酷开科技以其智能的AIGC技术&#xff0c;正在引领一场多媒体内容与交互体验的革新。AIGC&#xff0c;即人工智能、物联网、云计算和大数据的结合&#xff0c;是酷开科技的核心技术&#xff0c;为各类终端设备提供了强大的智能化支持。 酷开科技…

编码技巧——在项目中使用Alibaba Cloud Toolkit远程部署

背景 在新公司项目开发&#xff0c;当前项目为自建项目&#xff0c;意思是从开发到运维都需要自己负责&#xff0c;远程的服务器也是自己搭建的win操作系统&#xff1b; 之前在大厂工作时&#xff0c;一般提交代码之后&#xff0c;CICD流水线会自动的执行最新代码的拉取、构建打…

【Java多线程案例】单例模式

1. 单例模式概念 设计模式&#xff1a;谈到单例模式&#xff0c;我们首先需要知道什么是设计模式&#xff0c;设计模式是软件工程中的一大重要概念&#xff0c;是被广泛认可并使用于解决特定实际问题的代码设计经验&#xff0c;校招中常考的设计模式有单例模式、工厂模式 等&a…

asp.net core 依赖注入 实例化对象实例

在面向对象编程中&#xff0c;推荐使用面向接口编程&#xff0c;这样我们的代码就依赖于服务接口&#xff0c;而不是依赖于实现类&#xff0c;可以实现代码解耦。 名称解释&#xff1a; 我们把负责提供对象的注册和 获取功能的框架叫作“容器”&#xff0c; 注册到容器中的对象…

CMS 检测神器:CMSeek 保姆级教程(附链接)

一、介绍 CMSeek&#xff08;Content Management System Exploitation and Enumeration Toolkit&#xff09;是一款用于检测和利用网站上可能存在的内容管理系统&#xff08;CMS&#xff09;漏洞的开源工具。它旨在帮助安全研究人员和渗透测试人员识别目标网站所使用的CMS&…

服务器安装Docker (centOS)

1. 卸载旧版本的Docker&#xff08;如果有&#xff09; 首先&#xff0c;如果您的系统上安装了旧版本的Docker&#xff0c;需要将其卸载。Docker的旧版本称为docker或docker-engine。使用以下命令来卸载旧版本&#xff1a; sudo yum remove docker \ docker-client \ docker-…

2024牛客寒假算法基础集训营2部分题解

Tokitsukaze and Bracelet 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 《绯染天空》是一款由 key 社与飞机社共同开发的角色扮演游戏&#xff0c;剧情内容由著名的剧本作家麻枝准编写。它是一款氪金手游&#xff0c;但也有 st…

成为CSDN博客优质创作者或者博客专家吧

成为CSDN博客优质创作者或者博客专家吧 文章目录 成为CSDN博客优质创作者或者博客专家吧一、前言二、如何成为CSDN的博客专家1、2009年的要求和申请方式2、最新的CSDN博客专家要求和申请方式3、创作者身份认证4、CSDN所有认证的介绍 三、写博客的好处1、比较官方的说法&#xf…