【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

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

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

  • 在之前的文章中,我们已经详细介绍了对称构图三分线构图中心点构图留白构图以及引导线构图等常用的构图方式,帮助大家理解这些构图在画面中平衡感和视觉冲击力的表现。接下来,我们将继续探讨另一种具有独特表现力的构图技巧——对角线构图。通过对角线的巧妙运用,作品可以呈现出更强的动感深度,让画面更具视觉张力,进一步提升作品的艺术表现力。

Midjourney官方使用手册
在这里插入图片描述


💯什么是构图

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


为什么Midjourney要使用构图

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

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

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

💯对角线构图

对角线构图利用画面中的对角线元素来增强画面的动力感和深度,引导观众的视线。

  • 对角线构图是一种通过在画面中引入对角线元素来增强动感和深度的构图方式。相比于水平或垂直构图,对角线构图更能有效地引导观众的视线,使视觉焦点自然集中在画面的关键区域上。通过巧妙地运用对角线元素,如风景中的河流和山脉、建筑中的倾斜线条、人物的姿态等,可以为画面带来层次感和方向感,使画面更具吸引力和空间感。这种构图手法不仅提升了画面的动态效果,也增强了视觉的平衡性,使作品更加生动而富有表现力。
    在这里插入图片描述

特点

  1. 动态感:相较于水平线和垂直线的构图方式,对角线构图更能呈现出一种动态的视觉效果,赋予画面一种运动感,使观众产生一种流动的视觉体验。
    在这里插入图片描述

  2. 引导视线:对角线元素能够有效地引导观众的视线,将他们的关注点自然地引向画面的重点区域,从而更突出主体,强化视觉中心。
    在这里插入图片描述

  3. 增加深度:通过对角线构图,可以创造出强烈的空间感和深度感,使画面更具立体效果,赋予作品更丰富的视觉层次。
    在这里插入图片描述

  4. 创造平衡:在画面中使用对角线构图,可以形成一种动态的平衡感,既保持了画面的稳定性,又增添了活力与张力。
    在这里插入图片描述

应用场景

  1. 风景图:在风景摄影中,可以利用山脉、河流、道路等自然的对角线元素,增强画面的深度感和动态感,让画面更加生动有层次,呈现出大自然的广阔与流动性。
    在这里插入图片描述

  2. 建筑图:在建筑摄影中,建筑物的倾斜线、楼梯、走廊等元素可以作为对角线,用于创造强烈的空间感和深度感,突出建筑结构的几何美感与立体效果。
    在这里插入图片描述

  3. 人像图:在人像摄影中,可以通过模特的姿态、视线等构成对角线,引导观众的视线,增强人物的表现力,使画面更具情感与吸引力。
    在这里插入图片描述

提示词书写技巧

  • 在书写与对角线构图相关的提示词时,使用Diagonal Composition可以帮助Midjourney生成具有动感和深度的图像。这个提示词会让图像中的元素沿对角线排列,形成一种视觉上的引导效果,吸引观众的视线聚焦在画面的重点区域。无论是在风景、人像还是建筑摄影中,通过这个提示词可以增强画面的立体感和方向感,符合自然的视觉习惯。因此,建议在创作中结合其他细节描述,例如“ultra details”或“8k”,进一步提升画面的整体质量和视觉冲击力。
    在这里插入图片描述

测试

原图:

landscape, river, mountains, cinematic light, ultra realistic, high contrast, 8k --ar 16:9
  • 在原图中,画面布局较为平衡,主要呈现水平和垂直的视觉结构,使画面显得宁静而稳定。山脉和河流自然地交织在一起,但缺乏明显的视线引导,整体感觉较为平淡。
    在这里插入图片描述

原图+Diagonal Composition:

