日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度篇——人脸识别(二)  人脸识别代码 insight_face_pro 项目讲解

發布時間:2023/12/9 pytorch 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度篇——人脸识别(二)  人脸识别代码 insight_face_pro 项目讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

返回主目錄

返回 人臉識別 目錄

下一章:深度篇——人臉識別(一)?ArcFace 論文 翻譯

?

論文地址:?《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》

源碼地址:?InsightFace: 2D and 3D Face Analysis Project

?

我優化的項目地址:?insight_face_pro

?

本小節,人臉識別代碼 insight_face_pro 項目講解

?

二.?人臉識別代碼 insight_face_pro 項目講解

?

insight_face_pro 項目?結構如下:

?

我這里,僅以?f_mobile_face_net.py?網絡模型來說明,如果你想嘗試其他網絡模型,請參考論文源碼,修改一下,就可以用的了。

在對項目操作前,請先看 README.md? 和? config.py?文件,這里,一個是說明文件,一個是配置文件。

README.md?文件 (論文,模型,數據,項目都可以從里面找到下載地址)

# [insight_face_pro](https://github.com/wandaoyi/insight_face_pro) tensorflow, mxnet 版本的 insight_face 人臉識別項目 2020-07-23 -- [論文地址](https://arxiv.org/abs/1801.07698) - [論文對應源碼地址](https://github.com/deepinsight/insightface) - [我的 CSDN 博客](https://blog.csdn.net/qq_38299170) - 環境依賴(其實版本要求并不嚴格,你的版本要是能跑起來,那也是OK的): ```bashrc pip install easydict pip install numpy==1.16 conda install tensorflow-gpu==1.12.0 pip install mxnet-cu90 pip install opencv-python ``` - - [訓練和驗證數據下載地址](https://github.com/deepinsight/insightface/wiki/Dataset-Zoo) - [預訓練模型下載地址](https://github.com/deepinsight/insightface/wiki/Model-Zoo) - All face images are aligned by [MTCNN](https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html) and cropped to 112x112 - Face Detection, Please check RetinaFace(我的代碼中沒加入有, 但在作者源碼中有) for more details - - - 將數據放到指定的文件目錄下(config.py 文件): - 其實,做好依賴,拿到數據,就仔細看看 config.py 文件,里面全是配置。配好路徑或一些超參,基本上,后面就是一鍵運行就 OK 了。 - 對 config.py 進行配置設置。## 數據生成 - 對于模型的訓練或驗證,我們都需要數據,這些數據,可以去下載開源的,也可以自己制作。 - 這里對于制作人臉數據,我使用的是數據蒸餾的方法。 - data_distillation.py 圖原圖進行人臉檢測,人臉分類,人臉聚類等操作 - prepare.py 對分類或聚類后的人臉數據生成 .bin, .rec, .idx 等數據 - video_2_image.py 是將 視頻流 轉為 圖像流## 訓練模型 - face_train.py 人臉識別訓練## 模型驗證 - verification_model.py 人臉識別模型驗證 - - 對于模型測試,想弄的話,也很簡單,利用數據庫保存錄入人的信息 - 測試的初始化,就將初始化 128 維人臉特征保存到緩存 - 當新的圖像進入,先人臉檢測,人臉矯正,再提取 128 維人臉特征 - 之后,再將新圖像的 128 維特征 與 緩存的 128 維特征進行相似度計算 - 最后,選擇大于閾值的人臉結果,再根據緩存獲取到該用戶的信息## 本項目的優點 - 就是方便,很多東西,我已經做成傻瓜式一鍵操作的方式。里面的路徑,如果不喜歡用相對路徑的,可以在 config.py 里面選擇 絕對路徑 - 本人和嘮叨,里面的代碼,基本都做了注解,就怕有人不理解,不懂,我只是希望能給予不同的你,一點點幫助。

?

?

1.?模型驗證(verification_model.py)

根據從 README.md?中下載的?數據?和?預訓練模型,將其放置到?verification_model.py?文件中所指定的路徑下,或,修改?config.py?中的路徑,然后,一鍵運行?verification_model.py?文件,即可驗證模型的精度。

我們可以觀察到,預訓練模型的?mAp 精度在 99.4% ~ 99.5%?左右。精度是相當高的,但是,對于人臉識別來說,這樣的精度是不夠的,需要更高的精度,才能滿足業務需求(現在商湯人臉識別精度達到 99.8%左右)。這就需要對預訓練模型,進行進一步訓練,從而提升精度來契合業務需求。

