人体姿态评估中有两种常见的显示方式,分别是火柴人效果与BodyPix效果。其中火柴人效果本质就是基于关键点的深度学习模型推理以后的显示效果;Bodypix本质就就是语义分割模型,基于Deeplabv3+ 与ResNet34构建的一个人体语义分割模型。
火柴人
主要是基于关键点的人体姿态评估显示方式,基于YOLOv8等人体姿态评估的关键点模型均可以实现,演示代码运行效果如下:

BodyPix
主要是基于语义分割的人体姿态评估显示方式,支持对人体分割为10或者15个标签,演示代码运行效果如下:

实现代码
我把相关的代码使用PyQT5封装为一个线程,相关的代码如下:
classInferenceThread(QtCore.QThread): fire_stats_signal=QtCore.pyqtSignal(dict) def__init__(self,settings): super(InferenceThread,self).__init__() self.settings=settings self.detector=None ifself.settings.model_type==0: self.detector=YOLOv8ORTPose(settings) self.detector.show_skeleton=True ifself.settings.model_type==1: self.detector=YOLOv8ORTPose(settings) self.detector.show_skeleton=True ifself.settings.model_type==2: weight_file_path="D:/projects/body_part_best.onnx" self.detector=BodyPixSegment(weight_file_path) self.input_image=settings.input_image defrun(self): ifself.detectorisNone: return ifself.input_image.endswith(".mp4"): cap=cv.VideoCapture(self.input_image) whileTrue: ret,frame=cap.read() ifretisTrue: dst=self.detector.infer_image(frame) self.fire_stats_signal.emit({"result":frame,"mask":dst}) else: break else: frame=cv.imread(self.input_image) dst=self.detector.infer_image(frame) self.fire_stats_signal.emit({"result":frame,"mask":dst}) self.fire_stats_signal.emit({"done":"done"}) return点击【开始推理】按钮的执行代码如下:
defon_yolov8_infer(self): image_file=self.image_file_edit.text() label_file=self.label_file_path.text() model_file=self.weight_file_path.text() iflen(image_file)==0orlen(label_file)==0orlen(model_file)==0: QtWidgets.QMessageBox.warning(self,"警告","参数文件未选择...") return settings=DLInferSettings() settings.weight_file_path=self.weight_file_path.text() settings.label_map_file_path=self.label_file_path.text() settings.score_threshold=self.conf_spinbox.value() settings.input_image=image_file settings.model_type=0 ifself.rbtn0.isChecked(): settings.model_type=0 ifself.rbtn1.isChecked(): settings.model_type=1 ifself.rbtn2.isChecked(): settings.model_type=2 settings.target_deploy=1 self.work_thread=InferenceThread(settings) self.work_thread.fire_stats_signal.connect(self.on_update_result_image) self.work_thread.finished.connect(self.work_thread.deleteLater) self.work_thread.start() self.startBtn.setStyleSheet("background-color:gray;color:white") self.startBtn.setEnabled(False) self.stopBtn.setStyleSheet("background-color:cyan;color:black") self.stopBtn.setEnabled(True)
运行结果如下:


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
代码
+关注
关注
30文章
4941浏览量
73137 -
深度学习
+关注
关注
73文章
5590浏览量
123900
原文标题:两种常见的人体姿态评估显示方式
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
ANSA人体模型姿态调整工具的使用案例
中国体征人体数字模型(AC-HUMs)是中国汽研主持研发的人体有限元模型。BETA CAE Systems与中国汽研保持紧密合作,前、后处理软件(ANSA/META)会全面支持AC-HUMs系列模型。在软件中提供对应工具用于人体
两种散热路径的工艺与应用解析
背景:两种常见的散热设计思路 在大电流或高功率器件应用中,散热和载流能力是PCB设计中必须解决的难题。常见的两种思路分别是: 厚铜板方案:通过整体增加铜箔厚度(如3oz、6oz甚至更高
振弦式应变计两种数据传输方式介绍
着数据采集的效率与可靠性。下面给大家介绍振弦式应变计两种数据传输方式。一、有线传输:稳定可靠的传统方案有线传输是振弦式应变计最传统的数据传输方式,通过专用电缆将传感器与采集终
两种驱动方式下永磁直线开关磁链电机的研究
摘要:永磁开关磁链电机数学模型可以等效为永磁无刷电机,普遍采用方波驱动方式。在有限元基础上分析6/7极直线式磁链电机反电势波形,采用方波和正弦波驱动方式,比较两种方式下的电流、电压、平
发表于 06-09 16:18
渗压计如何实现精准测量?两种主流方式与应用场景解析
渗压计是监测岩土工程、大坝渗流压力变化的核心设备,其测量精度和效率直接影响工程安全评估的可靠性。目前主流的测量方式分为现场手动测量与自动化监测两类,分别适用于不同的工程场景。一、现场测量:智能读数仪
常见网络负载均衡的几种方式
常见网络负载均衡的几种方式包括:DNS负载均衡、反向代理负载均衡、IP负载均衡、应用层负载均衡、链路层负载均衡。以下是小编对几种常见的网络负载均衡方式及其详细展开介绍。
使用ADS1258的时候调试了它的两种工作方式,寄存器的值会发生错乱,为什么?
我在使用ADS1258的时候调试了它的两种工作方式,一是auto channel,一种是fix channel;使用第一种方式都是正常的,
发表于 02-10 08:21
屏蔽双绞线的绞合方式分类
屏蔽双绞线的绞合方式主要涉及到线芯的排列与绞合程度,以下是关于屏蔽双绞线绞合方式的详细解释: 一、绞合方式的分类 屏蔽双绞线的绞合方式根据绞合程度的不同,主要分为同轴绞合和反向扭绞
基于ISOS测试标准,两种封装方式对钙钛矿太阳能电池性能影响分析
钙钛矿太阳能电池(PSCs)极具潜力,但湿度和氧气会导致其性能快速下降,因此封装技术对提高其稳定性至关重要。文章研究了两种常见的封装策略:基于层压的玻璃-玻璃封装(COM)和基于胶水的封装(LAB
solidworks正版软件:永久版权和订阅许可 两种购买方式解析和选择
SOLIDWORKS软件分从购买方式上划分为永久版权的形式和订阅即年付费两种方式,代理商硕迪科技向您详细解析 SOLIDWORKS 的永久版权和订阅许可的区别,各自的优劣势以及适合的应用场景。以帮助您做出适合的决策。

常见人体姿态评估显示方式的两种方式
评论