【AI绘画】Midjourney进阶:色调详解(上)
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: AI绘画 | Midjourney
文章目录
💯前言
【AI绘画】Midjourney进阶:色相详解 https://blog.ZEEKLOG.net/2201_75539691?type=blog
在上一篇文章中,我们详细探讨了色相的基本概念和运用。而色相作为色彩的基础,虽然能帮助我们区分颜色的种类,但它并不能完全满足实际创作中的需求。尤其在 AI绘画中,颜色的呈现往往需要更加精细的调控,颜色的表达也需要超越单纯的“色相”维度。例如,当我们谈到蓝色时,仅仅知道它是蓝色并不足够。在不同的创作场景中,蓝色可以呈现为淡蓝、深蓝、灰蓝或纯蓝等多种形式,而每一种形式都能传递不同的氛围与视觉感受。
对这些变化的理解与运用,其实是对色调的掌握。色调可以看作是颜色的性格特征,它为画面提供了更多的表达可能性。色调通常分为六种:白色调、淡色调、明色调、纯色调、灰色调和暗色调。即便没有设计经验,只要掌握基本的色调知识,也能有效提升对色彩的控制力。
Midjourney官方使用手册
💯Midjourney中的色彩控制
在 Midjourney 中,色彩控制是设计过程中的一个重要环节。无论是为了增强视觉冲击力还是准确传达设计理念,合理的色彩选择都能为设计增添情感和深度,帮助我们更好地传递信息,影响观众的情绪反应。
illustration, dark-toned blue, 8k, ultra details --ar 16:9 为什么要控制色彩?
控制色彩的本质是为了更精准地影响情感,准确传达我们想要表达的信息。色彩设计不仅仅是选择一种视觉上的搭配,更是影响人们心理感受的关键因素。
illustration, bright-toned blue, 8k, ultra details --ar 16:9 在设计中,色彩常常被称作无声的催眠。合理的色彩搭配可以让设计语言更加有力地表达,增强其对受众的吸引力。
illustration, white-toned blue, 8k, ultra details --ar 16:9 如果在设计中没有选对合适的配色,那么可能不仅无法准确地传达设计目的,甚至可能与原意背道而驰,让整体设计的美感和意义大打折扣。
illustration, light-toned blue, 8k, ultra details --ar 16:9 为什么要在Midjourney中控制色彩?
- 它的缺点在于,可能会掩盖设计中的不足之处。
- 一旦出现
配色问题,自动配色也无法提供有效的提示,从而使设计者难以发现问题所在。
在 Midjourney 中,系统通常会根据主题自动进行配色,尤其是在一些灵感探索类的设计中,自动配色常常可以带来不错的结果。
这种自动配色的优点是,可以帮助设计者节省配色上的精力,减少因为色彩搭配不当而带来的问题。然而,这种自动化的配色也有一定的不足:
illustration, grey-toned blue, 8k, ultra details --ar 16:9 - 有时是客户对某种颜色有明确的要求;
- 或者在概念和创意阶段已经确定了特定的
颜色方案; - 亦或是设计中的某些元素必须使用特定颜色。
在实际的设计场景中,我们往往会有更具体的配色需求。例如:在这些情况下,设计师需要精确地控制色彩,而不是完全依赖自动配色来完成整个设计。
illustration, pure tone blue, 8k, ultra details --ar 16:9 通过 Midjourney 中的配色控制,我们能够把握设计中每一个元素的色彩,使其与整体的设计理念相一致,达到理想的设计效果。
总的来说,在 Midjourney 中控制色彩,既可以在灵活运用系统自动配色的优点中得以解放,又可以在特定的需求下实现更加专业和精细的控制。这样的配色方法可以帮助我们实现更加优秀的设计成果。
A vibrant and inviting yellow theme sales banner, featuring bold discount text, yellow shopping bags, coins, and playful graphics, dynamic and friendly, promotional style, high visibility --ar 16:9 --q 2 💯色调
色调是色彩的重要组成部分,它决定了画面的整体氛围和情感表达的深度。通过调节颜色的明暗、纯度或混合程度,不同的色调能够传递截然不同的视觉感受和情绪,例如纯净的白色调、柔和的淡色调或厚重的暗色调。了解并灵活运用色调,可以让创作者在视觉设计中更精准地实现目标表达,赋予作品更多的层次感和感染力。
白色调
提示词:white-toned <color>
优点:
文艺感:
白色调通常给人一种艺术感与品味的印象,适合用于需要传达文艺气息的创作。
A white-toned pastel beige scene with elegant details, showcasing a refined and sophisticated atmosphere, inspired by minimalism and aesthetic appeal, soft textures, natural lighting, highly detailed --ar 16:9 --q 2 素雅和简洁:
白色调在视觉上非常纯净,能有效地表达简约的氛围,使画面显得不复杂、干净整洁。
A white-toned soft gray composition, pure and clean design, featuring simplicity and harmony, uncluttered layout, smooth gradients, bright and soft focus --ar 3:2 --q 2 干净无暇:
这种调性有助于突出画面中的清晰度和纯洁感,适用于想要呈现纯净和无瑕的设计风格。
A white-toned icy blue design, crystal-clear details, smooth and spotless textures, ethereal and serene mood, ultra-high clarity and focus, modern aesthetic --ar 2:3 --q 2 缺点:
无趣:
过度使用白色调容易让画面缺乏变化,显得比较平淡和无趣。
A white-toned plain white scene with minimal details, flat textures, lack of depth, overly simplified composition, dull and lifeless atmosphere --ar 16:9 --q 2 单调:
单一的白色调容易让人视觉疲劳,尤其在丰富的创作场景中,可能显得乏味。
A white-toned pale gray environment, repetitive patterns, low contrast, uninspired composition, visually monotonous, lacking vibrancy --ar 3:2 --q 2 缺乏个性:
由于过度追求干净和纯洁,可能会牺牲色彩的多样性和画面的表现力,导致作品缺乏个性化表达。
A white-toned off-white palette, overly uniform design, absence of vibrant elements, lack of colorful diversity, minimal individuality or unique expression --ar 2:3 --q 2 淡色调
提示词:light-toned <color>
优点:
轻快感:
淡色调通常传递轻盈、清新的感觉,能够使画面看起来不那么沉重,适合营造愉悦、舒适的氛围。
A light-toned pastel yellow composition, airy and refreshing, conveying a sense of lightness and cheerfulness, soft textures, bright ambiance, and a soothing atmosphere --ar 16:9 --q 2 高档与清爽:
淡色调给人一种高端但不过度张扬的感觉,同时还显得清新可人,适用于时尚和现代化风格的设计。
A light-toned soft mint green design, modern and elegant, combining a refined and approachable style, clean lines, gentle contrasts, and a serene, refreshing mood --ar 3:2 --q 2 天真与女性化:
这种调性能够很好地表现天真、柔和的特质,特别适合用于呈现女性化的主题或者想要表达温柔的情感。
A light-toned blush pink theme, gentle and tender, capturing a sense of innocence and femininity, soft lighting, delicate textures, and a warm, emotional expression --ar 2:3 --q 2 缺点:
单薄:
淡色调虽然清新,但可能会显得力量不足,尤其在需要传达强烈情绪或者深刻印象的场合。
A light-toned pale peach scene, soft and muted, lacking intensity, with minimal contrast and subdued emotions, unable to convey depth or leave a strong impression --ar 16:9 --q 2 软弱:
如果没有合理搭配,淡色调的表现力可能过于柔和,从而失去视觉冲击力,显得软弱无力。
A light-toned pastel lavender composition, overly delicate and lacking impact, with excessive softness, muted tones, and a weak visual presence, appearing fragile and uninspired --ar 3:2 --q 2 明色调
提示词:bright-toned <color>
优点:
年轻感:
明色调具有很强的青春气息,适合用于表达年轻、充满活力的主题,使画面显得生动而富有朝气。
A bright-toned sky blue theme, vibrant and youthful, evoking a fresh and energetic mood, soft highlights, playful and lively composition, ideal for conveying a sense of optimism and youth --ar 16:9 --q 2 活力和阳光:
这种调性给人积极向上的感觉,能够有效传递阳光、乐观的情绪,非常适合用于描绘活泼的场景。
A bright-toned golden yellow composition, radiating warmth and positivity, cheerful and sunny, featuring strong contrasts and dynamic lighting, conveying vitality and happiness --ar 3:2 --q 2 明朗与干净:
明色调的色彩纯度高、饱和度强,画面因此显得更加清晰和直观,有助于突出主体内容。
A bright-toned crimson red palette, bold and vivid, showcasing clarity and intensity, highly saturated yet balanced, with a striking and clean visual impact that emphasizes the subject --ar 2:3 --q 2 缺点:
缺乏档次感:
由于明色调通常给人一种简单直白的印象,可能不太适合需要表现高级感或者内敛风格的设计,容易让画面显得不够精致。
A bright-toned neon green design, overly bold and simplistic, lacking subtlety and elegance, with an unrefined and casual appearance, unsuitable for conveying luxury or sophistication --ar 16:9 --q 2 💯小结
色彩在设计中的重要性毋庸置疑,而通过不同色调的运用,我们能够更加精准地传达情感与视觉信息。从基础的色相知识到更为细致的色调理解,每一步都为创作者提供了更多可能性。在 AI绘画工具如 Midjourney 中,色彩控制既是设计中至关重要的环节,也是创意表达的一大助力。合理的配色不仅可以提升画面的吸引力,还能在视觉表达中实现更深层次的情感共鸣。通过色调的调整,我们能够轻松切换画面的氛围,从纯净简约的白色调到活泼生动的明色调,每一种选择都蕴含着无限的创作潜力。
然而,色调的选择并非完全无条件的。不同色调虽然能带来独特的优势,但也伴随着某些局限性,比如白色调的单调、淡色调的柔弱,以及明色调可能欠缺的高级感等。这提醒我们在设计过程中需要审慎评估目标表达与色调的匹配度。通过深入理解各类色调的特性,结合实际设计需求,我们可以更有效地平衡画面表现力与创意表达的深度,使每一次创作都更加出色与贴合主题。
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;classStyleTransferModel(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);defforward(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;defload_image(img_path, max_size=400, shape=None): image = Image.open(img_path).convert('RGB');ifmax(image.size)> max_size: size = max_size;else: size =max(image.size);if shape isnotNone: 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;defim_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;defgram_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 inrange(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()