用python做美食网站常州网站建设效果
2026/3/28 19:39:50 网站建设 项目流程
用python做美食网站,常州网站建设效果,开设公司网站,沈阳设计网站AI体态矫正入门#xff1a;从数据标注到模型部署#xff0c;1小时1块学全流程 引言#xff1a;为什么瑜伽教练需要AI体态矫正#xff1f; 作为一名瑜伽教练#xff0c;你可能经常遇到这样的困扰#xff1a;学员在练习时难以自我感知体态是否正确#xff0c;而一对一纠…AI体态矫正入门从数据标注到模型部署1小时1块学全流程引言为什么瑜伽教练需要AI体态矫正作为一名瑜伽教练你可能经常遇到这样的困扰学员在练习时难以自我感知体态是否正确而一对一纠正又耗时耗力。传统方法依赖教练肉眼观察但细微的关节角度偏差往往难以实时捕捉。AI体态矫正技术通过计算机视觉自动检测人体关键点如肩、肘、腕、髋等关节位置能实时分析学员姿势与标准动作的差异。想象一下这就像给瑜伽垫装了一个智能镜子能自动标出身体各部位该调整的方向。本文将带你从零开始用1小时完成一个基础体态矫正系统的全流程开发。即使你只有最基础的Python知识也能跟着步骤实现准备包含瑜伽姿势的标注数据集训练一个轻量级关键点检测模型部署为可实时检测的Web服务 提示本文使用的CSDN算力平台已预装PyTorch和OpenPose环境无需手动配置CUDA等复杂环境1元即可开启GPU加速训练。1. 数据准备快速创建瑜伽姿势数据集1.1 收集基础素材建议从以下渠道获取初始素材 - 用手机拍摄学员的标准动作正面/侧面各3张 - 下载COCO数据集中的瑜伽相关图片约500张 - 使用Stable Diffusion生成不同体型的虚拟瑜伽图片将图片统一存放在./yoga_images文件夹建议至少准备200张多样本图片。1.2 使用LabelStudio标注关键点安装标注工具CSDN镜像已预装pip install label-studio启动标注界面label-studio start按以下步骤标注 1. 创建Yoga Pose项目 2. 选择Key Point标注类型 3. 定义17个关键点参考COCO标准 - 0-鼻子 1-左眼 2-右眼 3-左耳 4-右耳 - 5-左肩 6-右肩 7-左肘 8-右肘 - 9-左手腕 10-右手腕 11-左髋 12-右髋 - 13-左膝 14-右膝 15-左踝 16-右踝标注完成后导出JSON格式的标注文件yoga_keypoints.json。1.3 数据预处理使用Python脚本转换数据格式import json import numpy as np with open(yoga_keypoints.json) as f: data json.load(f) # 转换为COCO格式 annotations [] for item in data: keypoints [] for kp in item[keypoints]: keypoints.extend([kp[x], kp[y], 2]) # 2表示可见 annotations.append({ image_id: item[image], keypoints: keypoints, num_keypoints: 17 }) np.save(yoga_annotations.npy, annotations)2. 模型训练轻量级关键点检测实战2.1 选择预训练模型我们采用轻量化的SimpleBaseline模型ResNet18 backbone适合教学场景import torch from torchvision.models import resnet18 model resnet18(pretrainedTrue) # 修改最后一层为17个关键点的预测 model.fc torch.nn.Linear(512, 17*2) # 每个点预测(x,y)2.2 编写数据加载器即使不熟悉PyTorch也能直接使用这段代码from torch.utils.data import Dataset import cv2 class YogaDataset(Dataset): def __init__(self, img_dir, ann_file): self.img_dir img_dir self.annotations np.load(ann_file) def __len__(self): return len(self.annotations) def __getitem__(self, idx): img_path f{self.img_dir}/{self.annotations[idx][image_id]} img cv2.imread(img_path) img cv2.resize(img, (256, 256)) # 统一尺寸 keypoints self.annotations[idx][keypoints] # 归一化处理 img torch.from_numpy(img).float() / 255.0 keypoints torch.from_numpy(np.array(keypoints)).float() return img.permute(2,0,1), keypoints # 转为CxHxW格式2.3 启动GPU训练在CSDN算力平台选择PyTorch 1.12 CUDA 11.3镜像运行训练脚本import torch.optim as optim dataset YogaDataset(yoga_images, yoga_annotations.npy) dataloader torch.utils.data.DataLoader(dataset, batch_size32) optimizer optim.Adam(model.parameters(), lr0.001) criterion torch.nn.MSELoss() # 转移到GPU device torch.device(cuda:0 if torch.cuda.is_available() else cpu) model model.to(device) for epoch in range(50): for imgs, kps in dataloader: imgs, kps imgs.to(device), kps.to(device) optimizer.zero_grad() outputs model(imgs) loss criterion(outputs, kps.view(-1,17*2)) loss.backward() optimizer.step() print(fEpoch {epoch}, Loss: {loss.item():.4f}) # 保存模型 torch.save(model.state_dict(), yoga_pose.pth)3. 模型部署打造实时检测Web服务3.1 使用Flask创建API创建app.py文件from flask import Flask, request, jsonify import cv2 import numpy as np app Flask(__name__) model.load_state_dict(torch.load(yoga_pose.pth)) model.eval() app.route(/predict, methods[POST]) def predict(): file request.files[image] img cv2.imdecode(np.frombuffer(file.read(), np.uint8), cv2.IMREAD_COLOR) img cv2.resize(img, (256,256)) img_tensor torch.from_numpy(img).float().permute(2,0,1).unsqueeze(0)/255.0 with torch.no_grad(): outputs model(img_tensor.to(device)) return jsonify({keypoints: outputs.cpu().numpy().tolist()}) if __name__ __main__: app.run(host0.0.0.0, port5000)3.2 启动服务并测试在终端运行python app.py用Postman测试API 1. 选择POST方法地址http://127.0.0.1:5000/predict2. 在Body中添加form-data字段key选imagevalue上传图片文件 3. 查看返回的关键点坐标3.3 开发简易前端界面创建index.html实现实时检测!DOCTYPE html html body video idvideo width640 height480 autoplay/video canvas idcanvas width640 height480/canvas button idcapture分析姿势/button script const video document.getElementById(video); const canvas document.getElementById(canvas); const ctx canvas.getContext(2d); // 开启摄像头 navigator.mediaDevices.getUserMedia({ video: true }) .then(stream video.srcObject stream); document.getElementById(capture).addEventListener(click, () { ctx.drawImage(video, 0, 0, 640, 480); const image canvas.toDataURL(image/jpeg); fetch(http://127.0.0.1:5000/predict, { method: POST, body: JSON.stringify({image}), headers: {Content-Type: application/json} }) .then(res res.json()) .then(data { // 绘制关键点 const kps data.keypoints[0]; for(let i0; i17; i){ const x kps[i*2]*640, y kps[i*21]*480; ctx.fillStyle red; ctx.fillRect(x-5, y-5, 10, 10); } }); }); /script /body /html4. 效果优化与进阶技巧4.1 提升检测精度的3个技巧数据增强训练时随机旋转±30°和亮度调整 python from torchvision import transformstransform transforms.Compose([ transforms.RandomRotation(30), transforms.ColorJitter(brightness0.2) ]) 关键点滤波使用移动平均平滑检测结果 python from collections import deque history deque(maxlen5) # 保存最近5帧def smooth_keypoints(current_kps): history.append(current_kps) return np.mean(history, axis0) 姿势评分计算与标准动作的余弦相似度 python from scipy.spatial.distance import cosinedef compare_pose(detected_kps, standard_kps): return 1 - cosine(detected_kps.flatten(), standard_kps.flatten()) 4.2 常见问题解决问题1关键点位置跳动严重解决方案增加历史帧平滑处理见4.1技巧2问题2特定姿势检测不准解决方案补充该姿势的标注数据至少20张新图问题3GPU内存不足解决方案减小batch_size改为16或8总结通过本教程你已经完成了一个完整的AI体态矫正系统开发流程数据准备使用LabelStudio标注瑜伽姿势关键点200张图片即可启动模型训练基于SimpleBaseline的轻量级模型50个epoch快速收敛服务部署用Flask搭建API配合前端实现实时检测效果优化通过数据增强、关键点滤波提升稳定性关键收获 1. 无需深厚编程基础借助PyTorch和预训练模型快速实现专业功能 2. 从数据标注到Web部署的全流程实践掌握AI项目完整生命周期 3. 特别适合瑜伽、健身等需要实时姿势反馈的场景建议下一步尝试 - 收集更多学员实际数据优化模型 - 开发不同瑜伽体式的标准动作库 - 增加语音提示功能如请抬高左臂获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

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

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

立即咨询