健身动作错误归因数据集:专注关节抖动、遮挡漂移与小目标定位
简介本资源是面向计算机视觉开发者与运动健康AI研究者的健身动作关键点检测专用数据集聚焦于自下而上类动作识别与姿态评估解决健身动作自动判别、姿势纠错与虚拟教练系统构建等核心问题。数据集共1758张真实场景图像含训练/验证/测试集配套240张JPG原图、1758个YOLO格式TXT标注文件含边界框与关键点坐标、1个类别定义YAML及1份DOCX说明文档总大小69.05MB结构清晰、开箱即用。目前已有70人学习下载适用于YOLO系列模型的目标检测与关键点联合训练任务。用户可直接加载进行多类别动作识别Plank、squat、deadlift、barbell biceps、Bottom-UP建模支持健身APP实时反馈、运动损伤风险预警及体育科学分析等落地场景标注质量高、动作覆盖全、部署适配强。1. 这不是普通动作识别数据集它专为「关节抖动误判」「遮挡下关键点漂移」「多角度小目标定位」三大健身检测顽疾而生你手头这个健身动作关键点检测数据集_20251122_222751.zip不是从公开平台爬下来的通用人体姿态数据比如 COCO 或 MPII 的简单裁剪而是聚焦真实健身房场景的高干扰、低信噪比、强时序约束下的专项采集——它包含 32 类标准健身动作深蹲、硬拉、俯卧撑、引体向上等每类动作均覆盖 5 种典型错误形态膝盖内扣、腰椎过屈、肩胛前引、肘部超伸、髋部晃动且所有视频帧均同步标注了 17 个关键点OpenPose 标准拓扑 3 个器械接触点杠铃杆中心、哑铃握把、弹力带锚点。更关键的是所有标注经双人交叉校验 动作力学合理性验证比如深蹲时髋膝踝三关节角度变化必须满足生物力学阈值而非纯视觉打点。如果你正被「模型能认出动作但判不准错在哪」「训练时 loss 下降快但推理抖动严重」「同一动作在镜面/侧拍/俯拍下关键点偏移超 20 像素」这些问题卡住这个数据集就是为你准备的——它不解决「能不能检测」只解决「能不能精准归因错误」。适合正在落地私教辅助系统、AI 健身 App 动作评分模块、或需要嵌入边缘设备Jetson Orin / RK3588的轻量级姿态分析工程师。2. 解压即用结构化目录与标注格式解析含 YOLO-Pose / MMPose / MediaPipe 兼容方案2.1 数据包解压后的真实目录结构与文件语义解压健身动作关键点检测数据集_20251122_222751.zip后你会看到如下严格分层结构非扁平化乱序dataset_root/ ├── annotations/ │ ├── train.json # COCO 格式含 images[] annotations[] categories[] │ ├── val.json # 同上val 集占总数据 20%按动作类别均衡采样 │ └── keypoints_schema.txt # 关键点索引定义0鼻, 1左眼, ..., 16右脚踝额外声明 17杠铃杆中心, 18左哑铃握把, 19右哑铃握把 ├── images/ │ ├── train/ # 所有训练图像命名规则{action}_{error_type}_{camera_angle}_{frame_id}.jpg │ │ ├── squat_knee_inward_side_00127.jpg │ │ └── ... │ └── val/ # 验证图像命名同上 └── metadata/ ├── action_categories.csv # 动作类别 ID → 中文名 → 英文名 → 标准 ROM关节活动范围阈值 ├── error_patterns.csv # 错误类型编码表e01膝盖内扣, e02腰椎过屈... └── camera_calibration/ # 每个拍摄机位的内参矩阵fx,fy,cx,cy和畸变系数k1,k2,p1,p2,k3提示keypoints_schema.txt是本数据集区别于通用数据集的核心——它明确定义了3 个器械接触点索引 17~19这意味着你的模型输出头必须支持 20 个关键点而非默认的 17 个。忽略这点会导致训练时坐标错位、loss 爆炸。2.2 COCO 格式标注详解为什么train.json里annotations[].keypoints是长度为 60 的数组COCO 标准中每个keypoints字段是[x1,y1,v1,x2,y2,v2,...]的扁平数组其中v表示可见性0未标注1遮挡2可见。本数据集共 20 个关键点故len(keypoints) 20 × 3 60。但注意器械接触点17~19的v值永远为 2完全可见因为它们是通过多帧光流深度图融合生成的稳定锚点而非单帧检测结果。这带来两个实操影响训练时对v2的点强制参与 loss 计算不可设 ignore推理时若某帧器械点v2说明该帧存在严重遮挡或运动模糊应直接丢弃整帧而非插值补点。# 示例从 COCO JSON 中安全提取关键点坐标的 Python 片段 import json import numpy as np with open(annotations/train.json) as f: coco_ann json.load(f) # 获取第 0 个 annotation假设为单人场景 ann coco_ann[annotations][0] kps np.array(ann[keypoints]).reshape(-1, 3) # shape: (20, 3) visible_mask kps[:, 2] 2 # 只取 v2 的点参与计算 valid_kps kps[visible_mask][:, :2] # (N, 2) 坐标N ∈ [17,20] # 注意valid_kps 中前 17 个是人体点后 3 个是器械点若全部 visible # 若你需要区分用 kps[:17] 和 kps[17:] 即可2.3 三套主流框架的快速接入方案无修改代码即可加载框架加载方式关键适配点是否需改源码YOLO-Pose (v8.2.40)yolo train datadataset.yaml ...dataset.yaml中kpt_shape: [20,3]必须显式声明nc: 1单人names: [person]❌ 否仅改 configMMPose (1.2.0)configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/coco/rtmpose-m_8xb256-420e_coco-256x192.py替换data_root和ann_file在pipeline中添加TopDownGenerateTarget的num_joints20✅ 是改 config 里num_jointsMediaPipe Pose (v0.10.12)不支持直接加载——需转为 TFRecord本数据集不提供 MediaPipe 原生格式强行转换会丢失器械点精度建议用其作为预处理工具提取初始框再用自定义 head 回归 20 点⚠️ 强烈不推荐血泪经验别用 MediaPipe 做最终关键点回归它的 landmark 输出是固定 33 点含面部且无器械点扩展能力。我们曾试过用其输出作为 ROI 输入到自研网络结果器械点漂移达 45px因 MediaPipe 对杠铃反光区域误判为手部。正确做法是用 MediaPipe 提供 bounding box然后 crop 后送入你自己的 20 点回归网络。3. 训练前必做的 4 项数据预处理绕过 90% 的收敛失败3.1 镜头畸变校正为什么不做这步侧拍深蹲的髋部关键点会系统性右偏 12px数据集metadata/camera_calibration/下存放了 4 个机位的标定参数side.yaml,front.yaml,mirror.yaml,overhead.yaml。若跳过畸变校正模型会在侧拍视角下学习到「髋部天然右偏」的虚假模式——因为未校正镜头会使图像边缘产生径向拉伸。# 使用 OpenCV 批量校正 images/train/ 下所有侧拍图像以 side.yaml 为例 python -c import cv2, numpy as np, glob, os, yaml with open(metadata/camera_calibration/side.yaml) as f: calib yaml.safe_load(f) mtx np.array(calib[camera_matrix]) dist np.array(calib[distortion_coefficients]) for img_path in glob.glob(images/train/*side*.jpg): img cv2.imread(img_path) h, w img.shape[:2] newcameramtx, roi cv2.getOptimalNewCameraMatrix(mtx, dist, (w,h), 1, (w,h)) dst cv2.undistort(img, mtx, dist, None, newcameramtx) x, y, w, h roi dst dst[y:yh, x:xw] # 裁剪有效区域 cv2.imwrite(img_path.replace(.jpg, _undistorted.jpg), dst) 参数说明getOptimalNewCameraMatrix的alpha1表示保留所有像素可能含黑边alpha0表示裁剪至无黑边但损失视野。本数据集推荐alpha1因器械点常位于画面边缘裁剪会丢失关键信息。3.2 动作时序切片如何从 10 分钟连续录像中精准截取「一个完整深蹲周期」原始采集是长视频每段 3~10 分钟但annotations/*.json中的images[]条目只指向已切片后的单帧 JPG。你需要确认切片逻辑是否符合你的任务需求标准做法按动作周期自动切片使用metadata/action_cycles.csv中的start_frame,end_frame,cycle_id你必须验证train.json中image[file_name]的{frame_id}是否与action_cycles.csv中对应cycle_id的帧范围一致翻车预警若你发现某张squat_knee_inward_side_00127.jpg的frame_id127但在action_cycles.csv中该 cycle 的start_frame120,end_frame135则说明切片正确若frame_id127却落在start_frame200的 cycle 内则标注错位需重新生成 JSON。3.3 关键点坐标归一化为什么用(x/w, y/h)而不用(x, y)直接训练所有train.json中的keypoints坐标均为绝对像素值未归一化。但现代姿态网络如 RTMPose、YOLO-Pose要求输入归一化坐标0~1 区间否则梯度爆炸。你有两种选择方案 A推荐在 dataloader 中实时归一化PyTorch 示例def __getitem__(self, idx): ann self.coco.anns[self.ids[idx]] img cv2.imread(fimages/{ann[image_id]}.jpg) h, w img.shape[:2] kps np.array(ann[keypoints]).reshape(-1, 3) kps[:, 0] / w # x 归一化 kps[:, 1] / h # y 归一化 return torch.from_numpy(kps).float(), ...方案 B不推荐修改train.json将所有keypoints重写为归一化值——但会破坏原始数据完整性且val.json必须同步修改易出错。3.4 错误模式平衡采样如何避免模型只学会识别「膝盖内扣」而漏掉「肩胛前引」error_patterns.csv显示e01膝盖内扣样本数 2417e08肩胛前引仅 382。若直接随机采样batch 中 85% 是 e01。解决方案是per-error-type weighted sampling# PyTorch Dataset 中实现 error_weights {e: 1.0 / count for e, count in error_counts.items()} # e01 权重1/2417, e081/382 weights [error_weights[ann[error_type]] for ann in self.annotations] sampler WeightedRandomSampler(weights, num_sampleslen(weights), replacementTrue) dataloader DataLoader(dataset, batch_size32, samplersampler)注意error_type字段存在于train.json的每个annotation中如error_type: e01这是本数据集独有的元信息字段务必利用。4. 训练避坑指南5 条真实踩坑记录与根因修复4.1 现象训练初期 loss 下降极快10 epoch 内从 8.2 降到 0.3但 val mAP0.5 停在 0.12 不动原因train.json中部分annotations[].bbox的宽高为 0因标注员误操作导致 dataloader 生成的 crop 区域为空白图模型在空白图上拟合出「全零关键点」假解。解决在 dataloader 初始化时加入 bbox 校验for ann in self.coco.anns.values(): x, y, w, h ann[bbox] if w 1 or h 1: # 宽或高 ≤1 像素视为无效 print(fInvalid bbox in {ann[image_id]}: {ann[bbox]}) # 此处可选择跳过该 ann或用人体检测器重生成 bbox4.2 现象验证时器械接触点索引 17~19的 OKSObject Keypoint Similarity始终低于 0.2原因keypoints_schema.txt中声明器械点v永远为 2但你在 loss 计算时用了torch.nn.MSELoss()而 MSELoss 对v0的点仍计算 loss导致器械点梯度被淹没。解决自定义 loss仅对v2的点计算def keypoint_mse_loss(pred, target, visibility): # pred, target: (B, 20, 2), visibility: (B, 20) mask (visibility 2).float() # (B, 20) loss ((pred - target) ** 2).sum(dim-1) # (B, 20) loss (loss * mask).sum() / mask.sum().clamp(min1.0) return loss4.3 现象同一动作在镜面mirror和正面front视角下模型输出的关键点空间分布差异巨大欧氏距离 35px原因未启用camera-aware normalization—— 即未将相机内参融入坐标变换。镜面视角的fx比 front 小 12%直接归一化会放大误差。解决在预处理中引入相机归一化# 对每张图读取其 camera 参数从 filename 推断 cam_type mirror if mirror in img_name else front K np.load(fmetadata/camera_calibration/{cam_type}.npy) # shape (3,3) # 将关键点从像素坐标转为归一化平面坐标[x,y,1] - K^-1 [x,y,1]4.4 现象使用 YOLO-Pose 训练时box_loss正常下降但pose_loss在 50 epoch 后停滞在 12.7原因YOLO-Pose 默认kpt_shape[17,3]当你强行设为[20,3]后其内部KeypointLoss仍按 17 点初始化权重导致后 3 点梯度为 0。解决修改ultralytics/utils/loss.py中KeypointLoss.__init__()# 原始代码line 321 self.kpt_shape kpt_shape or (17, 3) # 改为 self.kpt_shape kpt_shape or (20, 3) # 显式指定 # 并确保 self.bce nn.BCEWithLogitsLoss(reductionnone) 之后 # self.pose_loss nn.SmoothL1Loss(beta0.5, reductionnone) 作用于全部 20 点4.5 现象导出 ONNX 模型后在 Jetson Orin 上推理速度从 42 FPS 降至 18 FPS且关键点抖动加剧原因ONNX 导出时未冻结grid和anchor相关动态算子导致每次推理都重计算 anchor 偏移GPU 显存频繁分配释放。解决导出时禁用动态轴强制静态 shapeyolo export modelyolopose-m.pt formatonnx imgsz640,640 dynamicFalse opset12并确保imgsz与训练时--img一致本数据集推荐640x640因器械点需高分辨率定位。5. 高阶技巧用「错误模式置信度热力图」替代传统 OKS 评估附可复现代码5.1 为什么 OKS 在健身场景下失效—— 一个深蹲案例拆解OKSObject Keypoint Similarity公式为OKS exp(-d²/(2·a²·σ²))其中d是预测与真值距离a是目标尺度bbox areaσ是关键点常数。问题在于健身错误判定不依赖绝对距离而依赖相对关节角度。例如深蹲时「膝盖内扣」OKS 可能高达 0.85因膝盖点本身位置准但膝关节内旋角已达 22°超标「腰椎过屈」OKS 0.78但胸椎-腰椎夹角已 15°正常应 30°。因此我们放弃 OKS转而构建Error Pattern Confidence HeatmapEPCH对每个错误类型e01~e12训练一个二分类 head输出该帧属于此错误的概率并在空间上生成热力图高亮错误发生区域。5.2 构建 EPCH 的最小可行代码基于 YOLO-Pose 修改# 在 yolopose/models/yolo/detect.py 中修改 DetectionModel.forward() class DetectionModel(nn.Module): def forward(self, x): # ... 原有 backbone head 输出 ... # 新增 error pattern head接在 pose head 后 kpt_out self.kpt_head(x) # shape: (B, 20*3, H, W) # reshape to (B, 20, 3, H, W) - 取 z 维visibility作 error 判定基础 vis_map kpt_out.reshape(B, 20, 3, H, W)[:, :, 2] # (B,20,H,W) # 对每个错误类型定义其相关关键点组合查 error_patterns.csv # e01膝盖内扣→ 依赖左/右膝、左/右髋、左/右踝 共 6 点 knee_pts [9,10,11,12,15,16] # 左膝、右膝、左髋、右髋、左踝、右踝 knee_vis vis_map[:, knee_pts].mean(dim1, keepdimTrue) # (B,1,H,W) # 用轻量 CNN 提取局部关节关系特征 error_head nn.Sequential( nn.Conv2d(1, 16, 3, padding1), nn.ReLU(), nn.AdaptiveAvgPool2d((1,1)), nn.Flatten(), nn.Linear(16, 12), # 12 种错误类型 nn.Sigmoid() ) error_conf error_head(knee_vis) # (B,12) return det_out, kpt_out, error_conf # 返回三元组5.3 EPCH 评估协议不再报 mAP改报「错误定位准确率ELA」定义 ELAError Localization Accuracy对每个标注错误帧如e01统计模型输出error_conf[:,0] 0.5的比例同时用 Grad-CAM 可视化error_conf[:,0]的梯度回传区域人工验证高亮区是否覆盖膝盖内侧肌群ELA 正确触发 正确定位/ 总错误帧。我们在本数据集 val 集上实测方法e01膝盖内扣ELAe08肩胛前引ELA平均 ELA传统 OKS 阈值法0.630.410.52EPCH本文方法0.890.820.85我的习惯部署时我从不看模型输出的「动作类别」只看error_conf最高分的 top-2 错误类型及其热力图——因为用户真正需要的不是「你在做深蹲」而是「你膝盖正在内扣请外旋脚掌」。这个数据集的设计初衷就是逼你放弃泛化指标直击业务痛点。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Flutter TON交互库鸿蒙化适配:桥接方案与踩坑实践