landscape, river, mountains, Diagonal Composition, dynamic depth, leading lines, cinematic light, ultra realistic, high contrast, 8k --ar 16:9
  • 当加入对角线构图后,图像则显得更具动感和层次感。通过对角线的构图,画面中的元素(如河流的流向和山脉的走势)形成了强烈的视线引导效果,将观众的视线从画面一角自然引向另一角,增加了画面的深度和视觉张力,使图像更加引人入胜。这种构图方法不仅强化了场景的空间感,还赋予画面一种动态的平衡感。
    在这里插入图片描述

💯小结

  • 在这里插入图片描述
    在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.mzph.cn/news/883397.shtml

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

相关文章

【知识科普】正则表达式深入解读

文章目录 正则表达式概述使用场景不同环境下的正则表达式范例Linux (使用grep命令)Java (使用Pattern和Matcher类)Python (使用re模块) 正则表达式概述 正则表达式(Regular Expression,简称regex或regexp)是一种强大的文本处理工具&#xff…

免费送源码:Java+MVC+HTML+CSS +MySQL 考研资料共享系统的设计与实现 计算机毕业设计原创定制

摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设考研资料共享系统。 本…

Win10+MinGW13.1.0编译Qt5.15.15

安装windows SDK、python、ruby、cmake、Perl[可选]安装MySQL解压qt-everywhere-opensource-src-5.15.15.zip(注:不要使用qt-everywhere-opensource-src-5.15.15.tar.xz)修改源代码 E:\qt-everywhere-src-5.15.15\qtbase\src\3rdparty\angle\…

028_Comma_Separated_List_in_Matlab中的逗号分割列表

什么是逗号分割列表 这玩意一般都不知道是什么,Comma-separated list,CSL, 虽然,用Matlab的时候天天会用到。这到底是个什么玩意?或者,更进一步,这到底是不是个玩意? 每次调用一个…

CSS3 动画相关属性实例大全(三)(columns、filter、flex、flex-basis 、flex-grow、flex-shrink属性)

