开源人体动作识别OpenPose的安装与测试

简介: 人体关键点检测对于描述人体姿态,预测人体行为至关重要。因此人体关键点检测是诸多计算机视觉任务的基础。其在动作分类,异常行为检测,以及人机交互等领域有着很广阔的应用前景,是计算机视觉领域中一个既具有研究价值、同时又极具挑战性的热门课题。

人体关键点检测对于描述人体姿态,预测人体行为至关重要。因此人体关键点检测是诸多计算机视觉任务的基础。其在动作分类,异常行为检测,以及人机交互等领域有着很广阔的应用前景,是计算机视觉领域中一个既具有研究价值、同时又极具挑战性的热门课题。图展示了开源的人体关键点识别demo。
image
image

相关数据集

LSP(Leeds Sports Pose Dataset):单人人体关键点检测数据集,关键点个数为14,样本数2K,在目前的研究中基本上被弃用;
FLIC(Frames Labeled In Cinema):单人人体关键点检测数据集,关键点个数为9,样本数2W,在目前的研究中基本上被弃用;
MPII(MPII Human Pose Dataset):单人/多人人体关键点检测数据集,关键点个数为16,样本数25K;
MSCOCO:多人人体关键点检测数据集,关键点个数为17,样本数多于30W,目前的相关研究基本上还需要在该数据集上进行验证;
AI Challenger:多人人体关键点检测数据集,关键点个数为14,样本数约38W,竞赛数据集;
PoseTrack:最新的关于人体骨骼关键点的数据集,多人人体关键点跟踪数据集,包含单帧关键点检测、多帧关键点检测、多人关键点跟踪三个人物,多于500个视频序列,帧数超过20K,关键点个数为15。

安装与实践

pytorch-openpose下载pytorch版本的源码之后,运行demo.py文件

body_estimation = Body('model/body_pose_model.pth')
hand_estimation = Hand('model/hand_pose_model.pth')

test_image = 'images/demo.jpg'
oriImg = cv2.imread(test_image)  # B,G,R order
candidate, subset = body_estimation(oriImg)
canvas = copy.deepcopy(oriImg)
canvas = util.draw_bodypose(canvas, candidate, subset)
# detect hand
hands_list = util.handDetect(candidate, subset, oriImg)

all_hand_peaks = []
for x, y, w, is_left in hands_list:
    # cv2.rectangle(canvas, (x, y), (x+w, y+w), (0, 255, 0), 2, lineType=cv2.LINE_AA)
    # cv2.putText(canvas, 'left' if is_left else 'right', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

    # if is_left:
        # plt.imshow(oriImg[y:y+w, x:x+w, :][:, :, [2, 1, 0]])
        # plt.show()
    peaks = hand_estimation(oriImg[y:y+w, x:x+w, :])
    peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], peaks[:, 0]+x)
    peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)
    # else:
    #     peaks = hand_estimation(cv2.flip(oriImg[y:y+w, x:x+w, :], 1))
    #     peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], w-peaks[:, 0]-1+x)
    #     peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)
    #     print(peaks)
    all_hand_peaks.append(peaks)

canvas = util.draw_handpose(canvas, all_hand_peaks)

plt.imshow(canvas[:, :, [2, 1, 0]])
plt.axis('off')
plt.show()

pth文件下载地址

检测效果

image
image

目录
相关文章
|
19天前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
28 1
|
19天前
|
Web App开发 测试技术 Python
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
|
19天前
|
Web App开发 测试技术 C++
Playwright安装与Python集成:探索跨浏览器测试的奇妙世界
Playwright是新兴的跨浏览器测试工具,相比Selenium,它支持Chrome、Firefox、WebKit,执行速度快,选择器更稳定。安装Playwright只需一条`pip install playwright`的命令,随后的`playwright install`会自动添加浏览器,无需处理浏览器驱动问题。这一优势免去了Selenium中匹配驱动的烦恼。文章适合寻求高效自动化测试解决方案的开发者。
22 2
|
19天前
|
网络安全 Docker 容器
测试开发环境下centos7.9下安装docker的minio
测试开发环境下centos7.9下安装docker的minio
34 1
|
19天前
|
JSON 应用服务中间件 Linux
skywalking内部测试服务器安装记录
skywalking内部测试服务器安装记录
19 0
|
7天前
|
Web App开发 测试技术 API
自动化测试工具Selenium的深度解析
【5月更文挑战第27天】本文旨在深入剖析自动化测试工具Selenium,探讨其架构、原理及应用。通过对其核心组件、运行机制及在实际项目中的应用案例进行详细解读,以期为软件测试人员提供全面、深入的理解与实践指导。
|
1天前
|
运维 安全 网络架构
【计算巢】网络模拟工具:设计与测试网络架构的有效方法
【6月更文挑战第1天】成为网络世界的超级英雄,利用网络模拟工具解决复杂架构难题!此工具提供安全的虚拟环境,允许自由设计和测试网络拓扑,进行性能挑战和压力测试。简单示例代码展示了创建网络拓扑的便捷性,它是网络设计和故障排查的“魔法棒”。无论新手还是专家,都能借助它探索网络的无限可能,开启精彩冒险!快行动起来,你会发现网络世界前所未有的乐趣!
【计算巢】网络模拟工具:设计与测试网络架构的有效方法
|
3天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试工具及其应用
传统的软件测试流程需要大量的人工投入,其效率低下且容易出现遗漏。而自动化测试工具的出现极大地提高了软件测试的效率和精度。本文将介绍几种常见的自动化测试工具及其应用,分析其优势和不足,并探讨在实际项目中的应用场景。
|
4天前
|
机器人 测试技术 API
软件测试中的自动化工具与策略
在当今快节奏的软件开发环境中,软件测试是确保产品质量的关键步骤之一。本文探讨了软件测试中的自动化工具和策略,介绍了常用的自动化测试工具,并探讨了自动化测试在提高效率、减少成本和增强测试覆盖率方面的优势。同时,还讨论了如何选择适合项目需求的自动化测试策略,并提供了一些建议和最佳实践。
10 0
|
5天前
|
消息中间件 监控 固态存储
性能工具之 Kafka 快速 BenchMark 测试示例
【5月更文挑战第24天】性能工具之 Kafka 快速 BenchMark 测试示例
15 1
性能工具之 Kafka 快速 BenchMark 测试示例