91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用KeyPointRCNN輕松獲取人體的17個(gè)關(guān)鍵點(diǎn)

OpenCV學(xué)堂 ? 來(lái)源:OpenCV學(xué)堂 ? 作者:gloomyfish ? 2022-10-14 17:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

TorchVision支持主流姿態(tài)評(píng)估模型關(guān)鍵點(diǎn)檢測(cè)模型KeyPointRCNN,通過(guò)它可以輕松獲取人體的17個(gè)關(guān)鍵點(diǎn),跟OpenPose等模型相比,KeyPointRCNN基于TorchVision框架,遷移學(xué)習(xí)訓(xùn)練簡(jiǎn)單,支持一鍵導(dǎo)出ONNX格式,可以部署到ONNXRUNTIME與OpenVINO,支持C++PythonSDK部署,可以說(shuō)在易用性上絲毫不差!

14a3e83c-4b9d-11ed-a3b6-dac502259ad0.jpg

KeyPointRCNN模型介紹

Torchvision中KeyPointRCNN已經(jīng)是基于2021年的論文中的最新版本,效果非常好,2021年論文比2019論文最大的改動(dòng)在預(yù)測(cè)的編碼與解碼部分,提出了CIF與CAF兩種新的編碼方法,模型結(jié)構(gòu)圖示如下:

14ebe696-4b9d-11ed-a3b6-dac502259ad0.png

上述一段英文交代的比較清楚,模型輸入就是一張RGB彩色圖像,模型最終的輸出有四個(gè)部分組成,分別是boxes、labels、scores、keypoints,它們的輸出結(jié)構(gòu)如下:

15bba5ca-4b9d-11ed-a3b6-dac502259ad0.png

不是還有最后一個(gè)輸出層沒(méi)有解釋嗎,最后一個(gè)輸出層其實(shí)是各個(gè)關(guān)鍵點(diǎn)的得分信息,小于的基本上應(yīng)該都被干掉,不可信。

另外KeyPoint部分輸出是17x3,3表示x、y、v其中v表示是否可見,v為1表示該關(guān)鍵點(diǎn)可見、v為0表示該關(guān)鍵點(diǎn)不可見。 各個(gè)關(guān)節(jié)點(diǎn)的連接順序與編碼坐標(biāo)如下(寫代碼有用的):

27b1581a-4b9d-11ed-a3b6-dac502259ad0.png

27dd11da-4b9d-11ed-a3b6-dac502259ad0.png

KeyPointRCNN推理演示

Torchvision官方提供了預(yù)訓(xùn)練的模型,直接下載之后,通過(guò)下面的腳本就可以轉(zhuǎn)換為ONNX格式模型,然后通過(guò)ONNXRUNTIME就可以完成推理演示。

第一步,轉(zhuǎn)ONNX格式

相關(guān)腳本如下

model=torchvision.models.detection.keypointrcnn_resnet50_fpn(weights=KeypointRCNN_ResNet50_FPN_Weights.DEFAULT)
model.eval()
x=[torch.rand(3,300,400),torch.rand(3,500,400)]
predictions=model(x)

#optionally,ifyouwanttoexportthemodeltoONNX:
torch.onnx.export(model,x,"keypoint_rcnn.onnx",opset_version=11)
如果不工作,請(qǐng)參考這里的轉(zhuǎn)換腳本修改之: TorchVision對(duì)象檢測(cè)RetinaNet推理演示

第二步:ONNRUNTIME推理演示

這部分跟之前發(fā)過(guò)一篇RetinaNet推理文章非常相似,這篇文章的連接如下,代碼只是稍微改了那么一點(diǎn)點(diǎn),增加了KeyPoint部分的可視化,推理部分的代碼如下:
importonnxruntimeasort
importcv2ascv
importnumpyasnp
importtorchvision

