调教Stable Diffusion注意力机制,让出图更清晰

1. 先别急着加高清修复,问题多半出在注意力分配上

先说个不少人踩过的坑:用Stable Diffusion出图,总感觉边缘发虚、细节糊成一团,第一反应往往是把分辨率从512拉高到1024,或者直接开Hires. fix,结果要么显存爆了,要么图是“锐”了但结构崩了,人物五官跟手部完全不在一个空间。我刚开始接触扩散模型那阵子也是这样,直到有一次无意中把提示词里的权重重新分配了一遍,才发现原来困扰我很久的“糊”根本不是像素不够,而是模型在生成时根本不知道该怎么“看”画面里的关键区域。

这里说的“注意力机制”,是Stable Diffusion里U-Net架构的核心部件——自注意力(Self-Attention)和交叉注意力(Cross-Attention)。简单打个比方:扩散模型的去噪过程就像是画师在一点点把草稿细化。普通画师会用眼睛在画布上扫一圈,确定哪里该精修、哪里该放松;自注意力就是在干这件事,它让不同区域的像素互相交换信息,决定哪些细节值得保留、哪些要服从整体风格。而交叉注意力相当于画师在看“文字需求单”,它负责把提示词里的每一个词和画面里的每个区域建立关联。如果注意力分配不均匀或者权重失衡,画出来的图自然会出现“该清楚的地方模糊,该模糊的地方又过于抢镜”的奇怪效果。

这篇文章不是什么理论手册,而是围绕“如何调教注意力机制让SD出图更清晰”这个目标,把我实际跑图、调参、看热图、换采样器、调CFG、修VAE过程中总结的经验和踩过的坑整理一遍。适合刚被“糊图”折磨的新手,也适合已经会基本操作但总在细节上翻车的老玩家。

2. 搞清楚“糊”从哪来:注意力机制如何影响出图清晰度

2.1 扩散模型里的注意力到底在做哪些事

Stable Diffusion不是一个直接从文字生成位图的魔法盒,它先是在一个低维潜空间(Latent Space)里做去噪,再用VAE解码成像素图。这个潜空间的分辨率通常是64×64或者更低(对应512分辨率图像),信息本身就被压缩了。如果模型在潜空间里去噪时没能恢复出应有的局部结构,最终解码出来的图就会显得发虚。这个“恢复结构”的过程,很大程度依赖于U-Net内部的注意力模块。

当去噪进行到中后期,自注意力层会在整个特征图上计算任意两个位置之间的相似度,从而让同一个物体的不同部位“互相呼应”。举个例子,生成一个穿红色衣服的人时,衣服的轮廓、衣领和袖口应该在风格上保持一致,这就需要自注意力把远处和近处的像素关联起来。如果自注意力作用范围太窄或者权重太低,各部分就容易“各画各的”,衣服边缘模糊、纹理断裂。

交叉注意力则负责把提示词中的每个token映射到图像的不同空间位置。这就是为什么提示词顺序、权重、负面提示词都会影响出图效果。你可以把交叉注意力层理解为一张“对齐表”:某个词应该激活图像左上角的区域,另一个词应该激活中央区域。如果这张表激活得不够精确,比如“cat”这个词同时激活了背景和主体,那猫咪的边缘就会被背景元素“污染”,看起来又毛又糊。

2.2 分辨率、步数与注意力精度的关系

很多人误以为把分辨率调高就能解决模糊,实际恰恰相反。在显存有限的前提下,直接跑1024×1024会有两个问题:一是潜空间尺寸变大,注意力计算范围随之增大,显存占用飙升;二是在相同步数下,更大的画面需要更多去噪迭代才能让细节稳定,否则中期的注意力分布还没收敛就匆匆解码了,结果就是大尺寸但更糊。

步数本身也很关键。注意力模块的权重是随去噪进度变化的。早期阶段,模型更关注整体构图;后期阶段,注意力应该越来越集中在局部细节。如果步数太少,后期那种“精雕细琢”的过程被截断,自注意力还没来得及细化边缘就出图了。我以前用20步生成512图,总感觉皮肤像磨皮过度,后来刻意把步数加到30,同时配合合适的调度器,纹理细节就明显回来了。

