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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

seetaface 使用总结

發(fā)布時間:2024/1/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 seetaface 使用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

seetaface,是中科院計算機所山世光老師所帶領的團隊開發(fā)出來的人臉識別庫,開源免費可用,據說識別率可達97.1%,實測下來,識別率確實是蠻高的,比opencv自帶的人臉識別功能強多了。

在此,感謝開源的分享精神,可以讓我們這些軟件開發(fā)工程師們站在巨人的肩膀上,做一些解決實際問題的項目。同時,避免了大量重復造輪子的工作。

本文主要記錄了花費5天的時間,基于seetaface,開發(fā)一個小型的人臉識別登錄系統。并提供代碼下載。

seetaface分為FaceDetection(人臉檢測)、FaceAlignment(人臉對齊)、FaceIdentification(人臉識別)三個模塊,三個模塊相互獨立,綜合利用起來即可實現最終的人臉識別功能。

1、FaceDetection

const char* img_path = "2.jpg";seeta::FaceDetection detector("seeta_fd_frontal_v1.0.bin");//seeta_fd_frontal_v1.0.bin 文件是作者已經訓練好并提供的//設置人臉檢測的參數detector.SetMinFaceSize(40);detector.SetScoreThresh(2.f);detector.SetImagePyramidScaleFactor(0.8f);detector.SetWindowStep(4, 4);cv::Mat img = cv::imread(img_path, cv::IMREAD_UNCHANGED);cv::Mat img_gray;if (img.channels() != 1)cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY);elseimg_gray = img;seeta::ImageData img_data;img_data.data = img_gray.data;//注意這里必須是單通道的圖像img_data.width = img_gray.cols;img_data.height = img_gray.rows;img_data.num_channels = 1;long t0 = cv::getTickCount();std::vector<seeta::FaceInfo> faces = detector.Detect(img_data);//人臉檢測的主要函數long t1 = cv::getTickCount();double secs = (t1 - t0)/cv::getTickFrequency();cout << "Detections takes " << secs << " seconds " << endl; #ifdef USE_OPENMPcout << "OpenMP is used." << endl; #elsecout << "OpenMP is not used. " << endl; #endif#ifdef USE_SSEcout << "SSE is used." << endl; #elsecout << "SSE is not used." << endl; #endifcout << "Image size (wxh): " << img_data.width << "x" << img_data.height << endl;cv::Rect face_rect;int32_t num_face = static_cast<int32_t>(faces.size());for (int32_t i = 0; i < num_face; i++) //提取找到的人臉區(qū)域{face_rect.x = faces[i].bbox.x;face_rect.y = faces[i].bbox.y;face_rect.width = faces[i].bbox.width;face_rect.height = faces[i].bbox.height;cv::rectangle(img, face_rect, CV_RGB(0, 0, 255), 4, 8, 0);}cv::namedWindow("Test", cv::WINDOW_AUTOSIZE);cv::imshow("Test", img);cv::waitKey(0);cv::destroyAllWindows();運行效果如下圖所示:



2、FaceAlignment

運行效果如下圖所示



3、FaceIdentification

其主要為計算兩張圖片中人臉的相似度。輸入為兩張圖片,經過前面人臉檢測,人臉對齊,得到人臉的特征,輸出為人臉相似度。

作者提供的人臉相似度試驗,同一張照片,其相似度可為1。

博主以自己不同環(huán)境下拍攝的照片做實驗,可得到如下圖所示的結果??梢园l(fā)現,幾乎都在0.6分以上。


然后又對比了博主與另外一個人不同環(huán)境下的臉,結果如下圖所示,可以發(fā)現相似度都在0.5以下



那么,博主得到了這樣的結論:相似度在0.7分以下,為不同的人臉,0.7分以上為同一個人的臉,有了這個結論,就可以用seetaface來開發(fā)一個小型的人臉識別登錄系統了。

其他注意事項:

1、下載了別人的代碼和工程,特別想要直接可以跑起來,最頭疼的是各種報錯,請參考我的博文?包含目錄、庫目錄等注意事項

2、提供修改后的和部分注釋的seetaface下載,分為三部分?人臉檢測?人臉對齊?人臉識別

3、如果不想調試作者的源代碼,想要跟opencv一樣直接使用,僅需要lib dll include即可,點擊下載


最終,基于seetaface的人臉識別demo開發(fā)出來了,可以添加人臉,刪除人臉,識別人臉,點擊下載?。因為上傳文件大小的限制,把seeaface所需的三個bin文件放到了百度云盤,鏈接:http://pan.baidu.com/s/1qYGW84c 密碼:in6o 下載后,將其放到model文件夾中即可運行。

總結

以上是生活随笔為你收集整理的seetaface 使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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