【AI绘画】Midjourney进阶:留白构图详解


在这里插入图片描述

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

文章目录

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


在这里插入图片描述


💯前言

【AI绘画】Midjourney进阶:对称构图详解     https://blog.csdn.net/2201_75539691?type=blog

【AI绘画】Midjourney进阶:三分线构图详解     https://blog.csdn.net/2201_75539691?type=blog

【AI绘画】Midjourney进阶:中心点构图详解     https://blog.csdn.net/2201_75539691?type=blog

  • 在之前的文章中,我们深入探讨了构图在 Midjourney 中的核心作用。通过对称、三分线和中心点构图,我们理解了如何利用视觉平衡、比例和位置,使画面更具表现力。今天,我们将迈入一个新的层次——留白构图。作为一种以简洁和精炼为特点的构图方式,留白构图不仅通过空白区域突出主体,还为观众提供了无限的想象空间。大量的留白让画面更清晰、更引人注目,同时减少多余的元素,使作品更加易于理解。接下来,让我们探索如何在 Midjourney 中运用这一技巧,创造富有深度和视觉张力的画面。
    Midjourney官方使用手册
    在这里插入图片描述

💯什么是构图

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


为什么Midjourney要使用构图

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

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

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


💯留白构图

留白构图,也被称为负空间构图或空白构图。它的核心思想是在画面中留出大量的空白,通过这些空白来突出画面的主体,给予观众更多的想象空间。

  • 留白构图,也被称为负空间构图或空白构图,是一种通过空白区域突出画面主体的构图方式。它的核心思想是在画面中留出大量空白,以此将观众的注意力集中在主体上,同时为观者提供更广阔的想象空间。这种构图方式蕴含了深厚的禅意,能够以简洁的形式传达丰富的内涵,为作品增添一种静谧与沉思的氛围。
    在这里插入图片描述

特点

  1. 突出主体

    • 通过大量的空白区域,留白构图将观众的视线自然地引向主体,使其更加清晰和引人注目。空白的存在反衬出主体的独特性,强化了画面的视觉焦点。
      在这里插入图片描述
  2. 提供想象空间

    • 大面积的留白为观众提供了广阔的想象空间,使画面更具深度和趣味性。这种空间感赋予了作品一种可品味的层次,与传统国画中的美学理念相得益彰,鼓励观众在观看时进行更深层次的思考。
      在这里插入图片描述
  3. 简洁明快

    • 留白构图去除了多余的元素,使画面更加简洁、清晰。这种构图方式不仅让视觉呈现更为直观,还提升了画面的易读性,让观众可以轻松理解其意图。
      在这里插入图片描述

使用场景

  1. 在人像图中

    • 通过使用留白构图,可以让人物的面部表情和身体语言更加突出,从而强化主体的表现力。
      在这里插入图片描述
  2. 在静物摄影中

    • 通过留白构图,可以突出静物的特点和细节,让观众更专注于画面的核心元素。
      在这里插入图片描述

提示词书写技巧

  • 提示词书写时,应首先明确画面的主题和想要突出的元素。在使用留白构图(Negative Space Composition)时,关键在于将“Negative Space Composition”作为提示词的核心部分,以突出空白区域和主体之间的关系。通过描述主体的特征、光线、背景简洁度等细节,可以有效地引导生成的图像增强空白效果,确保观众的视线集中在主要对象上。构图时要简洁明了,避免冗余描述,使画面中主体的存在感更强烈。
    在这里插入图片描述

测试

原图:

A vibrant pink lotus flower blooming in a pond, surrounded by green lily pads and other flowers, with water ripples and reflections, soft sunlight illuminating the scene, peaceful and natural setting --ar 16:9
  • 花朵被置于自然场景中,周围有丰富的细节,如绿色的荷叶、其他花朵、水面上的涟漪和倒影等。这些背景元素共同构建了一个生机盎然的环境,使画面充满了活力和自然氛围,视觉上更加复杂。花朵虽然是主体,但因背景的丰富性,观众的注意力会自然地分散在其他元素上。
    在这里插入图片描述

原图+Negative Space Composition:

A vibrant pink lotus flower blooming alone with vast open space around it, minimal background details, soft shadows on a plain white surface, creating a calm and contemplative atmosphere, Negative Space Composition --ar 16:9
  • 花朵被置于一个简洁的场景中,周围有大量留白,背景元素被极度简化或完全省略。这种留白处理突出了花朵的孤立感和存在感,让观众的视线直接聚焦于花朵本身。同时,这种构图带来了宁静和沉思的氛围,使画面更具禅意。Negative Space Composition 突出主体的方式有效增强了视觉的集中性,并且让画面看起来更简洁、现代。
    在这里插入图片描述

💯小结

  • 在这里插入图片描述
    在探索Midjourney的构图技巧时,构图对画面质量的提升效果尤为显著。从对称构图、三分线构图到中心点构图,每一种构图方法都有助于引导观众的视线、突出主题、并传递情感。而留白构图,作为一种简洁、富有禅意的构图方式,更加突显了主体的独特性,为观众提供了广阔的想象空间。通过运用Negative Space Composition提示词,不仅可以让图像呈现出宁静的氛围,还能强化画面的视觉集中度,使作品更具深度和现代感。实践过程中,这种构图方式的简洁与空白感带来了独特的视觉张力,为作品赋予了更多可能性,也让我们更深刻地体会到构图在视觉表达中的重要作用。
  • 随着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()

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java后端面试题:JVM篇

目录 1. 什么是JVM? 2. 请你介绍JVM的整体结构 3. 了解过字节码文件的组成吗? 4. 说一下运行时数据区(介绍一下JVM内存模型)。 5. 哪些区域会出现内存溢出,会有什么现象? 6. 请你说说类的生命周期。 …

