<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          (附代碼)干貨 | 幾十行代碼就能實現(xiàn)關(guān)鍵點檢測

          共 4437字,需瀏覽 9分鐘

           ·

          2021-05-31 20:35

          全網(wǎng)搜集目標(biāo)檢測文章,人工篩選最優(yōu)價值內(nèi)容

          編者薦語
          關(guān)鍵點檢測,是一個基礎(chǔ)的任務(wù),同時在實際生活中也是十分重要的。通過找到關(guān)鍵點,我們能判斷很多部位之間的位置關(guān)系,通過部件相互關(guān)系可以為我們帶來更多有價值的信息。


          關(guān)鍵點檢測有哪些運用?

          • 判斷姿態(tài)是否標(biāo)準(zhǔn)

            比如健身軟件,Keep就可以根據(jù)關(guān)鍵點信息,判斷你健身時的姿態(tài)正確與否。體育運動同樣可以實時跟蹤你的姿態(tài),如乒乓球等,可以幫你改善你的動作。

          • 安全領(lǐng)域
            摔倒檢測,摔倒檢測這一個任務(wù)有實際意義有價值嗎?那肯定是十分有用的,老人摔倒這一問題,就是老年人的最大殺手之一。
            袁隆平院士也是今年在三亞摔了一跤,身體開始變差。

            我在讀研期間,就被分配到了一個摔倒檢測的任務(wù)。場景是運用在電梯口。當(dāng)檢測到摔倒之后,需要立馬救援。因為老年人如果摔倒之后,不采取立刻救援,極易發(fā)生二次摔倒傷害。

            那么怎么判斷摔倒呢?當(dāng)時我調(diào)研了一些方案,最終采用的是基于關(guān)鍵點檢測的方案來做。

          • 表盤,人臉等關(guān)鍵點信息的識別
            表盤與人臉上等具有明顯關(guān)鍵點信息的任務(wù),可以將關(guān)鍵點定位,再提取其特征,再使用相對應(yīng)的特征來進(jìn)行計算。

          • 與設(shè)備之間進(jìn)行交互
            未來,使用手勢來作為交互手段,會是一大趨勢~ 我說的!

          關(guān)鍵點檢測簡單原理介紹

          在我實際任務(wù)中,我用的最好的關(guān)鍵點檢測算法是哪一個呢?登登登登~ 我愿稱之為!

          為啥是它呢?結(jié)構(gòu)如下圖,就是很簡單,在數(shù)據(jù)量比較少的情況下,收斂快,并且精度也夠用,網(wǎng)絡(luò)還?。》凑?,很好用就對了!

          stack hourglass

          上圖是論文提出的網(wǎng)絡(luò)模型,叫做堆疊漏斗神經(jīng)網(wǎng)絡(luò)。這個網(wǎng)絡(luò)架構(gòu)形態(tài)就像它的名字的一樣,是由一個個的漏斗狀的神經(jīng)網(wǎng)絡(luò)級聯(lián)起來,每一個漏斗神經(jīng)網(wǎng)絡(luò)就像編碼器和解碼器合成,負(fù)責(zé)提取特征和生成熱圖結(jié)果。整個網(wǎng)絡(luò)使用了大量的卷積/反卷積層,池化/反池化層,以及全連接層。網(wǎng)絡(luò)的輸入是一張或者的標(biāo)準(zhǔn)大小尺寸圖片(×),輸出是該張圖片縮小到一定尺寸的各個節(jié)點的熱圖(×)。如我們需要檢測20個關(guān)鍵點,那我們在模型的輸出特征維度就是,再與標(biāo)簽計算損失進(jìn)行訓(xùn)練。

          聊聊我之前做的摔倒檢測的任務(wù)

          對于關(guān)鍵點檢測而言,目前主要的做法分為兩種,一種是top-down,一種是bottom-up。我當(dāng)時采用的就是top-down方案,即先使用檢測,將行人拿出來放到關(guān)鍵點檢測的網(wǎng)絡(luò)中去。而bottom-up的做法,是先把圖像中的所有關(guān)鍵點給檢測到,再給連起來。

          目前從我的實戰(zhàn)角度而言,top-down更適合,主要是的做法在行人檢測階段能夠獲取較高的召回,故而相對來說會有比較高的精度;

          先簡單看下我當(dāng)時的效果,因為公眾號GIF大小要求,所以壓縮的有點奇怪~


          我當(dāng)時主要采用的方案為,這兩個網(wǎng)絡(luò)我們會在面經(jīng)的時候,著重介紹的。歡迎各位持續(xù)關(guān)注哦~

          判斷摔倒主要的邏輯是借鑒了一位同學(xué)的畢業(yè)設(shè)計。主要只表示計算上半身與下半身在圖像中的長度,進(jìn)行計算相對應(yīng)的比例,該比例相當(dāng)于一個超參數(shù),低于該參數(shù),視為摔倒。該同學(xué)是用的來獲取的關(guān)鍵點,再使用關(guān)鍵點來進(jìn)行判斷邏輯的。

          其中長這樣:

          它可以得到深度圖信息,同時可以得到最多個人的個關(guān)鍵點。而深度學(xué)習(xí)的技術(shù),就可以彌補這些硬件的弱勢,使用一個不錯的攝像頭,就可以達(dá)到一個較好的效果了。

          針對腦癱患兒的Kinect游戲,幫助其康復(fù)運動

          MediaPipe

          今天推薦一個非常吊的庫叫做, 官方網(wǎng)站放在了參考鏈接中。

          先看下對于的評價:

          這里也簡單介紹下:

          機器視覺開源框架;它具有如下優(yōu)勢:

          1. 多種功能支持:同時支持姿態(tài)估計、手勢識別、臉部識別、目標(biāo)檢測等機器視覺主流應(yīng)用模型;
            2)跨平臺支持:同時支持windows、linux、Android、IOS四大主流平臺,連web識別都支持;
            3)精度和性能好:總結(jié)來說就是又快又準(zhǔn)!
            4)節(jié)省數(shù)十萬云服務(wù)器年費,充分利用用戶手機計算資源;避免網(wǎng)絡(luò)延遲降低識別實時性;現(xiàn)有開源功能滿足業(yè)務(wù)場景需求

          同樣,的劣勢為:無法在小程序中實現(xiàn)識別功能;需要單獨開發(fā)APP,Android、IOS需要分別開發(fā),研發(fā)團(tuán)隊技術(shù)棧不匹配APP開發(fā);需要用戶單獨下載APP,需要更多運營成本。

          具體支持哪些功能呢?看下圖:

          MediaPipe支持的功能

          而我在這里,使用來做一個手勢關(guān)鍵點檢測,各位可以看下效果如何。

          代碼如下所示:

          import cv2
          import mediapipe as mp
          import time

          class handDetector():
          def __init__(self, mode=False, maxHands=2, detectionCon=0.5, trackCon=0.5):
          self.mode = mode
          self.maxHands = maxHands
          self.detectionCon = detectionCon
          self.trackCon = trackCon

          self.mpHands = mp.solutions.hands
          self.hands = self.mpHands.Hands(self.mode, self.maxHands,
          self.detectionCon, self.trackCon)
          self.mpDraw = mp.solutions.drawing_utils

          def findHands(self, img, draw=True):
          imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
          self.results = self.hands.process(imgRGB)
          # print(results.multi_hand_landmarks)
          if self.results.multi_hand_landmarks:
          for handLms in self.results.multi_hand_landmarks:
          if draw:
          self.mpDraw.draw_landmarks(img, handLms,
          self.mpHands.HAND_CONNECTIONS)
          return img

          def findPosition(self, img, handNo=0, draw=True):

          lmList = []
          if self.results.multi_hand_landmarks:
          myHand = self.results.multi_hand_landmarks[handNo]
          for id, lm in enumerate(myHand.landmark):
          # print(id, lm)
          h, w, c = img.shape
          cx, cy = int(lm.x * w), int(lm.y * h)
          # print(id, cx, cy)
          lmList.append([id, cx, cy])
          if draw:
          cv2.circle(img, (cx, cy), 1, (255, 0, 255), cv2.FILLED)
          return lmList


          def main():
          pTime = 0
          cap = cv2.VideoCapture('./finger_dancer.mp4')
          detector = handDetector()
          wid = int(cap.get(3))
          hei = int(cap.get(4))
          size = (wid, hei)
          fps = 30
          fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
          out = cv2.VideoWriter()
          out.open(r"./out.mp4",
          fourcc, fps, size)


          while True:
          success, img = cap.read()
          img = detector.findHands(img)
          lmList = detector.findPosition(img)
          if len(lmList) != 0:
          print(lmList[4])

          cTime = time.time()
          fps = 1 / (cTime - pTime)
          pTime = cTime

          cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 1,
          (255, 0, 255), 3)

          cv2.imshow("Image", img)
          out.write(img)
          cv2.waitKey(1)


          if __name__ == "__main__":
          main()

          引用

          • https://www.zhihu.com/question/401635800/answer/1774116555
          • https://zhuanlan.zhihu.com/p/357158418
          • https://google.github.io/mediapipe/

          ?------------------------------------------------

          雙一流大學(xué)研究生團(tuán)隊創(chuàng)建,一個專注于目標(biāo)檢測與深度學(xué)習(xí)的組織,希望可以將分享變成一種習(xí)慣。

           

          整理不易,點贊三連!

          瀏覽 207
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码毛片基地 | 婷婷AV无码在线 | 琪琪色原影音先锋 | 操女人插女人网站 | 欧美操逼免费视频 |