遥感图像去雾:基于物理模型与深度网络的稳健方案
搞遥感的人应该都有同感一张有雾的卫星图或者无人机影像丢到目标检测模型里精度掉得飞快。雾不是一个简单的噪声叠加它把地物反射信号和大气散射信号混在一起图像对比度低边缘细节像盖了一层纱。最近我花了两周时间把一篇遥感图像去雾文章从头读到尾顺便把核心模块复现了一遍。这篇解读想把这篇文章的逻辑主线、关键技术、复现过程和踩过的坑一起捋清楚。它适合正在做遥感影像预处理的同学也适合刚入门图像去雾但不想只盯公式的人。先给结论文章没有走“输入雾图、直接输出清晰图”的端到端黑盒路线而是把大气散射模型嵌进网络让模型分别估计透射率和大气光再按物理模型反演干净图像。这条路线在遥感场景下特别稳工程上也好落地。1. 文章到底在解决什么问题1.1 遥感图像去雾为什么比普通图片去雾更棘手普通图像去雾大多以自然照片为对象假设雾在整幅图里分布相对均匀场景深度变化可以靠暗通道先验粗估。遥感图像完全不一样。第一个差异是空间尺度跨得大。一幅卫星影像可能覆盖几百平方公里同一幅图里既有城区又有水体、裸地、山地场景反射特性差异非常明显而雾的浓度也随局部气象条件变化厚云、薄雾、霾经常同时出现。普通去雾算法在某个局部区域调好了参数换个区域就过曝或者发灰。第二个差异是波段丰富。遥感图像很多是多光谱甚至高光谱不同波段对大气散射的敏感度不同红光波段受影响小蓝紫波段衰减严重如果只按RGB三通道去雾等于放弃了很多物理信息。文章一上来就强调遥感去雾应该按波段特性建模型而不是简单套用自然图像的处理思路。第三个差异是缺少参考真值。自然图像去雾可以用成对的有雾/无雾合成数据训练但遥感影像很难拿到同一地物在相同角度、相同时间下无雾的真实底图。文章的解决办法是用深度和大气参数合成大量有雾数据同时保留物理模型可解释的中间量这让模型既能学习统计特征又不会完全被合成数据的分布带偏。这些差异决定了不能无脑搬别人写好的去雾网络。我见过不少人直接拿自然图像去雾的预训练权重过来跑遥感图效果普遍是亮度和颜色都不对劲细节反而更糊。原因正是上面说的模型根本不认识多光谱数据也不理解大范围大气条件变化当然做不到稳定输出。1.2 一条容易走偏的技术路线很多刚接触去雾的人第一反应是拿GAN做端到端输入雾图输出清晰图再加个判别器让结果看着自然。这个路线做演示很舒服放到遥感上就露馅了。原因不难理解合成雾图里雾是程序生成的和真实大气散射差别很大GAN又喜欢生成高频纹理来骗过判别器结果容易产生虚假地物细节。遥感图像后续往往要用来做定量解译比如用光谱信息判断植被长势如果网络自己“脑补”出了不存在的纹理后面所有定量分析都会失真。文章选择的是把物理模型作为约束条件透明地让模型去拟合大气散射模型里的物理量再恢复图像。这样做有一个直接好处就是模型输出中间结果你可以把透射率图拿出来看是偏高还是偏低是边缘糊了还是整体被抬亮问题出在哪里一目了然。加上物理模型之后模型在没见过的新区域上也不太容易乱猜因为退化过程的规则已经给定了。我还记得自己第一次跑通这个流程时的感受之前看那些端到端去雾结果总觉得像隔了一层朦胧的“滤镜”但物理模型版本里透射率图和大气光图都清清楚楚哪里有问题一眼就能看到。后来我也总结了一句话宁可让网络结构丑一点也要让它知道雾是怎么来的。这句话很适合这篇工作的核心态度。2. 方法拆解从物理模型到网络设计2.1 大气散射模型与透射率遥感退化模型最常见的就是大气散射模型公式写作 I(x) J(x)t(x) A(1 - t(x))。I 是传感器收到的带雾图像J 是干净图像A 是全局大气光t 是透射率数值在 0 到 1 之间。透射率表示光从地物表面传到传感器的过程中有多少比例没有被散射和吸收。深度越大、雾越浓t 就越小当 t 接近1表示这段路径几乎无衰减。文章在遥感场景下做了两个调整。第一透射率不再按单通道处理而是针对不同波段分别建模。因为蓝光波长短散射更厉害透射率比红光更低如果强行共用一张透射率图去雾后会出现紫边或偏色。第二大气光 A 不是简单取图像最亮像素均值而是从网络分支预测得到一个逐像素可变化的场或者至少是分块的大气光。原因很简单大范围遥感影像里不同区域的大气环境不同用一个全局A去套西北和东南就只能保一个。这里我补充一下为什么暗通道先验在遥感上容易翻车。暗通道先验假设每个局部区域内至少有一个通道的像素值很低比如阴影、深色地表。但遥感影像经常出现大片水体、裸土、雪地这些区域在红光到近红外波段可能都不存在“暗像素”先验直接失效。模型一旦偏向暗通道估计透射率水体区域就会被过度去雾变成诡异的青色。所以这篇文章并没有把暗通道作为硬约束只用它做了一个粗略初始化或先验监督这个取舍很关键。2.2 物理模型嵌入网络的关键分支我读到的这篇文章结构上分三块透射率估计网络、大气光估计网络、物理重建模块。透射率估计网络接受带雾图像输出透射率图多波段大气光估计网络接受带雾图像输出大气光图。这两个预测值出来后通过物理模型做一次反演得到初步去雾图。最后再接一个轻量精修网络把暗角、残留薄雾和少数伪影处理掉。分开估计有个容易忽略的好处中间监督信号更丰富。如果只给模型一个最终损失网络会把透射率误差和大气光误差混在一起收敛很慢。文章在透射率分支上加了平滑损失在大气光分支上加了全局一致性损失然后才接图像重建损失。这样每个子任务的目标都很明确也方便调试。用代码表示这个流程的话大概是这样def dehaze_forward(haze): t transmittance_net(haze) # (B, C, H, W) a atmospheric_light_net(haze) # (B, C, H, W) t torch.clamp(t, 0.05, 1.0) a torch.clamp(a, 0.0, 1.0) clean (haze - a * (1 - t)) / t clean refine_net(clean) return clean, t, a注意除零稳定用小下限 t 而不是直接用0。实际工程里 t 小于0.05的像素通常是云或者阴影区域强行去雾没有意义用下限钳制可以避免输出爆炸。这个细节也是我复现时第一个踩到的坑。如果不做任何钳制训练到某个 batch 时 t 突然预测出一个接近 0 的值clean 图像就会变成整片亮白梯度直接冲掉前面所有正常样本。2.3 损失函数为什么不能只靠L1损失如果直接把预测图和真图的L1距离作为全部损失训练很快但结果总是偏模糊。因为L1对像素差异做平均网络倾向于给出平滑保守的预测宁愿把边缘糊掉也不愿冒制造高频噪声的风险。这篇文章的损失函数是四部分组合L1重建损失保证整体亮度、颜色与真图接近透射率平滑损失保证透射率图在物体内部变化平缓在边缘处才允许突变感知损失用预训练网络提取深层特征做比较让结果保留更多语义结构物理一致性损失把预测出的 t 和 A 重新代入雾图公式得到的图像要和输入带雾图尽量一致。物理一致性损失是个亮点。它相当于让网络自检如果估计出来的 t 和 A 不准那么反演回去的雾图和原始输入会对不上。这个损失不需要真图能利用无监督数据对遥感这种缺真图的场景特别友好。文章里给了一个比例0.4的L1、0.1的平滑、0.3的感知、0.2的物理一致性以总损失1为基准。这个比例不是玄学L1保证收敛感知保证观感平滑保证透射率结构合理物理一致性能压低估计偏差。实际写训练循环时损失组合可以这样写loss (0.4 * l1_loss(clean_pred, clean_gt) 0.1 * smoothness_loss(t) 0.3 * perceptual_loss(clean_pred, clean_gt) 0.2 * recon_loss(clean_pred, haze, t, a))我后来自己试过把感知损失去掉只看L1加物理一致结果在合成测试集上PSNR只掉了0.3dB但人眼看着边缘模糊一圈。感知损失对保细节作用非常大尤其道路、建筑物这类强几何结构。它会让网络学会优先保留边缘而不是把雾和地物纹理混在一起。3. 复现与实操要点3.1 合成数据怎么生成才真实复现这种去雾文章数据准备比重最大。常用的合成方法是找一组清晰影像假设一个深度图按指数衰减生成透射率再指定大气光把雾图合出来。深度图可以来自真实深度传感器也可以根据遥感影像的亮度粗略估计——远处物体看起来灰白、近处物体亮暗分明。但不管是哪种都要注意别让合成数据太干净。有两个问题很容易踩。第一beta 固定不变合成雾永远是一个浓度模型只看过均匀雾遇到真实场景薄厚不均就失效。文章里的做法是 beta 在一个范围内随机采样比如 0.05 到 0.3 之间这样每张图雾浓度都不一样。第二大气光 A 太单一只取一个全局亮度真实遥感影像的大气光会随云层、阳光角度变化。最好把 A 设成随空间变化的场或者至少分块采样。我给一个简化的生成函数def generate_hazy_dataset(clean, depth, num_samples1000): for i in range(num_samples): beta np.random.uniform(0.05, 0.3) A np.random.uniform(0.6, 0.95) haze clean * np.exp(-beta * depth) A * (1 - np.exp(-beta * depth)) # 存储 haze, clean, transmission如果图片是多光谱的记得把 beta 按波段做一个递减映射蓝波段 beta 高、红波段 beta 低否则合成数据本身就违背物理规律训练出来的模型自然会偏色。我自己见过一个训练集所有通道用同一个 beta 生成雾图训练出的模型在真实多光谱图上蓝光残留特别明显后来重新生成数据才解决。3.2 训练参数与评估细节数据准备好之后训练参数的设定比想象中更重要。文章用的方案是先把 patch 切到 256x256 或者 512x512因为遥感原图往往上万像素直接整图训练不现实而且GPU显存扛不住。patch 切出来之后要做随机旋转、翻转、裁剪不然模型对地物朝向敏感。优化器选 Adam初始学习率 2e-4每 30 个 epoch 降到一半batch size 在 8 到 16 之间。太小容易震荡太大慢且显存爆。透射率分支通常比大气光分支收敛快因为透射率的梯度在图像重建里占比更大。文章训练时采用两阶段策略第一阶段只训透射率估计网络用平滑损失加上L1重建第二阶段冻结透射率主干联合精调大气光和精修网络。这样大气光分支不会被一开始就带偏。我复现时直接联合训练结果前 100 个 epoch 大气光全部跑到 0.9 附近图像被整体提亮后面改成两阶段才正常。评估这块成对合成数据用 PSNR 和 SSIM 没问题但遥感场景更推荐加一个无参考指标比如信息熵和暗通道稀疏度。信息熵越高通常说明细节越丰富暗通道稀疏度则反映残留雾的多少。还有一个很实际的检查方法把去雾前后的图像做差值看差值里是不是只有低频雾信息。如果差值里出现明显的地物轮廓说明网络把不该去掉的纹理也当雾去掉了这种情况 PSNR 再高也白搭。3.3 真实影像预处理与推理部署模型训好之后真正拿到真实遥感影像上跑还有一个容易忽略的预处理环节。很多遥感产品是16位整型存储范围到 0-65535而训练数据一般归一化到 0-1。如果不做辐射定标和线性拉伸直接把16位图喂进网络像素值会整体溢出或压缩去雾效果一团糟。我的习惯是先把影像做一次百分比截尾拉伸比如截取 2% 到 98% 分位再归一化到 0-1输入网络最后再把输出反变换回原始动态范围。推理阶段同样有坑。单景大图通常要滑窗切块如果块与块之间没有重叠重建图像会出现明显的网格接缝。我一般用 overlap32 到 64 像素输出时对重叠区域做线性权重融合中间权重高、边缘权重低。这样拼接后的影像从视觉上看不出分块痕迹。还可以把输入图形做多朝向推理把四个旋转结果平均进一步提升稳定性。4. 常见问题与排查技巧4.1 去雾结果像褪色“去完雾颜色像褪色”是我被问得最多的问题。现象是图像变亮、细节有了但地物颜色饱和度明显下降整个画面像蒙了一层白纱。排查第一步看大气光估计。A 太高比如接近 1.0反演时拉伸幅度过大亮部直接溢出颜色自然发白发灰。解决方法是限制 A 的估计范围或者在大气光分支后加一个注意力机制让它聚焦在远处真正的雾区而不是整图最亮像素。另一个解决思路是改损失函数。在原有组合里加一项“均值颜色一致性损失”约束输出图像的 RGB 均值与真图接近。这个损失很简单但能明显改善色偏。我试过在植被区域颜色偏黄的时候这项损失加进去后结果恢复很快。还有个偏工程的做法在大气光分支里不直接输出 A而是输出一个初始常数 A0 的残差A0 用暗通道前 0.1% 亮像素初始化这样模型只需要学一个小修正量稳定性高很多。4.2 非均匀雾和厚云边界真实遥感影像经常是局部厚云局部薄雾。厚云和雾的物理特性不一样云是不透光物体应该做云检测和掩膜而不是去雾。我踩过这个坑带雾图里有大量厚云模型却把它们当成浓雾去“抽丝”结果云边界出现一圈亮边就像抠图没抠干净。后来在训练数据里加入了云掩膜损失函数对掩膜区域忽略或者单独加权重问题才有改善。也要在预处理阶段把云量高的样本过滤掉尤其做批量测试的时候。对付非均匀雾另一个技巧是分块估计大气光。文章用了可变形卷积或者局部注意力但我的复现版本简单一点把图像分成 4x4 网格每个网格单独估计大气光再用双线性插值得到整图大气光场。效果比全局 A 好很多尤其是同一景影像里既有山区又有平原的情况局部大气光差异很明显。如果模型对这种空间变化不敏感可以额外给大气光分支一个低通滤波后的输入让它更关注雾区低频信息。4.3 PSNR很高但肉眼看却更差“指标很好看人眼却觉得更差”是这类文章复现里最容易出现的错觉。PSNR、SSIM 在合成数据上极具迷惑性。合成雾是简单指数模型生成的网络只要学透这个生成公式就能把 PSNR 刷高。但合成数据和真实雾的分布差异巨大高指标不代表模型学到了物理本质。我习惯的验证流程是先拿几张真实雾图做视觉对比观察屋顶、道路边缘、植被区域是否自然再通过无参考指标确认细节丰富最后才看 PSNR/SSIM 作参考。还可以采用“半参考”策略把真实影像某块区域用人工加雾再让模型去雾看恢复结果和原图块的差异。这个方法能绕过真图缺失的问题至少能验证模型在真实边缘分布上是否有缩放偏差。如果人工加雾后模型返回的图像和原图相差太多说明网络已经被合成数据带偏了需要增加真实雾图的弱监督数据或者域自适应模块。4.4 小目标细节容易过平滑遥感影像里小目标特别多车辆、光伏板、单棵树去雾网络如果感受野太大或者池化层太多这些细节会被当成高频噪声抹掉。排查时我建议把输出图像放大到 200% 再对比原图重点看道路边缘是不是变成了柔和渐变小目标是不是像被橡皮擦擦过。出现这个问题一般要减小网络下采样倍数或者增加一个浅层细节分支把高分辨率特征直接跳到重建末端。文章里的精修网络就干这件事。它不是简单的卷积堆叠而是用了类似残错学习的结构输入是物理反演结果和原图的 concatenation输出是一个残差图最后相加得到最终图。因为要学的只是被压制的细节网络负担小小目标反而保得住。我自己复现时试过把精修网络去掉测试集 PSNR 只掉 0.1dB但放大后看树冠和车辆目标的清晰度差距非常明显。所以这块网络体积虽小不能省。最后分享一个我自己调试时的习惯每次改完模型先固定随机种子跑同一个验证子集把输出图像按序号排成对比图横轴是模型版本纵轴是不同场景。这个方法看起来笨但比盯着一堆指标变化曲线都管用。我复现这篇文章最大的体会是遥感图像去雾不是“模型越深越好”而是物理规律、数据分布、训练策略三者都得平衡。先把透射率和大气光估计做稳了再去优化网络结构后面很多问题都会自然消失。希望这份解读能帮你少走点弯路。

