人體姿態(tài)評(píng)估中有兩種常見(jiàn)的顯示方式,分別是火柴人效果與BodyPix效果。其中火柴人效果本質(zhì)就是基于關(guān)鍵點(diǎn)的深度學(xué)習(xí)模型推理以后的顯示效果;Bodypix本質(zhì)就就是語(yǔ)義分割模型,基于Deeplabv3+ 與ResNet34構(gòu)建的一個(gè)人體語(yǔ)義分割模型。
火柴人
主要是基于關(guān)鍵點(diǎn)的人體姿態(tài)評(píng)估顯示方式,基于YOLOv8等人體姿態(tài)評(píng)估的關(guān)鍵點(diǎn)模型均可以實(shí)現(xiàn),演示代碼運(yùn)行效果如下:

BodyPix
主要是基于語(yǔ)義分割的人體姿態(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)擊【開(kāi)始推理】按鈕的執(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文章
4967瀏覽量
73940 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5598瀏覽量
124384
原文標(biāo)題:兩種常見(jiàn)的人體姿態(tài)評(píng)估顯示方式
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
PCBA清洗全攻略:手工VS自動(dòng),兩種方式的區(qū)別!
兩種常見(jiàn)的除法器工作原理
ANSA人體模型姿態(tài)調(diào)整工具的使用案例
ANSA人體模型姿態(tài)調(diào)整工具介紹
兩種散熱路徑的工藝與應(yīng)用解析
正確的連接電機(jī)傳動(dòng)軸的幾種常見(jiàn)連接方式及其優(yōu)缺點(diǎn)
科普 | 5G公網(wǎng)對(duì)講有幾種實(shí)現(xiàn)方式?
振弦式應(yīng)變計(jì)兩種數(shù)據(jù)傳輸方式介紹
貼片晶振中兩種常見(jiàn)封裝介紹
兩種驅(qū)動(dòng)方式下永磁直線開(kāi)關(guān)磁鏈電機(jī)的研究
滲壓計(jì)如何實(shí)現(xiàn)精準(zhǔn)測(cè)量?兩種主流方式與應(yīng)用場(chǎng)景解析
正激變換器的兩種復(fù)位方式
常見(jiàn)人體姿態(tài)評(píng)估顯示方式的兩種方式
評(píng)論