CFG(Classifier-Free Guidance)更是直接影响注意力分布的放大器。通俗地说,CFG是在“无条件生成”和“有条件生成”之间做插值时放大条件的影响力。CFG越高,提示词对图像的约束越强,但与此同时,注意力图会出现过饱和、局部过曝的情况。很多人以为“模糊=提示词不够强”,于是猛拉CFG到12、15,结果细节不仅没回来,反而出现了发硬的塑料感,高频纹理被彻底抹掉,视觉上就是“糊”。

3. 注意力权重怎么调:从提示词语法到采样器选择

3.1 用基础权重语法直接干预交叉注意力

最容易上手、见效最快的注意力调教方式是:给提示词里的关键名词加上权重。在WebUI等工具里,用(关键词:1.2)这种标准语法,相当于把交叉注意力中该token的激活强度乘以1.2倍,模型会把更多注意力放在这个物体上,从而提升它的轮廓和细节。类似的,[关键词]或(关键词:0.8)可以削弱某个干扰词的注意力。

实际操作时,我的习惯是主体描述权重1.3~1.5,环境描述保持1.0左右,容易抢镜的修饰词压在0.8。这里有个常见的误区:不是所有词都加权就好。如果画面里同时出现人、房子、树,你给它们全加到1.4,等于没加,而且会让交叉注意力图变得“抢食”,反而造成构图混乱。调权重的本质是分主次,让模型知道当前场景里谁是主角,谁应该被弱化。

以生成“一只毛发细节丰富的橘猫坐在窗台上”为例,最简单的写法是:

(masterpiece:1.2), (a detailed orange cat:1.4), sitting on the windowsill, (soft fur texture:1.2), window light, 8k, highly detailed

这里把“橘猫”和“毛发纹理”给到相对高的权重,模型会把交叉注意力更多地分配到猫身上,细节自然会更清晰。

3.2 负面提示词的注意力抑制:模糊与伪影的源头

图像模糊不仅来自正向注意力分配不足,很多时候是负向注意力没控制好。在去噪过程中,模型会同时参考无条件的生成方向(你可以理解为“画得随意”)和有条件的生成方向(严格按提示词画)。CFG放大的正是两者差异。负面提示词的作用则是告诉模型“不要出现什么”。如果负面提示词里的词条过多或者权重过高,模型可能为了规避某个词,反而把相关区域全部抹掉,导致细节“不敢画”。

比如你写了blurry, low quality, deformed没问题,但如果还写了detailed或者sharp lines(有些人喜欢把正面词塞进负面),模型不知道该不该画边缘,就会采取保守策略,把线条细节压制掉。我在实际测试中发现,过度使用负面词压制单独某个部位(比如bad hands, extra fingers)如果权重过高,可能让整只手都变成一团皮肤色块,细看比原来还糊。正确做法是负面提示词保持简短、远离正向细节词,重点屏蔽“构图级”的坏结果,而不是微观特征。

3.3 采样器、调度器对注意力收敛的影响

很多人忽视采样器和调度器对出图清晰度的影响,其实它们直接决定去噪曲线的形状,也就是注意力模块在哪个阶段投入多少精力去细化。以我常用的几组为例:

采样器特性适合场景
DPM++ 2M Karras收敛快,细节中等通用,快速出图
DPM++ SDE Karras细节丰富,耗时较长想要高清纹理时
Euler a风格化强,容易过锐插画、二次元
UniPC步数少时效果好短步数快速迭代

如果你追求更高清晰度,尤其是有真实感纹理的场景,DPM++ SDE Karras在40步左右的表现通常比默认的20~25步扎实很多。它的SDE噪声注入能让注意力在后期多次“校正”边缘,减少模糊感。代价是速度慢,但相比无脑开高分辨率修复,这种“让模型多看几眼再去噪”的方式对显存更友好,也更不容易改变构图。

调度器方面,Karras调度器在低步数区间会分配更多去噪步骤在中期,正好是注意力从宏观转向局部的阶段,所以对细节有帮助。如果出图总是“糊一层雾”,先试试把采样器换成DPM++ SDE Karras,步数拉到40再看对比。

4. 进阶调教:让注意力“看清”该看的区域

4.1 注意力热图怎么看:定位问题区域

