【AI绘画】Midjourney进阶:对称构图详解

news2024/10/9 10:23:41

在这里插入图片描述

博客主页: [小ᶻZ࿆]
本文专栏: AI绘画 | Midjourney

文章目录

  • 💯前言
  • 💯什么是构图
    • 为什么Midjourney要使用构图
  • 💯对称构图
    • 特点
    • 使用场景
    • 提示词书写技巧
    • 测试
  • 💯小结


在这里插入图片描述


💯前言

  • 通常来学习AI绘画的人可以分为两种类型:
    1. 第一类人群是那些完全没有接触过AI,也对设计领域不熟悉的初学者。这些人可以通过一些捷径来快速进入设计的大门,甚至开展一些实际的项目。然而,这类人有一个较大的短板,就是他们对设计基础知识的掌握较为欠缺——例如光影、色彩、构图,甚至很多知名艺术家的风格特征。因此,在学习过程中,掌握这些领域的基本知识显得尤为重要,以避免“不知道自己不知道”这些知识的情况。通过补充这些知识,哪怕只是有一个大概的了解,也可以帮助他们更好地开展实际工作。
    2. 第二类人群则是已有设计经验的设计师,他们对设计的各个方面都相当熟悉,但可能需要学习如何将他们已有的设计知识与AI工具结合起来。这类人群的重点是将已有的设计能力扩展到AI辅助的创作中,实现工具与专业知识的融合。
  • 基于以上两类人群的需求,本文的内容将会兼顾不同的学习需求。一方面,介绍设计领域的基础知识,为初学者提供坚实的学习基础;另一方面,讨论如何将AI技术与传统设计知识相结合,为已有设计经验的人提供新的思路和实践方法。
    Midjourney官方使用手册
    在这里插入图片描述

💯什么是构图

构图是摄影、绘画、设计等视觉艺术中的一个基本概念。它指的是艺术家如何在二维平面上安排元素,包括形状、线条、色彩、质地、空间等,以达到一定的视觉效果和艺术表达。
在这里插入图片描述


为什么Midjourney要使用构图

  • 简单来说,Midjourney有构图词画面质量更高
  • 构图的目标是引导观众的视线,突出主题,增加视觉吸引I力,以及传达艺术家的观点或情感。
    在这里插入图片描述
  • 在Midjourney中使用构图是非常重要的,有两个方向可以解释其必要性:非共性和共性。

    • 从非共性的角度来看,在Midjourney中使用构图相关的提示词可以显著提升生成画面的质量。这是因为Midjourney的模型在训练时,不仅使用了图像,还结合了与这些图像相关的提示词。通常来说,这些图像来源于专业摄影或高质量渠道,具有较高的视觉标准。当模型学习了这些图片与提示词之间的关联后,用户在生成图像时如果使用了构图相关的提示词,系统会优先选择类似图库中的优质素材,从而生成更为精致的画面。因此,通过使用构图提示词,可以明显地提高生成图像的质量。
      在这里插入图片描述

    • 从共性的角度来说,构图本身就是一种极为有效的手段,可以用于引导观众的视线、突出画面的主题、增强视觉吸引力,并传递创作者的情感和观点。构图所带来的这些视觉上的提升效果,是不受具体工具限制的,无论是在摄影、绘画还是AI生成图像中都是通用的。因此,当在Midjourney中使用构图提示词时,画面的质量提升几乎是必然的结果。这些道理或许听起来有些抽象,但在实际操作和练习时,大家会切实地感受到构图带来的效果提升。
      在这里插入图片描述


💯对称构图

定义:在一个画面中,通过让两侧的元素在形状、色彩、质地等方面保持相同或相似的构图方式。

  • 首先介绍的是对称构图,这是一种非常常见且经典的构图方式。具体而言,对称构图的形式是在画面中让上下或者左右两侧的元素在形状、色彩、质地等方面保持相同或相似。这种构图方式能够有效地营造出一种和谐、稳定的视觉效果,使画面看起来更为均衡和整洁。
    在这里插入图片描述

