1. 程式人生 > >深度學習-人臉識別DFACE模型pytorch訓練(二)

深度學習-人臉識別DFACE模型pytorch訓練(二)

首先介紹一下MTCNN的網路結構,MTCNN有三種網路,訓練網路的時候需要通過三部分分別進行,每一層網路都依賴前一層網路產生訓練資料供當前訓練網路,這樣也推動了兩個網路之間的最小損耗。

Pnet

https://oscimg.oschina.net/oscnet/80241ed547a050474a7ecab870aa1ca976a.jpg

Rnet

https://oscimg.oschina.net/oscnet/f81e7d3d1981188a632295cefeca8c5add6.jpg

Onet

https://oscimg.oschina.net/oscnet/4741e9e7e1d8ccd6d3d87f55670388e885e.jpg

MTCNN的人臉模型按照以上結構按照三部分進行訓練。

 

DFace有兩個主要模組,即檢測和識別。在這兩個模組中,我們提供了有關如何訓練模型和執行的所有教程。

首先設定一個pytorchcv2,版本要求:

* pytorch==0.4.0

* torchvision==0.2.0

* opencv-python==3.4.0.12

pip install torch==0.4.0 torchvision==0.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install opencv-python==3.4.0.12 -i https://pypi.tuna.tsinghua.edu.cn/simpleh

 

安裝依賴庫matplotlibpip install matplotlib

 

1)首先將DFacegit到本地使用者目錄,不要放在根目錄:

git clone https://github.com/tuvia0213/DFace.git

2)新增DFace路徑新增到本地python路徑:

export PYTHONPATH=$PYTHONPATH:{your local DFace root path}/DFace

3)開啟../DFace路徑將WIDER FACE資料集下載到../DFace/WIDER_train/

WIDER_train下載地址http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/);

CelebA下載到../DFace/Celeba/路徑下

CelebA下載地址:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html

並將../CelebA/Img/目錄下的img_align_celeba壓縮包解壓到該目錄;其中WIDER FACE用於訓練人臉分類器與人臉約束框(Bounding Box,程式碼裡常見形式為BBox

),CelebA用於訓練人臉座標點(landmark點,人臉檢測中的標點為雙眼、鼻子、兩個嘴角);

4)進入到../DFace路徑下,生成PNet訓練資料和註釋檔案(annotation file):

python dface/prepare_data/gen_Pnet_train_data.py --prefix_path WIDER_train/images/ --dface_traindata_store data/ --anno_file anno_store/wider_origin_anno.txt

5)組合註釋檔案並將其隨機分佈:

python dface/prepare_data/assemble_pnet_imglist.py

6訓練Pnet模型:

python dface/train_net/train_p_net.py

7)生成RNet訓練資料和註釋檔案:

python dface/prepare_data/gen_Rnet_train_data.py --prefix_path WIDER_train/images/ --dface_traindata_store data/ --anno_file  anno_store/wider_origin_anno.txt --pmodel_file model_store/pnet_epoch_10.pt

8)組合註釋檔案並將其隨機分佈:

python dface/prepare_data/assemble_rnet_imglist.py

9)訓練Rnet模型:

python dface/train_net/train_r_net.py

10)生成ONet訓練資料和註釋檔案:

python dface/prepare_data/gen_Onet_train_data.py --prefix_path WIDER_train/images/ --dface_traindata_store data/ --anno_file anno_store/wider_origin_anno.txt --pmodel_file model_store/pnet_epoch_10.pt --rmodel_file model_store/rnet_epoch_10.pt

11)生成Onet訓練landmark點資料,在此之前,生成testImageList.txt,需先將merge_file.py複製到celeba/CelebA/Anno路徑下:

python dface/prepare_data/gen_landmark_48.py --dface_traindata_store data/ --anno_file celeba/CelebA/Anno/testImageList.txt --prefix_path celeba/CelebA/Img/img_align_celeba

12)組合註釋檔案並將其隨機分佈:

python dface/prepare_data/assemble_onet_imglist.py

13)訓練Onet模型:

python dface/train_net/train_o_net.py

DFace路徑下提供了測試圖片與測試指令碼,可以用於測試訓練網路的識別效果,回到../DFace路徑下:

python test_image.py

顯示出識別圖片效果:

https://oscimg.oschina.net/oscnet/d0d4601edbb75d7d19b7a39b477d8072613.jpg

至此,模型訓練完成,可以使用../DFace/model_store下的pnet_epoch_10.pt rnet_epoch_10.pt onet_epoch_10.pt進行模型轉換,從pytorchcaffencnn

相關推薦

深度學習-人臉識別DFACE模型pytorch訓練

首先介紹一下MTCNN的網路結構,MTCNN有三種網路,訓練網路的時候需要通過三部分分別進行,每一層網路都依賴前一層網路產生訓練資

深度學習筆記——理論與推導之Backpropagation

Backpropagation(反向傳播): 背景——Cost Function與Gradient Descent Cost Function: Gradient Descent: backpropagation是一種高效計算網路中gr

畢設-基於人臉識別的教室點名系統

1、人臉影象採集 系統:win10 軟體:python3.6+PyCharm OpenCV(Open source Computer Vision)是一個基於BSD許可發行的跨平臺計算機視覺庫,OpenCV最初是由英特爾公司Gary Bradski領導的

深度學習中的數據增強技術

data ont return per 分享圖片 slice google ordering res 上篇文章介紹了深度學習中數據增強技術的應用,及部分TensorFlow實現代碼。廢話不說了,這篇接著介紹: TensorFlow實現圖片數據增強 註:類似的方法

Dlib+OpenCV深度學習人臉識別

row 拷貝 too 這一 驗證 message word endif all 目錄(?)[+] DlibOpenCV深度學習人臉識別 前言 人臉數據庫導入 人臉檢測 人臉識別 異常處理 Dlib+OpenCV深度學習人臉識別 前言 人臉

如何走近深度學習人臉識別?你需要這篇超長綜述 | 附開原始碼

相信做機器學習或深度學習的同學們回家總會有這樣一個煩惱:親朋好友詢問你從事什麼工作的時候,如何通俗地解釋能避免尷尬?我嘗試過很多名詞來形容自己的工作:機器學習,深度學習,演算法工程師/研究員,搞計算機的,程式設計師…這些詞要麼自己覺得不滿意,要麼對方聽不懂。經歷無數次失敗溝通,最後總結了一個簡單實用的答案:“

現有深度學習人臉識別綜述

現有人臉檢測三類方法:1、Cascade CNN:速度最快,精度相對較低;代表演算法:MI-CNN,ICS2、Faster R-CNN:速度較慢,精度較高;代表演算法:Face R-CNN,Face R

深度探索C++對象模型讀書筆記

復雜 理解 image play 基礎上 isp 靜態 布局 bject 《深度探索C++對象模型》這本書也算是學習C++面向對象編程的必備書了,打算花上幾天先簡單的看一遍,這種書看上好幾遍也不一定能理解太多,慢慢積累一點一滴吃透就好。下面把我看書過程中覺得比較有意義的摘錄

珍藏 | 基於深度學習的目標檢測全面梳理總結

關於作者:@李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。 作者個人主頁:李家丞 | 個人主頁 | 關於我 導言:目標檢測的任務表述   如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和

珍藏 | 基於深度學習的目標檢測全面梳理總結

關於作者:@李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。 作者個人主頁:李家丞|個人主頁|關於我 導言:目標檢測的任務表述   如何從影象中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和計算力的

深度學習之(神經網路)單層感知器python

感知器介紹 感知器(Perceptron),是神經網路中的一個概念,在1950s由Frank Rosenblatt第一次引入。 單層感知器(Single Layer Perceptron)是最簡單的神經網路。它包含輸入層和輸出層,而輸入層和輸出層是直接相連的。

pytorch 入門 cnn 手寫數字識別

import torch import torch.nn as nn import torchvision.datasets as normal_datasets import torchvision.transforms as transforms from

深度學習---迴圈神經網路RNN詳解LSTM

上一節我們詳細講解了RNN的其中一個學習演算法即BPTT,這個演算法是基於BP的,只是和BP不同的是在反向傳播時,BPTT的需要追溯上一個時間的權值更新,如下圖,當前時刻是s(t),但是反向傳播時,他需要追溯到上一個時間狀態即s(t-1),s(t-2),....直到剛開始的那個時間,但是根據BP

這些深度學習術語,你瞭解多少?

對於一個新手來說,深度學習術語可能非常難以理解。本表試圖解釋深度學習常用術語並連結到原始參考,以幫助讀者深入瞭解特定主題。 深度學習與“一般”的機器學習術語之間的界限非常模糊。例如,我這裡不包括“交叉驗證”,因為它是一種通用技術,用於整個機器學習。但是,我加入了softma

這些深度學習術語,你瞭解多少?

摘要:入門深度學習,不知道這些術語怎麼和別人對話? 動量(Momentum) Momentum是Gradient Descent演算法的擴充套件、可加速或抑制引數更新。 多層感知器(MLP) 多層感知器是一種前饋神經網路,具有多個完全連線的層,使用非線性啟用函

人臉識別 - DeepID之三代Google

DeepID,目前最強人臉識別演算法,已經三代。 如今,深度學習方興未艾,大資料風起雲湧,各個領域都在處於使用深度學習進行強突破的階段,人臉識別也不例外,香港中文大學的團隊使用卷積神經網路學習特徵,將之用於人臉識別的子領域人臉驗證方面,取得了不錯的效果。雖然是今年7月份才出的成果,但連發

深度學習之卷積神經網路入門2

卷積神經網路入門學 作者:hjimce 卷積神經網路演算法是n年前就有的演算法,只是近年來因為深度學習相關演算法為多層網路的訓練提供了新方法,然後現在電腦的計算能力已非當年的那種計算水平,同時現在的訓練資料很多,於是神經網路的相關演算法又重新火了起來,因此卷積神經網路就又

深度學習——被Intel caffe支配的恐懼

一、Intel caffe在Ubuntu上的安裝配置 1. 安裝配置MKL-DNN 我用的是CPU版本的caffe,安裝配置MKL-DNN可以提高caffe訓練的速度。英特爾MKL-DNN專為在英特爾架構上加快深度學習框架的速度而設計,包含高度向量化和執

人臉識別演算法-特徵臉方法Eigenface及python實現

這幾天無聊,正好想起來以前誰說有同學做人臉識別,感覺好高大上,所以找來一些基礎的人臉識別演算法來自己實現一下,正好鍛鍊一下numpy的使用。 特徵臉方法基本是將人臉識別推向真正可用的第一種方法,瞭解一下還是很有必要的。特徵臉用到的理論基礎PCA我在這裡就不說了,百度一大

深度學習必須熟悉的演算法之word2vector

作者 milter作者:milter連結:https://www.jianshu.com/p/1