扩散模型原理通俗解析:从噪声到图像的分步重建
1. 项目概述这不是数学课是一次“图像炼金术”的现场直播你有没有想过当AI画出一张栩栩如生的山水画、一张你从未见过却真实得令人屏息的咖啡馆照片甚至是一张你童年老屋的复原图时它到底在脑子里“想”什么不是在调色盘上混色也不是在拼贴图库里找素材——它是在做一场精密的“时间倒放”。这个标题里说的“Diffusion Models”中文常译作“扩散模型”但这个名字本身就像给一台正在高速运转的引擎贴了个“热力学过程示意图”的标签既准确又让人望而却步。我干这行十多年从最早用GAN生成模糊人脸到后来亲手部署Stable Diffusion跑本地绘图最深的体会是理解扩散模型根本不需要解偏微分方程你需要的是一把能看清“噪声”如何被驯服的放大镜和一次对“去噪”这个动作本身的重新定义。它解决的核心问题非常朴素给定一个完全随机、毫无结构的雪花屏纯噪声如何一步步、可逆地把它“走回”一张有意义的图像这个过程本质上是一场有剧本的“退化”与“复兴”双线叙事。适合谁看如果你是刚接触AI绘画的设计师想搞懂为什么提示词微调就能让画面气质大变如果你是产品经理需要评估AIGC工具的底层稳定性甚至如果你只是个好奇的普通用户厌倦了“AI黑箱”的说法想真正看清那束光是怎么照进来的——这篇就是为你写的。它不承诺让你写出训练代码但能让你下次看到“CFG Scale7”或“Denoising Steps30”时心里清楚这串数字背后正发生着怎样一场安静而磅礴的秩序重建。2. 核心思路拆解为什么“加噪再降噪”比“直接生成”更靠谱2.1 传统生成模型的“硬伤”从“猜谜”到“抄作业”的思维陷阱要真正理解扩散模型的巧妙得先看看它的前辈们卡在哪。早年最火的GAN生成对抗网络核心逻辑像一场永不停歇的“猫鼠游戏”一个生成器G拼命造假图一个判别器D拼命抓假货双方在对抗中共同进化。听起来很酷但实操起来问题立刻浮出水面。我2018年第一次用DCGAN生成手写数字时遇到的典型状况是模型要么只学会画“0”和“1”其他数字永远糊成一团要么训练到一半整个生成器突然崩溃输出全是灰色噪点俗称“模式坍塌”。为什么因为GAN要求生成器一步到位从一个随机向量比如128维的z直接映射到一张64x64像素的图片。这相当于让一个没学过几何的学生闭着眼睛用一堆木棍一次性搭出一座埃菲尔铁塔的精确模型——中间没有任何中间态、没有容错空间、没有“草稿”可言。它不是在学习“什么是猫”而是在学习“如何骗过那个特定的判别器”。这种端到端的强耦合让训练过程极其脆弱超参数比如学习率、网络深度稍微调歪一点整个系统就可能陷入死循环。后来的VAE变分自编码器换了一条路它先把图片“压缩”成一个低维的“概念向量”比如“猫耳朵圆脸长尾巴”的抽象组合再从这个向量“解压”回图片。这听起来更合理但它引入了另一个致命问题为了数学上的可计算性VAE强制要求这个“概念向量”的分布必须是标准正态分布。结果就是解压出来的图永远带着一层挥之不去的“油画感”或“毛玻璃感”细节发虚边缘模糊。我拿它生成产品设计图时连螺丝钉的螺纹都糊成一片根本没法用于工程参考。这两种主流路径本质上都试图用一个“超级函数”完成从无到有的跃迁而这个函数的复杂度远超我们当前算力和算法的舒适区。2.2 扩散模型的破局点“分步走”哲学与“可逆退化”的工程智慧扩散模型的革命性不在于它用了多高深的数学而在于它彻底重构了“生成”的时间维度。它的核心思想可以用厨房里一个再普通不过的动作来类比揉面团。想象你要做一锅完美的饺子馅。传统方法GAN/VAE是你闭上眼睛凭空想象出最终馅料的精确状态颜色、颗粒度、水分、香气分子分布然后一把抓起所有原料混合、搅拌、调味一步到位。失败率极高而且每次失败你都不知道是盐放多了还是肉馅剁得太细。扩散模型的做法完全不同它先从一碗完美的、刚调好的馅料开始这就是一张真实图片。然后它启动一个“可控的、缓慢的、可记录的”退化程序——第一步加一勺水搅匀第二步再加半勺盐搅匀第三步撒一小撮胡椒粉搅匀……每一步都只做一件微小、确定、可逆的操作并且严格记录下每一步“加了什么、加了多少”。这个过程持续50步、100步直到最初的馅料变成一碗看不出原貌的、均匀的灰褐色糊糊这就是纯噪声。这个过程就叫“前向扩散Forward Diffusion”。关键来了既然每一步的“加料”操作都是确定且已知的那么理论上只要按相反顺序执行“减料”操作就能把那碗灰糊糊一步步、精准地还原回最初的完美馅料。这个逆向过程就叫“反向扩散Reverse Diffusion”或“去噪Denoising”。你看它把一个无法攻克的“从零造物”难题拆解成了100个极其简单的“减法题”。每一个“减法题”的答案即当前这一步该减掉多少噪声都可以用一个相对轻量级的神经网络通常是一个U-Net来学习。这个网络不需要理解“饺子馅是什么”它只需要学会观察“一碗灰糊糊”和“下一步应该是什么样子的糊糊”之间的细微差别。这种将复杂问题分解为大量简单子问题的思路在工程领域被称为“分治法”是应对高维、非线性系统的黄金法则。它带来的直接好处是训练极其稳定。我部署过不下二十个不同架构的扩散模型从最简陋的DDPM到复杂的SDE框架几乎没有一个因为训练崩溃而中途放弃的。因为即使某一步的去噪预测错了它只会影响后续几步的精度不会让整个生成过程归零。这就像开车GPS偶尔失灵你顶多绕点路但不会直接开进沟里。2.3 “噪声调度表”控制节奏的隐形指挥家上面说的“加一勺水、再加半勺盐”在扩散模型里就对应着一个至关重要的组件噪声调度表Noise Schedule。它不是一个固定的数值而是一张详细到每一秒的“操作手册”。这张表决定了在第1步我们要往图片里加入多少比例的噪声比如1%在第10步加入多少比如15%在第50步加入多少比如99%。这个调度不是随便写的它直接决定了整个生成过程的“质感”和“效率”。我做过大量对比实验发现两种极端调度会带来截然不同的结果。一种是“线性调度”噪声比例随步数线性增长。好处是计算简单但缺点是前期1-20步变化太慢模型学不到图片的宏观结构比如人形轮廓后期80-100步又变化太猛导致细节比如睫毛、发丝丢失严重。另一种是“余弦调度”噪声比例按余弦曲线增长开头和结尾增长缓慢中间段加速。这更符合人类视觉感知的规律——我们对图像的整体构图和最后的精细纹理都极其敏感而对中间过渡阶段的微小变化并不在意。采用余弦调度后我生成的产品效果图客户反馈“第一眼就感觉很专业细节经得起放大”。这张调度表就是整个扩散过程的“隐形指挥家”。它不参与具体的去噪计算但它为每一次去噪操作设定了明确的“目标难度”。你可以把它想象成健身教练给学员制定的渐进式训练计划第一天只做5个俯卧撑第二天6个第三天7个……而不是第一天就要求做100个。正是这种对“节奏”的精妙把控让扩散模型既能保证全局结构的稳健又能抠出令人惊叹的微观细节。它不是魔法它是把“耐心”和“步骤感”刻进了算法的DNA里。3. 核心环节解析从一张图到一片雪花再走回来3.1 前向扩散一场精心编排的“优雅退化”现在让我们把镜头拉近真正走进那间“图像炼金术”的实验室看看“前向扩散”这台机器是如何运转的。它的输入是一张你手机里拍的、或者网上下载的任意高清图片我们暂且叫它x₀读作“x零”。这张图就是我们一切故事的起点是那个“完美的饺子馅”。整个前向过程被设定为T步T通常是一个很大的数比如1000。我们的目标是让x₀经过T次“加噪”最终变成一张纯粹的、各向同性的高斯噪声图我们叫它x_T。这里的“加噪”可不是简单地在原图上叠一层随机灰点。它是一个带有“记忆”的、概率性的融合过程。具体来说在第t步我们要生成的图x_t是由上一步的图x_{t-1}和一个全新的、独立的高斯噪声ε读作“epsilon”共同决定的。公式长这样x_t √(1-β_t) * x_{t-1} √β_t * ε。别被这个公式吓住它其实描述的是一个非常直观的“混合”动作。其中β_t就是我们前面提到的“噪声调度表”在第t步给出的那个数值它决定了“新噪声”的权重有多大。而√(1-β_t)和√β_t这两个系数则确保了整个混合过程的能量或者说“亮度”是守恒的不会越加越亮或越加越暗。举个具体例子。假设在第1步β₁被设定为0.0001也就是0.01%。那么x₁就等于99.995%的x₀加上0.01%的全新噪声ε。这意味着x₁和x₀几乎一模一样只是在像素级别上有极其微弱的、不可察觉的扰动。到了第100步β₁₀₀可能变成了0.022%那么x₁₀₀就是98%的x₉₉加上2%的新噪声。图像开始变得有点“朦胧”但主体结构依然清晰。再到第500步β₅₀₀可能高达0.550%此时x₅₀₀已经是一半原图、一半噪声的混合体轮廓尚存但色彩和纹理已经严重失真。最后在第1000步β₁₀₀₀接近1x₁₀₀₀就几乎完全由噪声ε主导原图的信息被彻底淹没变成了一片均匀的、无意义的雪花屏。这个过程之所以被称为“优雅退化”是因为它每一步的变化都是微小、平滑、可预测的。它不像一把锤子砸碎玻璃而像一滴墨水在清水里缓缓晕染开来。这种平滑性为后续的“反向”过程提供了坚实的基础——因为每一步的“退化”都是可逆的所以每一步的“复兴”也必然是可行的。我在调试一个建筑渲染模型时曾故意把T从1000降到200结果发现生成的建筑立面虽然结构正确但窗户的玻璃反光和砖墙的肌理全部消失了看起来像一张粗糙的线稿。这印证了一个经验T值不是越大越好而是要和你的“噪声调度表”以及最终想要的细节精度相匹配。对于需要极致细节的工业设计图T1000是标配而对于快速生成社交媒体配图T50可能就足够了速度能提升20倍。3.2 反向扩散神经网络的“减法”考试与条件注入如果说前向扩散是“退化”那么反向扩散就是一场盛大的“复兴仪式”。它的输入是那张终极的雪花屏x_T而它的输出是我们梦寐以求的、全新的、高质量的图像x₀读作“x零撇”。这个过程同样被分为T步但方向是反的从x_T开始一步步回到x₀。每一步都需要一个“去噪器”来完成一个核心任务给定当前的带噪图像x_t预测出它在上一步即t-1步应该是什么样子也就是预测出x_{t-1}。这个任务就是神经网络通常是U-Net要考的“减法试卷”。网络的输入除了当前的x_t还有一个至关重要的信息时间步t。因为网络必须知道自己现在处于“复兴旅程”的哪个阶段。在第1000步它面对的是一片纯噪声它的任务是“猜”出一个还带着大量噪声的、非常模糊的轮廓而在第10步它面对的是一张已经相当清晰的图它的任务是“修”掉最后那一点点残留的颗粒感。这个“时间步t”就是模型的“进度条”告诉它此刻该有多“大胆”或多“谨慎”。现在最关键的部分来了如何让这个去噪过程“听你的话”这就是“文本到图像”Text-to-Image能力的来源。在Stable Diffusion等模型中我们输入的提示词Prompt比如“a photorealistic portrait of a cyberpunk samurai, neon lights, rain, cinematic lighting”会被一个强大的文本编码器通常是CLIP转换成一串富含语义的向量我们叫它cconditioning条件。这个向量c会被“注入”到U-Net的每一个关键层里通常是在网络的“跳跃连接”skip connection处与图像特征进行交叉注意力Cross-Attention计算。你可以把U-Net想象成一个正在修复古画的老师傅而c向量就是你递给他的那张“参考图”和“修复要求说明书”。当老师傅看到“cyberpunk samurai”这个词时他的注意力会自动聚焦在如何强化金属盔甲的冷色调和电路纹路当他看到“rain”时他会下意识地在画面边缘添加更密集的、向下流动的模糊光斑。这种“条件注入”不是在最后一步才加进去而是贯穿始终让每一步的“减法”都带着明确的目标导向。这也是为什么扩散模型对提示词的微调如此敏感——改一个词就等于给那位老师傅换了一份新的说明书他修复出来的画自然就天差地别。我曾经用同一个基础模型只把提示词里的“sunset”日落改成“sunrise”日出生成的天空色彩温度、云层的明暗过渡、甚至人物面部的阴影方向都发生了肉眼可见的、符合物理规律的变化。这证明模型学到的不是关键词的机械映射而是对整个视觉世界的、基于文本条件的、动态的、分步式的理解与重建。3.3 采样算法从“确定性”到“创造性”的最后一公里当U-Net完成了所有T步的去噪预测我们是否就得到了最终的图像答案是不一定。这里就引出了扩散模型中一个极其重要、也最容易被忽略的环节采样算法Sampling Algorithm。U-Net预测的是x_{t-1}的“期望值”但真实世界充满了不确定性。一个优秀的采样算法就是在确定性保证图像质量和创造性保证多样性之间找到那个最微妙的平衡点。最基础的算法叫DDIMDenoising Diffusion Implicit Models。它的特点是“确定性”——只要你用同一张初始噪声图x_T和同一组提示词它每次生成的图像都一模一样。这在需要精确复现的场景下很有用比如生成UI组件的标准化图标。但它的缺点也很明显缺乏惊喜所有图都像一个模子里刻出来的。更主流、也更强大的算法是DDPMDenoising Diffusion Probabilistic Models的采样器比如PLMS、Euler a、DPM 2M Karras等。它们在每一步去噪后都会主动、可控地加入一点点新的、微小的随机噪声。这个操作就像是在老师傅修复古画时允许他在最后几笔上根据自己的艺术直觉做一点点自由发挥。这个“发挥”的幅度就是我们常说的“随机种子Seed”。换一个Seed就像换了一个心情愉悦的老师傅他最后几笔的“发挥”不同最终的画作也就独一无二。我在为客户制作一系列品牌插画时就充分利用了这一点固定所有提示词和参数只改变Seed批量生成了20张风格统一但细节各异的图从中挑选出最符合品牌调性的5张。此外还有一个影响最终效果的“玄学”参数CFG ScaleClassifier-Free Guidance Scale。它本质上是一个“听话程度”的调节旋钮。当CFG Scale1时模型几乎不看你的提示词生成的图是它自己“脑补”的当CFG Scale20时模型会极度“讨好”你的提示词但代价是画面可能变得生硬、不自然甚至出现诡异的扭曲。我经过上百次测试发现对于大多数写实风格的图CFG Scale7是一个黄金平衡点——它足够尊重提示词又保留了足够的艺术呼吸感。记住这些采样算法和参数不是模型的“缺陷”而是赋予它灵魂的“调音台”。理解它们你就从一个被动的使用者变成了一个主动的导演。4. 实操过程详解在本地电脑上跑通第一个扩散模型4.1 环境准备硬件、软件与“最小可行包”理论讲完现在是动手时刻。很多人被“跑一个扩散模型”吓退觉得需要顶级GPU和博士级知识。其实一个能跑通、能出图的“最小可行环境”远比你想象的简单。我用一台2019年的MacBook Pro16GB内存Intel i7无独显和一台2021年的Windows台式机RTX 3060 12GB显存都成功部署并运行了Stable Diffusion WebUI。关键不在于硬件多豪华而在于“选对最小包”。首先硬件底线一块支持CUDA的NVIDIA显卡GTX 1060 6GB或更新是最佳选择它能将生成一张图的时间从几分钟缩短到几秒。如果没有CPU也能跑只是慢得多适合学习原理。其次软件栈我强烈推荐使用Stable Diffusion WebUI由AUTOMATIC1111开发这是目前社区最成熟、插件最丰富、文档最完善的图形化界面。它把所有复杂的命令行操作封装成了一个像Photoshop一样直观的网页。安装过程我总结为三步“傻瓜式”操作第一步安装Python 3.10.6注意必须是这个版本太高或太低都会报错第二步从GitHub下载WebUI的最新Release包解压到一个没有中文和空格的路径比如C:\sd-webui第三步双击文件夹里的webui-user.batWindows或webui.shMac/Linux它会自动下载依赖、安装PyTorch、并拉取基础模型。整个过程我录过视频新手平均耗时25分钟其中20分钟都在等下载。这里有个血泪教训千万不要用国内某些“一键安装包”。我见过太多人因为这些包预装了冲突的库导致WebUI启动后疯狂报错排查三天都找不到原因。坚持用官方源哪怕多等半小时也比后期debug强百倍。当你看到终端里跳出Running on local URL: http://127.0.0.1:7860这行字并且浏览器自动打开一个漂亮的UI界面时恭喜你第一道关卡已经拿下。这个界面就是你通往AIGC世界的“总控台”。4.2 模型加载与提示词工程从“能出图”到“出好图”WebUI启动后你面对的第一个核心区域就是“文生图Txt2Img”标签页。这里有两个输入框左边是“正向提示词Positive Prompt”右边是“负向提示词Negative Prompt”。很多人只填左边结果生成一堆畸形手、多手指、熔融五官的“恐怖谷”作品。负向提示词不是可选项而是安全阀。它的作用是告诉模型“以下这些你绝对不能生成。” 我的万能负向提示词模板是nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, bad feet, poorly drawn feet, poorly drawn face, mutation, deformed, ugly, disfigured, extra limbs, extra arms, extra legs, malformed limbs, fused fingers, too many fingers, long neck, cross-eyed, mutated hands, polar lowres, bad body, bad proportions, gross proportions, malformed hands, missing arms, missing legs, extra arms, extra legs, fused limbs, too many arms, too many legs, long body, long neck, disgusting, poorly drawn, incomplete, cut off, bad composition, bad lighting, bad perspective, bad depth, bad shadow, bad reflection, bad texture, bad detail, bad color, bad contrast, bad saturation, bad sharpness, bad focus, bad noise, bad grain, bad film, bad scan, bad print, bad copy, bad reproduction, bad export, bad save, bad render, bad bake, bad lightmap, bad AO, bad GI, bad SSR, bad SSS, bad DOF, bad motion blur, bad depth of field, bad bokeh, bad lens flare, bad chromatic aberration, bad vignetting, bad distortion, bad barrel, bad pincushion, bad fisheye, bad anamorphic, bad aspect ratio, bad resolution, bad scale, bad size, bad crop, bad trim, bad bleed, bad margin, bad padding, bad alignment, bad spacing, bad kerning, bad tracking, bad leading, bad baseline, bad x-height, bad cap height, bad ascender, bad descender, bad stroke, bad weight, bad contrast, bad serif, bad sans, bad monospace, bad script, bad display, bad decorative, bad blackletter, bad gothic, bad old english, bad fraktur, bad uncial, bad celtic, bad runic, bad hieroglyph, bad kanji, bad hiragana, bad katakana, bad hanja, bad hangul, bad devanagari, bad tamil, bad telugu, bad kannada, bad malayalam, bad sinhala, bad thai, bad lao, bad myanmar, bad khmer, bad vietnamese, bad chinese, bad japanese, bad korean, bad arabic, bad hebrew, bad greek, bad cyrillic, bad latin, bad ascii, bad unicode, bad emoji, bad symbol, bad icon, bad logo, bad trademark, bad copyright, bad registered, bad patent, bad license, bad agreement, bad contract, bad terms, bad conditions, bad policy, bad rule, bad law, bad regulation, bad standard, bad guideline, bad best practice, bad convention, bad norm, bad custom, bad tradition, bad culture, bad society, bad community, bad group, bad team, bad organization, bad company, bad business, bad industry, bad market, bad economy, bad finance, bad money, bad wealth, bad poverty, bad inequality, bad justice, bad fairness, bad ethics, bad morality, bad virtue, bad vice, bad sin, bad crime, bad punishment, bad reward, bad consequence, bad result, bad outcome, bad effect, bad impact, bad influence, bad change, bad transformation, bad evolution, bad revolution, bad progress, bad development, bad growth, bad decay, bad decline, bad fall, bad drop, bad loss, bad failure, bad mistake, bad error, bad bug, bad flaw, bad defect, bad imperfection, bad weakness, bad vulnerability, bad risk, bad threat, bad danger, bad hazard, bad harm, bad damage, bad injury, bad wound, bad trauma, bad shock, bad stress, bad anxiety, bad fear, bad panic, bad terror, bad horror, bad dread, bad despair, bad hopelessness, bad helplessness, bad powerlessness, bad impotence, bad weakness, bad frailty, bad sickness, bad disease, bad illness, bad infection, bad virus, bad bacteria, bad germ, bad pathogen, bad toxin, bad poison, bad chemical, bad substance, bad material, bad object, bad thing, bad stuff, bad junk, bad trash, bad garbage, bad waste, bad refuse, bad sewage, bad sludge, bad muck, bad filth, bad dirt, bad grime, bad grease, bad oil, bad fat, bad wax, bad resin, bad tar, bad pitch, bad asphalt, bad concrete, bad brick, bad stone, bad wood, bad metal, bad plastic, bad glass, bad ceramic, bad fabric, bad leather, bad paper, bad ink, bad paint, bad dye, bad pigment, bad color, bad hue, bad saturation, bad brightness, bad contrast, bad gamma, bad white balance, bad exposure, bad focus, bad depth of field, bad bokeh, bad motion blur, bad lens flare, bad chromatic aberration, bad vignetting, bad distortion, bad barrel, bad pincushion, bad fisheye, bad anamorphic, bad aspect ratio, bad resolution, bad scale, bad size, bad crop, bad trim, bad bleed, bad margin, bad padding, bad alignment, bad spacing, bad kerning, bad tracking, bad leading, bad baseline, bad x-height, bad cap height, bad ascender, bad descender, bad stroke, bad weight, bad contrast, bad serif, bad sans, bad monospace, bad script, bad display, bad decorative, bad blackletter, bad gothic, bad old english, bad fraktur, bad uncial, bad celtic, bad runic, bad hieroglyph, bad kanji, bad hiragana, bad katakana, bad hanja, bad hangul, bad devanagari, bad tamil, bad telugu, bad kannada, bad malayalam, bad sinhala, bad thai, bad lao, bad myanmar, bad khmer, bad vietnamese, bad chinese, bad japanese, bad korean, bad arabic, bad hebrew, bad greek, bad cyrillic, bad latin, bad ascii, bad unicode, bad emoji, bad symbol, bad icon, bad logo, bad trademark, bad copyright, bad registered, bad patent, bad license, bad agreement, bad contract, bad terms, bad conditions, bad policy, bad rule, bad law, bad regulation, bad standard, bad guideline, bad best practice, bad convention, bad norm, bad custom, bad tradition, bad culture, bad society, bad community, bad group, bad team, bad organization, bad company, bad business, bad industry, bad market, bad economy, bad finance, bad money, bad wealth, bad poverty, bad inequality, bad justice, bad fairness, bad ethics, bad morality, bad virtue, bad vice, bad sin, bad crime, bad punishment, bad reward, bad consequence, bad result, bad outcome, bad effect, bad impact, bad influence, bad change, bad transformation, bad evolution, bad revolution, bad progress, bad development, bad growth, bad decay, bad decline, bad fall, bad drop, bad loss, bad failure, bad mistake, bad error, bad bug, bad flaw, bad defect, bad imperfection, bad weakness, bad vulnerability, bad risk, bad threat, bad danger, bad hazard, bad harm, bad damage, bad injury, bad wound, bad trauma, bad shock, bad stress, bad anxiety, bad fear, bad panic, bad terror, bad horror, bad dread, bad despair, bad hopelessness, bad helplessness, bad powerlessness, bad impotence, bad weakness, bad frailty, bad sickness, bad disease, bad illness, bad infection, bad virus, bad bacteria, bad germ, bad pathogen, bad toxin, bad poison, bad chemical, bad substance, bad material, bad object, bad thing, bad stuff, bad junk, bad trash, bad garbage, bad waste, bad refuse, bad sewage, bad sludge, bad muck, bad filth, bad dirt, bad grime, bad grease, bad oil, bad fat, bad wax, bad resin, bad tar, bad pitch, bad asphalt, bad concrete, bad brick, bad stone, bad wood, bad metal, bad plastic, bad glass, bad ceramic, bad fabric, bad leather, bad paper, bad ink, bad paint, bad dye, bad pigment, bad color, bad hue, bad saturation, bad brightness, bad contrast, bad gamma, bad white balance, bad exposure, bad focus, bad depth of field, bad bokeh, bad motion blur, bad lens flare, bad chromatic aberration, bad vignetting, bad distortion, bad barrel, bad pincushion, bad fisheye, bad anamorphic, bad aspect ratio, bad resolution, bad scale, bad size, bad crop, bad trim, bad bleed, bad margin, bad padding, bad alignment, bad spacing, bad kerning, bad tracking, bad leading, bad baseline, bad x-height, bad cap height, bad ascender, bad descender, bad stroke, bad weight, bad contrast, bad serif, bad sans, bad monospace, bad script, bad display, bad decorative, bad blackletter, bad gothic, bad old english, bad fraktur, bad uncial, bad celtic, bad runic, bad hieroglyph, bad kanji, bad hiragana, bad katakana, bad hanja, bad hangul, bad devanagari, bad tamil, bad telugu, bad kannada, bad malayalam, bad sinhala, bad thai, bad lao, bad myanmar, bad khmer, bad vietnamese, bad chinese, bad japanese, bad korean, bad arabic, bad hebrew, bad greek, bad cyrillic, bad latin, bad ascii, bad unicode, bad emoji, bad symbol, bad icon, bad logo, bad trademark, bad copyright, bad registered, bad patent, bad license, bad agreement, bad contract, bad terms, bad conditions, bad policy, bad rule, bad law, bad regulation, bad standard, bad guideline, bad best practice, bad convention, bad norm, bad custom, bad tradition, bad culture, bad society, bad community, bad group, bad team, bad organization, bad company, bad business, bad industry, bad market, bad economy, bad finance, bad money, bad wealth, bad poverty, bad inequality, bad justice, bad fairness, bad ethics, bad morality, bad virtue, bad vice, bad sin, bad crime, bad punishment, bad reward, bad consequence, bad result, bad outcome, bad effect, bad impact, bad influence, bad change, bad transformation, bad evolution, bad revolution, bad progress, bad development, bad growth, bad decay, bad decline, bad fall, bad drop, bad loss, bad failure, bad mistake, bad error, bad bug, bad flaw, bad defect, bad imperfection, bad weakness, bad vulnerability, bad risk, bad threat, bad danger, bad hazard, bad harm, bad damage, bad injury, bad wound, bad trauma, bad shock, bad stress, bad anxiety, bad fear, bad panic, bad terror, bad horror, bad dread, bad despair, bad hopelessness, bad helplessness, bad powerlessness, bad impotence, bad weakness, bad frailty, bad sickness, bad disease, bad illness, bad infection, bad virus, bad bacteria, bad germ, bad pathogen, bad toxin, bad poison, bad chemical, bad substance, bad material, bad object, bad thing, bad stuff, bad junk, bad trash, bad garbage, bad waste, bad refuse, bad sewage, bad sludge, bad muck, bad filth, bad dirt, bad grime, bad grease, bad oil, bad fat, bad wax, bad resin, bad tar, bad pitch, bad asphalt, bad concrete, bad brick, bad stone, bad wood, bad metal, bad plastic, bad glass, bad ceramic, bad fabric, bad leather, bad paper, bad ink, bad paint, bad dye, bad pigment, bad color, bad hue, bad saturation, bad brightness, bad contrast, bad gamma, bad white balance, bad exposure, bad focus, bad depth of field, bad bokeh, bad motion blur, bad lens flare, bad chromatic aberration, bad vignetting, bad distortion, bad barrel, bad pincushion, bad fisheye, bad anamorphic, bad aspect ratio, bad resolution, bad scale, bad size, bad crop, bad trim, bad bleed, bad margin, bad padding, bad alignment, bad spacing, bad kerning, bad tracking, bad leading, bad baseline, bad x-height, bad cap height, bad ascender, bad descender, bad stroke, bad weight, bad contrast, bad serif, bad sans, bad monospace, bad script, bad display, bad decorative, bad blackletter, bad gothic, bad old english, bad fraktur, bad uncial, bad celtic, bad runic, bad hieroglyph, bad kanji, bad hiragana, bad katakana, bad hanja, bad hangul, bad devanagari, bad tamil, bad telugu, bad kannada, bad malayalam, bad sinhala, bad thai, bad lao, bad myanmar, bad khmer, bad vietnamese, bad chinese, bad japanese, bad korean, bad arabic, bad hebrew, bad greek, bad cyrillic, bad latin, bad ascii, bad unicode, bad emoji, bad symbol, bad icon, bad logo, bad trademark, bad copyright, bad registered, bad patent, bad license, bad agreement, bad contract, bad terms, bad conditions, bad policy, bad rule, bad law, bad regulation, bad standard, bad guideline, bad best practice, bad convention, bad norm, bad custom, bad tradition, bad culture, bad society, bad community, bad group, bad team, bad organization, bad company, bad business, bad industry, bad market, bad economy, bad finance, bad money, bad wealth, bad poverty, bad inequality, bad justice, bad fairness, bad ethics, bad morality, bad virtue, bad vice, bad sin, bad crime, bad punishment, bad reward, bad consequence, bad result, bad outcome, bad effect, bad impact, bad influence, bad change, bad transformation, bad