人体姿态评估中有两种常见的显示方式,分别是火柴人效果与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文章
4823浏览量
68963 -
深度学习
+关注
关注
73文章
5512浏览量
121459
原文标题:两种常见的人体姿态评估显示方式
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
solidworks正版软件:永久版权和订阅许可 两种购买方式解析和选择
SOLIDWORKS软件分从购买方式上划分为永久版权的形式和订阅即年付费两种方式,代理商硕迪科技向您详细解析 SOLIDWORKS 的永久版权和订阅许可的区别,各自的优劣势以及适合的应用场景。以帮助您做出适合的决策。
两种常见的硬件消抖实现方式
由于机械按键在操作过程中会产生抖动现象,这种抖动信号如果不加以处理,就可能导致单片机等电子设备误判按键状态,从而引发错误操作。本文将详细介绍两种常见的硬件消抖实现方式:RS触发器和电容滤波。 RS
示波器两种衰减方式的区别是什么
两种:内部衰减和外部衰减。 内部衰减 内部衰减是指示波器内部对输入信号进行衰减的方式。内部衰减器通常由电阻和电容组成,通过改变电阻和电容的参数,实现对输入信号的衰减。内部衰减器的优点如下: 1.1 精度高:内部衰减
接地保护分为哪两种方式
接地保护是电气工程中非常重要的一种安全措施,其目的是确保电气设备和系统在发生故障时能够安全地将电流导向地面,从而保护人身安全和设备安全。接地保护主要分为两种方式:工作接地和保护接地。以下是对这
plc与传感器的两种连接方式
在工业自动化领域,PLC(可编程逻辑控制器)与传感器的连接是实现自动化控制的关键环节。本文将详细介绍PLC与传感器的两种主要连接方式:模拟量连接和数字量连接。这两种连接方式各有优缺点,
wdm设备的两种传输方式
系统中,有多种传输方式,其中最常见的两种是密集波分复用(DWDM)和粗波分复用(CWDM)。 1. 密集波分复用(DWDM) 1.1 DWDM技术原理 密集波分复用(Dense Wavelength Division Multi
三相负载的连接方式有哪两种
三相负载的连接方式主要有星形连接(Y连接)和三角形连接(Δ连接)两种。这两种连接方式在电气工程中非常常见,它们各自具有不同的特性和应用场景。
控制器有哪两种实现方式?各有何优缺点?
控制器是计算机系统中的一个关键组件,负责协调和管理计算机硬件和软件资源。在不同的应用场景和系统中,控制器的实现方式可能会有所不同。以下是两种常见的控制器实现方式:硬件控制器和软件控制器
元器件的包装方式及常见的四种方式
四种元件包装方式在实际生产和使用中广泛应用,不同的包装方式适用于不同类型和规格的元件,并且可以根据具体要求进行定制化的包装设计。不同的包装方式也可以影响元件的存储、运输和使用,选择适合
PCBA加工中常见的两种焊接方式详解
,在PCBA行业中经常被使用。接下来深圳PCBA加工厂家为大家详细介绍PCBA加工手工焊接的两种方式,为您揭秘行业内的技术细节。 PCBA加工过程中常用焊接方式 第一种
武汉凯迪正大对10KV电缆故障的两种情况及应对和查找方式分享
10KV电缆是电力传输的重要组成部分,其稳定性和可靠性直接关系到整个电网的安全运行。但是由于电缆的老化、外力破坏、施工质量等多种因素,电缆故障时有发生。下面武汉凯迪正大将针对两种常见的10KV电缆故障情况进行分析,并提出相应的应对和查找
电动汽车的充电方式有哪两种
随着电动汽车(EVs)的普及,充电站的建设也在全球范围内迅速扩展。电动汽车充电站主要分为两大类:交流充电站和直流充电站。这两种充电站各有特点,为不同类型的电动车辆提供充电服务。 交流充电站 交流
异或门两种常见的实现方式
这两种实现方式都能够实现异或门的功能,具体的选择取决于设计需求和逻辑门的可用性。实际构建异或门时,可以使用离散电子元件(如晶体管、二极管等)或整合电路芯片(如 TTL、CMOS 等)来实现。
评论