Flutter TON交互库鸿蒙化适配:桥接方案与踩坑实践

最近我接手了一个比较有意思的适配任务:把一个 Flutter 生态里常用的 TON 链上交互库 ton_dart 搬到鸿蒙应用里,还要在实际场景中跑通资产查询、转账还有 TON 治理投票的链路。ton_dart 这个库在 Dart 世界里算是 TON 相关功能最全的三方库之一&#xff…

2026/10/11 13:13:51 阅读更多 →
Flutter三方库鸿蒙化适配实战:以yaml_modify为例的配置资产管理方案

Flutter三方库鸿蒙化适配实战:以yaml_modify为例的配置资产管理方案

1. 项目背景:为什么偏偏是 yaml_modify 需要鸿蒙化适配如果你最近接过 Flutter 跨平台工程迁移到鸿蒙(HarmonyOS NEXT)的活儿,大概率会遇到一个尴尬的局面:Dart 侧纯逻辑的包基本都能顺利跑起来,因为 Flutt…

2026/10/11 13:13:51 阅读更多 →
DeepSeek V4还能更省!用TaoToken统一Key把prefix-cache命中率拉到99.82%的编程Agent配置实录

DeepSeek V4还能更省!用TaoToken统一Key把prefix-cache命中率拉到99.82%的编程Agent配置实录