光靠盲调参数,效率太低。WebUI生态里有不少插件能可视化注意力,比如在生成时把交叉注意力热图输出,直观看到每个token到底激活了图像哪里。我习惯先生成一张512图,然后打开热图检查:

  • 如果“cat”这个词的热图覆盖了主体区,但还延伸到背景,说明交叉注意力不够集中,可以给cat加权。
  • 如果“fur texture”的热图几乎空白,说明这个token没有被模型理解,可能词不达意,换成更直白的“fluffy fur”也许更有效。
  • 如果整张热图都很密、均匀分布,说明提示词过于复杂,模型每个词都只分到一点注意力,这时要精简提示词,给核心词让出空间。

这种可视化方法比靠肉眼猜参数强太多。你可以直接看到是哪一层注意力在捣乱,而不是反复调全局CFG。我从热图中发现,很多看似“细节不够”的图,其实是修饰词反而抢占了主体注意力。

4.2 用ControlNet“约束注意力”来补细节

当纯提示词调教遇到瓶颈,比如想要精确的物体轮廓或者特定构图,ControlNet会是更可靠的手段。它的原理不是直接改交叉注意力权重,而是通过额外输入(线稿、深度图、语义分割图等)给U-Net注入空间约束,等价于强制让某些区域的注意力只能落在指定形状范围内。这样即使提示词很乱,主体轮廓也不容易糊。

以想要“清晰的建筑线稿风格”为例,可以用Canny预处理器提取原图的边缘,然后以Canny模型作为引导,同时提示词写architecture sketch, sharp edges。Canny的线条信息会让模型在去噪时不断“对答案”,边缘处的注意力就会锁定在真实线稿的位置。我实测下来,同类设定下,不用ControlNet的图很多边缘都在抖动,用了Canny之后几乎每条线都干净利落。

需要注意ControlNet的权重(Conditioning Scale)不宜太高。我通常设0.7~0.9。如果设到1.0以上,模型会被约束得过于机械,画面失去自然光影,反而出现不和谐的硬边。这个效果在低分辨率下尤其明显,放大后会有一种“抠图感”。

4.3 Hires. Fix不是“万能高清”,而是二段注意力修正

Hires. Fix的本质是先在小图上完成构图,再在放大阶段把潜空间尺寸扩大,进行一次“重绘”式的补充细节。这个过程会重新运行注意力模块,让模型在新分辨率下去精修边缘。正确使用Hires. Fix能有效改善模糊,但很多人的参数设置不对。

我推荐的流程是:先用520×780小尺寸(保持2:3构图)跑2张草稿,选一张满意的,然后开启Hires. Fix,放大倍率1.5~2.0(例如放大到832×1248),重绘幅度(Denoising Strength)控制在0.4~0.6之间,采样器沿用之前的DPM++ SDE Karras,步数再补20步以上。重绘幅度如果超过0.7,等于把原图大部分结构推翻重画,可能生成一个跟原图构图不同、但同样模糊的东西;低于0.3又不足以让注意力在新尺度上重新细化,放大后只是把像素拉大而已。

我自己常用的参数是:原图512×768,Hires. Fix 2倍,重绘幅度0.5,附加步数20。实测下来,在人物毛发、布料纹理这类高频区域,放大之后的细节密度比直接用1024×1536一步生成要高得多,而且显存占用更平稳。

4.4 被忽略的VAE与Tiled VAE

有时候图像模糊跟注意力完全无关,是VAE解码阶段的锅。Stable Diffusion的VAE负责把潜空间张量解码为像素图,如果VAE本身精度不足、量化误差大,或者解码时显存不够导致切块错误,也会输出“油画感”模糊图。遇到这种情况,换一个微调训练的VAE文件通常立竿见影。很多模型发布页会同时提供配套VAE,务必一起下载同名文件并加载。

显存不足时,建议开启Tiled VAE,它不是把整个潜空间一次性解码,而是按小块分别解码后再拼接。这能大幅降低显存峰值,同时避免“爆显存后强制降精度”造成的全图模糊。我试过在8G显存上直接解码1024×1536大图,不开Tiled VAE偶尔会黑屏或糊图,开启后稳定出图,细节也没有明显损伤。

5. 常见问题与排查技巧实录

5.1 模糊问题排查清单

当你再次遇到糊图,按以下顺序排查,效率最高:

