人體姿態(tài)評估中有兩種常見的顯示方式,分別是火柴人效果與BodyPix效果。其中火柴人效果本質(zhì)就是基于關(guān)鍵點(diǎn)的深度學(xué)習(xí)模型推理以后的顯示效果;Bodypix本質(zhì)就就是語義分割模型,基于Deeplabv3+ 與ResNet34構(gòu)建的一個(gè)人體語義分割模型。
火柴人
主要是基于關(guān)鍵點(diǎn)的人體姿態(tài)評估顯示方式,基于YOLOv8等人體姿態(tài)評估的關(guān)鍵點(diǎn)模型均可以實(shí)現(xiàn),演示代碼運(yùn)行效果如下:
BodyPix
主要是基于語義分割的人體姿態(tài)評估顯示方式,支持對人體分割為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文章
4788瀏覽量
68612 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121162
原文標(biāo)題:兩種常見的人體姿態(tài)評估顯示方式
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論