相关新闻

基于Spark与Echarts的小说数据分析可视化系统实战

基于Spark与Echarts的小说数据分析可视化系统实战

项目标题:AI大模型:基于大数据Spark小说数据分析系统 可视化 Django框架 requests爬虫 Echarts可视化 python 大数据技术(源码)1. 项目概述:从"看书"到"拆解书平台"去年有个做网文运营的朋友跟我吐…

2026/10/14 7:01:34 阅读更多 →
ERP实施规范:解决企业信息化痛点的关键策略

ERP实施规范:解决企业信息化痛点的关键策略

1. 项目概述:ERP实施中的典型痛点"ERP不规范,同事两行泪"这个标题精准击中了企业信息化建设中最常见的痛点场景。作为在制造业信息化领域摸爬滚打十年的老兵,我见过太多企业因为ERP系统实施不规范导致的惨痛案例——从财务数据对不…

2026/10/14 7:01:34 阅读更多 →
Fortify SCA 20.1.1实战:代码审计工具安装、扫描与DevSecOps集成

Fortify SCA 20.1.1实战:代码审计工具安装、扫描与DevSecOps集成

简介:Fortify SCA 20.1.1 是一套面向开发团队和安全人员的源码审计工具,可在编码阶段定位注入、跨站脚本、缓冲区溢出等典型漏洞,支持二十六种编程语言,覆盖网站、移动应用与后台服务等多种项目类型。资源共四十一个文件&#xff…