现象可能原因解决手段
全图朦胧、缺少边缘锐度CFG过高或过低CFG先试7,再向5~9之间微调
主体边缘发虚,背景清晰注意力权重分配不均主体关键token加权,背景词降权
毛发/布料纹理像糊了一团步数太少或采样器不合适步数拉到30~40,换DPM++ SDE Karras
放大后细节没增加重绘幅度过高或过低保持Denoising Strength在0.4~0.6
特定区域出现色块状模糊VAE未加载或显存不足正确加载VAE,开启Tiled VAE
手部、五官细节崩坏交叉注意力无法聚焦小区域使用面部/手部修复ADetailer,或局部重绘
提示词热图显示关键词无响应词汇过于抽象换成更具体、常见的描述词

5.2 我在调参中踩过的三个坑

第一个坑是“CFG越高越清晰”的误解。曾经我为了追求清晰,把CFG拉到13,结果人脸皮肤像蜡像,所有高频细节被磨平,最后才发现当CFG超过10时,无条件与有条件的差异被过度放大,注意力图在局部区域会产生振荡,本质上是梯度冲突,导致平坦区域被过度强调。现在我的习惯是优先在5~8之间试,除非风格特殊,否则不轻易上10。

第二个坑是“加一堆masterpiece, best quality, ultra-detailed”等于没加。这些词在模型训练时出现频率过高,注意力已经饱和了,它们不会让细节变清晰,反而占据了交叉注意力通道,让真正描述物体的token获得的注意力减少。我现在会把这类泛化词放在末尾,甚至删掉,换成“sharp focus, intricate textures, fine details”这种具体描述。

第三个坑是局部重绘时重绘幅度太小。面部细节糊了,我直接在局部重绘里把Denoising Strength设为0.2,结果重绘区域只是轻微变化,依然糊。后来明白,太小的重绘幅度,相当于不让模型重新“看”这块区域,注意力根本来不及修正;而0.5以上又容易出现色差。所以当局部糊时,要先检查原图的整体分辨率是否够用,再配合ADetailer自动检测面部并重绘,效果远比手动框选局部稳定。

5.3 一组实战对比:同样提示词,不同注意力调整带来的变化

我做过一组简单测试,提示词固定为“一位戴着草帽的老人肖像,绿色田野背景,胶片质感,阳光”。第一张直接默认参数(Step 20,CFG 7,Euler a),出图整体偏柔,胡子边缘模糊,皮肤纹理几乎为零。

第二张把采样器换成DPM++ SDE Karras,步数加到40,提示词里给“老人肖像”加权1.3、“胡须纹理”加权1.2,同时负面词加入“watercolor, smooth skin, plastic”。这次胡须每根都看得出走向,皮肤上的毛孔和皱纹清晰,背景也保持了足够的虚化感。第三张再叠加ControlNet的线稿约束,轮廓锐度进一步提升,但光影略生硬,所以我最终采用的是第二张的参数,第三张方案用在需要精确边缘的工程图场景更合适。

6. 个人经验:调注意力机制比无脑堆高清参数划算得多

经过这一轮折腾,我最大的体会是:Stable Diffusion出图清晰度是个系统工程,注意力机制贯穿始终,而很多人习惯性加分辨率、加CFG、开Hires. Fix,都是“头痛医头”。真正花时间把提示词权重、采样器和步数组合、注意力热图、ControlNet约束理一遍,往往在不显著增加计算负担的情况下,就能看到质的提升。

我现在的新流程固定为:先用一个较快的配置(DPM++ 2M Karras,Step 25,CFG 7)出小图草稿,确认构图;然后换DPM++ SDE Karras,Step 40,给核心主体加权;在需要精确轮廓时开ControlNet Canny或Lineart;最后用Hires. Fix放大,重绘幅度0.5,附加步数30。整套流程跑下来,一张高清图几乎不需要反复返工。

另外想提醒一句:注意力调教不是越复杂越好。有时候减少提示词数量、删掉几个抢注意力的装饰词,比疯狂加权更有效。如果你现在还在和糊图较劲,不妨先下载一个注意力可视化插件,观察一下你的关键词到底激活了哪些区域。很多时候答案就藏在那张热图里。根据我个人的测试,用对注意力机制,最后的成品质量甚至能逼近某些重绘型的超分模型,而显存压力却小得多。

相关新闻

加密狗复制风险与工控软件授权管理:从停产事故看正确应对方式

