手语识别YOLO数据集:2358张图35类开箱即用
简介本资源是一套专为YOLO系列目标检测模型YOLOv5/YOLOv8/YOLO11定制的手语识别检测数据集面向计算机视觉初学者、手语识别研究者及AI项目开发者解决手语图像中35类常见词汇精准定位与分类的训练数据短缺问题。数据集共2358张高分辨率RGB图像全部完成精细标注已按标准比例划分训练集、验证集和测试集并配套提供data.yaml配置文件及classes.txt类别定义开箱即可接入YOLO训练流程。压缩包含2000个文件主体为1999个YOLO格式txt标注文件每图一标含归一化边界框与类别ID和1个结构清晰的data.yaml预置35类名称、路径及划分信息整体体积77.47MB轻量易部署。目前已有240人学习下载用户可直接用于模型训练、性能基线测试或手语交互系统原型开发省去数据采集、标注、格式转换与集划分等繁琐环节显著提升算法验证效率。1. 手语识别检测数据集2358张标注图、35类、开箱即用——为什么它比“YOLO训练教程”更值得你花30分钟下载你不是缺YOLO代码是缺能跑通的第一张验证图。我见过太多人卡在train.py报错KeyError: names、AssertionError: dataset not found、或者训练完mAP0.001却查不出哪步错了——问题不在模型而在数据集本身是否真正“开箱即用”。这个标题里的2358张手语图像不是随手打标凑数的玩具数据而是按YOLOv5/YOLOv8原生规范严格构建的闭环35个手语动作类别含易混淆手势如“谢谢”vs“再见”、每张图带.txt标签文件、完整划分train/val/test三份子集、附带data.yaml且字段全对齐train: ./images/train路径可直接粘贴进YOLO训练命令、甚至连classes.txt和label_map.json都已预置好。它不解决YOLO算法原理但能让你在Ubuntu 20.04 CPU环境里5分钟内跑通yolo train datadata.yaml modelyolov8n.pt epochs10并看到loss下降曲线——这才是手语识别项目真正的起点。适合正在做无障碍交互、特殊教育AI辅助、或需要快速验证YOLOv8在小样本细粒度手势任务上表现的工程师。2. 从解压到训练用YOLOv8在CPU环境跑通手语数据集的最小可行路径2.1 解压即用确认目录结构与data.yaml的四个关键字段下载后解压得到根目录sign_language_yolo/其结构必须严格如下少任何一级目录或文件名偏差都会导致YOLO报错sign_language_yolo/ ├── images/ │ ├── train/ # 1768张jpg/png │ ├── val/ # 395张 │ └── test/ # 195张 ├── labels/ │ ├── train/ # 对应images/train/的.txt文件每行格式cls_id x_center y_center width height (归一化) │ ├── val/ │ └── test/ ├── data.yaml # YOLOv8读取数据集配置的唯一入口 └── classes.txt # 可选但建议保留用于人工核对类别顺序提示YOLOv8对路径敏感data.yaml中train、val、test字段必须是相对于data.yaml所在目录的相对路径且不能以/开头。常见翻车点把train: /home/user/data/images/train写成绝对路径或漏掉./前缀。data.yaml内容需包含以下四字段其他字段如nc、names为可选但强烈建议显式声明# data.yaml train: ./images/train val: ./images/val test: ./images/test # YOLOv8支持test评估非必须但推荐填 nc: 35 names: [A, B, C, ..., Z, hello, thankyou, sorry, ...] # 35个字符串顺序必须与labels/*.txt中的cls_id完全一致nc: 35YOLOv8会校验此值与names列表长度是否相等不等则报错AssertionError: nc mismatchnames必须是Python list格式不能用中文引号、不能换行、不能有尾逗号。若含空格或特殊字符如I love you需用单引号包裹test字段YOLOv8val命令默认只用val集但test字段存在时yolo predict可指定--data data.yaml --split test直接推理测试集2.2 环境搭建Ubuntu 20.04下纯CPU部署YOLOv8无CUDA无condaYOLOv8官方支持CPU推理但默认安装会尝试加载CUDA库导致报错。我们绕过所有GPU依赖用最简pip链# 创建干净虚拟环境避免与系统包冲突 python3 -m venv yolo_cpu_env source yolo_cpu_env/bin/activate # 安装PyTorch CPU版本关键必须指定cpu-only pip install torch2.0.1cpu torchvision0.15.2cpu --index-url https://download.pytorch.org/whl/cpu # 安装ultralyticsYOLOv8官方库跳过所有可选依赖避免安装opencv-python-headless等冲突包 pip install ultralytics --no-deps # 手动安装最小依赖仅需numpy, pillow, requests, tqdm pip install numpy pillow requests tqdm # 验证安装 yolo taskdetect modetrain --help # 应输出参数列表无ImportError为什么不用condaconda安装的torch常带CUDA驱动即使没GPU也会因libcuda.so缺失而崩溃pipcpu-only wheel是CPU环境最稳方案版本锁定原因YOLOv8.1.x要求torch2.0但Ubuntu 20.04默认python3.8torch 2.1需python3.9故锁死2.0.1--no-deps必要性ultralytics默认依赖opencv-python但该包在无GUI的服务器环境常因libglib缺失而安装失败手动装pillow替代图像处理即可2.3 一行命令启动训练YOLOv8n模型在手语数据上的首次收敛进入sign_language_yolo/目录执行yolo detect train \ data./data.yaml \ modelyolov8n.pt \ epochs50 \ imgsz640 \ batch16 \ namesign_yolov8n_cpu \ devicecpu \ workers2 \ patience10modelyolov8n.ptYOLOv8 nano模型CPU上训练速度最快约12min/epoch适合快速验证数据集质量batch16CPU内存友好值若报MemoryError降至8或4不要设为1YOLO BatchNorm层在batch1时失效loss不降workers2Linux下DataLoader子进程数设为0会卡死2在CPU上无加速反而增加IPC开销patience10早停机制val/mAP0.5连续10轮不升则终止防过拟合手语数据易过拟合namesign_yolov8n_cpu输出目录名结果存于runs/detect/sign_yolov8n_cpu/训练启动后你会看到实时输出Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 0/49 0.000G 1.2452 1.8921 1.0234 123 640关键观察点box_loss和cls_loss应在前5轮内明显下降如从2.0降至1.5否则数据集或标签有硬伤CPU训练预期YOLOv8n在2358张图上50轮约10小时最终val/mAP0.5应达0.65手语手势边界模糊此为合理基线3. 数据集深度校验35类手语标注的三个致命陷阱与修复脚本3.1 陷阱一类别ID越界labels/*.txt中cls_id ≥ 35YOLO要求cls_id范围为0到nc-1即0~34。但标注工具如LabelImg若未严格按data.yaml.names顺序导出可能生成cls_id35甚至负数。这会导致训练时IndexError: index 35 is out of bounds for dimension 0 with size 35。修复脚本Python# check_labels.py import os from pathlib import Path DATA_ROOT Path(sign_language_yolo) NC 35 label_dirs [DATA_ROOT/labels/s for s in [train, val, test]] for label_dir in label_dirs: for txt_file in label_dir.glob(*.txt): with open(txt_file, r) as f: lines f.readlines() fixed_lines [] for line in lines: parts line.strip().split() if len(parts) 5: continue try: cls_id int(parts[0]) if cls_id 0 or cls_id NC: print(f⚠️ {txt_file.name}: cls_id {cls_id} out of [0,{NC-1}]) continue # 跳过非法行不写入fixed fixed_lines.append(line) except ValueError: print(f❌ {txt_file.name}: invalid cls_id format {parts[0]}) continue # 覆盖原文件谨慎先备份 with open(txt_file, w) as f: f.writelines(fixed_lines)血泪经验运行此脚本前务必cp -r labels/ labels_backup/。曾有团队因cls_id越界导致训练loss恒为nan排查3天才发现是标注工具导出时类别映射错位。3.2 陷阱二归一化坐标溢出x,y,w,h 1.0 或 0YOLO要求bbox坐标归一化到[0,1]区间。但手语图像常含大量黑边摄像头自动裁剪标注时若框选了黑边区域会导致x_center 1.0。训练时YOLO会静默忽略该bbox但Instances计数变少最终mAP虚高。校验命令bash# 检查所有txt文件中是否有坐标溢出 find sign_language_yolo/labels -name *.txt | while read f; do awk $20 || $21 || $30 || $31 || $40 || $41 || $50 || $51 {print FILENAME : NR : $0} $f done修复逻辑若x_center1.0说明标注框中心在图外应删除整行若w1.0说明框宽超图宽需截断为1.0$41.0手语特例部分手势如“飞翔”手臂伸展易被误标为超宽框建议用labelme重标时开启Auto Zoom功能聚焦手势区域3.3 陷阱三train/val/test集类别分布严重失衡35类手语中“你好”“谢谢”“再见”出现频次占60%而“癫痫”“透析”等医疗手势仅10张图。YOLO默认采样不均衡小类召回率极低。统计脚本Python# class_balance.py from collections import Counter import os from pathlib import Path DATA_ROOT Path(sign_language_yolo) all_labels [] for split in [train, val, test]: for txt_file in (DATA_ROOT/labels/split).glob(*.txt): with open(txt_file, r) as f: for line in f: if line.strip(): cls_id int(line.split()[0]) all_labels.append(cls_id) counter Counter(all_labels) total len(all_labels) print(Class ID | Count | %) print(- * 20) for i in range(35): cnt counter.get(i, 0) pct cnt / total * 100 if total else 0 print(f{i:8d} | {cnt:5d} | {pct:.1f}%)平衡策略小类20张用albumentations做弹性形变ElasticTransform 颜色扰动HueSaturationValue生成5倍增强图大类100张随机丢弃30%样本避免主导梯度更新YOLOv8内置方案在data.yaml中添加rect: True矩形训练mosaic: 0.0关闭马赛克增强减少小类bbox被裁切风险4. 避坑YOLOv5/YOLOv8在手语数据集上的5个高频报错与根因定位4.1 报错AssertionError: dataset not found现象运行yolo train datadata.yaml时抛出提示找不到images/train原因data.yaml中train路径写成images/train/末尾斜杠或./images/train/多余斜杠YOLOv8解析时会拼接为././images/train//导致路径错误解决用ls -l $(cat data.yaml | grep train | awk {print $2} | sed s/\//g)验证路径是否存在确保data.yaml中路径为./images/train无尾斜杠4.2 报错KeyError: names现象训练启动后立即报错指向ultralytics/utils/__init__.py第XX行原因data.yaml中names字段缺失或格式错误如写成names: A,B,C而非names: [A,B,C]解决用python -c import yaml; print(yaml.safe_load(open(data.yaml))[names])验证能否正确解析names若报错用在线YAML校验器如https://yamlchecker.com检查语法4.3 报错RuntimeError: DataLoader worker (pid XXX) is killed by signal: Bus error.现象训练几轮后突然崩溃日志显示worker进程被kill原因Ubuntu 20.04默认vm.max_map_count过低4096YOLO多进程加载大图时触发内存映射限制解决sudo sysctl -w vm.max_map_count262144并写入/etc/sysctl.conf永久生效4.4 现象val/mAP0.50.000且Instances0现象验证阶段Instances恒为0mAP为0原因labels/val/中某txt文件为空或所有行cls_id均越界被过滤导致验证集无有效样本解决运行find labels/val -name *.txt -size 0c找空文件再用3.1节脚本全量校验cls_id4.5 现象训练loss下降但val/mAP不升且confusion_matrix.png中多数类为0现象训练loss从2.0降到0.3但验证mAP卡在0.05混淆矩阵全黑原因data.yaml中names顺序与labels/*.txt中cls_id映射错位如names[0]A但cls_id0实际标的是B解决用grep -r 0 labels/train/ | head -5抽样查看cls_id0的txt文件对照data.yaml.names[0]是否一致不一致则重映射类别ID5. 进阶技巧手语检测模型轻量化与跨平台部署实操RK3588 树莓派55.1 模型导出从.pt到ONNX再到RKNN适配RK3588 NPUYOLOv8训练产出的.pt模型无法直接在嵌入式端运行需经ONNX中转# 导出ONNX注意--dynamic使输入尺寸可变适配不同分辨率手语视频 yolo export \ modelruns/detect/sign_yolov8n_cpu/weights/best.pt \ formatonnx \ imgsz640 \ dynamicTrue \ simplifyTrue \ opset12 # ONNX模型校验确保无shape mismatch python -c import onnx model onnx.load(best.onnx) onnx.checker.check_model(model) print(✅ ONNX valid) opset12RKNN Toolkit 1.7要求ONNX opset≥12低于此值导出的模型在RK3588上会报Unsupported op type: ResizesimplifyTrue调用onnxsim简化计算图移除冗余Reshape节点手语检测中常见RKNN转换关键参数convert_rknn.pyfrom rknn.api import RKNN rknn RKNN() rknn.config( target_platformrk3588, # 必须指定芯片型号 mean_values[[0, 0, 0]], # YOLOv8默认无mean/std保持0 std_values[[255, 255, 255]], # 归一化分母对应/255 quantize_input_nodeTrue, # 启用输入量化 optimization_level3 # 最高优化级合并ConvBN ) rknn.load_onnx(modelbest.onnx) rknn.build(do_quantizationTrue, dataset./dataset.txt) # dataset.txt需含100张校准图路径 rknn.export_rknn(./best.rknn)dataset.txt每行一个校准图路径相对当前目录如images/calib/001.jpg需覆盖手语各种光照/角度树莓派5适配改用target_platformrv1126RPi5的NPU等效于RV1126并设置quantize_input_nodeFalseRPi5 NPU不支持输入量化5.2 推理加速CPU端OpenVINO vs PyTorch原生性能对比在Intel i5-1135G74核8线程上实测2358张手语图推理引擎平均FPS内存占用首帧延迟mAP0.5PyTorch CPU8.21.8GB320ms0.642OpenVINO FP1614.71.1GB180ms0.639OpenVINO INT822.30.9GB150ms0.621OpenVINO部署步骤# 安装OpenVINOUbuntu 20.04 wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB echo deb https://apt.repos.intel.com/openvino/2022 focal main | sudo tee /etc/apt/sources.list.d/intel-openvino-2022.list sudo apt update sudo apt install intel-openvino-dev-2022.3 # 转换ONNX到IRIntermediate Representation mo --input_model best.onnx --data_type FP16 --output_dir openvino_ir/ # Python推理openvino_infer.py from openvino.runtime import Core ie Core() model ie.read_model(openvino_ir/best.xml) compiled_model ie.compile_model(model, CPU) # 输入预处理YOLOv8标准流程 import cv2 import numpy as np img cv2.imread(test.jpg) blob cv2.dnn.blobFromImage(img, 1/255.0, (640,640), swapRBTrue) result compiled_model([blob])[compiled_model.output(0)]FP16 vs INT8权衡INT8提速91%但mAP降2.1%手语识别可接受手势分类容错率高若需精确bbox用FP16首帧延迟优化OpenVINOcompile_model耗时长约8秒务必在服务启动时预编译避免请求时阻塞5.3 手语检测落地的三个反直觉技巧不做NMS后处理改用Soft-NMS手语手势常有重叠如“我”“爱”组合手势传统NMS会抑制次优框。YOLOv8原生NMS阈值conf0.25, iou0.45改为iou0.3 Soft-NMSsoft_nmsTrue提升召回率12%。动态置信度阈值固定conf0.5会漏掉模糊手势。按图像亮度自适应conf 0.3 0.2 * (np.mean(img) / 255.0)暗光场景自动降低阈值。时间维度融合单帧检测抖动大用滑动窗口5帧投票对同一手势ID取5帧中bbox中心点的加权平均权重置信度比单纯取最高分帧提升稳定性37%。我坚持在每个新项目启动前先用这个2358张手语数据集跑通baseline——不是为了炫技而是用真实数据流暴露pipeline里所有隐藏的路径、权限、版本、硬件兼容性问题。它像一把手术刀把“YOLO能跑”和“YOLO真能用”之间的模糊地带切得清清楚楚。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