CSS3 动画相关属性实例大全(三) (columns、filter、flex、flex-basis 、flex-grow、flex-shrink属性) 本文目录: 一、columns属性(设置元素的列宽和列数) 二、filter属性(调整图像、背景和边…

网络一些相关术语

目录 网络一些相关术语 转发平面效率 可扩展性 控制平面 网络拓扑 服务质量(QoS) 网络协议 网络带宽 网络拥塞 网络安全 网络冗余 网络切片 网络延迟 网络地址转换(NAT) 虚拟专用网络(VPN) …

实验04while(简单循环)---7-2 整数的立方和

任务描述 给定一个正整数k&#xff08;1<k<10&#xff09;&#xff0c;求1到k的立方和m。即m12 * 2 * 2…k * k * k。 输入格式: 输入只有一行&#xff0c;该行包含一个正整数k。 输出格式: 输出只有一行&#xff0c;该行包含1到k的立方和。 输入样例: 5 输出样例: 2…

网关三问:为什么微服务需要网关?什么是微服务网关?网关怎么选型?

文章整体介绍 本文旨在解答关于微服务网关的三个核心问题&#xff1a; 1&#xff09;为什么需要网关&#xff1f;也即在何种场景下应采用微服务网关以优化系统架构&#xff1b; 2&#xff09;什么是微服务网关&#xff1f;主要讲构成微服务网关的关键能力&#xff0c;包括但…

008:光盘映像文件处理工具UltraISO安装教程

摘要&#xff1a;本文详细介绍光盘映像文件处理工具UltraISO的安装流程。 一、软件介绍 UltraISO是一款功能强大的光盘映像文件处理工具&#xff0c;支持ISO文件的制作、编辑、转换、压缩、刻录以及启动盘制作&#xff0c;广泛应用于数据备份、软件分发和系统安装等领域。 二…

地磁传感器(学习笔记下)

咱们接着学习笔记上来学习哈&#xff0c;首先&#xff0c;我们编写读取方位角程序&#xff0c;配置好传感器以后&#xff0c;我们就可以读取磁力值了&#xff0c;我们先定义一个结构体类型&#xff0c;用来存放磁力值以及方位角值。这个结构体&#xff0c;放到qmc5883l.h文件中…

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

引言 在OpenAI DevDay发布会上&#xff0c;OpenAI再次震撼整个人工智能行业&#xff0c;为AI领域带来了重大的更新。CEO Sam Altman宣布推出了定制版本的ChatGPT&#xff0c;这意味着用户现在可以根据自己的需求打造个性化的GPT&#xff0c;并分享至GPT Store。这一消息对于受…

神经架构搜索:自动化设计神经网络的方法

在人工智能&#xff08;AI&#xff09;和深度学习&#xff08;Deep Learning&#xff09;快速发展的背景下&#xff0c;神经网络架构的设计已成为一个日益复杂而关键的任务。传统上&#xff0c;研究人员和工程师需要通过经验和反复试验来手动设计神经网络&#xff0c;耗费大量时…

实验03分支7-13 算术入门之加减乘除

对于输入的两个整数&#xff0c;按照要求输出其和差积商。 输入格式: 在一行内输入两个不超过100的非负整数a和b&#xff0c;中间以一个空格间隔&#xff0c;且保证b不为0。 输出格式: 共四行&#xff0c;格式是&#xff1a; [a] [b] [ab] [a] - [b] [a-b] [a] * [b] [a…

cvxopt.matrix函数

cvxopt.matrix 是 cvxopt 库中的一个核心类&#xff0c;用于在凸优化问题中表示矩阵。它可以存储稀疏或密集矩阵&#xff0c;支持从多种数据类型&#xff08;如列表、NumPy 数组等&#xff09;创建矩阵。cvxopt.matrix 在处理诸如二次规划、线性规划等优化问题时非常有用。 基…

P1588 [USACO07OPEN] Catch That Cow S

[USACO07OPEN] Catch That Cow S 题目描述 FJ 丢失了他的一头牛&#xff0c;他决定追回他的牛。已知 FJ 和牛在一条直线上&#xff0c;初始位置分别为 x x x 和 y y y&#xff0c;假定牛在原地不动。FJ 的行走方式很特别&#xff1a;他每一次可以前进一步、后退一步或者直接…

【MySQL】日志

1. 日志基本了解 常见的MySQL Server日志类型&#xff0c;以及记录的日志信息&#xff08;场景通俗理解&#xff09; 错误日志 记录的主要信息由服务器关闭、启动、崩溃事件&#xff1b;MySQL运行过程中出现的错误、警告和严重事件以及与权限、配置相关的问题使用场景 诊断MyS…

编译上下文

文章目录 作用域、可见性函数作用域文件作用域语句块作用域函数原型作用域 标识符的存储类型全局对象与函数静态对象与函数局部对象 作用域、可见性 一个变量标识符只有在特定的某段儿程序区域&#xff08;作用域&#xff09;内才可以起作用&#xff08;可见性&#xff09;。 …

【Linux】【xmake】安装 + C/C++常用项目配置

文章目录 0. 环境准备1. 子命令create - 快速创建项目build - 构建程序config - 配置编译需要的参数show - 查看当前工程基本信息update - 程序自更新 2. C/C 项目常用配置2.1 项目目标类型2.2 添加宏定义2.3 头文件路径和链接库配置2.4 设置语言标准2.5 设置编译优化2.6 添加源…

光伏MPPT追踪的仿真设计

利用Simulink可实现如下功能&#xff1a;改变光照时有MPPT追踪并低电压穿越的能力。 MPPT控制器的全称为“最大功率点跟踪”&#xff08;Maximum Power Point Tracking&#xff09;太阳能控制器&#xff0c;检测主回路直流电压及输出电流&#xff0c;计算出太阳能阵列的输出功…

5.15 加载内核映像文件(1)

首先是 连接脚本与 实际的内核映像大小的关系&#xff1a; 关于ELF 格式的了解&#xff1a; 如何通过 ELF 头&#xff0c; 找到各个段。 网上的关于elf 的截图&#xff1a; 那么 segment 与 section 有什么区别呢&#xff1f; 也就是说&#xff0c; section值得是 单个C文件的…