加密狗复制风险与工控软件授权管理:从停产事故看正确应对方式

上个月我去一家做汽车零部件加工的朋友那边聊设备改造,正好撞上他们车间的一件急事:产线上一套工艺管理软件的加密狗突然失效,操作员报错、工艺配方调不出来,整个班组停了半个多小时。朋友的第一反应不是联系软件供应商&#xff0…

2026/10/20 3:27:05 阅读更多 →
Unity Scroll View Content配置全解:滚动失效排查与动态列表实战

Unity Scroll View Content配置全解:滚动失效排查与动态列表实战

聊起Unity里的Scroll View,十个新手有九个都栽在Content设置上。上周交流群里又有人发截图问:东西全拖进Scroll View了,为什么滚不动、显示不全、滚动条乱蹦?问题基本都出在Content这个子节点上。这篇专门讲Scroll View下Content的…

2026/10/20 3:27:05 阅读更多 →
AI Agent核心能力拆解与工程落地实战指南

AI Agent核心能力拆解与工程落地实战指南

各位做技术、做产品的朋友,最近是不是隔三差五就被"AI Agent"这个词刷屏?团队研讨它在讲,朋友圈技术博主在聊,产品评审会也在问"为什么不做成Agent"。但如果真让你一句话讲清楚它到底是什么,很多人…

2026/10/20 3:27:05 阅读更多 →

最新新闻

Qt新建工程全攻略:从环境配置到构建调试一步到位

Qt新建工程全攻略:从环境配置到构建调试一步到位

最近有朋友问我:Qt 到底怎么新建工程?他说自己把 Qt Creator 装好了,结果打开软件,面对一堆模板和选项完全不知道该点哪里。这个问题看起来基础,但我在带新人时发现,能在这一步顺畅走完、并且真正理解每个选…

2026/10/20 4:26:40 阅读更多 →
Flutter集成HarmonyOS实战:从跨平台架构到鸿蒙适配全记录

Flutter集成HarmonyOS实战:从跨平台架构到鸿蒙适配全记录

开篇先说明一个事:这个项目不是我接的“外包订单”,也不是教学 Demo,而是我作为主要开发者,从 0 到 1 做的一个自研社区共享类 App。整个过程涉及三块硬骨头:第一,把“共享社区”这种偏软性的业务逻辑落到产…

2026/10/20 4:26:40 阅读更多 →
PyTorch从零手写Transformer:位置编码、多头注意力与mask详解

PyTorch从零手写Transformer:位置编码、多头注意力与mask详解

先说个个人感受:Transformer 这种架构,看论文、看别人写的博客总觉得挺简单,真正自己用 PyTorch 一行行从零实现一遍,才意识到里面有大量容易出问题的细节。维度、mask、残差和归一化的顺序,任何一个地方没想明白&…

2026/10/20 4:26:40 阅读更多 →
AI检测一片飘红?从降AI率底层逻辑到作业实战全流程

AI检测一片飘红?从降AI率底层逻辑到作业实战全流程

又到了交作业的季节,后台和私信里最密集的问题永远是同一个:老师发的AI检测报告一片飘红,初稿直接被标“疑似AI生成”,怎么办?这几年我陆陆续续试过市面上能见到的各种降AI率工具,说实话,真正能…

2026/10/20 4:26:40 阅读更多 →
Fort Firewall 防火墙配置教程:5分钟配出第一条拦截规则,附排错清单

Fort Firewall 防火墙配置教程:5分钟配出第一条拦截规则,附排错清单

Fort Firewall 防火墙配置教程:5分钟配出第一条拦截规则,附排错清单 【免费下载链接】fort Fort Firewall for Windows 项目地址: https://gitcode.com/GitHub_Trending/fo/fort 一次凌晨的境外异常外联,在 Windows 防火墙日志里几乎没…

2026/10/20 4:26:40 阅读更多 →
技术人技能管理指南:从技能盘点、刻意练习到作品集构建

技术人技能管理指南:从技能盘点、刻意练习到作品集构建

1. 从“skills”这个词说起:为什么它突然成了硬通货“skills”这个词,放在五年前,可能只是简历底部一个不起眼的栏目。但现在你打开任何一个技术社区、招聘页面或者同行群聊,它出现的频率高得离谱。我自己的感受是,过去…

2026/10/20 4:25:39 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →