<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        python3+dlib實現人臉識別和情緒分析

        來源:懂視網 責編:小采 時間:2020-11-27 14:12:49
        文檔

        python3+dlib實現人臉識別和情緒分析

        python3+dlib實現人臉識別和情緒分析:本文通過具體代碼不步驟給大家詳細講述了python3+dlib實現人臉識別以及情緒分析的方法,有需要的朋友參考下。一、介紹我想做的是基于人臉識別的表情(情緒)分析。看到網上也是有很多的開源庫提供使用,為開發提供了很大的方便。我選擇目前用的比較多的dli
        推薦度:
        導讀python3+dlib實現人臉識別和情緒分析:本文通過具體代碼不步驟給大家詳細講述了python3+dlib實現人臉識別以及情緒分析的方法,有需要的朋友參考下。一、介紹我想做的是基于人臉識別的表情(情緒)分析。看到網上也是有很多的開源庫提供使用,為開發提供了很大的方便。我選擇目前用的比較多的dli
        本文通過具體代碼不步驟給大家詳細講述了python3+dlib實現人臉識別以及情緒分析的方法,有需要的朋友參考下。

        一、介紹

        我想做的是基于人臉識別的表情(情緒)分析。看到網上也是有很多的開源庫提供使用,為開發提供了很大的方便。我選擇目前用的比較多的dlib庫進行人臉識別與特征標定。使用python也縮短了開發周期。

        官網對于dlib的介紹是:Dlib包含廣泛的機器學習算法。所有的設計都是高度模塊化的,快速執行,并且通過一個干凈而現代的C ++ API,使用起來非常簡單。它用于各種應用,包括機器人技術,嵌入式設備,手機和大型高性能計算環境。

        雖然應用都比較高大上,但是自己在PC上做個情緒分析的小軟件還是挺有意思的。

        按照自己的想法與思路設計識別方式。目前也比較火的keras好像就是根據嘴型的變化作為情緒分析的一個指標。

        而我的想法是利用嘴的張開比例,眼睛的睜開程度,眉毛的傾斜角度作為情緒分析的三個指標。但是由于人與人長相的差異較大,五官的也是千差萬別,再加上我的計算方法也比較簡單。所以識別效率并不是很高。

        識別規則:

        1、嘴巴張開距離占面部識別框寬度的比例越大,說明情緒越激動,可能是非常開心,也可能是極度憤怒。

        2、眉毛上揚,17-21 或者 22-26 號特征點距離面部識別框頂部與識別框高度的比值越小,說明眉毛上揚越厲害,可表示驚訝、開心。眉毛的傾斜角度,開心時眉毛一般是上揚,憤怒時皺眉,同時眉毛下壓的比較厲害。

        3、瞇眼睛,人在開懷大笑的時候會不自覺的瞇起眼睛,憤怒或者驚訝的時候會瞪大眼睛。

        系統缺點:不能捕捉細微表情的變化,只能大致的判斷出人的情緒,開心、憤怒、驚訝、自然。

        系統優點:結構簡單,易于上手。

        應用領域:微笑抓拍,捕捉瞬間的美好、緩解兒童自閉癥、交互式游戲開發。

        由于人感情的復雜性,這些表情確實不能完完全全的代表一個人內心深處的情緒波動,如要提高判斷的準確性,則需要心率檢測、語音處理等綜合評價。

        二、開發環境搭建:

        1、安裝VS2015,因為最新版的dlib-19.10需要這個版本的vscode

        2、安裝opencv(whl方式安裝):

        從pythonlibs下載需要的版本whl文件,比如(opencv_python?3.3.0+contrib?cp36?cp36m?win_amd64.whl)
        然后在本地使用pip install 安裝。 注意文件位置下安裝(如:C:downloadxxx.whl)

        3、安裝dlib(whl方式安裝):

        在這里下載dlib的各種版本的whl文件,然后在根目錄下打開cmd直接安裝即可。

        但是為了學習使用dlib中的各種python實例程序,還是需要下載一個dlib的壓縮包。

        直接訪問dlib官網即可下載:http://dlib.net/ml.html

        dlib各種版本的whl文件:https://pypi.python.org/simple/dlib/

        4、如果想要使用人臉模型特征標定的話,還需要一個人臉面部形狀預測器,這個可以通過自己的照片進行訓練,也可以使用dlib作者給出的一個訓練好的預測器:

        點擊下載:http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

        三、實施思路

        四、具體步驟

        首先是利用dlib進行人臉識別:)

        import cv2
        import dlib
        from skimage import io
        
        # 使用特征提取器get_frontal_face_detector
        detector = dlib.get_frontal_face_detector()
        # dlib的68點模型,使用作者訓練好的特征預測器
        predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
        # 圖片所在路徑
        img = io.imread("2.jpg")
        # 生成dlib的圖像窗口
        win = dlib.image_window()
        win.clear_overlay()
        win.set_image(img)
        
        # 特征提取器的實例化
        dets = detector(img, 1)
        print("人臉數:", len(dets))
        
        for k, d in enumerate(dets):
         print("第", k+1, "個人臉d的坐標:",
         "left:", d.left(),
         "right:", d.right(),
         "top:", d.top(),
         "bottom:", d.bottom())
        
         width = d.right() - d.left()
         heigth = d.bottom() - d.top()
        
         print('人臉面積為:',(width*heigth))

        然后實例化一個 shape_predictor 對象,使用dlib作者訓練好人臉特征檢測器,進行人臉的特征點標定。

        標定的時候使用opencv的circle方法,在特征點的坐標上面添加水印,內容就是特征點的序號和位置。

         # 利用預測器預測
         shape = predictor(img, d)
         # 標出68個點的位置
         for i in range(68):
         cv2.circle(img, (shape.part(i).x, shape.part(i).y), 4, (0, 255, 0), -1, 8)
         cv2.putText(img, str(i), (shape.part(i).x, shape.part(i).y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255))
         # 顯示一下處理的圖片,然后銷毀窗口
         cv2.imshow('face', img)
         cv2.waitKey(0)

        到此,68個特征點的信息就獲取到了,下面就需要跟根據這個68個特征點的坐標信息,進行綜合 計算,作為每個表情的判斷指標。

        根據上面說到的我的判斷指標,先計算嘴巴的張開比例,由于人離攝像頭距離的遠近,導致人臉識別框的大小不一,故選擇比例來作為判斷指標。

        在選擇指標的標準數值之前,先對多個開心的人臉照片進行分析。計算開心時的嘴巴張卡比例的平均。

        下面是截取對人眉毛的數據處理方法,對左邊眉毛上面的5個特征點進行線性擬合,擬合出一個一次函數直線,用擬合直線的斜率近似代表眉毛的傾斜程度。

        # 眉毛
         brow_sum = 0 # 高度之和
         frown_sum = 0 # 兩邊眉毛距離之和
         for j in range(17,21):
         brow_sum+= (shape.part(j).y - d.top()) + (shape.part(j+5).y- d.top())
         frown_sum+= shape.part(j+5).x - shape.part(j).x
         line_brow_x.append(shape.part(j).x)
         line_brow_y.append(shape.part(j).y)
        
         self.excel_brow_hight.append(round((brow_sum/10)/self.face_width,3))
         self.excel_brow_width.append(round((frown_sum/5)/self.face_width,3))
         brow_hight[0]+= (brow_sum/10)/self.face_width # 眉毛高度占比
         brow_width[0]+= (frown_sum/5)/self.face_width # 眉毛距離占比
        
         tempx = np.array(line_brow_x)
         tempy = np.array(line_brow_y)
         z1 = np.polyfit(tempx, tempy, 1) # 擬合成一次直線
         self.brow_k = -round(z1[0], 3) # 擬合出曲線的斜率和實際眉毛的傾斜方向是相反的

        我計算了25個人臉的開心表情的嘴巴張開比例、嘴巴寬度、眼睛張開程度、眉毛傾斜程度,導入excel表格生成折線圖:

        通過折線圖能很明顯的看出什么參數可以使用,什么參數的可信度不高,什么參數在那個范圍內可以作為一個指標。

        同樣的方法,計算人憤怒、驚訝、自然時的數據折線圖。

        通過對多個不同表情數據的分析,得出每個指標的參考值,可以寫出簡單的表情分類標準:

        # 分情況討論
         # 張嘴,可能是開心或者驚訝
         if round(mouth_higth >= 0.03):
         if eye_hight >= 0.056:
         cv2.putText(im_rd, "amazing", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
         (0, 0, 255), 2, 4)
         else:
         cv2.putText(im_rd, "happy", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
         (0, 0, 255), 2, 4)
        
         # 沒有張嘴,可能是正常和生氣
         else:
         if self.brow_k <= -0.3:
         cv2.putText(im_rd, "angry", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
         (0, 0, 255), 2, 4)
         else:
         cv2.putText(im_rd, "nature", (d.left(), d.bottom() + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8,
         (0, 0, 255), 2, 4)

        五、實際運行效果:

        識別之后:

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        python3+dlib實現人臉識別和情緒分析

        python3+dlib實現人臉識別和情緒分析:本文通過具體代碼不步驟給大家詳細講述了python3+dlib實現人臉識別以及情緒分析的方法,有需要的朋友參考下。一、介紹我想做的是基于人臉識別的表情(情緒)分析。看到網上也是有很多的開源庫提供使用,為開發提供了很大的方便。我選擇目前用的比較多的dli
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲卡一卡2卡三卡4卡无卡三| 亚洲欧洲自拍拍偷精品 美利坚| 久久精品国产亚洲夜色AV网站| 一个人看的免费高清视频日本| 亚洲成人影院在线观看| 一边摸一边桶一边脱免费视频| 精品亚洲一区二区三区在线观看| 一级日本高清视频免费观看| 国产精品亚洲不卡一区二区三区| 人人鲁免费播放视频人人香蕉| 国产亚洲精品不卡在线| 两性色午夜视频免费网| 亚洲va久久久噜噜噜久久| 91精品国产免费| 男人天堂2018亚洲男人天堂| 国产精品免费电影| 国产精品美女免费视频观看| 国产亚洲人成网站观看| 37pao成人国产永久免费视频| 亚洲制服丝袜第一页| 国产精品深夜福利免费观看| 九一在线完整视频免费观看| 亚洲av日韩综合一区在线观看| 最近中文字幕国语免费完整 | 国产伦一区二区三区免费| 免费高清A级毛片在线播放| 伊人久久亚洲综合| 99久久免费中文字幕精品| 亚洲日韩精品无码专区| 亚洲国产激情一区二区三区| 无码少妇精品一区二区免费动态| 亚洲w码欧洲s码免费| 亚洲一级片免费看| 在线视频精品免费| 免费观看四虎精品成人| 久久精品国产96精品亚洲| 国产麻豆剧传媒精品国产免费| 成全视频高清免费观看电视剧| 亚洲午夜成激人情在线影院| 亚洲精品国精品久久99热| 精品福利一区二区三区免费视频|