在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 基于 Openpose 實現(xiàn)人體動作識別

            基于 Openpose 實現(xiàn)人體動作識別

            發(fā)布人:AI科技大本營 時間:2021-09-19 來源:工程師 發(fā)布文章

            引言

            伴隨著計算機視覺的發(fā)展和在生活實踐中的廣泛應用,基于各種算法的行為檢測和動作識別項目在實踐中得到了越來越多的應用,并在相關領域得到了廣泛的研究。在行為監(jiān)測方面,不僅僅有通過圖形、溫濕度、聲音等信息進行蜂群行為的監(jiān)測,同時更多的應用是集中在人類行為監(jiān)測上。而人體姿態(tài)識別作為行為監(jiān)測重要參考依據(jù)在視頻捕捉、計算機圖形學等領域得到了廣泛應用。其中傳統(tǒng)的人體姿態(tài)識別方法有RMPE模型和Mask R-CNN模型,它們都是采用自頂向下的檢測方法,而Openpose作為姿態(tài)識別的經(jīng)典項目是采用的自底向上的檢測方法,主要應用于行為監(jiān)測、姿態(tài)糾正、動作分類,在智能家居、自動駕駛、智能監(jiān)控等領域局具有重要的研究意義和應用價值。

            在多人目標姿態(tài)識別方面,歷史上常見的方法有通過自頂而下的候選關鍵點查找并結合空間聯(lián)系優(yōu)化算法匹配人物以及通過建立部分親和字段的方法實現(xiàn)關鍵點檢測到人體骨架連接等等。

            本項目針對當前行為監(jiān)測中的精度不足、效率較低等問題,結合了openpose的姿態(tài)識別技術通過不同肢體之間的協(xié)調(diào)關系來搭建分類算法,并通過不同的分類算法比較,選擇出最優(yōu)模型搭建多目標的分類方法,最終可以實現(xiàn)多個目標的姿態(tài)顯示、目標檢測和分類的實時顯示。在此次的模型中通過調(diào)用輕量級的openpose模型進行人體姿態(tài)識別,其主要的方法是通過openpose獲取人體各個骨骼關鍵點位置,然后通過歐氏距離進行匹配兩個骨骼來具體檢測到每一個人,對于常見檢測中骨骼關鍵點的缺失可以通過上一幀的骨骼信息進行填充。

            其最終實現(xiàn)效果如下圖可見:


            系統(tǒng)組成

            系統(tǒng)運行的基本流程:

            1、利用openpose遍歷數(shù)據(jù)集下不同分類下的人物的姿態(tài)信息進行提取作為動作特征并保存為對應的TXT文檔。

            2、將提取的特征信息和對應的圖片對應起來整合在一個TXT文件中。

            3、整合TXT信息分別為輸入和輸出標簽csv文件。

            4、模型訓練部分分別使用不同分類算法達到訓練的效果。

            1.1 Openpose環(huán)境的構建

            openpose是依賴于卷積神經(jīng)網(wǎng)絡和監(jiān)督學習實現(xiàn)人體姿態(tài)評估算法,其主要的優(yōu)點在于適用于多人二維且較為精準和迅速的識別開源模型。

            整個多目標動作監(jiān)測系統(tǒng)的搭建主要是依賴于openpose的姿態(tài)識別環(huán)境。而openpose的基本環(huán)境依賴于python,CUDA和swig的支持,其中python是作為openpose的代碼編寫和運行工具,CUDA作為調(diào)用顯卡訓練測試的必須軟件需要和python版本有一定的關系,swig目的在于給openpose編譯環(huán)境。根據(jù)openpose官方提供的cmu模型、mobilenet_thin模型、mobilenet_v2_large模型和mobilenet_v2_small模型的評價,我們選擇了cmu模型作為姿態(tài)識別的調(diào)用模型,主要原因在于cmu具有更高一些的識別精度。

            Openpose的調(diào)用在這里通過調(diào)用其中設定好的主函數(shù)即可,其中包括模型加載程序、調(diào)用程序以及Estimator評估等等。

            本文共設定站立、行走、奔跑、跳動、坐下、下蹲、踢腿、出拳、揮手等行為標簽,每類行為通過攝像頭采集相關視頻,并將視頻分幀成多張圖片,由不同的照片組合形成了不同動作,將其中的姿態(tài)特征利用openpose提取作為完整動作的基本識別特征,并將其中的信息整合到txt文件中。其中提取的部分分別包括鼻子、脖子、左右肩、左右手腕、左右膝蓋等等。

            1.2 數(shù)據(jù)和特征的處理

            數(shù)據(jù)處理的第一步是將采集到的圖片放入openpose骨架提取網(wǎng)絡進行提取行人的關鍵點坐標數(shù)據(jù),并將不同分類下的人物的姿態(tài)信息進行提取作為動作特征并保存為對應的TXT文檔。然后進行特征的整合:將提取的特征信息和對應的圖片對應起來整合在一個TXT文件中,同時去除無用的多余數(shù)據(jù)集。最后整合TXT信息分別作為輸入和輸出標簽csv文件。

            其中輸入的特征既包含關鍵點的特征,同時也包括不同骨骼點連接的線特征,以及不同線之間組合形成的面特征。而這些提取的特征將通過下述設定好的分類算法進行提取和學習。

            1.3 機器算法設計(簡易版本)

            首先是特征的提取,利用openpose遍歷數(shù)據(jù)集下不同分類下的人物的姿態(tài)信息進行提取作為動作特征并保存為對應的TXT文檔。然后進行特征的整合:將提取的特征信息和對應的圖片對應起來整合在一個TXT文件中,同時去除無用的多余數(shù)據(jù)集。最后整合TXT信息分別作為輸入和輸出標簽csv文件。

            將從輸入端csv讀取的人體骨骼信息作為輸入,Y標簽的csv文件作為輸出,按照0.3的比例劃分訓練集和驗證集,并轉(zhuǎn)為numpy矩陣參與運算。其中模型分類器的選擇主要按照決策樹、隨機森林、神經(jīng)網(wǎng)絡和支持向量機進行測試模型效果。模型的評估則主要根據(jù)混淆矩陣、精準率、召回率和F1得分進行評估。

            2.png

            1、支持向量機SVM分類器:

            SVM是機器學習領域常用的有監(jiān)督學習模型,常用來進行分類和回歸。它是基于結構風險最小化理論建立模型,而達到學習器的全局最優(yōu)化結果,主要是被用來分析線性可分的情況。參數(shù)選擇問題作為支持向量機中的一個復雜優(yōu)化問題,主要目的是求解超參數(shù)的最優(yōu)解,即計算出最佳超平面,這個超平面是將平面分成兩部分,其中每一級都位于兩側(cè),在這里通過設定核函數(shù)來達到優(yōu)化參數(shù)的目的。

            在這里直接調(diào)用sklearn框架中搭建好的分類器進行訓練,其中設置核函數(shù)為線性核函數(shù)。懲罰系數(shù)C為10,這個懲罰系數(shù)的設定一般來說這個系數(shù)設置的越大,容錯性也就相對小一些,分隔空間的硬度也就更強。

            2、決策樹Decision Tree分類器:

            決策樹作為監(jiān)督學習算法中的常見算法,是屬于非參數(shù)學習的算法,常常被應用于多分類和回歸問題中。它主要是通過計算各種不同情況的概率,在已知概率的基礎上,來求解凈現(xiàn)值大于等于零的情況。與傳統(tǒng)回歸模型相比。決策樹在識別決策方面更具有優(yōu)勢,同時可以檢驗變量之間的交互效應以解決多重共線性問題。

            這里通過調(diào)用sklearn模塊下的DecisionTreeClassifier函數(shù)進行搭建決策樹分類模型,并設置一定的樹的深度以進行模型的訓練。

            3、隨機森林RandomForestClassifier分類器:

            隨機森林是由多個決策樹組成的分類器,通過分裂訓練數(shù)據(jù)集進行加載入多個決策樹的訓練。其隨機性主要體現(xiàn)在數(shù)據(jù)選擇的隨機性和特征選擇的隨機性,它使用隨機維度選擇和抽樣,使得決策樹更具有隨機性,從而保證了算法的準確度和魯棒性。

            這里設置樹的數(shù)目為100,深度為10,max_features取值為“auto”,即取為n_features的平方根值。

            4、神經(jīng)網(wǎng)絡MLPClassifier分類器:

            MLPClassifier分類器又被稱為多層感知器和人工神經(jīng)網(wǎng)絡。其是輸入的特征輸入到隱層的神經(jīng)元,然后隱藏層通過全連接的方式連接輸入層,相鄰的兩層通過RELU激活函數(shù)對上一層進行非線性變換,通過反向傳播進行調(diào)整不同神經(jīng)元之間的w和b參數(shù)來達到訓練的目的。而在反向傳播的過程中通過隨機梯度下降的方法進行模型的收斂。

            在這里通過從X端CSV文件數(shù)據(jù)讀入作為輸入層,設置隱藏層節(jié)點數(shù)分別為20,30和40,Y標簽數(shù)作為輸出進行分類建立分類器模型。

            3.png

            2.1 深度算法設計(GUI附加二次檢測)

            利用keras搭建RNN網(wǎng)絡模型,并加入了二次檢測,以防止對坐下、摔倒誤判。二次檢測主要對人體高度和寬度的比例進行對比以判斷是否為跌倒動作。

            部分代碼如下:

            myfont = ImageFont.truetype(r'C:/Windows/SIMLI.TTF', 20)
            parser = argparse.ArgumentParser(description='tf-pose-estimation run')
            parser.add_argument('--image', type=str, default='Standard/1.jpg')
            parser.add_argument('--model', type=str, default='cmu',
                                help='cmu / mobilenet_thin / mobilenet_v2_large / mobilenet_v2_small')
            parser.add_argument('--resize', type=str, default='0x0',
                                help='if provided, resize images before they are processed. '
                                     'default=0x0, Recommends : 432x368 or 656x368 or 1312x736 ')
            parser.add_argument('--resize-out-ratio', type=float, default=4.0,
                                help='if provided, resize heatmaps before they are post-processed. default=1.0')
            args = parser.parse_args()
            update_a = ["", "", "", "", "", "", "", "", "", ""]
            w, h = model_wh(args.resize)
            if w == 0 or h == 0:
                e = TfPoseEstimator(get_graph_path(args.model), target_size=(432, 368))
            else:
                e = TfPoseEstimator(get_graph_path(args.model), target_size=(w, h))
            cap=cv2.VideoCapture("shuaidao.mp4")
            conditions=[5,6]
            num=0
            image3 = np.zeros([600, 480, 3])
            image3.fill(255)
            cv2.imwrite("iimg3.jpg", image3)
            image3 = cv2.imread("iimg3.jpg")
            image_web4=cv2.resize(image3,(800,480))
            image3 = Image.fromarray(cv2.cvtColor(image3, cv2.COLOR_BGR2RGB))
            draw = ImageDraw.Draw(image3)
            dates = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
            draw.text((10, 10), "系統(tǒng)日志:" + dates, font=myfont, fill=(255, 0, 0))
            image3 = cv2.cvtColor(np.asarray(image3), cv2.COLOR_RGB2BGR)

            4.png

            簡易版本代碼:

            鏈接:https://pan.baidu.com/s/172z3YOvpQkMFZANhP3yDJg

            提取碼:imtw

            GUI二次檢測代碼:

            https://download.csdn.net/download/qq_42279468/22009054

            作者簡介:

            李秋鍵,CSDN博客專家,CSDN達人課作者。碩士在讀于中國礦業(yè)大學,開發(fā)有taptap競賽獲獎等。

            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

            電子管相關文章:電子管原理


            衰減器相關文章:衰減器原理


            關鍵詞: AI

            相關推薦

            技術專區(qū)

            關閉