coco_names={'0':'background','1':'person','2':'bicycle','3':'car','4':'motorcycle','5':'airplane','6':'bus',
'7':'train','8':'truck','9':'boat','10':'trafficlight','11':'firehydrant','13':'stopsign',
'14':'parkingmeter','15':'bench','16':'bird','17':'cat','18':'dog','19':'horse','20':'sheep',
'21':'cow','22':'elephant','23':'bear','24':'zebra','25':'giraffe','27':'backpack',
'28':'umbrella','31':'handbag','32':'tie','33':'suitcase','34':'frisbee','35':'skis',
'36':'snowboard','37':'sportsball','38':'kite','39':'baseballbat','40':'baseballglove',
'41':'skateboard','42':'surfboard','43':'tennisracket','44':'bottle','46':'wineglass',
'47':'cup','48':'fork','49':'knife','50':'spoon','51':'bowl','52':'banana','53':'apple',
'54':'sandwich','55':'orange','56':'broccoli','57':'carrot','58':'hotdog','59':'pizza',
'60':'donut','61':'cake','62':'chair','63':'couch','64':'pottedplant','65':'bed',
'67':'diningtable','70':'toilet','72':'tv','73':'laptop','74':'mouse','75':'remote',
'76':'keyboard','77':'cellphone','78':'microwave','79':'oven','80':'toaster','81':'sink',
'82':'refrigerator','84':'book','85':'clock','86':'vase','87':'scissors','88':'teddybear',
'89':'hairdrier','90':'toothbrush'}

transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor()])

sess_options=ort.SessionOptions()
#Belowisforoptimizingperformance
sess_options.intra_op_num_threads=24
#sess_options.execution_mode=ort.ExecutionMode.ORT_PARALLEL
sess_options.graph_optimization_level=ort.GraphOptimizationLevel.ORT_ENABLE_ALL
ort_session=ort.InferenceSession("keypointrcnn_resnet50_fpn.onnx",sess_options=sess_options,
providers=['CUDAExecutionProvider'])
src=cv.imread("D:/images/messi_player.jpg")
cv.namedWindow("KeyPointRCNNDetectionDemo",cv.WINDOW_AUTOSIZE)
image=cv.cvtColor(src,cv.COLOR_BGR2RGB)
blob=transform(image)
c,h,w=blob.shape
input_x=blob.view(1,c,h,w)
defto_numpy(tensor):
returntensor.detach().cpu().numpy()iftensor.requires_gradelsetensor.cpu().numpy()

#computeONNXRuntimeoutputprediction
ort_inputs={ort_session.get_inputs()[0].name:to_numpy(input_x)}
ort_outs=ort_session.run(None,ort_inputs)
#(N,4)dimensionalarraycontainingtheabsolutebounding-box
boxes=ort_outs[0]
#labels
labels=ort_outs[1]
#scores
scores=ort_outs[2]
#key_points
multi_key_points=ort_outs[3]

print(boxes.shape,boxes.dtype,labels.shape,labels.dtype,scores.shape,scores.dtype,multi_key_points.shape)

index=0
forx1,y1,x2,y2inboxes:
ifscores[index]>0.5:
cv.rectangle(src,(np.int32(x1),np.int32(y1)),
(np.int32(x2),np.int32(y2)),(140,199,0),2,8,0)
label_id=labels[index]
label_txt=coco_names[str(label_id)]
cv.putText(src,label_txt,(np.int32(x1),np.int32(y1)),cv.FONT_HERSHEY_SIMPLEX,0.75,(0,0,255),1)
kpts=np.int32(multi_key_points[index])

#nose->left_eye->left_ear.(0,1),(1,3)
cv.line(src,(kpts[0][0],kpts[0][1]),(kpts[1][0],kpts[1][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[1][0],kpts[1][1]),(kpts[3][0],kpts[3][1]),(255,255,0),2,8,0)
#nose->right_eye->right_ear.(0,2),(2,4)
cv.line(src,(kpts[0][0],kpts[0][1]),(kpts[2][0],kpts[2][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[2][0],kpts[2][1]),(kpts[4][0],kpts[4][1]),(255,255,0),2,8,0)
#nose->left_shoulder->left_elbow->left_wrist.(0,5),(5,7),(7,9)
cv.line(src,(kpts[0][0],kpts[0][1]),(kpts[5][0],kpts[5][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[5][0],kpts[5][1]),(kpts[7][0],kpts[7][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[7][0],kpts[7][1]),(kpts[9][0],kpts[9][1]),(255,255,0),2,8,0)
#nose->right_shoulder->right_elbow->right_wrist.(0,6),(6,8),(8,10)
cv.line(src,(kpts[0][0],kpts[0][1]),(kpts[6][0],kpts[6][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[6][0],kpts[6][1]),(kpts[8][0],kpts[8][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[8][0],kpts[8][1]),(kpts[10][0],kpts[10][1]),(255,255,0),2,8,0)
#left_shoulder->left_hip->left_knee->left_ankle.(5,11),(11,13),(13,15)
cv.line(src,(kpts[5][0],kpts[5][1]),(kpts[11][0],kpts[11][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[11][0],kpts[11][1]),(kpts[13][0],kpts[13][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[13][0],kpts[13][1]),(kpts[15][0],kpts[15][1]),(255,255,0),2,8,0)
#right_shoulder->right_hip->right_knee->right_ankle.(6,12),(12,14),(14,16)
cv.line(src,(kpts[6][0],kpts[6][1]),(kpts[12][0],kpts[12][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[12][0],kpts[12][1]),(kpts[14][0],kpts[14][1]),(255,255,0),2,8,0)
cv.line(src,(kpts[14][0],kpts[14][1]),(kpts[16][0],kpts[16][1]),(255,255,0),2,8,0)
forx,y,_,inkpts:
cv.circle(src,(int(x),int(y)),3,(0,0,255),2,8,0)

index+=1
cv.imshow("KeyPointRCNNDetectionDemo",src)
cv.waitKey(0)
cv.destroyAllWindows()
測(cè)試與運(yùn)行結(jié)果如下:

39f23f08-4b9d-11ed-a3b6-dac502259ad0.jpg

3a16916e-4b9d-11ed-a3b6-dac502259ad0.jpg

基于3050的卡,GPU推理,速度!沒(méi)辦法模型有點(diǎn)大,速度有點(diǎn)慢,需要好N卡加持才能實(shí)時(shí)檢測(cè)!

3a53ac7a-4b9d-11ed-a3b6-dac502259ad0.png







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編解碼
    +關(guān)注

    關(guān)注

    1

    文章

    151

    瀏覽量

    20567
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90093
  • CAF
    CAF
    +關(guān)注

    關(guān)注

    1

    文章

    20

    瀏覽量

    14873

原文標(biāo)題:姿態(tài)評(píng)估之使用KeyPointRCNN關(guān)鍵點(diǎn)檢測(cè)模型輕松搞定!

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    瑞芯微(EASY EAI)RV1126B 人體關(guān)鍵點(diǎn)識(shí)別

    的特點(diǎn)。本人員檢測(cè)算法在數(shù)據(jù)集表現(xiàn)如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的運(yùn)行效率:17個(gè)人體關(guān)鍵點(diǎn)索引定義:2.快速上手2.1開發(fā)
    的頭像 發(fā)表于 01-23 10:13 ?2370次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>人體</b><b class='flag-5'>關(guān)鍵</b><b class='flag-5'>點(diǎn)</b>識(shí)別

    京東關(guān)鍵詞API接口獲取

    你想要獲取京東關(guān)鍵詞相關(guān)的 API 接口,以此替代傳統(tǒng)爬蟲,更合規(guī)、穩(wěn)定地獲取商品列表等信息,我會(huì)先講解 官方合規(guī)的 API 獲取與使用方式 (推薦),再說(shuō)明非官方接口的情況(僅供學(xué)習(xí)
    的頭像 發(fā)表于 01-09 14:16 ?414次閱讀

    京東關(guān)鍵詞搜索接口獲取商品數(shù)據(jù)的實(shí)操指南

    京東關(guān)鍵詞搜索接口獲取商品數(shù)據(jù) 實(shí)操指南 本指南聚焦 京東開放平臺(tái)合規(guī)接口 (item_search基礎(chǔ)版 / item_search_pro增強(qiáng)版),提供 從賬號(hào)準(zhǔn)備→接口調(diào)用→數(shù)據(jù)解析→落地
    的頭像 發(fā)表于 01-07 13:56 ?294次閱讀

    技術(shù)實(shí)踐:利用房天下 API 按關(guān)鍵獲取房產(chǎn)數(shù)據(jù)列表

    市場(chǎng)分析的開發(fā)者非常有用。 一、 接口概述 房天下平臺(tái)為其合作伙伴或注冊(cè)開發(fā)者提供了數(shù)據(jù)接口服務(wù),允許通過(guò) HTTP 請(qǐng)求獲取其數(shù)據(jù)庫(kù)中的房產(chǎn)信息。其中,根據(jù)關(guān)鍵詞搜索房源列表是一個(gè)常用且核心的功能。 核心功能: 輸入一
    的頭像 發(fā)表于 11-21 14:01 ?407次閱讀
    技術(shù)實(shí)踐:利用房天下 API 按<b class='flag-5'>關(guān)鍵</b>詞<b class='flag-5'>獲取</b>房產(chǎn)數(shù)據(jù)列表

    順企網(wǎng)平臺(tái)根據(jù)關(guān)鍵獲取企業(yè)列表API接口詳解與實(shí)現(xiàn)

    ? ?在企業(yè)信息查詢、市場(chǎng)調(diào)研或商業(yè)智能應(yīng)用中,獲取精準(zhǔn)的企業(yè)列表數(shù)據(jù)至關(guān)重要。順企網(wǎng)作為國(guó)內(nèi)知名的企業(yè)信息平臺(tái),提供了豐富的企業(yè)數(shù)據(jù)服務(wù)。本文將重點(diǎn)介紹其提供的“根據(jù)關(guān)鍵獲取企業(yè)列表”API接口
    的頭像 發(fā)表于 11-20 14:14 ?264次閱讀
    順企網(wǎng)平臺(tái)根據(jù)<b class='flag-5'>關(guān)鍵</b>詞<b class='flag-5'>獲取</b>企業(yè)列表API接口詳解與實(shí)現(xiàn)

    小紅書獲取筆記正文和點(diǎn)贊數(shù)的API接口

    ? ?小紅書(RED)是一個(gè)流行的社交平臺(tái),用戶分享筆記(類似博客文章)。開發(fā)者和數(shù)據(jù)分析師常需要通過(guò)API接口獲取筆記正文和點(diǎn)贊數(shù),用于內(nèi)容分析或應(yīng)用開發(fā)。本文將詳細(xì)介紹如何實(shí)現(xiàn)這一功能,包括
    的頭像 發(fā)表于 11-18 16:27 ?1150次閱讀
    小紅書<b class='flag-5'>獲取</b>筆記正文和<b class='flag-5'>點(diǎn)</b>贊數(shù)的API接口

    拼多多搜索關(guān)鍵獲取商品信息的API接口

    ? 在現(xiàn)代電商開發(fā)中,API接口是獲取平臺(tái)數(shù)據(jù)的關(guān)鍵工具。拼多多作為主流電商平臺(tái),提供了豐富的API接口,允許開發(fā)者通過(guò)關(guān)鍵詞搜索獲取商品信息。本文將逐步介紹如何實(shí)現(xiàn)這一過(guò)程,確保內(nèi)容
    的頭像 發(fā)表于 11-10 15:29 ?411次閱讀
    拼多多搜索<b class='flag-5'>關(guān)鍵</b>詞<b class='flag-5'>獲取</b>商品信息的API接口

    微店API秘籍!輕松獲取商品詳情數(shù)據(jù)

    一、前言 微店商品詳情API是微店開放平臺(tái)提供的核心接口之一,支持通過(guò)商品ID獲取商品的完整信息,包括標(biāo)題、價(jià)格、庫(kù)存、圖片等關(guān)鍵數(shù)據(jù)。該接口廣泛應(yīng)用于電商系統(tǒng)開發(fā)、數(shù)據(jù)分析和供應(yīng)鏈管理場(chǎng)景,相比
    的頭像 發(fā)表于 11-05 10:30 ?439次閱讀

    搜索關(guān)鍵獲取商品詳情接口的設(shè)計(jì)與實(shí)現(xiàn)

    ? ??在電商、內(nèi)容平臺(tái)等應(yīng)用中,用戶經(jīng)常通過(guò)輸入關(guān)鍵詞搜索商品并獲取詳情。設(shè)計(jì)一個(gè)高效、可靠的API接口是核心需求。本文將逐步介紹如何設(shè)計(jì)并實(shí)現(xiàn)一個(gè)“搜索
    的頭像 發(fā)表于 10-20 15:37 ?526次閱讀
    搜索<b class='flag-5'>關(guān)鍵</b>詞<b class='flag-5'>獲取</b>商品詳情接口的設(shè)計(jì)與實(shí)現(xiàn)

    瑞芯微RK3576人體關(guān)鍵點(diǎn)識(shí)別算法(骨骼點(diǎn)

    人體關(guān)鍵點(diǎn)識(shí)別是一種基于深度學(xué)習(xí)的對(duì)人進(jìn)行檢測(cè)定位與姿勢(shì)估計(jì)的模型,廣泛應(yīng)用于體育分析、動(dòng)物行為監(jiān)測(cè)和機(jī)器人等領(lǐng)域,幫助機(jī)器實(shí)時(shí)解讀物理動(dòng)作。本算法具有運(yùn)行效率高、實(shí)時(shí)性強(qiáng)的特點(diǎn)。
    的頭像 發(fā)表于 08-27 10:07 ?1027次閱讀
    瑞芯微RK3576<b class='flag-5'>人體</b><b class='flag-5'>關(guān)鍵</b><b class='flag-5'>點(diǎn)</b>識(shí)別算法(骨骼<b class='flag-5'>點(diǎn)</b>)

    【開發(fā)實(shí)例】基于BPI-CanMV-K230D-Zero開發(fā)板實(shí)現(xiàn)人體關(guān)鍵點(diǎn)的實(shí)時(shí)動(dòng)態(tài)識(shí)別

    項(xiàng)目介紹人體關(guān)鍵點(diǎn)檢測(cè)應(yīng)用使用YOLOv8n-pose模型對(duì)人體姿態(tài)進(jìn)行檢測(cè);檢測(cè)結(jié)果得到17個(gè)人體骨骼
    的頭像 發(fā)表于 07-08 08:04 ?1372次閱讀
    【開發(fā)實(shí)例】基于BPI-CanMV-K230D-Zero開發(fā)板實(shí)現(xiàn)<b class='flag-5'>人體</b><b class='flag-5'>關(guān)鍵</b><b class='flag-5'>點(diǎn)</b>的實(shí)時(shí)動(dòng)態(tài)識(shí)別

    【BPI-CanMV-K230D-Zero開發(fā)板體驗(yàn)】人體關(guān)鍵點(diǎn)檢測(cè)

    關(guān)鍵點(diǎn)檢測(cè)應(yīng)用使用 YOLOv8n-pose 模型對(duì)人體姿態(tài)進(jìn)行檢測(cè); 檢測(cè)結(jié)果得到 17 個(gè)人體骨骼關(guān)鍵
    發(fā)表于 06-28 13:18

    學(xué)會(huì)這些方法,輕松搞定SMT貼片加工的坐標(biāo)獲取與校正

    一站式PCBA加工廠家今天為大家講講SMT貼片加工中如何獲取坐標(biāo)與校正?SMT貼片加工中的坐標(biāo)獲取與校正方法。在SMT貼片加工過(guò)程中,精準(zhǔn)的坐標(biāo)獲取與校正是確保組件精準(zhǔn)放置、提高產(chǎn)品質(zhì)量的關(guān)鍵
    的頭像 發(fā)表于 05-29 10:27 ?1053次閱讀

    SiC MOSFET驅(qū)動(dòng)電路設(shè)計(jì)的關(guān)鍵點(diǎn)

    柵極驅(qū)動(dòng)器是確保SiC MOSFET安全運(yùn)行的關(guān)鍵,設(shè)計(jì)柵極驅(qū)動(dòng)電路的關(guān)鍵點(diǎn)包括柵極電阻、柵極電壓和布線方式等,本章節(jié)帶你了解柵極驅(qū)動(dòng)電壓的影響以及驅(qū)動(dòng)電源的要求。
    的頭像 發(fā)表于 05-06 15:54 ?1676次閱讀
    SiC MOSFET驅(qū)動(dòng)電路設(shè)計(jì)的<b class='flag-5'>關(guān)鍵</b><b class='flag-5'>點(diǎn)</b>

    選購(gòu)紅外熱像儀的12個(gè)關(guān)鍵點(diǎn)

    紅外熱像儀作為現(xiàn)代工業(yè)和科技領(lǐng)域不可或缺的工具,其應(yīng)用范圍日益廣泛。然而,面對(duì)市場(chǎng)上眾多品牌和型號(hào),如何選購(gòu)一款既符合預(yù)算又滿足需求的紅外熱像儀呢?小菲將為你詳細(xì)解析選購(gòu)紅外熱像儀的12個(gè)關(guān)鍵點(diǎn),助你精準(zhǔn)投資!
    的頭像 發(fā)表于 04-10 14:13 ?1181次閱讀