浅い理解C++顔認識システムの実現

2416 ワード

マシン学習
  • マシン学習の目的はデータを情報に変換することです。
  • マシン学習は、データから規則やパターンを抽出してデータを情報に変換する。
  • 顔の識別
  • 人の顔は、カスケード分類器によって特徴を選別し、人の顔であるかどうかを判定する。
  • 各ノードの正確な識別率は高いが、正確な拒否率は低い。
  • のいずれかのノードは、顔の特徴がないと判断したら演算を終了し、顔ではないと宣言します。
  • すべてのノードが通過すると、人の顔であると宣言します。
  • 工業では、顔認識技術を用いて物体を識別する。
    深さ学習に基づいた顔認識システムは、5つのオープンソースライブラリ:OpenCV(コンピュータビジョンライブラリ)、Caffe(深さ学習ライブラリ)、Dlib(マシン学習ライブラリ)、libfacedetection(顔検出ライブラリ)、cudnn(gpu加速器)を使用しています。
    オープンソースの深さ学習モデルを使用します。VGGモデルです。
    
    #include "opencv2/core/core.hpp"
    #include "opencv2/objdetect/objdetect.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    
    #include <iostream>
    #include <stdio.h>
    
    using namespace std;
    using namespace cv;
    
    string face_cascade_name = "haarcascade_frontalface_alt.xml";
    CascadeClassifier face_cascade;
    string window_name = "    ";
    
    void detectAndDisplay( Mat frame );
    
    int main( int argc, char** argv ){
      Mat image;
      image = imread( argv[1]);
    
      if( argc != 2 || !image.data ){
        printf("[error]     
    "); return -1; } if( !face_cascade.load( face_cascade_name ) ){ printf("[error] !
    "); return -1; } detectAndDisplay(image); waitKey(0); } void detectAndDisplay( Mat frame ){ std::vector<Rect> faces; Mat frame_gray; cvtColor( frame, frame_gray, CV_BGR2GRAY ); equalizeHist( frame_gray, frame_gray ); face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); for( int i = 0; i < faces.size(); i++ ){ Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); } imshow( window_name, frame ); }
    参考文献:https://www.cnblogs.com/justany/archive/2012/11/22/2781552.html
    ここでは、C++人の顔認識システムの実現について浅い理解についての文章を紹介します。C++人の顔認識に関する詳細は、以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。