十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

人体姿势检索实战指南:用 Pose-Search 三步从海量图片中找出指定动作

人体姿势检索实战指南:用 Pose-Search 三步从海量图片中找出指定动作 人体姿势检索实战指南用 Pose-Search 三步从海量图片中找出指定动作【免费下载链接】pose-searchx6ud.github.io/pose-search项目地址: https://gitcode.com/gh_mirrors/po/pose-search本次文章采用动手实战式结构以一次真实的找动作图片经历开场引出项目随后依次讲解姿势识别原理、环境搭建、完整检索体验、匹配机制拆解和扩展方向章节顺序与原文完全不同叙述视角改为第一人称体验视角。先说一个让人抓狂的场景做运动类内容的朋友大概都有过这种经历素材库里有几千张图片想找一张左腿抬起、右臂向后摆的照片却只能一张张翻。翻到最后眼睛都快花了还得不到满意的结果。想用文字搜右腿弯曲45度、身体前倾30度这种描述搜索引擎根本听不懂。这就是 Pose-Search 想解决的问题——它是一款基于骨骼关键点的人体姿势检索引擎让你像拖拽一个3D小人摆动作那样定义目标姿势然后从图片库里自动筛出最接近的照片。这套人体姿势检索方案把只能靠肉眼和关键词的活儿变成了一个可计算的数学问题。别被计算机视觉吓到原理其实很直白你可能会问图片又不是文字机器怎么知道我摆的是什么动作答案藏在每个画面里的骨架上。Pose-Search 借助 Google 的 MediaPipe Pose 模型对每张图片做一次透视把人体的肩、肘、腕、髋、膝、踝等关节位置统统定位出来一共提取33 个骨骼关键点。每个关键点不仅有平面坐标还带着深度信息和可见度评分相当于给每个人体建了一张三维数字名片。这一步对应源码里的src/utils/detect-pose.ts。它把检测结果分成两套数据一套是归一化后的画面坐标对应你在图上看到的红点标注另一套是真实空间中的世界坐标对应三维信息。两套数据都被存进landmarks.dat配合photos.json里的图片元数据就构成了一个骨骼点图片的检索数据库。说白了检索的本质不再是看图而是比骨架。动作像不像取决于两组骨骼点之间的几何关系接近不接近。三步完成环境搭建跟着做就能跑起来别急部署这套姿势检索工具比你想象的简单不需要懂模型训练只需要 Node.js 环境。第一步拉取仓库并安装依赖git clone https://gitcode.com/gh_mirrors/po/pose-search cd pose-search npm install第二步启动开发服务npm run dev浏览器打开本地地址就能进入界面。如果想打包成生产版本执行npm run build即可构建过程会自动做类型检查并压缩资源。第三步导入你的图片数据系统默认图片来自 Unsplash。你只需到 Unsplash 开放平台申请一个应用密钥App Key然后访问/#/editor编辑器页面把密钥粘贴到弹出的输入框里系统就会自动拉取图片并完成骨骼关键点标注。整个标注过程由 MediaPipe 在浏览器本地完成所有检测结果会写回landmarks.dat和photos.json下次启动直接读取不需要重复计算。效果最直观的姿势检索方式拖拽3D小人环境跑起来之后就到了最有意思的环节。编辑器界面里会有一个可拖拽的 3D 人体模型——这就是你的姿势模板。你可以用鼠标转动视角、扳动各个关节把它摆成你想要的姿势比如让滑板运动员做一个腾空抓板动作。摆好姿势后从下拉框里选择要匹配的身体部位比如Left Elbow或Right Knee再点一下搜索按钮系统就会遍历整个图片库按相似度从高到低返回前 100 个结果这个数量上限可以在配置里改。点击任意一张缩略图还能放大查看原图验证匹配效果。这里有个很贴心的细节搜索结果左上角会带翻转标记。因为人体动作天然有左右对称性系统遇到左手动作但图片里是右手完成的情况会通过水平翻转来处理保证左叉腰也能匹配到右叉腰的照片。凭什么匹配得准拆开匹配器给你看搜索准不准全靠src/Search/impl/目录下那一排专用匹配器。每个匹配器都实现同一个PoseMatcher接口只有两个核心方法prepare()负责读取你摆好的 3D 模板姿势算出它的角度特征match()负责拿这些特征去和图片库里的每张照片逐一比对算出相似度分数分数越高越靠前。为什么拆成这么多个文件因为局部匹配比整体匹配聪明得多。全身一起比头发、衣服、背景都会干扰判断而单独比较肘部弯曲角度、肩部旋转方向、膝盖的夹角每个部位都能用最合适的几何算法误差自然更小。比如MatchElbow会同时比较上臂和前臂的朝向角、肘部弯折角、以及手臂相对躯干的方位多个角度误差相乘得到总分——只要某一项差太多总分就会迅速拉低保证不滥竽充数。更妙的是相机无关匹配器MatchShoulderCameraUnrelated这类文件。普通的 2D 角度会受拍摄角度影响同一个动作从正面拍和从侧面拍画面里的夹角完全不同。这类匹配器只用世界坐标计算关节相对躯干的方向把拍摄视角的影响抹掉这就是系统宣传的视角无关能力。另外每个匹配器都很自觉如果某张照片里目标部位的可见度太低低于配置里的LANDMARK_VISIBILITY_ACCEPTABLE_THRESHOLD默认 0.4它直接返回空结果宁可不出现在列表里也不拿噪音数据凑数。除了搜图它还能用在哪儿把检索能力搭好之后应用场景其实比想象中宽体育训练分析教练把标准技术动作存进库里运动员想练手臂完全伸展、身体成直线的空中姿态直接拖 3D 模型搜出参考图。康复动作核对治疗师可以检索膝关节弯曲 90~120 度的示范图让患者照着标准执行方便又直观。动画制作找参考动画师需要奔跑中左腿前摆、右腿后蹬的中间帧过去翻素材库半小时现在几秒钟出结果。行为异常监测建立一个正常姿态基准库凡是偏离基准太多的姿势都会被标记出来可用于特定场景的安防辅助。如果以后想接入自己的图片数据源也留好了口子PhotoDataset负责数据读写图片库里每一张图的元数据和骨骼点都能通过它增删改查替换数据源不需要动匹配逻辑。给想动代码的人留的几条路这套项目最大的优点就是模块化想改哪里都很清楚新增一个身体部位的匹配器在src/Search/impl/下新建类实现PoseMatcher接口再在Search.ts的匹配器注册表里登记一下界面上立刻多一个可选项。自定义3D可视化src/components/SkeletonModelCanvas/里加载了头部、躯干、四肢等一组 OBJ 模型文件可以替换成你自己的骨骼模型。调整检索体验src/config.ts里MAX_NUM_OF_SEARCH_RESULTS控制返回数量LANDMARK_VISIBILITY_ACCEPTABLE_THRESHOLD控制关键点可信度门槛改这两个数就能在召回更多和结果更准之间找平衡。现在该轮到你动手了回顾一下Pose-Search 用 33 个骨骼关键点把姿势变成可计算的数据用分部位匹配器和视角无关算法保证精度再用 3D 模型拖拽提供最直观的姿势定义方式——整套流程环环相扣却只靠浏览器就能跑起来。与其对着这篇文章想象不如现在就git clone下来npm install之后去编辑器里拖两下 3D 小人搜一把自己最想要的那个动作。你会发现找一张姿势对的图从来没这么痛快过。【免费下载链接】pose-searchx6ud.github.io/pose-search项目地址: https://gitcode.com/gh_mirrors/po/pose-search创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表