主机屋 建网站教程博学云网站建设
2026/3/10 2:20:08 网站建设 项目流程
主机屋 建网站教程,博学云网站建设,网站模版参考,如何利用国外网站做自媒体AI人体骨骼识别部署教程#xff1a;支持批量图片处理的脚本编写 1. 引言 1.1 学习目标 本文将带你从零开始#xff0c;完整掌握如何在本地环境中部署基于 Google MediaPipe 的高精度人体骨骼关键点检测系统#xff0c;并进一步扩展其功能——实现对多张图片的批量自动化处…AI人体骨骼识别部署教程支持批量图片处理的脚本编写1. 引言1.1 学习目标本文将带你从零开始完整掌握如何在本地环境中部署基于 Google MediaPipe 的高精度人体骨骼关键点检测系统并进一步扩展其功能——实现对多张图片的批量自动化处理。通过本教程你将学会快速搭建 MediaPipe Pose 推理环境使用 WebUI 进行单图可视化测试编写 Python 脚本实现非交互式批量图像骨骼识别自动保存带骨架标注的结果图与关键点坐标数据处理常见路径、格式和性能问题最终成果是一个可直接投入实际应用如运动分析、姿态评估、动作捕捉预处理的轻量级本地化 AI 工具链。1.2 前置知识建议读者具备以下基础 - 熟悉 Python 基础语法 - 了解基本文件操作与路径管理 - 有简单的 OpenCV 或图像处理经验更佳无需深度学习背景所有模型均已封装集成。1.3 教程价值相比在线 API 或复杂框架如 TensorFlow/PyTorch 自建模型MediaPipe 提供了极致轻量 高精度 CPU 友好的解决方案。本文不仅教你“怎么用”更聚焦于“如何工程化落地”——将演示如何把一个交互式 Web 工具转化为可嵌入生产流程的批处理脚本。2. 环境准备与基础验证2.1 启动镜像并访问 WebUI本项目基于预配置的 CSDN 星图镜像已内置mediapipe、opencv-python、flask等依赖库。操作步骤如下在 CSDN星图平台 搜索 “MediaPipe Pose” 镜像并启动等待容器初始化完成后点击平台提供的HTTP 访问按钮打开 WebUI 页面界面包含上传区与结果展示区✅ 此时无需任何代码即可完成单张图片的人体骨骼识别。2.2 单图测试验证功能上传一张包含人物的 JPG/PNG 图像建议为全身照系统将在数秒内返回结果原图上叠加绘制出33个关键点红点关节间以白色连线构成“火柴人”骨架支持站立、坐姿、跳跃、瑜伽等多种姿态若能成功显示骨架图则说明环境正常可进入下一步——脚本化改造。3. 批量处理脚本开发3.1 核心思路设计WebUI 虽然直观但无法满足批量处理需求如分析100张训练动作照片。我们需要绕过前端直接调用 MediaPipe 的 Python API 实现后端批处理。核心流程为读取图片 → MediaPipe 检测关键点 → 绘制骨架 → 保存结果图 导出坐标我们将编写一个独立.py脚本支持命令行参数输入输入输出目录。3.2 安装依赖如未预装虽然镜像通常已预装所需包但仍建议运行一次检查pip install mediapipe opencv-python numpy pathlib3.3 完整批处理脚本实现以下是可直接运行的完整 Python 脚本支持递归读取指定文件夹内的所有图像并输出带骨架的图片及 JSON 格式的关节点坐标。# batch_pose_detector.py import cv2 import mediapipe as mp import os import json from pathlib import Path # 初始化 MediaPipe Pose 模型 mp_pose mp.solutions.pose mp_drawing mp.solutions.drawing_utils pose mp_pose.Pose( static_image_modeTrue, # 图像模式非视频流 model_complexity1, # 模型复杂度0(Lite), 1(Standard), 2(Full) enable_segmentationFalse, # 是否启用分割节省资源设为False min_detection_confidence0.5 # 最小检测置信度 ) def detect_and_save(image_path, output_img_dir, output_json_dir): 对单张图片进行骨骼检测并保存结果 image cv2.imread(str(image_path)) if image is None: print(f[警告] 无法读取图片: {image_path}) return # 转换为 RGBMediaPipe 需要 rgb_image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results pose.process(rgb_image) # 若检测到姿态 if results.pose_landmarks: # 绘制骨架 mp_drawing.draw_landmarks( image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS, landmark_drawing_specmp_drawing.DrawingSpec(color(0, 0, 255), thickness2, circle_radius2), connection_drawing_specmp_drawing.DrawingSpec(color(255, 255, 255), thickness2) ) # 提取33个关键点坐标x, y, z, visibility landmarks [] for idx, lm in enumerate(results.pose_landmarks.landmark): landmarks.append({ id: idx, x: round(lm.x, 4), y: round(lm.y, 4), z: round(lm.z, 4), visibility: round(lm.visibility, 4) }) # 保存标注图像 output_img_path output_img_dir / image_path.name cv2.imwrite(str(output_img_path), image) # 保存关键点JSON json_filename image_path.stem .json output_json_path output_json_dir / json_filename with open(output_json_path, w, encodingutf-8) as f: json.dump(landmarks, f, indent2) print(f✅ 成功处理: {image_path.name}) else: print(f⚠️ 未检测到人体: {image_path.name}) def main(input_dir, output_img_dir, output_json_dir): 主函数遍历目录处理所有图片 input_path Path(input_dir) output_img_dir Path(output_img_dir) output_json_dir Path(output_json_dir) # 创建输出目录 output_img_dir.mkdir(parentsTrue, exist_okTrue) output_json_dir.mkdir(parentsTrue, exist_okTrue) # 支持常见图像格式 supported_exts (.jpg, .jpeg, .png, .bmp) image_files [f for f in input_path.iterdir() if f.suffix.lower() in supported_exts] if not image_files: print(❌ 输入目录中未找到支持的图片文件) return print(f 发现 {len(image_files)} 张图片开始批量处理...) for img_file in image_files: detect_and_save(img_file, output_img_dir, output_json_dir) print( 批量处理完成) if __name__ __main__: # 用户可修改参数区域 INPUT_DIR ./input_images # 输入图片文件夹 OUTPUT_IMG_DIR ./output_images # 输出带骨架图 OUTPUT_JSON_DIR ./output_keypoints # 输出关键点JSON # main(INPUT_DIR, OUTPUT_IMG_DIR, OUTPUT_JSON_DIR)3.4 脚本使用说明目录结构规划project/ ├── batch_pose_detector.py ├── input_images/ │ ├── person1.jpg │ └── person2.png ├── output_images/ # 自动生成 └── output_keypoints/ # 自动生成运行方式确保当前目录下有input_images文件夹并放入待处理图片然后执行python batch_pose_detector.py输出内容output_images/每张原图叠加骨架后的结果图output_keypoints/*.json每个图片对应的 33 个关键点坐标含可见性3.5 关键技术解析模型参数说明参数值说明static_image_modeTrue固定图像模式适用于非视频流场景model_complexity1中等复杂度平衡速度与精度可选 0/1/2min_detection_confidence0.5最小置信度阈值过滤低质量检测⚠️ 若环境允许 GPU 加速可尝试complexity2提升精度否则推荐保持默认。坐标系解释MediaPipe 返回的关键点为归一化坐标0~1 -x: 从左到右 -y: 从上到下 -z: 深度相对距离越远值越大例如x0.5, y0.3表示位于图像水平中心、垂直上方30%位置。可视化样式自定义可通过修改DrawingSpec调整颜色与粗细mp_drawing.DrawingSpec(color(0, 255, 0), thickness3, circle_radius3) # 绿色粗点4. 实践问题与优化建议4.1 常见问题排查问题现象可能原因解决方案图片读取失败路径错误或格式不支持检查文件扩展名是否在.jpg/.png列表中无骨架输出无人体或遮挡严重更换清晰正面图像测试内存溢出大量图片一次性加载过多改为分批次处理或增加 swap输出图像模糊OpenCV 写入压缩设置编码参数避免压缩见下文避免 JPEG 压缩损失cv2.imwrite(str(output_img_path), image, [cv2.IMWRITE_JPEG_QUALITY, 95])4.2 性能优化技巧并发处理提升吞吐量使用concurrent.futures实现多线程加速python from concurrent.futures import ThreadPoolExecutorwith ThreadPoolExecutor(max_workers4) as executor: for img_file in image_files: executor.submit(detect_and_save, img_file, output_img_dir, output_json_dir) 跳过小图或低分辨率图像添加尺寸过滤逻辑python h, w, _ image.shape if w 320 or h 240: print(f跳过低分辨率图: {w}x{h}) continue仅导出需要的关键点如只需肩、肘、腕可在landmarks中筛选特定 IDpython useful_ids [11, 12, 13, 14, 15, 16] # 左右肩、肘、手腕 landmarks [lm for lm in landmarks if lm[id] in useful_ids]5. 总结5.1 核心收获回顾本文系统讲解了如何将 MediaPipe Pose 模型从 WebUI 工具升级为可批量处理的工程化脚本主要内容包括✅ 搭建本地化、免依赖的骨骼识别环境✅ 编写完整 Python 脚本实现自动批处理✅ 输出可视化图像与结构化关键点数据JSON✅ 解决路径、格式、性能等实际问题✅ 提供可扩展的优化方向多线程、裁剪、过滤该方案特别适合用于 - 运动科学数据分析 - 动作规范性比对 - 视频帧级姿态提取预处理 - 教学演示素材生成5.2 下一步学习建议尝试结合pandas将 JSON 数据转为 CSV 表格便于统计分析使用matplotlib绘制关键点动态轨迹图接入摄像头实现实时视频流处理static_image_modeFalse结合角度计算模块判断动作标准度如深蹲角度获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询