网站优化公司认准乐云seo,网站注册公司,wordpress网站破解,新零售平台公司有哪些文章目录 0 简介**1、人体姿态估计简介**2、人体姿态估计数据集4、实现原理5、实现神经网络6 部分关键代码7 最后 0 简介
今天学长向大家分享一个毕业设计项目
毕业设计 基于机器视觉的人体姿态行为识别
项目运行效果#xff1a; 毕业设计 深度学习人体姿势姿态识别#x…文章目录0 简介**1、人体姿态估计简介**2、人体姿态估计数据集4、实现原理5、实现神经网络6 部分关键代码7 最后0 简介今天学长向大家分享一个毕业设计项目毕业设计 基于机器视觉的人体姿态行为识别项目运行效果毕业设计 深度学习人体姿势姿态识别 项目分享:见文末!1、人体姿态估计简介人体姿态估计Human Posture Estimation是通过将图片中已检测到的人体关键点正确的联系起来从而估计人体姿态。人体关键点通常对应人体上有一定自由度的关节比如颈、肩、肘、腕、腰、膝、踝等如下图。通过对人体关键点在三维空间相对位置的计算来估计人体当前的姿态。进一步增加时间序列看一段时间范围内人体关键点的位置变化可以更加准确的检测姿态估计目标未来时刻姿态以及做更抽象的人体行为分析例如判断一个人是否在打电话等。人体姿态检测的挑战1. 每张图片中包含的人的数量是未知的。 2. 人与人之间的相互作用是非常复杂的比如接触、遮挡等这使得联合各个肢体即确定一个人有哪些部分变得困难。 3. 图像中人越多计算复杂度越大计算量与人的数量正相关这使得实时检测变得困难。2、人体姿态估计数据集由于缺乏高质量的数据集在人体姿势估计方面进展缓慢。在近几年中一些具有挑战性的数据集已经发布这使得研究人员进行研发工作。人体姿态估计常用数据集COCO Keypoints challengeMPII Human Pose DatasetVGG Pose DatasetCMU Panoptic Dataset本案例所用数据集。人体姿态估计技术在体育健身、动作采集、3D试衣、舆情监测等领域具有广阔的应用前景人们更加熟悉的应用就是抖音尬舞机。4、实现原理输入一幅图像经过卷积网络提取特征得到一组特征图然后分成两个岔路分别使用 CNN网络提取Part Confidence Maps 和 Part Affinity Fields得到这两个信息后我们使用图论中的 Bipartite Matching偶匹配 求出Part Association将同一个人的关节点连接起来由于PAF自身的矢量性使得生成的偶匹配很正确最终合并为一个人的整体骨架最后基于PAFs求Multi-Person Parsing—把Multi-person parsing问题转换成graphs问题—[Hungarian Algorithm(匈牙利算法)]匈牙利算法是部图匹配最常见的算法该算法的核心就是寻找增广路径它是一种用增广路径求二分图最大匹配的算法。)5、实现神经网络阶段一VGGNet的前10层用于为输入图像创建特征映射。阶段二使用2分支多阶段CNN其中第一分支预测身体部位位置例如肘部膝部等的一组2D置信度图S。 如下图第二分支预测一组部分亲和度的2D矢量场L其编码部分之间的关联度。 如下图所示显示颈部和左肩之间的部分亲和力。阶段三 通过贪心推理解析置信度和亲和力图对图像中的所有人生成2D关键点。6 部分关键代码POSE_PAIRS [ [Neck, RShoulder], [Neck, LShoulder], [RShoulder, RElbow], [RElbow, RWrist], [LShoulder, LElbow], [LElbow, LWrist], [Neck, RHip], [RHip, RKnee], [RKnee, RAnkle], [Neck, LHip], [LHip, LKnee], [LKnee, LAnkle], [Neck, Nose], [Nose, REye], [REye, REar], [Nose, LEye], [LEye, LEar] ] inWidth args.width inHeight args.height net cv.dnn.readNetFromTensorflow(graph_opt.pb) cap cv.VideoCapture(args.input if args.input else 0) while cv.waitKey(1) 0: hasFrame, frame cap.read() if not hasFrame: cv.waitKey() break frameWidth frame.shape[1] frameHeight frame.shape[0] net.setInput(cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (127.5, 127.5, 127.5), swapRBTrue, cropFalse)) out net.forward() out out[:, :19, :, :] # MobileNet output [1, 57, -1, -1], we only need the first 19 elements assert(len(BODY_PARTS) out.shape[1]) points [] for i in range(len(BODY_PARTS)): # Slice heatmap of corresponging bodys part. heatMap out[0, i, :, :] # Originally, we try to find all the local maximums. To simplify a sample # we just find a global one. However only a single pose at the same time # could be detected this way. _, conf, _, point cv.minMaxLoc(heatMap) x (frameWidth * point[0]) / out.shape[3] y (frameHeight * point[1]) / out.shape[2] # Add a point if its confidence is higher than threshold. points.append((int(x), int(y)) if conf args.thr else None) for pair in POSE_PAIRS: partFrom pair[0] partTo pair[1] assert(partFrom in BODY_PARTS) assert(partTo in BODY_PARTS) idFrom BODY_PARTS[partFrom] idTo BODY_PARTS[partTo] if points[idFrom] and points[idTo]: cv.line(frame, points[idFrom], points[idTo], (0, 255, 0), 3) cv.ellipse(frame, points[idFrom], (3, 3), 0, 0, 360, (0, 0, 255), cv.FILLED) cv.ellipse(frame, points[idTo], (3, 3), 0, 0, 360, (0, 0, 255), cv.FILLED)7 最后项目运行效果毕业设计 深度学习人体姿势姿态识别 项目分享:见文末!