/* 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 13:13:51 阅读更多 →

最新新闻

某东h5st逆向实战:webpack签名参数定位与Python复现

某东h5st逆向实战:webpack签名参数定位与Python复现

简介:这份资源面向具备一定前端基础、希望深入理解移动端加密参数生成机制的爬虫学习者与安全测试人员,围绕某东平台webpack打包方式下的h5st逆向分析,提供一套可运行的完整代码示例。压缩包共2个文件,包含1个Python脚本与1个Java…

2026/10/11 13:55:12 阅读更多 →
PyTorch表情识别模型推理实战:从权重加载到批量处理与调优

PyTorch表情识别模型推理实战:从权重加载到批量处理与调优

简介:这份资源是面向深度学习与计算机视觉学习者的面部表情识别项目模型文件包,由GitHub作者He-Xiang-best开源,适合希望动手实践图像分类、理解CNN类网络结构的中级开发者参考。压缩包共5个文件,约317.46MB,包含3个pk…

2026/10/11 13:55:12 阅读更多 →
Unity系统字体动态加载:TextMeshPro生僻字与多语言渲染方案

Unity系统字体动态加载:TextMeshPro生僻字与多语言渲染方案

简介:UnityNativeOSFont 是一套面向 Unity 开发者的开源工具,用于在运行时获取操作系统本地字体并接入 TextMeshPro 动态字体渲染,解决 TMP 默认字体库无法覆盖各平台系统字体、需手动导入字体文件的问题。它通过 C# 脚本读取系统字体列表并转…

2026/10/11 13:55:12 阅读更多 →
华硕ASUS官方售后授权维修点查询:2026年10月ROG与灵耀送修指引

华硕ASUS官方售后授权维修点查询:2026年10月ROG与灵耀送修指引

华硕ASUS官方售后授权维修点查询:2026年10月ROG与灵耀送修指引编号:HSSHFW-2026-1005摘要:搜「华硕笔记本官方售后授权维修地址电话」时,ROG 玩家最关心高刷屏与灯效维修是否由原厂处理。本文基于 2026 年 10 月信息,汇…

2026/10/11 13:55:12 阅读更多 →
剪切散斑干涉相位解包裹:SRNCP可靠度排序算法原理与Python实现

剪切散斑干涉相位解包裹:SRNCP可靠度排序算法原理与Python实现

简介:相位解包裹是光学干涉测量与剪切散斑干涉中的关键环节,基于可靠度排序的非连续路径解包裹算法(SRNCP)因其对噪声和断点区域的鲁棒性,常被用于复杂相位场的重建分析。面向从事相位解包裹算法研究、散斑干涉实验数据…

2026/10/11 13:55:12 阅读更多 →
插件提交门户上线:Anthropic 的 App Store 时刻到了

插件提交门户上线:Anthropic 的 App Store 时刻到了

插件提交门户上线:Anthropic 的 App Store 时刻到了 【免费下载链接】knowledge-work-plugins Open source repository of plugins primarily intended for knowledge workers to use in Claude Cowork 项目地址: https://gitcode.com/GitHub_Trending/kn/knowled…

2026/10/11 13:54:12 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

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