当前位置: 首页 > news >正文

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


在这里插入图片描述

博客主页: [小ᶻ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()

在这里插入图片描述


相关文章:

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

博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯什么是构图为什么Midjourney要使用构图 💯对称构图特点使用场景提示词书写技巧测试 💯小结 💯前言 通常来学习AI绘画的人可以分为…...

道路积水检测数据集 1450张 路面积水 带分割 voc yolo

道路积水检测数据集 1450张 路面积水 带分割 voc yolo 分类名: (图片张数, 标注个数) puddle:(1468,1994) 总数:(1468,1994) 总类(nc): 1类 道路积水检测数据集介绍 项目名称 道路积水检测数据集 项目概述 本数据集包含1450张带有标注的图像&#x…...

上门安装维修系统小程序开发详解及源码示例

随着智能家居和设备的普及,消费者对上门安装和维修服务的需求日益增加。为了满足这一市场需求,开发一款上门安装维修系统小程序成为了一种有效的解决方案。本文将详细介绍上门安装维修系统小程序的开发过程,并提供一个简单的源码示例&#xf…...

03_23 种设计模式之《原型模式》

文章目录 一、原型模式基础知识原型模式的结构应用场景 实例拷贝构造函数被调用场景如下:典型的应用场景: 一、原型模式基础知识 原型模式是一种创建型设计模式,其功能为复制一个运行时的对象,包括对象各个成员当前的值。而代码又…...

【秋招笔试】10.08华为荣耀秋招(已改编)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的三题全部上线…...

基于ResNet50模型的船型识别与分类系统研究

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…...

一个为分布式环境设计的任务调度与重试平台,高灵活高效率,系统安全便捷,分布式重试杀器!(附源码)

背景 近日挖掘到一款名为“SnailJob”的分布式重试开源项目,它旨在解决微服务架构中常见的重试问题。在微服务大行其道的今天,我们经常需要对某个数据请求进行多次尝试。然而,当遇到网络不稳定、外部服务更新或下游服务负载过高等情况时,请求…...

攻防世界(CTF)~Misc-Banmabanma

题目介绍 附件下载后得到一张图片类,似一只斑马,仔细观看发现像条形码 用条形码在线阅读查看一下 条形码在线识别 flag{TENSHINE}...

获取淘宝直播间弹幕数据的技术探索实践方法

在数字时代,直播已成为电商营销的重要渠道之一,而弹幕作为直播互动的核心元素,蕴含着丰富的用户行为和情感数据。本文将详细介绍如何获取淘宝直播间弹幕数据的技术方法和步骤,同时分析不同工具和方法的优缺点,并提供实…...

Python 卸载所有的包

Python 卸载所有的包 引言正文 引言 可能很少有小伙伴会遇到这个问题,当我们错误安装了一些包后,由于包之间有相互关联,导致一些已经安装的包无法使用,而由于我们已经安装了很多包,它们的名字我们并不完全知道&#x…...

JWT(JSON Web Token)、Token、Session和Cookie

JWT(JSON Web Token)、Token、Session和Cookie都是Web开发中常用的概念,它们各自在不同的场景下发挥着重要的作用。以下是对这四个概念的详细解释和比较: 一、JWT(JSON Web Token) 定义:JWT是一…...

国内知名人工智能AI大模型专家培训讲师唐兴通讲授AI办公应用人工智能在营销与销售过程中如何应用数字化赋能

AI如火如荼,对商业与社会影响很大。 目前企业广泛应用主要是在营销、销售方向,提升办公效率等方向。 从喧嚣的AI导入营销与销售初步阶段,那么当下,领先的组织与个人现在正在做什么呢? 如何让人性注入冷冰冰的AI&…...

Android常用C++特性之std::swap

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::swap 是 C 标准库中提供的一个函数&#xff0c;位于 <utility> 头文件中。它用于交换两个变量的值。 语法&#xff1a; #include <utility>std::s…...

MongoDB数据库详解:特点、架构与应用场景

目录 MongoDB 简介MongoDB 的核心特点 2.1 面向文档的存储2.2 动态架构2.3 水平扩展能力2.4 强大的查询能力 MongoDB 的架构设计 3.1 存储引擎3.2 集群架构3.3 副本集&#xff08;Replica Set&#xff09;3.4 分片&#xff08;Sharding&#xff09; MongoDB 常见应用场景 4.1 …...

【C语言刷力扣】1678.设计Goal解析器

题目&#xff1a; 解题思路&#xff1a; 遍历分析每一个字符&#xff0c;对不同情况分别讨论。 若是字符 G &#xff0c;则 res 中添加字符 G若是字符 &#xff08; &#xff0c;则再分别讨论。 若下一个字符是 &#xff09;&#xff0c; 则在 res 末尾添加字符 o若下一个字符…...

RK3568平台开发系列讲解(I2C篇)i2c 总线驱动介绍

🚀返回专栏总目录 文章目录 一、i2c 总线定义二、i2c 总线注册三、i2c 设备和 i2c 驱动匹配规则沉淀、分享、成长,让自己和他人都能有所收获!😄 i2c 总线驱动由芯片厂商提供,如果我们使用 ST 官方提供的 Linux 内核, i2c 总线驱动已经保存在内核中,并且默认情况下已经…...

xilinx中bufgce

在Xilinx的FPGA设计中&#xff0c;BUFGCE是一种重要的全局时钟缓冲器原语&#xff0c;它基于BUFGCTRL并以一些引脚连接逻辑高电位和低电位。以下是对BUFGCE的详细解析&#xff1a; 一、BUFGCE的功能与特点 功能&#xff1a;BUFGCE是带有时钟使能信号的全局缓冲器。它接收一个时…...

雷池+frp 批量设置proxy_protocol实现真实IP透传

需求 内网部署safeline&#xff0c;通过frp让外网访问内部web网站服务&#xff0c;让safeline记录真实外网攻击IP safeline 跟 frp都部署在同一台服务器&#xff1a;192.168.2.103 frp client 配置 frpc只需要在https上添加transport.proxyProtocolVersion "v2"即…...

DAY27||回溯算法基础 | 77.组合| 216.组合总和Ⅲ | 17.电话号码的字母组合

回溯算法基础知识 一种效率不高的暴力搜索法。本质是穷举。有些问题能穷举出来就不错了。 回溯算法解决的问题有&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合切割问题&#xff1a;一个字符串按一定规则有几种切割方式子集问题&#xff1a;一个N个数…...

js基础速成12-正则表达式

正则表达式 正则表达式&#xff08;Regular Expression&#xff09;或 RegExp 是一种小型编程语言&#xff0c;有助于在数据中查找模式。RegExp 可以用来检查某种模式是否存在于不同的数据类型中。在 JavaScript 中使用 RegExp&#xff0c;可以使用 RegExp 构造函数&#xff0…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...