AD9361 的 TX 输出中添加前置放大器,并在 RX 输入中添加 LNA。

AD9361 的 TX 输出中添加前置放大器,并在 RX 输入中添加 LNA。 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/AD-TRXBOOST1-EBZ.html https://wiki.analog.com/resources/eval/user-guides/ad-trxboost1-ebz/in…

QT--文本框 QLineEdit、qtextedit

在Qt中,文本框(QLineEdit 或 QTextEdit)和标签(QLabel)是两种不同的部件(widget),它们的主要区别在于用途和功能: QLabel(标签) 用途&#xff1…

PythonExcel批量pingIP地址

问题: 作为一个电气工程师(PLC),当设备掉线的时候,需要用ping工具来检查网线物理层是否可靠连接,当项目体量过大时,就不能一个手动输入命令了。 解决方案一: 使用CMD命令 for /L %…

算法.图论-BFS及其拓展

文章目录 广度优先搜索简介经典bfs习题地图分析贴纸拼词 01bfs解析基本过程相关习题 广度优先搜索简介 bfs的特点是逐层扩散, 从源头到目标点扩散了几层, 最短路就是多少 bfs的使用特征是任意两个节点的距离(权值)是相同的(无向图, 矩阵天然满足这一特点) bfs开始的时候可以是…

树莓派应用--AI项目实战篇来啦-10.OpenCV进行车牌检测

1. 介绍 本项目使用 esseract、OpenCV和Python探索光学字符识别(OCR)的神奇世界,本项目将 带你了解最受欢迎的OCR引擎 Tesseract 背后的技术,以及如何用 Pytesseract 和 OpenCV实现字符识别。 从图像中检测字符的技术称为…

图(Java语言实现)

一、图的概念 顶点(Vertex):图中的数据元素,我们称之为顶点,图至少有一个顶点(非空有穷集合)。 边(Edge):顶点之间的关系用边表示。 1.图(Graph…

Python Django 数据库优化与性能调优

Python Django 数据库优化与性能调优 Django 是一个非常流行的 Python Web 框架,它的 ORM(对象关系映射)允许开发者以简单且直观的方式操作数据库。然而,随着数据量的增长,数据库操作的效率可能会成为瓶颈&#xff0c…

如何在Ubuntu上更改MySQL数据存储路径

文章目录 0 背景1 备份现有数据库数据2 停止 MySQL 服务3 复制现有的 MySQL 数据到新目录4 修改 MySQL 配置文件5 更新 AppArmor 或 SELinux 配置(如有启用)6. 修改 MySQL 系统文件中的 datadir7. 启动 MySQL 服务8. 验证更改参考资料 0 背景 在原先划分…

股市入门常见术语介绍

鉴于最近行情讨论火热,我也想借此平台,结合我大学时期身边同学老师的投资经历,写一篇交易入门术语简介。内容不多但是足以达到科普之用。 ​ 希望大家能谨慎对待投资,始终保持谦虚学习的态度。不要迷失在瞬息万变的金融市场&…

webstorm 编辑器配置及配置迁移

1.下载地址 WebStorm:JetBrains 出品的 JavaScript 和 TypeScript IDE 其他版本下载地址 2.安装 点击下一步安装,可根据需要是否删除已有版本 注意: 完成安装后需要激活 3.设置快捷键 以下为个人常用可跳过或根据需要设置 如&#xff1a…

满级抗摔续航王者,荣耀X60系列发布,起步价仅1199元

10月16日,荣耀X60系列暨荣耀平板新品发布会正式举办,荣耀X60 Pro、荣耀X60以及荣耀平板GT Pro、荣耀亲选耳机LCHSE X7e、荣耀亲选WhizKid儿童手表2 Pro等新品悉数亮相。其中,荣耀X60 Pro首次搭载6600mAh最大青海湖电池、绿洲护眼屏、双向北斗…

pta-7-6 学生类设计

题目要求: 设计一个类Student,并在Main类中生成Student类对象进行测试 1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于s…

GPT-SOVIT模型部署指南

一、模型介绍 强大的小样本语音转换和文本转语音 WebUI。 具有以下特征: 零样本 TTS: 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS: 仅使用 1 分钟的训练数据对模型进行微调,以提高语音相似度和真实感。跨语…

【Oracle数据库进阶】001.SQL基础查询_查询语句

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序

2023年五一杯数学建模 C题 双碳目标下低碳建筑研究 原题再现: “双碳”即碳达峰与碳中和的简称,我国力争2030年前实现碳达峰,2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐,大力推进…

AUTOSAR_EXP_ARAComAPI的5章笔记(13)

☞返回总目录 5.4.7 事件(Events) 在骨架侧,服务实现负责通知事件的发生。如 5.4.2 RadarService Skeleton Class 所示,骨架为每个事件提供一个事件包装类的成员。骨架的事件包装类与代理的事件包装类看起来明显不同。 在骨架端…

[已解决]DockerTarBuilder永久解决镜像docker拉取异常问题

前阵子发现阿里云的docker加速镜像失效了(甚至连nginx都拉取不了),重新换了并且加多了网络上比较常用的dokcer加速源,可以解决一部分问题,但仍然有一些镜像的某个版本或一些比较冷的镜像就是拉取不了,原因未…

libaom 源码分析:aomdec.c 文件

aomdec.c 功能:libaom 项目完成视频解码过程的 demo文件位置:libaom/apps/aomdec.c函数关系 命令行说明 终端输入 ./aomdec --help,输出如下,展示如何使用方法。Usage: ./aomdec <options> filenameOptions:--help Show usage options and exit…