在AI绘图领域,提示词的质量直接决定了生成图像的上限。最近,在整理个人绘图提示词库时,我意识到手动组合标签的效率低下且缺乏系统性,为了解决这一痛点,我开发了一个基于Python的自动化提示词生成器。
本文将详细阐述其技术原理、实现路径与核心代码,并借助即梦AISeedream 4.0模型基于Python生成的AI绘图提示词来绘图,下面是使用Python生成的AI绘图提示词创作的图片,效果还不错~
以上是使用Python生成的绘图提示词,然后复制粘贴到即梦AI里面自动生成的,接下来我将详细介绍如何开发出这个项目。
实际上,AI绘图的核心挑战在于如何将人类的抽象意图转化为机器可理解的精确指令,简单的关键词堆砌往往导致图像内容混乱、缺乏重点,优秀的提示词应模拟人类观察事物的逻辑顺序:从宏观场景到核心主体,再到细节、光影和氛围。
我的方案基于这一理念,构建了一个分层、多维度的结构化词汇库,并通过算法进行有序组合。这不仅是随机选择,更是基于视觉权重和叙事逻辑的智能编排。
要开发出这样的脚本,首先需要构建多维度结构化词汇库。我没有采用扁平化的标签结构,而是根据视觉元素的逻辑关系,将其划分为多个维度,如:
这种结构确保了生成提示词时,可以在每个视觉层面进行精确控制。
其次,设计基于权重的生成算法,算法的核心是“有控制的随机性”。通过为不同词汇类别设定不同的出现概率和组合规则,模拟人类描述的自然习惯。
例如,核心主体(人物)是必须的,而特定场景(如“清华大学校门前”)则以70%的概率出现,以增加多样性。人物的外貌和面部特征则会随机抽取2-3个标签进行组合,以塑造更丰富的形象。
def generate_ai_prompt(): prompts = parse_prompts() sentence_parts = []
# 70%的概率添加具体场景,增加叙事感 if random.random() < 0.7: location = random.choice(prompts['著名地标']) sentence_parts.append(f"在{location}")
初版生成器仅做到了词汇拼接,生成的提示词可读性差。为了解决这个问题,我引入了连接词和修饰语,并规定了生成顺序,将零散的标签组织成符合自然语言习惯的句子。
最终的提示词结构更像一个微型故事剧本:“在[场景],一位[人物特征]的[主体],[姿态],在[光影效果]下,呈现出[情绪和氛围],[摄影参数]。”
为了提升生成图像的专业感,我在算法中集成了质量控制模块。该模块会自动在提示词末尾加入专业摄影和画质术语,如“8K画质”、“徕卡相机”、“电影级镜头”等。这相当于为AI的“相机”设置了最优参数,能显著提升最终出图的细节和质感。
在任务塑造模块,这是算法最复杂的部分,通过分层抽样,构建一个立体、鲜活的人物形象。
person_subject = random.choice(['一位年轻女子', '一位优雅女性', '一个气质出众的女孩'])
appearance = random.sample(prompts['外貌描述'], random.randint(2, 3))facial_features = random.sample(prompts['面部特征'], random.randint(1, 2))
person_description = [person_subject] + appearance + facial_features
最终,调整后的AI绘图提示词如下,已经非常接近专业的绘图提示词。
在清河坊街灯笼墙,一个气质出众的女孩,肌肤细腻,单肩背包,小巧耳钉,微笑迷人,肌肤肤质均匀,身着单肩背包,金属眼镜,比出V字手势,含情目光,手机屏光反射,深 沉阴影,专业摄影,色彩鲜明饱满,人像摄影风格。 层次丰富,光影张力十足,宛如8K 单反相机捕捉的电影级镜头。
通过这种方式,每次调用都能生成一个独一无二的人物描述,提升了AI绘图的专业性,由于篇幅问题,这里就不展示全部代码,获取完整代码在下方公众号后台回复「AI绘图」获取。
关注和星标『大话数据分析』
和作者一起学习数据分析!
👆点击关注|设为星标|干货速递👆