dlib人臉關鍵點檢測器訓練 194關鍵點

2021-09-09 04:44:43 字數 3044 閱讀 1019

**:

68個關鍵點的訓練資料集(1.7gb):

194個關鍵點的資料集(需要翻牆):

dlib中examples中的**。 

dlib/examples/train_shape_predictor_ex.cpp

// dlib/examples/train_shape_predictor_ex.cpp

#include #include #include using namespace dlib;

using namespace std;

std::vector> get_interocular_distances (

const std::vector>& objects

);int main(int argc, char** ar**)

const std::string faces_directory = ar**[1];

dlib::array> images_train, images_test;

std::vector> faces_train, faces_test;

// 1. 載入訓練集,測試集

// load_image_dataset(images_train, faces_train, faces_directory+"/training_with_face_landmarks.xml");

// load_image_dataset(images_test, faces_test, faces_directory+"/testing_with_face_landmarks.xml");

// 68個點的訓練資料集:

load_image_dataset(images_train, faces_train, faces_directory + "/labels_ibug_300w_train.xml");

load_image_dataset(images_test, faces_test, faces_directory + "/labels_ibug_300w_test.xml");

shape_predictor_trainer trainer;

// 測試中調節了 tree_depth引數:2,4, 5, 10

// 測試機器為8核,set_num_threads使用8,訓練時cpu:70%

trainer.set_oversampling_amount(300);

trainer.set_nu(0.05);

trainer.set_tree_depth(5);

trainer.set_num_threads(8);

trainer.be_verbose();

// 訓練

shape_predictor sp = trainer.train(images_train, faces_train);

cout << "mean training error: "<<

test_shape_predictor(sp, images_train, faces_train, get_interocular_distances(faces_train)) << endl;

cout << "mean testing error: "<<

test_shape_predictor(sp, images_test, faces_test, get_interocular_distances(faces_test)) << endl;

// 儲存模型

serialize("sp.dat") << sp;

std::string str;

std::cin >> str;

}catch (exception& e)

}double interocular_distance (

const full_object_detection& det

) l /= cnt;

cnt = 0;

for (unsigned long i = 42; i <= 47; ++i)

r /= cnt;

return length(l-r);

}std::vector> get_interocular_distances (

const std::vector>& objects

) }

return temp;

}

194關鍵點訓練情況: 

tree_depth=2,num_threads=2, 

release版本訓練時間 5+小時 

debug版本訓練時間 148+小時(訓練一定要使用release版本) 

tree_depth=2,sp.dat=44.6mb,占用記憶體最大11gb 

tree_depth=10,sp.data=11gb

68關鍵點訓練結果: 

tree_depth=2,num_threads=8,cpu:70% 記憶體:20+gb 6+小時 sp.data=15.8mb 

tree_depth=4,num_threads=8,cpu:70% 記憶體:20+gb 12+小時 sp.data=63.3mb 

tree_depth=5,num_threads=8,cpu:70% 記憶體:20+gb 16+小時 sp.data=126mb

tree_depth=5,num_threads=8

mean training error: 0.0479476

mean testing error: 0.0586204

使用dlib中examples中的**測試。 

dlib/examples/face_landmark_detection_ex.cpp 

也可食用dlib提供的訓練模型: 

原圖: 

檢測效果圖: 

caffe 人臉關鍵點檢測 密集人臉關鍵點檢測

mtcnn聯合人臉檢測和對齊任務提供了5點關鍵點的能力,但是對於姿態姿態恢復等應用是遠遠不夠的,經常會出現某個點錯誤導致大幅抖動,顯然需要更密集的關鍵點.常見的資料集都是68點和106點。人臉關鍵點檢測主要面臨下面幾個挑戰 區域性變化 現實場景中人臉的表情,廣告,以及遮擋情況都有較大的變化,如fig...

python安裝dlib,關鍵點檢測

python 安裝dlib face landmark detection dlib是人臉識別比較有名的庫,有c python的介面。使用dlib可以大大簡化開發,比如人臉識別,特徵點檢測之類的工作都可以很輕鬆實現。關於dlib的安裝,直接執行pip install dlib即可。e.g.pip i...

人臉關鍵點檢測1 SDN

題目 effective face landmark localization via single deep network 常用的資料增強 平移 旋轉 映象 縮放 stage1 抖動人臉框位置加角度偏移和映象 stage2 對訓練資料中的hard examples errors 0.02 進行資...