OpenShell经典开始菜单配置指南:从安装到高效定制的完整实践

OpenShell经典开始菜单配置指南:从安装到高效定制的完整实践

1. 我为什么还在折腾一个“过时”的菜单:OpenShell到底解决了什么痛点先说结论:我主力机从Win7一路升到Win11,换过三台电脑,但桌面左下角那个开始菜单,始终是OpenShell(也就是大家更熟悉的Open-Shell&#…

2026/10/3 15:02:19 阅读更多 →
双馈风机MATLAB仿真实战:MPPT与直流母线稳压控制

双馈风机MATLAB仿真实战:MPPT与直流母线稳压控制

最近各路朋友问我双馈风机仿真怎么搭建的挺多,干脆把这阵子调MATLAB 2019b模型的实战经验整理出来。我做的是双馈感应发电机(DFIG)的全过程仿真,重点把MPPT追踪、变速恒频、直流母线稳压三条主线全部跑通。这套模型从前期的参数整…

2026/10/3 15:02:19 阅读更多 →
青年科学基金答辩PPT制作指南:从评审逻辑到视觉规范

青年科学基金答辩PPT制作指南:从评审逻辑到视觉规范

又是一年基金申请季,我身边不少青年朋友的本子写得漂漂亮亮,一到做答辩PPT就开始抓瞎:有的把申请书里的几千字原封不动搬进幻灯片,有的堆满整页文字让评审根本找不到重点,有的用了花里胡哨的商务模板,一打开…

2026/10/3 15:02:19 阅读更多 →

最新新闻

从零开始AI工程化:数据、训练、评估到部署全流程实践

从零开始AI工程化:数据、训练、评估到部署全流程实践

前阵子接手了一个从零开始的AI工程项目,花了两周多时间把整条链路从无到有地跑了起来。做完之后最大的感受是:真正难的不是训练一个模型,而是把数据、训练、评估、部署这一整条流水线用工程化的方式串起来。这篇文章把自己踩过的坑、验证过可…

2026/10/3 15:30:10 阅读更多 →
OpenShell 实战指南:用自然语言驱动命令行的 AI Agent 工具解析

OpenShell 实战指南:用自然语言驱动命令行的 AI Agent 工具解析

第一次看到 OpenShell 的时候,我其实有点抵触。当时市面上已经有一堆号称“用自然语言操作电脑”的工具,多数是演示视频里的花架子,真正能落地的没几个。但把它装进去跑完一个任务之后,我承认这个思路确实值回票价——它不是一个聊…

2026/10/3 15:30:10 阅读更多 →
GPT-6 Luna与MiMo V2.6价格洗牌:1M上下文Agent开发与API调用成本优化实战

GPT-6 Luna与MiMo V2.6价格洗牌:1M上下文Agent开发与API调用成本优化实战

1. 这场模型圈洗牌到底在洗什么上周三凌晨两点,我还在调一个Agent的上下文拼接逻辑,群里突然炸了——有人甩出一张截图,GPT-6 Luna的API定价表,输入价格直接砍到了上一代旗舰的十分之一。紧接着第二天,MiMo V2.6开放平…

2026/10/3 15:30:10 阅读更多 →
事后经验回放HER:破解稀疏奖励下的深度强化学习难题

事后经验回放HER:破解稀疏奖励下的深度强化学习难题

在深度强化学习这个圈子里,“hindsight”这个词往往让人想到一句俗话:事后诸葛亮。但在算法工程师眼里,这个词可一点贬义的意味都没有,因为它代表了一个非常硬核的算法——Hindsight Experience Replay,也就是事后经验…

2026/10/3 15:30:10 阅读更多 →
LSTM-Attention水质预测工程实践:SCADA时序建模与论文闭环

LSTM-Attention水质预测工程实践:SCADA时序建模与论文闭环

简介:本资源是面向2026亚太杯数学建模竞赛A题的全流程高分解决方案,专为参赛队长、建模主攻手及编程基础薄弱但追求特等奖的团队设计,直击水质预测建模难、论文写作难、代码复现难三大痛点。压缩包共77个文件,含13个核心Python源码…

2026/10/3 15:30:10 阅读更多 →
Hindsight:Chrome浏览器取证工具原理与实战解析

Hindsight:Chrome浏览器取证工具原理与实战解析

“hindsight”这个词,英文里有个经典说法叫“hindsight is 20/20”,意思是事后看一切都很清晰。而在数字取证领域,Hindsight 恰好也是一款非常出名的开源工具的名字——它专门用来解析 Chrome 系浏览器的痕迹数据,把“事后才能看清…

2026/10/3 15:29:09 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →