资讯中心

健身动作关键点检测:数据集验标、切分与YOLO-Pose训练实战

📅 2026/9/26 15:26:09
健身动作关键点检测:数据集验标、切分与YOLO-Pose训练实战
简介面向目标检测与关键点检测任务这是一套含1758张图片的健身动作关键点检测数据集覆盖自下而上、平板支撑、杠铃弯举、硬拉和深蹲五类动作标注采用YOLO格式并提供边界框与关键点坐标可直接用于主流框架训练。资源包共2000个文件以txt标注文件1758个和jpg图片240个为主另有yaml配置与docx说明文档压缩包整体69.05MB。图片已划分训练、验证、测试集方便模型训练与评估。目前已有68人学习下载。借助该数据集开发者可快速构建健身动作识别与姿态评估模型用于自动纠正错误动作、辅助虚拟教练和运动健康监测研究或教学人员也能基于真实动作标注进行运动生物力学与计算机视觉的交叉分析降低项目门槛。1. 健身动作关键点检测数据集先验标再训练别急着解压如果你准备搭一套“AI 私教”或动作质量评估系统第一步不是选模型而是找一份拿得到手、标注可靠的关键点检测数据集。这份健身动作关键点检测数据集压缩包从命名看就是一批健身动作图片加关键点标注用来做人体姿态估计的训练或评测落点通常在深蹲、硬拉、卧推这些有明确关节角度的动作上。适合谁做动作计数、姿态比对的算法工程师和研究生都绕不开它。我的建议是拿到之后先花四十分钟验标再动训练脚本健身动作数据最怕左右点标反、缺标、视角单一这三类问题等训练阶段暴露再回头排查比一开始就把标注层问题排干净要贵得多。2. 拆包验数先确认标注格式和关键点骨架再写训练脚本2.1 解压前先验包用 unzip 替代图形界面顺手避开三个编码坑拿到这样的数据集压缩包我一般不会直接双击解压。先打开终端把压缩包当成一个只读的归档来检查# 1. 看内部目录结构只列文件名不落盘 zipinfo -1 健身动作关键点检测数据集_20251122_222751.zip | head -50 # 2. 逐文件做 CRC 校验坏的压缩包在训练阶段才暴露就晚了 unzip -t 健身动作关键点检测数据集_20251122_222751.zip # 3. 正式解压中文文件名按 GBK 转 UTF-8 unzip -O gbk 健身动作关键点检测数据集_20251122_222751.zip -d ./pose_dataset第一行的head -50只让你看到文件列表开头足够判断目录层次是images/和annotations/分开还是图片、JSON 平铺在同一个目录下。平铺结构的 zip 多半是个人整理后续要用脚本自己建索引分层结构的才好接现成工具。第二行的unzip -t会逐文件报 CRC 状态任何一条CRC failed都说明这个文件在下载或上传过程中坏掉了。图片坏半截还能看出异常标注 JSON 坏半截就直接解析报错而且报错位置和缺失内容毫无关联拿到手时最不好排查。第三行用-O gbk指定文件名编码是为那些在 Windows 简体中文环境打包的数据集准备的。不加这个参数解出来的中文目录名会变成乱码Python 的 glob 匹配匹配不到训练脚本就会报“找不到图片”。-d ./pose_dataset是让解压结果落到独立目录别顺手解到当前文件夹里。后面做数据切分时目录边界清晰能省不少事。我见过不少新手直接解压到桌面训练路径写错或者把标注和图片混在一起回头清理起来比解压还累。注意如果压缩包带密码但提示并不合理先别急着研究密码移除工具。很多第三方分发场景里zip 可能只设置了“伪加密”标志位文件内容并没有真正加密用 7-Zip 能看到文件列表但解压时提示密码错误。这种情况优先回头找原始压缩包重新分发不要花时间去找来路不明的破解工具安全风险比数据集本身的问题大得多。解压完做一次“数量核对”顺带看一眼图片尺寸是不是只有一种。一个压缩包里如果混着 640×480 的监控截图和 1080×1920 的手机竖拍训练时的尺度差异会让关键点归一化产生系统性偏差这种偏差在正常训练流程里很难自动纠正。# 压缩包列表数量和实际落盘数量必须一致 echo 压缩包内文件数$(zipinfo -1 健身动作关键点检测数据集_20251122_222751.zip | wc -l) echo 实际解压文件数$(find ./pose_dataset -type f | wc -l) # 抽查前 5 张图片尺寸确认数据源是否单一 python3 - PY from PIL import Image import glob for p in sorted(glob.glob(pose_dataset/images/**/*.jpg, recursiveTrue))[:5]: im Image.open(p) print(p, im.size) PYzipinfo -1列出的文件数和find实际数出的数量如果对不上优先怀疑解压中断或 zip 里有同名覆盖。图片尺寸抽查代码列出前 5 张就行目的是看分布不是看细节。如果跨度很大后面的训练配置里imgsz就要保守一些640 通常比 1280 稳。我在实际工作中踩坑频率最高的就是编码和文件名。健身动作数据集很多在中文环境建立文件名里有“深蹲_正面_01.jpg”这种编码处理不好前面所有步骤都会卡在一个看起来莫名其妙的路径错误上。这类问题跟模型无关纯粹是文件系统的编码约定在作妖。2.2 读取标注结构先确认是 COCO、自定义 JSON 还是 OpenPose 输出解压完先别写任何解析代码直接把标注 JSON 的前三层结构打出来import json def walk(obj, prefix, depth0, max_depth3): if depth max_depth: return if isinstance(obj, dict): for k in list(obj.keys())[:8]: v obj[k] if isinstance(v, (dict, list)): print(f{prefix}{k}: {type(v).__name__}, 长度{len(v)}) walk(v, prefix , depth 1) else: print(f{prefix}{k}: {type(v).__name__} {v}) elif isinstance(obj, list) and len(obj) 0: print(f{prefix}[0]: {type(obj[0]).__name__}) walk(obj[0], prefix , depth 1) with open(pose_dataset/annotations/train.json, r, encodingutf-8) as f: data json.load(f) walk(data)把max_depth设成 3 是为了防止把几十万条记录整个打出来把终端刷爆。前两层告诉你标注的骨架第三层告诉你单条记录里每个字段的类型和取值。健身动作关键点数据集的标注格式我见过的九成落在下面三类里标准 COCO 格式顶层是images、annotations、categories三个 key。annotations里每条记录包含image_id、bbox、keypoints、num_keypoints关键点是一维数组长度是点数乘 3三个一组x、y、v。自定义 JSON顶层是单个数组每个元素是一个样本图片路径和关键点放在同一层。这种格式没有统一标准重点看关键点数组是平铺还是嵌套左右点的顺序是“左髋、右髋”还是“右髋、左髋”。OpenPose 导出格式顶层有people列表每人一组 18 或 25 个关键点。这里最容易踩坑OpenPose 的点序和 COCO 不一样比如它把鼻子放在第 0 位、脖子在第 1 位很多人拿这份数据直接套 COCO 的骨架定义画出来的图全是错位的。判断方法很简单看到images和annotations顶层键就是 COCO看到顶层直接是列表多半是自定义看到people立刻查一份 OpenPose 索引表别凭经验猜测。即使是人脸数据集那种成熟任务左右眼顺序错一位评价体系就会整体偏掉骨架关键点同理。2.3 关键点骨架定义17 点还是健身专用直接决定模型上限确认格式之后下一步看关键点集合本身。这份数据集的用途是健身动作不是通用人体跟踪17 个 COCO 点够用吗我的判断是够看不够评价。关键点方案覆盖部位在健身动作里的表现常见坑COCO 17 点头、肩、肘、腕、髋、膝、踝深蹲、硬拉大致能看但脚掌位置没有点位踝点被遮挡时缺标率很高硬拉重心判断失效MPII 16 点髋部只给一个中心点左右髋单独角度算不出来骨盆倾斜这类指标直接无从下手健身专用 25 点以上左右髋、膝、踝之外可能还有脚趾、脚后跟、肩胛最贴合动作质量评估标注成本高数据集量通常偏小深蹲质量看髋关节与膝关节角度硬拉看髋膝踝是否同步发力引体向上看肘和肩的伸展。如果数据集没有左髋和右髋这两个独立点角度就算不出来。这类信息从 JSON 里可以直接确认找到第一条标注把keypoints数组按三个一组切开对照一份点名字典数一数下肢关键点有几个。还要检查每个关键点有没有可见性字段。COCO 的可见性分 0、1、20 是未标注1 是标注了但被遮挡2 是可见。很多个人整理的数据集偷懒全部填 2导致被遮挡的点也被当成可见点参与计算模型被迫去猜看不见的关节位置。健身动作里手扶杠铃、膝盖被杠铃杆挡住都是常态可见性字段如果不可信后续所有指标都会产生偏移。最后一件事确认关键点坐标的原点和图像尺寸是一套坐标系。部分数据集在裁剪图上标点但正文图是全尺寸两套坐标系对不上画轮廓时线段会整体漂移。这一步先记下下一章做可视化就能直接看到有没有问题。3. 从 JSON 标注到可训练样本按人切分、归一化与 YOLO-Pose 转换3.1 数据切分按人不按图同一人的连续帧不能横跨训练验证集合健身动作数据集大量来自视频抽帧一个练习者连续几十帧做同一个动作每帧长得很像。如果按图随机做 train/val 切分同一人的相邻帧会同时出现在两边模型实际上通过背景和衣物记住了“这个人”验证 AP 能虚高好几个点。正确做法是按人分组切分。import json, random with open(pose_dataset/annotations/all.json, r, encodingutf-8) as f: data json.load(f) # 先按 person_id 分组避免同一个人横跨 train 和 val groups {} for ann in data[annotations]: key ann.get(person_id, ann[image_id]) groups.setdefault(key, []).append(ann) ids list(groups.keys()) random.seed(42) random.shuffle(ids) split_idx int(len(ids) * 0.8) train_ids, val_ids set(ids[:split_idx]), set(ids[split_idx:]) train_anns [a for a in data[annotations] if a.get(person_id, a[image_id]) in train_ids] val_anns [a for a in data[annotations] if a.get(person_id, a[image_id]) in val_ids] # 图片清单也要跟着标注联动筛选避免训练集引用到验证集图片 train_images {a[image_id] for a in train_anns} val_images {a[image_id] for a in val_anns} print(ftrain 人数 {len(train_ids)}val 人数 {len(val_ids)}) print(ftrain 图片数 {len(train_images)}val 图片数 {len(val_images)})这段脚本的关键点是key ann.get(person_id, ann[image_id])优先用person_id分组实在没有才退回按图分组。如果压缩包里只有image_id而没有人的标识视频连续帧通常文件名带序号前缀可以按文件名前缀近似分组。random.seed(42)固定随机数不然每次切分结果不同后面的对比实验没有可复现性。把 8:2 当作默认值可以但更稳的做法是按动作类别做分层切分每个动作类别内部各自按人分 8:2再合并。否则可能整个训练集里深蹲的人全是 A 类体型验证集里全是 B 类体型模型学到的其实是体型和拍摄背景的组合特征。3.2 归一化与 YOLO-Pose 标签转换坐标格式里最容易错的三处切分完成后把标注转成训练框架需要的格式。以 YOLO-Pose 为例每张图片对应一个 txt 文件每行代表一个人类别、目标框的归一化中心点和宽高后面跟着一串关键点归一化坐标def coco_to_yolopose(ann, img_w, img_h): # ann 结构来自 COCObbox、keypoints、category_id x, y, w, h ann[bbox] # YOLO 的 bbox 是中心点坐标COCO 是左上角坐标必须换算 cx_n (x w / 2) / img_w cy_n (y h / 2) / img_h w_n w / img_w h_n h / img_h parts [str(ann[category_id]), f{cx_n:.6f}, f{cy_n:.6f}, f{w_n:.6f}, f{h_n:.6f}] kps ann[keypoints] # 一维数组三像素一组x, y, visible for i in range(0, len(kps), 3): kx, ky, kv kps[i], kps[i 1], kps[i 2] parts.append(f{kx / img_w:.6f}) parts.append(f{ky / img_h:.6f}) parts.append(str(int(kv))) # visible 保持 0/1/2不归一化 return .join(parts)三个最容易错的地方第一COCO 的 bbox 是左上角坐标YOLO 要的是中心点坐标必须把x w / 2换算成中心点直接拿x除以图宽会整体偏半个框。第二关键点坐标除以的是整张图的宽高不是 bbox 的宽高。YOLO-Pose 要求关键点归一化到图片尺度如果误除以 bbox 宽高生成的坐标会全部挤在一个小范围内。第三可见性数字不要归一化也不要顺手改成 1保持 0/1/2 原值。YOLO-Pose 的可见性字段用 0 表示缺失这个和 COCO 含义一致可以直接透传。整数坐标除以大分辨率会得到很长的循环小数存成0.333333这种 6 位精度足够不要只保留 3 位0.333和0.334之差在 1920 宽的图上是 2 个像素小目标关键点会因此抖动。3.3 最小可跑训练配置用 YOLOv8-pose 在本地跑通一个 epoch转换完标签需要一个能直接跑的训练配置。MMPose 功能全但依赖链长YOLOv8-pose 对单体数据集更友好配置简单适合先跑通再换重模型。# fitness_pose.yaml path: ./pose_dataset train: images/train val: images/val kpt_shape: [17, 3] # 17 个关键点每点 3 个值x, y, visible names: 0: squat 1: deadlift 2: pushupyolo pose train \ modelyolov8n-pose.pt \ datafitness_pose.yaml \ epochs100 \ imgsz640 \ batch16 \ device0kpt_shape必须和标注里的点数一致。如果你的数据集是 25 点这里写[25, 3]否则模型加载后输出维度对不上训练直接报 shape mismatch。modelyolov8n-pose.pt是姿态估计预训练权重千万别用yolov8n.pt那个没有关键点头加载时会报结构不匹配。imgsz640对健身动作足够这类图片大量来自视频截图分辨率本来就不高强行拉到 1280 只会放大 JPEG 压缩噪声。batch16按显存调拿不准就降成 8先保证能跑完一个 epoch。第一次训练不追求精度目标只有一个确认数据链路是通的。如果 loss 能正常下降、验证脚本能画出预测骨架这个数据集就已经进入可用状态了。4. 训练前把坏数据挑出来可视化抽检、可见率统计与类别不均衡4.1 抽 50 张把关键点叠回原图肉眼先过一次关训练前先做一轮人工抽检这件事省不掉。随机抽 50 条标注把关键点和骨架画回原图肉眼判断点是否落在正确位置from PIL import Image, ImageDraw import json, random with open(pose_dataset/annotations/train.json, r, encodingutf-8) as f: data json.load(f) samples random.sample(data[annotations], 50) # 骨架连接关系按关键点索引给成对的关系 SKELETON [(0, 1), (1, 2), (2, 3), (3, 4), (1, 5), (5, 6), (6, 7), (1, 8), (8, 9), (9, 10), (10, 11), (8, 12), (12, 13), (13, 14)] for s in samples: img Image.open(s[image_path]).convert(RGB) draw ImageDraw.Draw(img) kps s[keypoints] pts [] for i in range(0, len(kps), 3): x, y, v kps[i], kps[i 1], kps[i 2] pts.append((x, y, v)) if v 0: r 5 draw.ellipse([x - r, y - r, x r, y r], fillred) for a, b in SKELETON: pa, pb pts[a], pts[b] if pa[2] 0 and pb[2] 0: draw.line([pa[:2], pb[:2]], filllime, width3) out fcheck_out/{s[image_id]}.jpg img.save(out)检查时重点看三类异常点飞到身体外面说明坐标原点和图片尺寸不一致左右腿的线交叉错位说明关键点左右顺序标反某个动作类整片缺标说明原标注过程漏了该动作。50 张里如果超过 5 张有明显问题这份数据集的标注可靠度就要打问号别继续往下走先回去处理标注。4.2 逐点统计可见率一个关键点缺标过半整个动作类都要返工人眼抽检只能发现质变问题量化问题要靠可见率统计。每个关键点在所有标注中的可见比例直接决定了这个点能不能被模型学出来import json with open(pose_dataset/annotations/train.json, r, encodingutf-8) as f: data json.load(f) kp_visible {} total 0 for ann in data[annotations]: kps ann[keypoints] total 1 for i in range(0, len(kps), 3): idx i // 3 v kps[i 2] kp_visible[idx] kp_visible.get(idx, 0) (1 if v 0 else 0) print(f标注总数 {total}) for idx in sorted(kp_visible.keys()): rate kp_visible[idx] / total print(f关键点 {idx}: 可见率 {rate:.1%})可见率低于 40% 的关键点基本学不出来。模型面对大量缺标点只能把预测结果往“平均位置”上拉验证 AP 会被这个点拖低好几个点。比如硬拉动作里踝点经常被杠铃杆挡住可见率掉到 30% 以下这时要么砍掉这个点要么把包含该点的图片单独筛选出来重新标注。硬撑着一个大部分缺失的点去训练收益是负的。4.3 类别不均衡健身动作的样本分布天然就是“长尾”健身数据集的类别分布几乎都是长尾深蹲、硬拉、卧推这类常见动作图片量大引体向上、划船这类动作量少腹部和平衡动作可能只有零星几张。先跑一句统计python3 - PY import json with open(pose_dataset/annotations/train.json, r, encodingutf-8) as f: data json.load(f) counts {} for ann in data[annotations]: c ann.get(category_id, 0) counts[c] counts.get(c, 0) 1 for c, n in sorted(counts.items(), keylambda x: -x[1]): print(f类别 {c}: {n} 条) PY看到分布后按这个表决定策略样本量占比处理策略理由占总量 60% 以上正常参与训练数据量足够模型学出稳定姿态占 10% 到 30%重复采样让每个 batch 里比例均衡单纯加权容易让少数类过拟合低于 5% 且标注质量存疑考虑删除或单独训练少量错误标注对整体 loss 污染很大我倾向于对少数类做重复采样而不是调 loss 权重因为权重改变梯度方向训练过程更难控制。重复采样的做法是把少数类样本按倍数复制进训练列表而标注文件本身不动这样方便随时调整采样倍数。如果某个类别连 200 张都没有直接删掉比硬训练更划算这个体量学出来的姿态没有统计意义。5. 健身关键点数据集避坑五条“现象→原因→解决”的记录5.1 现象压缩包解完文件数对不上标注却还能读解压后训练时频繁报找不到图片但标注 JSON 能正常加载。用zipinfo -1 | wc -l和find | wc -l一比发现图片少了十几张。原因通常是下载时 zip 尾部损坏或者打包时图片重复覆盖。unzip -t报 CRC failed 的文件解压出来的是半截内容但 Windows 图形界面解压不一定会停下来。解决重新下载完整压缩包再做一次unzip -t全量校验。绝对不要拿其他数据集的图补进去充数总数对上了但 id 对应关系不一样反而更难排查。换用 7-Zip 或命令行解压比右键菜单可靠得多。5.2 现象训练 loss 收敛得很低验证 AP 一直上不去loss 降到 0.05 以下验证 AP 卡在 0.3 附近不动。原因有三类一是 train/val 切分按图没按人模型记住了人但验证时遇到新人不认识二是标注里左右点系统性标反模型学到的分布是左右混淆的三是验证阶段没关数据增强图片被随机翻转后关键点也跟着错位。解决先关闭所有增强用关增强后的配置重跑 20 个 epoch如果 AP 立刻回升问题出在增强配置。再把 val 集预测结果画 50 张人眼检查看左右是否交叉。最后确认切分是按人而不是按帧。三步走完基本能定位到问题所在。按人切分这一步最容易被忽略效果也最隐蔽AP 虚高 5 个点以上是常事。5.3 现象预测骨架左右腿交叉深蹲膝盖内扣检不出来深蹲动作里模型预测的左膝跑到右腿位置画出来的骨架呈 X 形交叉。原因多半是数据增强里的左右翻转没有同步交换关键点标签。翻转图片后左膝在像素上变成了右侧如果标签里的左右索引没有跟着交换模型就接收了一组矛盾的监督信号。个人整理的数据集转换脚本里这步经常被漏掉。解决确认训练配置里翻转增强是开启的同时检查骨架定义文件里的左右索引是否成对。自写训练脚本的话要给翻转单独准备索引交换表翻转后left_knee的标签要替换成right_knee的 ground truth。用现成框架时不要自己写数据增强直接用框架自带的翻转逻辑它们处理过左右交换。5.4 现象训练集上成绩漂亮换手机实拍就崩训练集里 AP 到 0.75拿手机侧拍一段真实动作关键点直接飘到背景上。原因通常是数据集的拍摄条件太单一。健身动作数据集很多是从同一部视频逐帧抽取的背景固定、机位固定、灯光固定模型学到的是“背景特征 人体轮廓”的组合而不是纯动作语义。训练时它靠背景区域就能粗略定位人的位置实拍场景背景一变就失效。解决训练前统计图片来源如果发现 90% 图片同一个分辨率、同一个背景先做 HSV 和亮度增强再考虑加入随机裁剪的 scale jitter。最有效的还是补数据在不同机位、不同背景条件下额外采集 200 到 500 张目标场景图片做轻量微调。注意别用太狠的随机擦除增强把髋部区域挖掉后动作结构信息就断了。5.5 现象同一份配置换随机种子 AP 差 3 个点以上服务器上跑训练换一次随机种子验证 AP 在 0.43 和 0.47 之间跳。原因只有一个数据集偏小验证集本身的样本方差大于模型随机性。健身动作数据集通常只有几千张按人切分后验证集更小验证集里多一个人或少一个人结果波动就很明显。解决固定random、numpy、torch三个库的随机种子评估阶段关闭数据增强保证每次验证用的是同一批图片、同一个顺序。然后同一份配置跑三次取中位数作为最终指标而不是用一次结果定结论。如果中位数之间还差 2 个点以上问题不在调参在数据量回去补数据或者缩小验证集方差这时候调学习率没有意义。6. 用 OKS 和关节角度验证动作质量一个不用二次开发的评估技巧6.1 自己写一个 OKS 计算函数替换“平均像素误差”这个不靠谱口径关键点检测的评测指标COCO 官方用的是 OKS不是平均像素误差。平均像素误差在小框上吃亏健身动作每个人在画面里的占比差异很大近距离深蹲和远距离硬拉的目标框面积能差一倍像素误差直接比没有可比性。OKS 把误差用目标框面积归一化才是横向可比的import numpy as np def compute_oks(pred_kps, gt_kps, bbox_area, sigmas): pred_kps / gt_kps: shape (N, 3)每行是 x, y, visible bbox_area: 目标框面积像素平方 sigmas: 每个关键点的归一化系数用 COCO 官方的更准 s np.sqrt(bbox_area) dist2 (pred_kps[:, 0] - gt_kps[:, 0]) ** 2 (pred_kps[:, 1] - gt_kps[:, 1]) ** 2 scale2 (2 * s * sigmas) ** 2 oks_per_kpt np.exp(-dist2 / (scale2 1e-6)) # 只计算两边都可见的关键点 mask (gt_kps[:, 2] 0) (pred_kps[:, 2] 0) if mask.sum() 0: return 0.0 return float(oks_per_kpt[mask].mean())sigmas每个关键点不一样COCO 官方有对应数值表COCO 的 17 点可以直接用现成的一份。如果数据集是健身专用点数没有官方值就统一填一个中等值做对比比如 0.07。实操中低于 0.5 的预测点基本是不可用的我一般会把 OKS 低于 0.4 的样本拉出来单独看这些样本往往对应缺标或遮挡严重的标注。6.2 算关节角度把“动作是否标准”从主观判断变成阈值判断训练模型只是第一步产品要回答的问题是“这个深蹲够不够低”“硬拉有没有弓背”。关节角度是最直接的计算方式import numpy as np def joint_angle(a, b, c): 计算以 b 为顶点的关节角度a、c 是相邻关键点坐标 返回角度制数值0 到 180 度 ba a - b bc c - b cos_a np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc) 1e-6) return np.degrees(np.arccos(np.clip(cos_a, -1.0, 1.0)))判断深蹲质量看髋角和膝角髋角取肩、髋、膝三点膝角取髋、膝、踝三点。动作最低点时膝角小于 90 度基本可以判定“蹲得不够低”。这个结论可以从关键点角度直接推出不需要额外训练动作分类模型。对连续视频帧的预测结果先把角度做 5 帧中值滤波再判阈值单帧抖动通常有 3 到 5 度的噪声直接上阈值会频繁误判。用这份健身动作关键点检测数据集的 ground truth 作为“标准动作”参考区间算预测角度和标准角度的差值差值就是动作质量评分。这个评分向产品、向用户解释都直观得多比丢一个 OKS 数出去更有说服力。我现在拿到任何一份关键点数据集第一天的固定动作是三件事解压前验包标注可视化抽 50 张按人切分验证。这三件事帮我挡住过两次左右点标反和一次由损坏压缩包引发的半截数据。姿态估计的网络结构大家都熟差距基本来自数据标注的稳定性和检查流程是否到位数据稳了后面的 OKS 和角度评估才谈得上可信。希望帮到你。本文还有配套的精品资源点击获取

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案