?

2.?模型訓練(face_train.py)

打開? face_train.py?文件,觀察?def __init__(self):?方法中的?config.py?配置文件,配置好,還有將?__C.COMMON.STRUCTURE_DICT?中的參數配置好,就可以一鍵運行 face_train.py?文件,開始訓練模型。

f_mobile_face_net.py?使用的是一個全卷積的殘差網絡,最后再加上一個 128?維的全連接層,然后,引入?margin_softmax?損失函數。訓練的過程,請參考論文中的 Figure. 2?圖所示:

在訓練的過程中,發現有時候精度很難再提高,這時就需要對訓練進行調優操作了:如學習率,數據,迭代次數,交叉驗證,優化器等等。可以參考我前面的博客:?深度篇——神經網絡(一) 神經元與感知機?里面有?講到調優的方法。

對于訓練和驗證,可以參考 README.md?文件,里面有更多的?數據集?和?預訓練模型。可以讓你玩得開心。

?

3.?數據制作

這里的數據制作,包括兩步:一步是數據蒸餾(data_distillation.py),一步是將目標數據制作成 .bin、.rec、.idx?驗證和訓練數據(prepare.py)。文件,都是一鍵運行操作的。

這里的數據蒸餾,是相對于圖像來進行的,如果我們一下子搞不到大量的圖像數據,我們可以通過將視頻流轉為圖像流,從而得到大量的圖像(video_2_image.py)。

數據蒸餾,大致可以分為 3?步(data_distillation.py):

? ?(1).?對輸入?圖像?進行人臉檢測?和人臉矯正

? ? 工作原理為:?MTCNN_face_detection_alignment

? ?

?

? ?(2).?對矯正后的人臉圖像,進行分類,根據?identity?來對人臉進行分類。

? ? ? 在人臉分類中,info?文件夾中會生成三個?txt?文件(這 3?個文件只是用來做人工細化,對代碼運行并無影響):?

? ? ?create_lib.txt?表示創建?新的?identity?文件夾,即表示當前的人臉與已有的人臉?identity?不同。

? ? ?in_storage.txt?表示?與當前已有的人臉?identity?相同,然后會根據人臉相似度入庫到對應的文件夾中去。

? ? ?not_recognize.txt?表示沒辨認出來的人臉,圖像會輸出到 output?文件夾中

? ? ?在人臉分類后,我們可以人工參照?txt?和?identity?人臉文件夾中的人臉來進行辨別,是否有分錯的,有些明顯分錯的人臉,我們要重新對它們入庫,或移除。

?

? ?(3).?對分類后的人臉圖像進行聚類,以消除部分噪聲人臉

? ? ? 人臉聚類,可以在一定程度上對?identity?身份文件夾中分錯的人臉,或同樣的人臉,進行一步提煉,會根據?人臉相似度來移除那些分錯的人臉,和相同的人臉。從而在一定程度上減少手動觀察篩選的操作,提高了工作效率。如果有相同的圖像或分錯的圖像,也會在?info?文件夾中生成?txt?文件。

?

在人臉數據蒸餾的過程中,常常會于是一種臉盲的尷尬地步。就是,有時候,你會發現,有很多人臉,你感覺,它們都長得一樣的,但是,計算機卻有判斷它們不一樣。或,你明明感覺,它們不太像,但是,計算機又判斷它們是同一個?identity。從而有些懷疑人生的感覺

?

?

生成訓練、測試數據:

將上面數據蒸餾得到的好數據,用于生成?訓練、測試數據(prepare.py):?通過上面數據蒸餾的繁瑣操作,到了這里,就簡單了,將數據放到指定的文件夾,一鍵運行操作即可得到目標數據。生成的訓練數據中,property?文件表示如下:

class_num?即為?identity?number?的意思,表示有多少個人臉身份。

info?文件夾中會有這 3?個?txt?文件生成:

?

?

pair.tx?表示?生成 .bin?文件中,兩兩配對的圖像,是否是同一個身份。如果是 True?則為同一個身份,False?則為不同身份

train_data.txt?表示?訓練數據

val_data.txt?表示驗證數據,pair.txt?就是由?這里的數據生成的。

這些?info?中的文件,只是用于參考 ,并不影響項目的運行。

?

? ??

?

返回主目錄

返回 人臉識別 目錄

下一章:深度篇——人臉識別(一)?ArcFace 論文 翻譯

總結

以上是生活随笔為你收集整理的深度篇——人脸识别(二)  人脸识别代码 insight_face_pro 项目讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。