人體姿態(tài)評(píng)估中有兩種常見的顯示方式,分別是火柴人效果與BodyPix效果。其中火柴人效果本質(zhì)就是基于關(guān)鍵點(diǎn)的深度學(xué)習(xí)模型推理以后的顯示效果;Bodypix本質(zhì)就就是語義分割模型,基于Deeplabv3+ 與ResNet34構(gòu)建的一個(gè)人體語義分割模型。
火柴人
主要是基于關(guān)鍵點(diǎn)的人體姿態(tài)評(píng)估顯示方式,基于YOLOv8等人體姿態(tài)評(píng)估的關(guān)鍵點(diǎn)模型均可以實(shí)現(xiàn),演示代碼運(yùn)行效果如下:
BodyPix
主要是基于語義分割的人體姿態(tài)評(píng)估顯示方式,支持對(duì)人體分割為10或者15個(gè)標(biāo)簽,演示代碼運(yùn)行效果如下:
實(shí)現(xiàn)代碼
我把相關(guān)的代碼使用PyQT5封裝為一個(gè)線程,相關(guān)的代碼如下:
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點(diǎn)擊【開始推理】按鈕的執(zhí)行代碼如下:
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,"警告","參數(shù)文件未選擇...") 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)
運(yùn)行結(jié)果如下:
-
代碼
+關(guān)注
關(guān)注
30文章
4874瀏覽量
69944 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5542瀏覽量
122262
原文標(biāo)題:兩種常見的人體姿態(tài)評(píng)估顯示方式
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用ADS1258的時(shí)候調(diào)試了它的兩種工作方式,寄存器的值會(huì)發(fā)生錯(cuò)亂,為什么?
solidworks正版軟件:永久版權(quán)和訂閱許可 兩種購買方式解析和選擇

Linux應(yīng)用層控制外設(shè)的兩種不同的方式

兩種常見的硬件消抖實(shí)現(xiàn)方式

示波器兩種衰減方式的區(qū)別是什么
接地保護(hù)分為哪兩種方式
plc與傳感器的兩種連接方式
wdm設(shè)備的兩種傳輸方式
三相負(fù)載的連接方式有哪兩種
控制器有哪兩種實(shí)現(xiàn)方式?各有何優(yōu)缺點(diǎn)?
元器件的包裝方式及常見的四種方式
PCBA加工中常見的兩種焊接方式詳解
武漢凱迪正大對(duì)10KV電纜故障的兩種情況及應(yīng)對(duì)和查找方式分享

評(píng)論