特点

  1. 平衡感:对称构图的最大特点就是平衡感,无论是左右对称,还是上下对称,都能给人一种稳定的视觉感受。
  2. 特点视觉冲击力:对称构图由于其形式的独特,能够给人带来强烈的视觉冲击力,特别是在对比鲜明的场景中,对称构图的效果更加明显。
  3. 对称构图简洁明快:对称构图的另一个特点是简洁明快,它的形式非常直观,能够让观者快速抓住画面的主题。
  • 首先是它强烈的平衡感。无论是左右对称,还是上下对称,对称构图都能够给人一种稳定的视觉感受。这种平衡感使得画面看起来非常和谐,尤其是在建筑摄影中,这种构图能够让建筑显得更加庄重而稳固,给观众一种强烈的稳定感。
    在这里插入图片描述

  • 其次,对称构图还具有很强的视觉冲击力。由于其形式上的独特,对称的安排常常能够带来特别鲜明的视觉体验,尤其是在对比度较为强烈的场景中,这种效果会更加明显。当画面中不同元素之间形成对称时,这种布局会显得格外引人注目,使得观众对画面的印象更为深刻。
    在这里插入图片描述

  • 最后,对称构图的另一个重要特点就是简洁明快。它的构图方式非常直观,画面通常不包含过多复杂的元素,观众的视线可以很自然地从画面中心开始,逐渐扩展到两侧。这种简洁的安排方式使得观众能够迅速抓住画面的主题,不会被多余的信息分散注意力。
    在这里插入图片描述


使用场景

  1. 建筑图中,通过使用对称构图,可以表现出建筑的规整和魅力。
  2. 人像图中,通过使用对称构图,可以突出人物的特点和气质。
  3. 风景图中,通过使用对称构图,可以展现出自然的和谐和美感。
  • 首先,在建筑摄影中,对称构图能够很好地表现建筑的规整与魅力。通过让建筑的左右或上下部分对称,画面看起来井然有序,这种构图方式可以极大地突显建筑本身的设计精妙与宏伟感。
    在这里插入图片描述

  • 其次,在人像摄影中,对称构图则能突出人物的特质与气质。通过将人物居于画面的对称中心,能够很直接地吸引观众的目光,展现出人物的特点。此外,如果配合合适的色调与光影效果,还可以进一步增强人物的情绪表达,尽管在这里我们更强调对称性带来的整体风格的突出效果。
    在这里插入图片描述

  • 最后,在风景摄影中,对称构图非常适合用于展现自然的和谐美感。对称的构图方式能够将自然景物的平衡与宁静之美传递给观众,尤其是在空旷的景象中,这种构图可以有效地表达出那种空寂辽远的感觉,令人感受到大自然的广阔与宁静。
    在这里插入图片描述


提示词书写技巧

  • 在书写对称构图的提示词时,使用“Symmetrical Composition”可以有效帮助Midjourney生成具有对称性的画面,营造平衡感与和谐美。这一提示词非常适合用于建筑、人像和风景等场景,能够让生成的图像呈现出强烈的稳定性与视觉冲击力。建议结合其他描述性词语,如“cinematic light”或“8k”,以进一步提升图像的整体质量与表现力。
    在这里插入图片描述

测试

原图:

landscape, mountains, river, trees, cinematic light, ultra details, 8k --ar 16:9
  • 在未加入“Symmetrical Composition”的原图中,画面的元素呈自然分布,风景中的山川、河流、树木以一种随机且自然的方式展现,虽然整体光影效果优美,但在视觉上显得稍微不那么统一,缺乏明确的焦点,给人一种随性的感觉。
    在这里插入图片描述

原图+Symmetrical Composition:

landscape, mountains, river, trees, Symmetrical Composition, cinematic light, ultra details, 8k --ar 16:9
  • 在加入了“Symmetrical Composition”提示词后,画面结构明显更为平衡。山川和河流的布局对称分布,整幅画面呈现出一种强烈的对称美感,使得观众的视线可以被清晰地引导至画面的中心位置。对称的构图带来了明显的秩序感和稳定感,使得画面显得更为和谐和庄重,提升了整体的视觉吸引力。
    在这里插入图片描述

💯小结

  • 在这里插入图片描述
    学习AI绘画的过程中,不同背景的学习者会面临独特的需求。初学者需要补充设计基础,尤其是光影、色彩和构图等方面的知识;而设计师则需探索将已有经验与AI技术结合,提升创作效果。构图在Midjourney中的重要性体现在它不仅能够提升图像的整体质量,还能更有效地引导观众的视线,增加画面的平衡感与视觉吸引力。使用“Symmetrical Composition”这样的构图提示词,能显著增强图像的秩序和稳定性,使其更加和谐和有表现力。这种技巧在建筑、人像和风景等场景中尤为适用,能为AI生成的作品增添专业的质感。
  • 展望未来,AI绘画的发展将不仅仅是工具的进步,更是一场设计与技术深度融合的创意革命。AI的强大计算能力和不断优化的算法正在帮助艺术家与设计师拓宽创作的边界。通过AI,设计新手能够快速掌握构图、光影、色彩等关键技巧,为他们提供了原本只有经验丰富的专业人士才能达到的表达力和艺术水准。而对设计师而言,AI不只是效率的提升,它提供了全新的视角和工具,可以将丰富的设计经验与智能生成结合,尝试过去难以实现的创意。

