【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.rhkb.cn/news/457719.html

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

相关文章

【QT】windows 平台 QT6.8 安装

qt-online-installer-windows-x64-4.8.1.exe Index of /qt/archive/online_installers/4.8/登录,第一个字母是大写的 如果忘记了,可以在这里“ https://my.qt.io/## D:\Qt6

LDR6328:助力小家电实现TYPE-C接口快充输入

在小家电市场日益繁荣的今天,消费者对产品的要求越来越高,不仅关注功能性和实用性,更追求便捷和高效的充电体验。传统的充电接口如DC、Micro USB等,已经无法满足现代消费者对快速充电和高效数据传输的需求。为此,许多小…

基于SSM轻型卡车零部件销售系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,配件类型管理,配件信息管理,订单信息管理,检修休息管理,系统管理 用户账号功能包括:系统首页,个人中心&…

SMA-BP时序预测 | Matlab实现SMA-BP黏菌算法优化BP神经网络时间序列预测

SMA-BP时序预测 | Matlab实现SMA-BP黏菌算法优化BP神经网络时间序列预测 目录 SMA-BP时序预测 | Matlab实现SMA-BP黏菌算法优化BP神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SMA-BP黏菌算法优化BP神经网络时间序列预测(完…

【C#】调用本机AI大模型流式返回

【python】AI Navigator的使用及搭建本机大模型_anaconda ai navigator-CSDN博客 【Python】AI Navigator对话流式输出_python ai流式返回-CSDN博客 前两章节我们讲解了使用AI Navigator软件搭建本机大模型,并使用python对大模型api进行调用,使其流式返…

JS面试八股文(一)

😊JS面试八股文(一) 1.JS由哪三部分组成?2.JS有哪些内置对象?3.操作数组的方法有哪些?4.JS对数据类型的检测方式有哪些?5.说一下闭包,闭包有什么特点?6.前端的内存泄漏怎…

【go】仅设想,能不能通过pure go编写页面。

设想 通过pure-go编写页面, 似乎不太好实现, 就当学习前端html基础了。 完成度 0.5% App.go: package srcimport (d "github.com/go-webtools/wgo/core/document""github.com/go-webtools/wgo/core/react""github.com/go-webtools/wgo/c…

Java避坑案例 - 高并发场景下的分布式缓存策略

文章目录 概述缓存常见问题及解决方案把 Redis 当作数据库常用的数据淘汰策略如何选择合适的驱逐算法 缓存雪崩问题复现解决方案 缓存击穿(热点缓存失效)问题复现解决方案 缓存穿透问题复现解决方案缓存穿透 vs 缓存击穿 缓存与数据库的一致性先更新缓存…

面包种类图像分割系统:多层面改进

面包种类图像分割系统源码&数据集分享 [yolov8-seg-GhostHGNetV2&yolov8-seg-C2f-DCNV3等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Globa…

使用Llama Index与Streamlit实现一个从文本中提取专业术语和定义网页小程序

Llama Index有许多用例(语义搜索、摘要等),并且都有很好的记录。然而,这并不意味着我们不能将Llama Index应用到非常具体的用例中! 在本教程中,我们将介绍使用Llama Index从文本中提取专业术语和定义的设计…

Ovis: 多模态大语言模型的结构化嵌入对齐

论文题目:Ovis: Structural Embedding Alignment for Multimodal Large Language Model 论文地址:https://arxiv.org/pdf/2405.20797 github地址:https://github.com/AIDC-AI/Ovis/?tabreadme-ov-file 今天,我将分享一项重要的研…

量子机器学习:颠覆性的前沿技术

量子机器学习:颠覆性的前沿技术 引言 在科技日新月异的今天,量子计算和机器学习作为两大前沿领域,各自在推动科技进步中发挥着重要作用。而当这两者结合时,便诞生了一个全新的领域——量子机器学习(Quantum Machine …

GCC 简介

Linux 中的编译器 GCC 的编译原理和使用详解 GCC 简介 GCC(GNU Compiler Collection)是一套由 GNU 开发的编程语言编译器,它支持多种编程语言,包括 C、C、Objective-C、Fortran、Ada 和 Go 等。GCC 是一个开源的工具集&#xff…

Spring Boot框架在学生宿舍管理中的应用研究

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了学生宿舍信息管理系统的开发全过程。通过分析学生宿舍信息管理系统管理的不足,创建了一个计算机管理学生宿舍信息管理系统的方案。文章介绍了学生宿舍…

AI读教链《为什么今年ETH对BTC表现这么拉垮?》

以太坊(ETH)近期表现不佳,主要是由于市场对其价值存储功能的信心下降,尤其是在比特币(BTC)表现强劲的背景下。ETH的市值逐渐被以Solana等新兴公链抢占,流失了大量用户和炒币的流量。此外&#x…

JAVA排序

排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序&…

跟着鸟儿学飞行?扑翼机器人的感知秘籍

大家好!今天来了解一篇扑翼机器人的研究——《Avian-inspired embodied perception in biohybrid flapping-wing robotics》发表于《Nature Communications》。在广阔天空中,鸟类凭借精妙翅膀结构与敏锐感知自由翱翔,这一直吸引着科学家探索其…

cherry pick commit

cherry pick commit git cherry-pick 是一个 Git 命令,用于将特定的提交(commit)应用到当前分支上。这在需要从其他分支中挑选某些提交到当前分支时非常有用,例如当你需要修复一个 bug,但想只应用特定的变更&#xff…

国内大语言模型哪家更好用?

大家好,我是袁庭新。 过去一年,AI大语言模型在爆发式增长,呈现百家争鸣之态。国内外相关厂商积极布局,并相继推出自家研发的智能化产品。 我在工作中已习惯借助AI来辅助完成些编码、创作、文生图等任务,甚至对它们产…

基于物联网的智慧考场系统设计(论文+源码)

1. 功能设计 (1)温度监测与控制功能: 系统需要能够实时采集考场内的温度信息,通过DS18B20传感器获取准确的数据,并在OLED屏幕和APP上显示。当温度异常过高时,系统应自动启动继电器,模拟空调开启…