人体姿态评估中有两种常见的显示方式,分别是火柴人效果与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文章
4976浏览量
74376 -
深度学习
+关注
关注
73文章
5607浏览量
124624
原文标题:两种常见的人体姿态评估显示方式
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
PCBA清洗全攻略:手工VS自动,两种方式的区别!
23年PCBA一站式行业经验PCBA加工厂家今天为大家讲讲PCBA加工如何洗板?PCBA加工洗板的方法。PCBA洗板方法多样,可根据生产规模、产品特性及质量要求,从手工清洗与自动清洗两大方向中选
用PLC实现卷径计算的两种算法
卷径计算,是动态计算如钢卷,纸卷等存料量的一种方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法有两种,一种是根据机列速度(产线速度)和和被测卷的转动角速度求得;另一
两种常见的除法器工作原理
二进制除法器的本质是多次减法,直到余数小于除数为止。对应的两个N bit二进制数的除法算法如下。
1、设置2N bit寄存器A的低N位存放被除数,设置2N bit寄存器B的高N位存放除数,设置N
发表于 10-21 13:28
ANSA人体模型姿态调整工具的使用案例
中国体征人体数字模型(AC-HUMs)是中国汽研主持研发的人体有限元模型。BETA CAE Systems与中国汽研保持紧密合作,前、后处理软件(ANSA/META)会全面支持AC-HUMs系列模型。在软件中提供对应工具用于人体
两种散热路径的工艺与应用解析
背景:两种常见的散热设计思路 在大电流或高功率器件应用中,散热和载流能力是PCB设计中必须解决的难题。常见的两种思路分别是: 厚铜板方案:通过整体增加铜箔厚度(如3oz、6oz甚至更高
正确的连接电机传动轴的几种常见连接方式及其优缺点
在工业机械和自动化设备中,电机与传动轴的连接方式直接影响设备的运行效率、稳定性和使用寿命。选择合适的连接方式需要综合考虑负载特性、安装精度、维护便利性以及成本等因素。以下是几种常见的电机传动轴连接
常见的变压器接线组别的连接方式
在电力系统中,变压器起着变换电压、传输电能的作用。而其绕组方式对于供电系统的运行稳定性和安全性具有重要意义。常见的变压器绕组有YNyn0、Dyn11、Y/△、YNd11等,下面将对这些绕组进行详细解析。
振弦式应变计两种数据传输方式介绍
着数据采集的效率与可靠性。下面给大家介绍振弦式应变计两种数据传输方式。一、有线传输:稳定可靠的传统方案有线传输是振弦式应变计最传统的数据传输方式,通过专用电缆将传感器与采集终
两种驱动方式下永磁直线开关磁链电机的研究
摘要:永磁开关磁链电机数学模型可以等效为永磁无刷电机,普遍采用方波驱动方式。在有限元基础上分析6/7极直线式磁链电机反电势波形,采用方波和正弦波驱动方式,比较两种方式下的电流、电压、平
发表于 06-09 16:18
渗压计如何实现精准测量?两种主流方式与应用场景解析
渗压计是监测岩土工程、大坝渗流压力变化的核心设备,其测量精度和效率直接影响工程安全评估的可靠性。目前主流的测量方式分为现场手动测量与自动化监测两类,分别适用于不同的工程场景。一、现场测量:智能读数仪
正激变换器的两种复位方式
)是RCD复位正激变换器的主要工作波形。电容C两端电压在一个开关周期内近似为直流电压,则RCD复位电压是一个方波。同样在开关管关断瞬间,变压器上有一个电压尖峰,是由变压器漏感与开关管结电容谐振引起的。
常见人体姿态评估显示方式的两种方式
评论