import torch, torchvision.transforms as transforms; from torchvision.models import vgg19; import torch.nn.functional as F; from PIL import Image; import matplotlib.pyplot as plt; class StyleTransferModel(torch.nn.Module): def __init__(self): super(StyleTransferModel, self).__init__(); self.vgg = vgg19(pretrained=True).features; for param in self.vgg.parameters(): param.requires_grad_(False); def forward(self, x): layers = {'0': 'conv1_1', '5': 'conv2_1', '10': 'conv3_1', '19': 'conv4_1', '21': 'conv4_2', '28': 'conv5_1'}; features = {}; for name, layer in self.vgg._modules.items(): x = layer(x); if name in layers: features[layers[name]] = x; return features; def load_image(img_path, max_size=400, shape=None): image = Image.open(img_path).convert('RGB'); if max(image.size) > max_size: size = max_size; else: size = max(image.size); if shape is not None: size = shape; in_transform = transforms.Compose([transforms.Resize((size, size)), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))]); image = in_transform(image)[:3, :, :].unsqueeze(0); return image; def im_convert(tensor): image = tensor.to('cpu').clone().detach(); image = image.numpy().squeeze(); image = image.transpose(1, 2, 0); image = image * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406); image = image.clip(0, 1); return image; def gram_matrix(tensor): _, d, h, w = tensor.size(); tensor = tensor.view(d, h * w); gram = torch.mm(tensor, tensor.t()); return gram; content = load_image('content.jpg').to('cuda'); style = load_image('style.jpg', shape=content.shape[-2:]).to('cuda'); model = StyleTransferModel().to('cuda'); style_features = model(style); content_features = model(content); style_grams = {layer: gram_matrix(style_features[layer]) for layer in style_features}; target = content.clone().requires_grad_(True).to('cuda'); style_weights = {'conv1_1': 1.0, 'conv2_1': 0.8, 'conv3_1': 0.5, 'conv4_1': 0.3, 'conv5_1': 0.1}; content_weight = 1e4; style_weight = 1e2; optimizer = torch.optim.Adam([target], lr=0.003); for i in range(1, 3001): target_features = model(target); content_loss = F.mse_loss(target_features['conv4_2'], content_features['conv4_2']); style_loss = 0; for layer in style_weights: target_feature = target_features[layer]; target_gram = gram_matrix(target_feature); style_gram = style_grams[layer]; layer_style_loss = style_weights[layer] * F.mse_loss(target_gram, style_gram); b, c, h, w = target_feature.shape; style_loss += layer_style_loss / (c * h * w); total_loss = content_weight * content_loss + style_weight * style_loss; optimizer.zero_grad(); total_loss.backward(); optimizer.step(); if i % 500 == 0: print('Iteration {}, Total loss: {}'.format(i, total_loss.item())); plt.imshow(im_convert(target)); plt.axis('off'); plt.show()

在这里插入图片描述


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

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

相关文章

遥感影像-语义分割数据集:多源多模态地物多要素数据集详细介绍及训练样本处理流程

原始数据集详情 简介:该数据集由WHU-OPT-SAR数据集整理而来,覆盖面积51448.56公里,分辨率为5米。据我们所知,WHU-OPT-SAR是第一个也是最大的土地利用分类数据集,它融合了高分辨率光学和SAR图像,并进行了充…

非酒精性脂肪性肝炎NASH临床赛道的百米冲刺,谁将成为胜者?

前 言 非酒精性脂肪性肝炎(NASH)是一种与肥胖、血脂异常、2型糖尿病和代谢综合征密切相关的疾病,可能会发展为肝硬化、终末期肝病甚至肝癌。据美国肝脏基金会统计数据显示,截至2023年8月,美国成年人中有5%的NASH患者…

使用 YOLOv 11 模型实现实时手语检测 可同时识别多个手语手势

项目:Yolo11 - Roboflow - OpenCV 手语是聋哑人之间以及他们与外界沟通的重要工具,然而,许多不会手语的人无法与他们有效交流。这个项目的目标是通过自动检测手语手势,构建一个可以帮助聋哑人和普通人之间沟通的桥梁,…

立体扬声器棒球帽专利TRO维权,速查避免踩坑

案件基本情况起诉时间:2024-9-18案件号:24-cv-08626原告:Audiowear Technology Corporation原告律所:Loza & Loza, LLP起诉地:伊利诺伊州北部法院品牌介绍Audiowear Technology Corporation,一家位于特…

麒麟V10系统下的调试工具(网络和串口调试助手)

麒麟V10系统下的调试工具(网络和串口调试助手) 1.安装网络调试助手mnetassist arm64-main ①在linux下新建一个文件夹 mkdir /home/${USER}/NetAssist②将mnetassist arm64-main.zip拷贝到上面文件夹中,并解压给权限 cd /home/${USER}/Ne…