2026/10/14 7:01:34 阅读更多 →

最新新闻

Java Lambda不只是语法糖:从字节码到序列化的工程实践

Java Lambda不只是语法糖:从字节码到序列化的工程实践

1. Lambda身后的字节码:语法糖背后的真实身份1.1 先说结论:Lambda不完全是"匿名内部类的简写"很多Java开发者对Lambda最早的认知,就是"可以用Lambda代替匿名内部类,代码更简洁"。这个说法在80%的日常场景下是…

2026/10/14 7:51:44 阅读更多 →
融合虚拟储能的楼宇微网优化调度:Matlab代码实现深度解析

融合虚拟储能的楼宇微网优化调度:Matlab代码实现深度解析

“融合需求侧虚拟储能系统的楼宇微网优化调度”这个项目,听起来像是又一篇把关键词堆在一起的论文标题,但真正把它落到Matlab代码里跑通之后,我才意识到这里面其实藏着一个很值得展开的工程命题。这个项目做的事情,通俗说就是把楼…

2026/10/14 7:51:44 阅读更多 →
Java毕业设计:校园招聘管理系统需求分析、数据库设计与核心代码实战

Java毕业设计:校园招聘管理系统需求分析、数据库设计与核心代码实战

写毕业设计选题目的时候,"校园招聘管理系统"很容易被当成一个平平无奇的CRUD项目。但只要你真的去参加过学校组织的双选会,或者蹲在就业办看过辅导员怎么手动核对企业资质和岗位表,你就会发现:这个场景里的业务复杂度&a…

