opencv 计数后不动了 训练模型时_使用OpenCV对运动员的姿势进行检测

点击上方“小白学视觉”,选择加"星标"或“置顶”

重磅干货,第一时间送达

如今,体育运动的热潮日益流行。同样,以不正确的方式进行运动的风险也在增加。有时可能会导致严重的伤害。考虑到这些原因,提出一种以分析运动员的关节运动,来帮助运动员纠正姿势的解决方案。

人体姿势估计是计算机视觉领域的重要问题。它的算法有助于定位手腕,脚踝,膝盖等部位。这样做是为了使用深度学习和卷积神经网络的概念提供个性化的运动训练体验。特别是对于体育活动而言,训练质量在很大程度上取决于图像或视频序列中人体姿势的正确性。

从图像或视频序列中检测运动员的姿势

数据集

正确选择数据集以对结果产生适当影响也是非常必要的。在此姿势检测中,模型在两个不同的数据集即COCO关键点数据集和MPII人类姿势数据集上进行了预训练。

1. COCO:COCO关键点数据集是一个多人2D姿势估计数据集,其中包含从Flickr收集的图像。迄今为止,COCO是最大的2D姿势估计数据集,并被视为测试2D姿势估计算法的基准。COCO模型有18种分类。COCO输出格式:鼻子— 0,脖子—1,右肩—2,右肘—3,右手腕—4,左肩—5,左手肘—6,左手腕—7,右臀部—8,右膝盖—9,右脚踝—10,左臀部—11,左膝—12,左脚踝—13,右眼—14,左眼—15,右耳—16,左耳—17,背景—18

2. MPII:MPII人体姿势数据集是一个多人2D姿势估计数据集,包含从Youtube视频中收集的近500种不同的人类活动。MPII是第一个包含各种姿势范围的数据集,也是第一个在2014年发起2D姿势估计挑战的数据集。MPII模型输出15分。MPII输出格式:头—0,脖子—1,右肩—2,右肘—3,右腕—4,左肩—5,左肘—6,左腕—7,右臀部—8,右膝盖—9,右脚踝—10,左臀部—11,左膝盖—12,左脚踝—13,胸部—14,背景—15

这些点是在对数据集进行处理并通过卷积神经网络(CNN)进行全面训练时生成的。

具体步骤

步骤1:需求收集(模型权重)和负载网络

训练有素的模型需要加载到OpenCV中。这些模型在Caffe深度学习框架上进行了训练。Caffe模型包含两个文件,即.prototxt文件和.caffemodel文件。

.prototxt文件指定了神经网络的体系结构。

.caffemodel文件存储训练后的模型的权重。

然后我们将这两个文件加载到网络中。

# Specify the paths for the 2 filesprotoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt"weightsFile = "pose/mpi/pose_iter_160000.caffemodel"# Read the network into Memorynet = cv2.dnn.readNetFromCaffe(protoFile, weightsFile)

步骤2:读取图像并准备输入网络

首先,我们需要使用blobFromImage函数将图像从OpenCV格式转换为Caffe blob格式,以便可以将其作为输入输入到网络。这些参数将在blobFromImage函数中提供。由于OpenCV和Caffe都使用BGR格式,因此无需交换R和B通道。

# Read imageframe = cv2.imread("image.jpg")# Specify the input image dimensionsinWidth = 368inHeight = 368# Prepare the frame to be fed to the networkinpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), (0, 0, 0), swapRB=False, crop=False)# Set the prepared object as the input blob of the networknet.setInput(inpBlob)

步骤3:做出预测并解析关键点

一旦将图像传递到模型,就可以使用OpenCV中DNN类的正向方法进行预测,该方法通过网络进行正向传递,这只是说它正在进行预测的另一种方式。

output = net.forward()

输出为4D矩阵:

第一个维度是图片ID(如果您将多个图片传递到网络)。

第二个维度指示关键点的索引。该模型会生成置信度图(在图像上的概率分布,表示每个像素处关节位置的置信度)和所有已连接的零件亲和度图。对于COCO模型,它由57个部分组成-18个关键点置信度图+ 1个背景+ 19 * 2个部分亲和度图。同样,对于MPI,它会产生44点。我们将仅使用与关键点相对应的前几个点。

第三维是输出图的高度。

第四个维度是输出图的宽度。

然后,我们检查图像中是否存在每个关键点。我们通过找到关键点的置信度图的最大值来获得关键点的位置。我们还使用阈值来减少错误检测。