(23)DBPSK信号在Rayleigh衰落信道条件下的传输性能仿真

文章目录 前言一、MATLAB仿真代码二、仿真结果画图 前言 此示例创建了一个【频率平坦的瑞利衰落信道】对象,并使用该对象来对DBPSK信号进行衰落处理,衰落之后增加了不同信噪比的AWGN,计算出不同的信噪比值计算误码率,并和理论误码…

八、索引的创建与设计原则

文章目录 1. 索引的声明与使用1.1 索引的分类1.2 创建索引1.2.1 在创建表时创建索引1.2.2 在已经存在的表上创建索引1.3 删除索引2. MySQL8.0索引新特性2.1 支持降序索引2.2 隐藏索引3. 索引的设计原则3.1 数据准备3.2 哪些情况适合创建索引3.2.1 字段的数值有唯一性的限制3.2.…

Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-catalyst-9000/,查看最新版。原创作品,转载请保留出处。 作者主页&…

Google:敏感信息访问权限和 API 政策更新

目录 公布时间公布内容内容有关 Google Play 照片和视频权限政策的详细信息截止时间相关问题公布时间 公布日期:2023-10-25 公布内容 内容 为向用户提供更注重隐私保护的体验,我们将推出“照片和视频访问权限”政策,以减少获准针对照片/视频请求广泛权限(READ_MEDIA_IM…

探索 ACM:计算机领域的卓越组织

《探索 ACM:计算机领域的卓越组织》 在计算机科学的广袤星空中,ACM(Association for Computing Machinery,美国计算机协会)犹如一颗璀璨的巨星,散发着耀眼的光芒。 ACM 是世界上最大的计算机领域专业性学…

从给定的序列中随机抽取一个元素secrets.choice()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 从给定的序列中随机抽取一个元素 secrets.choice() [太阳]选择题 根据给定的Python代码,哪个选项是不可能输出的? import secrets sequence ["red", &qu…

PCL 法线空间下采样滤波

目录 一、概述二、代码三、结果 一、概述 对于原始点云,通过其点云法向量进行下采样,在法向量变化大的地方采样密度大,在法向量变化小的地方,采样密度小。 计算点云的空间法向量。依次计算相邻点之间的法向量夹角,以此…

Node.js管理工具NVM

nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具。以下是 nvm 的使用方法和一些常见命令: 一、安装 nvm 下载 nvm: 地址:https://github.com/coreybutler/nvm-windows/releases访问 nvm 的 GitHub 仓…

Autodesk Flame 2025:视觉特效制作解决方案

Autodesk Flame 2025是一款功能强大的视觉特效制作解决方案,由Autodesk公司开发。它提供了出色的性能,为视觉特效艺术家成功完成制作项目提供了所需的交互性和灵活性。 以下是Autodesk Flame 2025的一些主要特点和功能: 高效的三维合成环境&…

C语言 | Leetcode C语言题解之第464题我能赢吗

题目: 题解: typedef struct HashItem {int key;bool val;UT_hash_handle hh; } HashItem;bool dfs(int maxChoosableInteger, int usedNumbers, int desiredTotal, int currentTotal, HashItem **memo) {HashItem *pEntry NULL;HASH_FIND_INT(*memo, …

C# 图像平移

图像平移:图像的平移是将一幅图像上的所有点都按照给定的偏移量在水平方向沿x轴、在垂直方向上沿y轴移动,平移后的图像与原图像大小相同。设(x0,y0) 为原图像上的一点,图像水平平移量为△x,垂直平移量为△y,则平移后点…

什么是词嵌入(Word Embedding)

1. 什么是词嵌入(Word Embedding) ⾃然语⾔是⼀套⽤来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是⽤来表⽰词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌⼊(word e…

【优选算法】(第二十七篇)

目录 重排链表(medium) 题目解析 讲解算法原理 编写代码 合并K个升序链表(hard) 题目解析 讲解算法原理 编写代码 重排链表(medium) 题目解析 1.题目链接:. - 力扣(LeetCod…

数据结构与算法——Java实现 31.阻塞队列

—— 24.10.8 一、问题提出 目前队列存在的问题 1.很多场景要求分离生产者、消费者两个角色、它们需要由不同的线程来担当,而之前的实现根本没有考虑线程安全问题 2.poll方法,队列为空,那么在之前的实现里会返回null,如果就是硬…

Spring Boot 进阶-深入SpringBoot的数据校验原理

在之前的分析中我们知道要想了解一个场景启动器的原理就必须要找到它对应的自动配置类。下面我们就来探索一下数据校验spring-boot-starter-validation场景启动器的原理吧? ValidationAutoConfiguration 配置类 首先我们来看在这个配置类上都有哪些条件注解,并且这些条件注解…