2026/10/14 7:51:44 阅读更多 →
KUKA机器人通过EtherNet/IP对接OMRON相机:通讯配置与IO映射实战

KUKA机器人通过EtherNet/IP对接OMRON相机:通讯配置与IO映射实战

简介:这份文档面向工业自动化工程师与机器人集成调试人员,聚焦KUKA机器人与OMRON工业相机之间基于EtherNet/IP协议的通讯配置,解决视觉引导场景下设备互联与数据映射的实际问题。内容围绕KRC4 EtherNet IP V2.0以上通讯软件的安装、Wov总线结…

2026/10/14 7:51:44 阅读更多 →
打卡信奥刷题(3628)用C++实现信奥题 P11860 [CCC 2025 Senior] 熔岩路 / Floor is Lava

打卡信奥刷题(3628)用C++实现信奥题 P11860 [CCC 2025 Senior] 熔岩路 / Floor is Lava

P11860 [CCC 2025 Senior] 熔岩路 / Floor is Lava 题目背景 译自 CCC 2025 Senior T4。本题满分为 151515。 题目描述 你被困在一个炽热的地牢中。 地牢由 nnn 个房间组成,房间编号 1∼n1\sim n1∼n。这些房间通过 mmm 条双向隧道相连,第 iii 条双向隧道…

2026/10/14 7:51:44 阅读更多 →
Vulkan多重采样技术:原理与性能优化实践

Vulkan多重采样技术:原理与性能优化实践

1. 多重采样技术背景与核心价值在实时图形渲染领域,锯齿(Aliasing)问题一直是影响视觉质量的关键瓶颈。当高分辨率几何边缘或纹理细节在低分辨率帧缓冲中渲染时,由于采样率不足导致的锯齿现象会显著降低画面品质。传统解决方案如超…

2026/10/14 7:50:43 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →