山体滑坡检测数据集823张YOLO+VOC双格式实战:从数据体检到YOLOv8/v11训练全链路
简介本资源为面向地质灾害识别与计算机视觉学习者的山体滑坡目标检测数据集适用于深度学习入门、目标检测模型训练及滑坡智能识别研究。压缩包共2000个文件约63.01MB包含823张jpg图片、823个VOC格式xml标注文件、825个txt文件其中txt为YOLO格式标签xml与txt一一对应方便在VOC与YOLO两种主流框架间直接切换使用。数据集仅含landslide一个类别共标注950个矩形框图片清晰且未做数据增强标注准确合理可直接用于训练与验证。目前已有484人学习下载适合需要快速搭建滑坡检测实验、验证算法效果或补充地质灾害样本的读者能省去自行采集与标注的成本为模型训练提供规范的数据基础。1. 山体滑坡检测数据集823 张 YOLOVOC 双格式到底能干什么山体滑坡这类地质灾害的目标检测和常规的车辆、行人检测完全不是一个难度量级。滑坡体没有固定形状边界模糊颜色和纹理跟周围裸露岩土高度相似同一张图里可能既有滑坡区又有塌方堆积区标注尺度差异极大。823 张这个量级说多不多说少不少——它刚好卡在「能训出一个可用 baseline但必须靠增强和迁移学习才能上生产」的区间。YOLOVOC 双格式意味着你拿到手就能直接喂给 Ultralytics 系的 YOLOv8/v11也能用 VOC 的 XML 走 SSD、Faster R-CNN 那条老路省掉格式转换的折腾。这篇笔记面向两类人一是手里有滑坡监测需求、想快速验证模型可行性的工程同学二是刚入门目标检测、想找一个真实非标准数据集练手的开发者。我会把从数据检查、格式转换、训练配置到推理验证的完整链路拆开讲参数怎么设、哪里容易翻车都按我实际踩过的坑来说。2. 拿到 823 张滑坡数据先别急着训数据体检与格式拆解2.1 为什么滑坡数据集必须先做分布体检很多人拿到 zip 解压完看一眼图片数量就开始写 train.py这是滑坡检测翻车率最高的起手式。滑坡数据和 COCO 那种均衡数据集不同它的类别分布、目标尺度、背景占比都极度偏斜。823 张里可能有 600 张是远景航拍、200 张是近景边坡、剩下 20 多张是雨后泥流的特殊场景。如果你不先摸清这些直接按 8:1:1 随机切分很可能验证集里全是远景模型在近景上直接崩。我一般会先跑一个统计脚本把每张图的宽高、标注框数量、框的宽高比、类别分布全部拉出来。这一步花不了十分钟但能帮你决定后面增强策略怎么配、输入分辨率设多少、要不要做分层采样。import os import xml.etree.ElementTree as ET from collections import Counter import matplotlib.pyplot as plt # 指向 VOC 格式的 Annotations 目录 anno_dir ./dataset/VOC/Annotations img_dir ./dataset/VOC/JPEGImages box_counts [] aspect_ratios [] class_counter Counter() sizes [] for xml_file in os.listdir(anno_dir): if not xml_file.endswith(.xml): continue tree ET.parse(os.path.join(anno_dir, xml_file)) root tree.getroot() # 读取图像尺寸 w int(root.find(size/width).text) h int(root.find(size/height).text) sizes.append((w, h)) objs root.findall(object) box_counts.append(len(objs)) for obj in objs: name obj.find(name).text class_counter[name] 1 bnd obj.find(bndbox) bw float(bnd.find(xmax).text) - float(bnd.find(xmin).text) bh float(bnd.find(ymax).text) - float(bnd.find(ymin).text) if bh 0: aspect_ratios.append(bw / bh) print(图片总数:, len(box_counts)) print(每图平均框数:, sum(box_counts) / len(box_counts)) print(类别分布:, class_counter) print(宽高比中位数:, sorted(aspect_ratios)[len(aspect_ratios)//2]) print(分辨率样本:, sizes[:5])这段脚本做四件事统计每张图的标注框数量、类别频次、框的宽高比分布、图像分辨率。逻辑很直白但输出信息量很大。如果类别分布里某一类占比超过 80%你就得考虑类别重加权或者对少样本类做定向增强。如果宽高比中位数偏离 1 太远说明滑坡体多为长条形anchor 或者 YOLO 的自动 anchor 要留意。分辨率样本则决定你训练时 imgsz 设 640 还是 1024——滑坡小目标多的话640 会丢细节。2.2 VOC 与 YOLO 格式的字段对应关系这个数据集同时给了 VOC 和 YOLO 两种格式很多人只用一个另一个直接删。我的建议是留着 VOC因为它的 XML 里保留了图像尺寸、标注难度等元信息排查标注错误时比 YOLO 的 txt 好用得多。两者的核心差异在于坐标表达VOC 用绝对像素坐标 (xmin, ymin, xmax, ymax)YOLO 用归一化中心点加宽高 (cx, cy, w, h)且都除以图像宽高。字段VOC XMLYOLO txt换算关系类别name文本行首整数索引需维护类别映射表中心 x无cx(xminxmax)/2/width中心 y无cy(yminymax)/2/height宽xmax-xminw(xmax-xmin)/width高ymax-yminh(ymax-ymin)/height图像尺寸size节点不存储转换时从 XML 读取理解这张表很关键因为后面无论你是 VOC 转 YOLO 还是反向验证都是围绕这几个字段做算术。特别注意 YOLO 的坐标必须裁剪到 [0,1]标注越界是滑坡数据集里最常见的脏数据——标注员在拉框时手一抖超出图像边界转换后 cx 可能大于 1训练时直接报错或者静默产生错误梯度。2.3 用脚本把 VOC 转成 YOLO 并做越界裁剪虽然数据集号称双格式但实际拿到的 YOLO 标签未必和 VOC 完全对齐我习惯以 VOC 为准重新生成一遍 YOLO 标签顺便做越界裁剪和空标注过滤。import os import xml.etree.ElementTree as ET classes [landslide] # 按你的实际类别改滑坡数据集常见就一类 anno_dir ./dataset/VOC/Annotations out_dir ./dataset/YOLO/labels os.makedirs(out_dir, exist_okTrue) for xml_file in os.listdir(anno_dir): if not xml_file.endswith(.xml): continue tree ET.parse(os.path.join(anno_dir, xml_file)) root tree.getroot() w int(root.find(size/width).text) h int(root.find(size/height).text) lines [] for obj in root.findall(object): name obj.find(name).text if name not in classes: continue cls_id classes.index(name) bnd obj.find(bndbox) xmin max(0, float(bnd.find(xmin).text)) ymin max(0, float(bnd.find(ymin).text)) xmax min(w, float(bnd.find(xmax).text)) ymax min(h, float(bnd.find(ymax).text)) # 裁剪后如果框太小直接丢弃避免噪声 if xmax - xmin 2 or ymax - ymin 2: continue cx (xmin xmax) / 2 / w cy (ymin ymax) / 2 / h bw (xmax - xmin) / w bh (ymax - ymin) / h lines.append(f{cls_id} {cx:.6f} {cy:.6f} {bw:.6f} {bh:.6f}) # 没有有效标注的图写空文件训练时用配置过滤 with open(os.path.join(out_dir, xml_file.replace(.xml, .txt)), w) as f: f.write(\n.join(lines))关键点在裁剪逻辑xmin 和 ymin 用 max(0, ...) 兜底xmax 和 ymax 用 min(w, ...) 兜底这样即使原始标注越界也能拉回合法范围。裁剪后宽高小于 2 像素的框直接丢弃因为这种框在训练中只会贡献噪声梯度。空标注文件保留但内容为空Ultralytics 训练时可以通过配置忽略但如果你用其他框架可能需要显式删除。3. 用 YOLOv8/v11 训练滑坡检测模型配置与参数3.1 数据集 YAML 怎么写才不出错Ultralytics 系的数据集配置文件看着简单但滑坡数据集有几个容易写错的地方。路径要用绝对路径或者相对于训练启动目录的路径train 和 val 指向的是图片目录而不是标签目录标签目录由框架自动按同名规则去找。# landslide.yaml path: /data/landslide # 数据集根目录 train: images/train # 训练图片相对路径 val: images/val test: images/test nc: 1 # 类别数滑坡数据集通常就一类 names: 0: landslide这里最容易翻车的是 path 和 train 的拼接关系。Ultralytics 会把 path 和 train 拼起来找图片然后自动把路径里的images替换成labels去找标签。所以你的目录结构必须是images/train和labels/train平行。如果你把标签放在别的地方训练时会报「No labels found」这个报错我见过太多次了。3.2 训练命令与关键参数逐个说滑坡数据集 823 张属于小数据集训练策略和大数据集完全不同。下面是我常用的启动命令yolo detect train \ datalandslide.yaml \ modelyolov8s.pt \ epochs200 \ imgsz640 \ batch16 \ lr00.001 \ lrf0.01 \ warmup_epochs5 \ mosaic1.0 \ mixup0.1 \ copy_paste0.1 \ degrees15 \ translate0.1 \ scale0.5 \ fliplr0.5 \ patience50 \ device0 \ projectruns/landslide \ nameexp1逐个说参数。model 选 yolov8s 而不是 n 版本是因为滑坡特征复杂n 版容量太小容易欠拟合s 版在 823 张上刚好平衡。epochs 设 200 配合 patience50小数据集收敛快通常 80 到 120 轮就触发早停。lr00.001 比默认的 0.01 小一个量级小数据集用大学习率容易震荡。warmup_epochs5 让前几轮慢慢升温避免一开始就破坏预训练权重。增强参数是重点。mosaic1.0 开启马赛克增强对滑坡这种目标尺度差异大的场景特别有用能让模型见到更多尺度组合。mixup0.1 轻度混合再高会模糊滑坡边界。copy_paste0.1 对少样本类有帮助但滑坡只有一类时作用有限。degrees15 做小角度旋转滑坡方向不固定适度旋转合理但别超过 30 度否则会出现不真实的坡面朝向。scale0.5 允许 0.5 到 1.5 倍缩放覆盖远近景。提示如果你发现训练 loss 正常下降但 mAP 一直上不去先把 mosaic 关掉再训一轮对比。mosaic 在小数据集上有时会让模型学到拼接边界的伪特征滑坡这种纹理连续的场景尤其敏感。3.3 训练过程该盯哪些指标训练启动后控制台会输出 box_loss、cls_loss、dfl_loss 和 mAP50、mAP50-95。滑坡检测最该关注的是 mAP50-95 而不是 mAP50因为滑坡边界模糊IoU 阈值高的时候才能反映模型是否真的定位准了。如果 mAP50 很高但 mAP50-95 很低说明模型能找到滑坡大概位置但框不准这时候要检查标注质量而不是调模型。另一个信号是 cls_loss。滑坡只有一类时cls_loss 应该很快降到接近 0。如果它一直不降大概率是标签文件里有类别索引错误比如写成了 1 但你的 nc 是 1合法索引只有 0。这种错误不会报错但模型永远学不会。4. 滑坡检测的避坑与排查5 个血泪教训4.1 验证集 mAP 虚高但实际推理全错现象训练日志里 mAP50 到了 0.85但拿真实滑坡照片推理模型要么不框要么框到云层上。原因823 张数据如果随机切分验证集和训练集可能来自同一批航拍序列图像高度相似。模型记住了背景特征而不是滑坡特征。滑坡数据集经常是连续拍摄的相邻帧差异极小随机切分等于变相泄漏。解决按拍摄区域或时间做分组切分同一区域或同一批次的图只能进训练集或验证集其中之一。如果数据里没有区域标签至少按图像相似度做聚类后再切分。我一般会用感知哈希做一遍去重相似度超过阈值的图归到同一组。4.2 推理时小滑坡全部漏检现象大块滑坡能检出但面积小于图像 1% 的滑坡全部漏掉。原因imgsz640 时下采样 32 倍后小目标在特征图上只剩几个像素。滑坡数据集里小目标占比往往不低尤其是远景航拍。解决把 imgsz 提到 1024 或 1280同时 batch 相应调小避免显存爆掉。另一个办法是在数据增强里加小目标复制粘贴把少数的滑坡区域裁剪出来贴到不同背景上。如果显存实在不够用切片推理把大图切成重叠的小块分别检测再合并。4.3 标注框大量越界导致训练报错现象训练启动时报「normalized coordinates out of range」或者 loss 直接变 NaN。原因VOC 转 YOLO 时没做裁剪标注员拉框超出图像边界cx 或 cy 大于 1。解决用 2.3 节的转换脚本重新生成标签裁剪逻辑必须加。转换完再跑一遍校验扫描所有 txt 文件确认坐标都在 [0,1] 内。这个校验脚本很简单但能省掉几小时的排查。4.4 模型把裸露岩土误判为滑坡现象推理结果里大量非滑坡的裸地被框出来误报率高。原因滑坡和裸露岩土在 RGB 图像里颜色纹理接近模型学到的判别特征不够。823 张数据里如果负样本有裸地但无滑坡太少模型没见过足够的困难负样本。解决收集一批纯裸地、无滑坡的负样本图加入训练集标签为空文件。负样本比例控制在 10% 到 20%。另外可以在增强里加颜色抖动让模型不过度依赖颜色特征。如果条件允许引入高程数据或 SAR 影像做多模态但这超出纯 RGB 数据集的范围了。4.5 训练完模型文件很大推理很慢现象yolov8s 训完在边缘设备上跑不动单帧推理超过 200ms。原因没做模型导出优化直接用的 PyTorch 权重。解决导出成 ONNX 或 TensorRT。滑坡检测如果部署在无人机或边缘盒子上TensorRT 的 FP16 量化通常能提速 2 到 3 倍精度损失在 1 个点以内。导出命令是yolo export modelbest.pt formatengine halfTrue。注意导出时的 imgsz 要和训练一致否则精度会掉。5. 把 823 张用到极致分层采样与推理后处理技巧823 张要训出能用的滑坡检测模型核心思路是让每一张图发挥最大价值。我一般会做两件事分层采样和推理后处理。分层采样是按场景难度把数据分成几层。具体做法是用 2.1 节的统计脚本输出每张图的框数量和平均框面积然后按框面积分成小目标、中目标、大目标三层每层按比例抽验证集。这样验证集能覆盖各种尺度mAP 才有参考意义。代码上就是在切分前给每张图打上分层标签用 sklearn 的 StratifiedShuffleSplit 按层抽样。import numpy as np from sklearn.model_selection import StratifiedShuffleSplit # strata 是每张图的分层标签0小目标为主1中2大 strata np.array(strata_labels) indices np.arange(len(strata)) sss StratifiedShuffleSplit(n_splits1, test_size0.2, random_state42) for train_idx, val_idx in sss.split(indices, strata): train_files [files[i] for i in train_idx] val_files [files[i] for i in val_idx]推理后处理这块滑坡检测有个特殊之处滑坡区域通常是连通的不会像行人那样分散。所以可以用连通域分析做后处理把 IoU 重叠高且空间相邻的检测框合并成一个。具体做法是取出所有置信度高于阈值的框按空间距离聚类同一簇内取置信度最高的框或者做加权框融合。这个后处理能把碎片化的检测结果整合成完整的滑坡区域对面积统计类应用特别有用。另一个技巧是测试时增强TTA。Ultralytics 推理时加augmentTrue会做多尺度加翻转的 TTAmAP 通常能涨 1 到 2 个点代价是推理时间翻几倍。如果做离线分析不在乎速度这个开关值得开。但部署到实时系统就别用了。最后说一个我自己的习惯每次训完模型我都会挑 20 张验证集里 mAP 最低的图逐张看推理结果和标注的差异。这 20 张图里藏着模型真正的短板——可能是某种光照、某个角度、某类边界情况。看多了你会发现滑坡检测的瓶颈往往不在模型结构而在数据本身覆盖的场景够不够全。823 张能不能撑起你的业务取决于这 823 张里有多少是真正多样化的。如果发现某类场景完全缺失与其调参不如先去补数据。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

你的 AI 编程 CLI 配置管理工具来了:用 TaoToken 统一管理 Claude Code 与 Codex 的 Base URL

你的 AI 编程 CLI 配置管理工具来了:用 TaoToken 统一管理 Claude Code 与 Codex 的 Base URL

/* 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 0:03:00 阅读更多 →
无人机红外航拍人车识别数据集与YOLOv8训练指南

无人机红外航拍人车识别数据集与YOLOv8训练指南

简介:本资源是面向深度学习目标检测初学者与工程实践者的无人机航拍红外人车识别数据集,专为YOLO系列(v5至v10)、Faster R-CNN、SSD等主流模型训练而构建,解决低光照、小目标、多尺度场景下红外图像中Person、Car、Bic…

2026/10/12 0:03:00 阅读更多 →
思科AIR-CAP1602E-C-K9配置实战:自治模式与CAPWAP隧道详解

思科AIR-CAP1602E-C-K9配置实战:自治模式与CAPWAP隧道详解

简介:思科AIR-CAP1602E-C-K9AP无线接入点的配置说明文档,面向需要独立完成企业级AP部署与调试的网络工程师及运维人员。文档覆盖设备加电连接、超级终端参数设置、IP地址配置、SSID创建、WPA2加密、射频模块开启等核心环节,适合按步骤对照实操…

2026/10/12 0:01:59 阅读更多 →

最新新闻

一条命令让 AI Agent 具备逆向工程能力:REA 快速上手

一条命令让 AI Agent 具备逆向工程能力:REA 快速上手

一条命令让 AI Agent 具备逆向工程能力:REA 快速上手 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea REA(Reverse Engineer…

2026/10/12 1:36:52 阅读更多 →
InterviewGuide 刷题笔记:LeetCode 225 用队列实现栈——双队列与单队列解法详解

InterviewGuide 刷题笔记:LeetCode 225 用队列实现栈——双队列与单队列解法详解

文档教程知识库 【免费下载链接】InterviewGuide 🔥🔥「InterviewGuide」是阿秀从校园->职场多年计算机自学过程的记录以及学弟学妹们计算机校招&秋招经验总结文章的汇总,包括但不限于C/C 、Golang、JavaScript、Vue、操作系统、数据结…

2026/10/12 1:36:52 阅读更多 →
Koharu 运行时同步技能解析:用编码 Agent SKILL 维护 llama.cpp 与 stable-diffusion.cpp 绑定

Koharu 运行时同步技能解析:用编码 Agent SKILL 维护 llama.cpp 与 stable-diffusion.cpp 绑定

【免费下载链接】koharu ML-powered manga translator, written in Rust. 项目地址: https://gitcode.com/gh_mirrors/ko/koharu 点击查看 免费下载 本文围绕 Koharu 仓库中面向编码 Agent 的 runtime 技能(.agents/skills/runtime/SKILL.md&#xff09…

2026/10/12 1:36:52 阅读更多 →
蓝鲸配置平台(bk-cmdb)批量创建项目接口 batch_create_project 实战指南

蓝鲸配置平台(bk-cmdb)批量创建项目接口 batch_create_project 实战指南

后端企业应用运维 【免费下载链接】bk-cmdb 蓝鲸智云配置平台(BlueKing CMDB) 项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb 点击查看 免费下载 本篇以 docs/apidoc/apigw/open/en/batch_create_project.md 为核心,结合 bk-cmdb 源码&#xff…

2026/10/12 1:36:52 阅读更多 →
浏览器里剪视频成真了:FilmCraft Web 版架构全拆解(WebCodecs + OPFS)

浏览器里剪视频成真了:FilmCraft Web 版架构全拆解(WebCodecs + OPFS)

浏览器里剪视频成真了:FilmCraft Web 版架构全拆解(WebCodecs OPFS) 【免费下载链接】filmcraft An open-source, clean-room reimplementation of Adobe Premiere Pro built in pure Rust. 项目地址: https://gitcode.com/gh_mirrors/fi/…

2026/10/12 1:36:52 阅读更多 →
指针模块总结

指针模块总结

1.指针的认识和应用int val 0 char* a &val; char* *b &a; //指针就是取地址,分指针等级 char* pa,pb; //pa是char* pb是char char* pa,*pb; //pa pb都是char* typedef; 是对变量进行重命名 // typedef char* PChar PChar pa,pb char* pa,*pb 变量名升…

2026/10/12 1:35:51 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →