Pytorch+Python实现人体关键点检测
创始人
2024-01-16 19:58:19
0

用Python+Pytorch工程代码对人体进行关键点检测和骨架提取,并实现可视化。

使用背景:

物体检测为许多视觉任务提供动力,如实例分割、姿态估计、跟踪和动作识别。它在监控、自动驾驶和视觉答疑中有下游应用。当前的对象检测器通过紧密包围对象的轴向包围框来表示每个对象。然后,他们将目标检测减少到大量潜在目标边界框的图像分类。对于每个边界框,分类器确定图像内容是特定的对象还是背景。

人体关键点检测属于目标检测的一个小分支,在很多虚拟应用场景中需要使用,比如说姿态识别、虚拟穿衣等应用领域。今天给大家推荐一个好用的人体关键点检测项目代码,并基于该代码进行一定的升级,使得提取的人体关键点可以独立显示在可视化界面当中。


使用环境:

本项目通过Python实现,运行环境为:
Python 3.7
Pytorch 1.8.1
Opencv 4.5.4.60


使用代码:

本项目实现基于rwightman的代码进行改进实现,
参考代码地址:https://github.com/rwightman/posenet-python

源代码效果(左图为原图,右图为检测结果图):
在这里插入图片描述

修改后的效果:
在这里插入图片描述


代码使用步骤:

如下的代码都基于参考github链接源码进行直接修改,找到上下行代码参考修改的具体位置。
本代码以源代码视频应用文件举例(webcam_demo.py)

第一步:
在原项目工程代码中找到webcam_demo.py
修改视频获取路径(基于源代码修改):

def main():model = posenet.load_model(args.model)model = model.cuda()output_stride = model.output_stride# cap = cv2.VideoCapture(args.cam_id)cap = cv2.VideoCapture('3.mp4')cap.set(3, args.cam_width)cap.set(4, args.cam_height)#背景视频读取cap2 = cv2.VideoCapture('2.mp4')cap2.set(3, args.cam_width)cap2.set(4, args.cam_height)

然后在视频显示代码部分添加提取关键点显示界面:

            min_pose_score=0.15, min_part_score=0.1)cv2.imshow('posenet', overlay_image)# cv2.imshow('net', overlay_image)# cv2.resizeWindow('posenet', 500, 900)overlay_image2 = posenet.draw_skel_and_kp2(display_image2,display_image2, pose_scores, keypoint_scores, keypoint_coords,min_pose_score=0.15, min_part_score=0.1)cv2.imshow('posenet2', overlay_image2)#提取skeleton# cv2.namedWindow("dance", 0)# cv2.resizeWindow("dance", 600, 900)  # 设置窗口大小## cv2.imshow("dance", img)frame_count += 1if cv2.waitKey(1) & 0xFF == ord('q'):breakprint('Average FPS: ', frame_count / (time.time() - start))

第二步:
修改posenet/utils.py代码部分:
添加提取的骨架的视频背景函数:

#背景视频
def read_cap2(cap, scale_factor=1.0, output_stride=16):res2, img2 = cap.read()if not res2:raise IOError("webcam failure")return _process_input2(img2, scale_factor, output_stride)

添加定义骨架关键点绘制函数:

def draw_skel_and_kp2(img, img2, instance_scores, keypoint_scores, keypoint_coords,min_pose_score=0.1, min_part_score=0.1):        #将置信度由0.5改为0.3bk=img2out_img = imgadjacent_keypoints = []cv_keypoints = []for ii, score in enumerate(instance_scores):if score < min_pose_score:continuenew_keypoints = get_adjacent_keypoints(keypoint_scores[ii, :], keypoint_coords[ii, :, :], min_part_score)adjacent_keypoints.extend(new_keypoints)for ks, kc in zip(keypoint_scores[ii, :], keypoint_coords[ii, :, :]):if ks < min_part_score:continuecv_keypoints.append(cv2.KeyPoint(kc[1], kc[0], 10. * ks))if cv_keypoints:bk = cv2.drawKeypoints(bk, cv_keypoints, outImage=np.array([]), color=(255, 255, 0),flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)out_img = cv2.polylines(bk, adjacent_keypoints, isClosed=False, color=(255, 255, 0),thickness=20)return out_img

然后就能以一个纯粹的骨架关键点样式显示在另一个UI界面啦:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上面用的是段dy的舞蹈视频做demo~


Reference:

1、https://github.com/rwightman/posenet-python
2、Zhou, Xingyi, Dequan Wang, and Philipp Krähenbühl. “Objects as points.” arXiv preprint arXiv:1904.07850 (2019).

上一篇:Node.js之Hello World

下一篇:贼动

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...