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

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

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

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

評論