置信度图

一旦检测到关键点,我们便将其绘制在图像上。

H = out.shape[2]W = out.shape[3]# Empty list to store the detected keypointspoints = []for i in range(len()):# confidence map of corresponding body's part.probMap = output[0, i, :, :]# Find global maxima of the probMap.minVal, prob, minLoc, point = cv2.minMaxLoc(probMap)# Scale the point to fit on the original imagex = (frameWidth * point[0]) / Wy = (frameHeight * point[1]) / Hif prob > threshold :cv2.circle(frame, (int(x), int(y)), 15, (0, 255, 255), thickness=-1, lineType=cv.FILLED)cv2.putText(frame, "{}".format(i), (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, 1.4, (0, 0, 255), 3, lineType=cv2.LINE_AA)# Add the point to the list if the probability is greater than the thresholdpoints.append((int(x), int(y)))else :points.append(None)cv2.imshow("Output-Keypoints",frame)cv2.waitKey(0)cv2.destroyAllWindows()

步骤4:绘制骨架

由于我们已经绘制了关键点,因此我们现在只需将两对连接即可绘制骨架。

for pair in POSE_PAIRS:partA = pair[0]partB = pair[1]if points[partA] and points[partB]:cv2.line(frameCopy, points[partA], points[partB], (0, 255, 0), 3)

结果

上面显示的输出向我们显示了运动员在特定时刻的准确姿势。下面是视频的检测结果。

项目源码:https://github.com/ManaliSeth/Athlete-Pose-Detection

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

openCV学习】38.车辆检测计数项目 8.经过观察,会发现,由于车内有车灯,车牌等物件,可能会在大车的轮廓框内包含一些小的车灯的,车牌的轮廓框,因此我们设置当宽和高大于某一个值的候,才绘制出显示框,这样就可以把车灯和车牌等干扰项给排除掉。3.去掉背景后的视频,不动的地方是黑色的,移动的地方会显现出白色,会发现有黑色的背景有会出现白色的小方块的噪声,因此采用腐蚀操作去除噪声(腐蚀)2.去噪后消除背景,在计算机视觉中,不动的叫背景,移动的叫前景(这里使用到了一个新的API,是关于去除视频背景的)进行视频背景去除后的视频截图。 阅读详情

相关推荐

基于Python+OpenCV图片人脸检测计数

一、项目背景与意义在现代社会中,人脸检测技术在多个领域都发挥着重要作用,如安全监控、人流统计、智能相册管理等。本项目旨在利用Python编程语言结合OpenCV库,实现图片中的人脸检测计数功能。通过自动识别和计数图片中的人脸数量,可以大大提高工作效率和准确性。二、技术原理本项目主要利用OpenCV库中的Haar级联分类器或深度学习模型(如MTCNN、SSD等)进行人脸检测。Haar级联分类器是一种基于机器学习的方法,通过训练大量的人脸和非人脸图像样本,构建出一个能够识别出人脸的级联分类器。

2301_79810943的博客 1333

Athlete-Pose-Detection-using-openCV-and-deep-learning-master

Athlete-Pose-Detection-using-openCV-and-deep-learning-master

基于Python+OpenCV人脸检测计数

一、项目背景与意义在现代社会,人脸检测计数技术在多个领域都发挥着重要作用,如公共安全监控、人流量统计、商业分析等。通过自动检测计数图像或视频中的人脸,可以帮助我们快速、准确地获取目标场景下的人员信息,为决策提供有力支持。本项目旨在利用Python编程语言结合OpenCV计算机视觉库,实现一个实、高效的人脸检测计数系统。二、技术框架与工具Python:Python作为一种简单易学且功能强大的编程语言,非常适合用于开发此类项目。

2301_79809972的博客 1403

openpose-1.7.0所有模型文件

包含openpose1.60或者1.7.0编译候需要的模型文件夹,注意这个是模型文件夹,编译候只需要复制models文件夹到源码对应目录即可。包含face,hand,pose模型

openpose官方模型库:pose_iter_xxxxxx.caffemodel

openpose官方模型库; 内文件包含: body_25(pose_deploy.prototxt; pose_iter_584000.caffemodel) coco(pose_deploy_linevec.prototxt; pose_iter_440000.caffemodel) mpi(pose_deploy_linevec.prototxt; pose_deploy_linevec_faster_4_stages.prototxt; pose_iter_160000.caffemodel) hand(pose_deploy.prototxt; pose_iter_102000.caffemodel) face(pose_deploy.prototxt; pose_iter_116000.caffemodel)

openpose-models,覆盖openpose/models下面的文件

openpose的模型文件,含face模型、hand模型、pose/body_25模型、pose/coco模型、pose/mpi模型

机器学习笔记 - MediaPipe了解 + 结合OpenCV进行人体姿势估计

MediaPipe 为直播和流媒体提供开源跨平台、可定制的 ML 解决方案。MediaPipe 是谷歌开发的开源框架。它是一个非常轻量级的多平台机器学习解决方案框架,可以在 CPU 上实运行。 MediaPipe 在后端使用 TensorFlow lite。使用检测器首先在框架内定位人 (ROI)。然后它使用 ROI 裁剪帧作为 INPUT 并预测 ROI 内的地标/关键点。mediaPipe 姿态估计器共检测到 33 个关键点。

学以致用 知行合一 8272

OpenCV学习】(九)目标识别之车辆检测计数

OpenCV学习】(九)目标识别之车辆检测计数 背景 本篇将具体介绍一个实际应用项目——车辆检测计数,在交通安全中是很重要的一项计数;当然,本次完全采用OpenCV进行实现,和目前落地的采用深度学习的算法并不相同,但原理是一致的;本篇将从基础开始介绍,一步步完成车辆检测计数的项目; 一、图像轮廓 本质:具有相同颜色或强度的连续点的曲线; 作用: 1、可用于图形分析; 2、应用于物体的识别与检测; 注意点: 1、为了检测的准确性,需要先对图像进行二值化或Canny操作; 2、画轮廓的候回修改输入的图像

weixin_40620310的博客 2万+

使用OpenCV的车辆检测计数系统

概述在本文中,我们将编写一个车辆计数检测系统。我们将使用OpenCV进行所有图像处理操作,并制作用于分类汽车和公交车的 haar 级联分类器,还可以制作你自己的 haar 级联分类器。范...

深度学习与计算机视觉 7069

你知道怎么使用OpenCV检测篮球运动员吗?

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一间送达 简介 通过使用深度学习和opencv,我们可以从视频剪辑中提取有趣的见解。请参阅下面的B / w ...

小白学视觉 1315

opencv traincascade 训练多核加速

修改opencv traincascade 代码,利用多核并行计算大幅提升查找负样本的速度

检测OpenCV训练的分类器性能

利用这个,可以通过自己训练的分类器检测到图片中的特征,专门写的一种通用项目,为 MFC源码,有兴趣的可以下载,有个小BUG,但无大碍 详情见文章 http://blog.csdn.net/mkr127/article/details/8930381

objectDetection:用于调整 opencv blob 检测器参数的简单 gui

物体检测 用于调整 opencv blob 检测器参数的简单 gui

OpenCV+深度学习预训练模型,简单搞定图像识别 

Opencv使用训练的深度学习模型,实现特定物体的识别

OpenCV——硬币检测计数的设计实现

1、阈值分割 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 使用函数cv2.threshold()进行简单的阈值处理 函数原型为:threshold(src, thresh, maxval, type[, dst]) -> retval, dst 返回值 retval:当前用来对像素值进行分类的低阈值,默认情况下和参数thresh相等 dst:二值化处理后的图

Sam's blog 8105

opencv实战——机器视觉检测计数

引言 在机器视觉中,有需要对产品进行检测计数。其难点无非是对于产品的图像分割。 由于之前网购的维生素片,有候忘了今天有没有吃过,就想对瓶子里的药片计数...在学习opencv以后,希望实现对于维生素片分割计数算法。本次实战在基于形态学的基础上又衍生出基于距离变换的分水岭算法,使其实现的效果更具普遍性。 基于形态学的维生素片检测计数 ????整体思路: 读取图片 形态学处理(在二值化前进行适......

明月清风@的博客 4266

基于OpenCV的手掌检测和手指计数

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一间送达利用余弦定理使用OpenCV-Python实现手指计数与手掌检测。手检测和手指计数接下来让我们一起探...

小白学视觉 3254
上一篇: 图层重命名快捷键_实际操作,在PS中如何批量给图层重命名并导出
下一篇: 小米平板刷机shell怎么退_小米MI PAD(小米平板)手机快速救砖,线刷教程分享,小白轻松救活手机...
阿顺-美格信
博客等级 码龄8年 21粉丝 84原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值