テスト部分

WBOY
リリース: 2016-06-13 12:22:31
オリジナル
990 人が閲覧しました

PHP は顔を使用して単純な顔認識システムを実装します

プロセス

プロセスは 2 つの部分に分けることができ、1 つはトレーニング、もう 1 つはテストです。

face++ が提供する API の使用方法については、http://blog.csdn.net/jianjian1992/article/details/46640483 を参照してください。

コードは http にあります。 ://download.csdn.net /detail/jianjian1992/8866839無料ダウンロード。


インターフェース

インターフェース

以下に示すように、初めて使用するため、使用方法が紹介されます。はい、多くのことがあまり明確ではありません。そのため、インターフェイスは使いやすさを第一の目標として比較的シンプルに作られています。


実装の詳細

index.html はウェルカムインターフェイスです。いくつかの小さな問題を記録します

中国語の使用

head部分に文字セットを追加してutf-8を使うだけです!

 <meta http-equiv="Content-Type" content="text/html; charset = utf-8">
ログイン後にコピー

テキストの中央揃えと背景の設定

HTML の先頭にスタイルを追加して、本文の表示効果を設定します。

テキストの表示を中央に設定します。高さ、幅、マージン上、マージン左を使用して、ページ上で本文部分を表示する位置を設定します。

背景は画像URLで設定され中央に表示されます。

<style>body{	text-align:left; 	height:500px;	width:600px;	top:50%;	margin-top:130px;	margin-left:550px;	background-image:url(./imgs/back.jpg);	background-position:center;	background-repeat:repeat-y;}</style>
ログイン後にコピー

ボタン ページ ジャンプ

onClick は、ジャンプするインターフェイスを記録するために位置を使用します。

<input type="button" value="点击进入测试" onclick="location='test.php' ">
ログイン後にコピー

トレーニング パート

には、2 つのパートが含まれます:

  • startTrain.php はトレーニングディレクトリに入るために使用され、
  • train.php はトレーニングデータをサーバーに転送し、トレーニング成功フラグを出力するために使用されます

startTrain.php

この部分は、php の選択フォルダーを確認しましたが、方法が見つかりませんでした。そのため、 を使用してディレクトリに入りました。 テスト部分

は、フォームを送信した後、実際のトレーニングのために train.php にジャンプします。

ログイン後にコピー





train.php

この部分は 2 つの関数を実装します:

  • 入力ディレクトリに従ってすべてのトレーニング画像を検索します。そして、すべての画像パスを記録します
  • すべてのトレーニング画像から顔を 1 つずつ検出し、トレーニング モデルに顔を追加します


ディレクトリの検索

php でディレクトリ内のすべてのファイルを検索するのに非常に便利です。 listDir 関数は dir.php にあります。

この関数は、$dir ディレクトリ名に基づいて取得したすべてのファイル名を $names に格納し、すべてのファイル パス名を $img_urls に格納します。

注意すべき点は、中国語のファイル名である場合、結果を取得するには

$file = iconv("gb2312","UTF-8",$file);
ログイン後にコピー
を追加する必要があることです。追加しないと空になります

php で文字列を検索するには、strstr 関数を使用できます。

たとえば、次の $file_name = strstr($file,'.',true) は、'.' の前の部分を検索します。 $file.If strstr($file,'.',false) の場合は、'.' の後ろの部分です。

動的配列を追加するには、array_push を使用するだけです。

ああ、リソースを閉じるのを忘れないでください。 opendir($dir) がある場合は、対応する closedir($dir) が存在する必要があります。

function listDir($dir, &$names, &$img_urls){	if(is_dir($dir))   	{     	if ($dh = opendir($dir)) 		{        	while (($file = readdir($dh)) !== false)			{				     			if((is_dir($dir."/".$file)) && $file!="." && $file!="..")				{     				//echo "文件名:",$file,"

"; listDir($dir."/".$file."/"); } else { $file = iconv("gb2312","UTF-8",$file); if($file!="." && $file!="..") { //var_dump($file); $file_name = strstr($file, '.', true); //echo $file_name."
"; array_push($names, $file_name); array_push($img_urls, $dir."/".$file); } } } closedir($dh); } }}
ログイン後にコピー


train.php で次のコードを使用して、トレーニング用のすべての画像の URL を取得します。

$img_url = array();$person_name = array();$trainDir = $_GET["trainDir"];listDir($trainDir, $person_name, $img_url);echo "从目录中我们得到了 ".sizeof($img_url)." 张图片".<br>;
ログイン後にコピー
次に、トレーニング グループ oldpeople_qiaoxi を作成します。
$response = $facepp->execute('/group/delete', array('group_name' => 'oldpeople_qiaoxi'));$response = $facepp->execute('/group/create', array('group_name' => 'oldpeople_qiaoxi'));
ログイン後にコピー
次に、ループを作成して各写真の顔を検出します。

$params['img']          = $img;$params['attribute']    = 'gender,age,race,smiling,glass,pose';$response               = $facepp->execute('/detection/detect',$params);
ログイン後にコピー
戻り値 $response から face_id を取得した後、人物を作成し、検出された顔をこのカテゴリ person に追加します。

$response = $facepp->execute('/person/delete', array('person_name' => $person_name[$i],'group_name' => 'oldpeople_qiaoxi'));$response = $facepp->execute('/person/create', array('person_name' => $person_name[$i],'group_name' => 'oldpeople_qiaoxi'));$response = $facepp->execute('/person/add_face', array('person_name' => $person_name[$i], 'face_id' => $face_id, 'group_name' => 'oldpeople_qiaoxi'));
ログイン後にコピー
すべての画像が処理されたら、モデルをトレーニングできます。

$response = $facepp->execute('/train/identify', array('group_name' => 'oldpeople_qiaoxi'));
ログイン後にコピー
トレーニングが成功した場合、結果は次のようになります:



テスト部分

この部分には以下が含まれます2 つの部分:

  • test.php はテスト画像の選択を担当します
  • recognition.php はテスト画像を

test.php 部分

は次のように表示されます。

ファイル選択部分は とすると、フォームが認識.php に送信されます。




recognition.php セクション

まず画像の URL を取得します。

$img_url = $_GET["testImgPath"];
ログイン後にコピー
次に、identify を実行して ID 結果を取得します。

$response = $facepp->execute('/recognition/identify', array('group_name' => 'oldpeople_qiaoxi', 'img' => $img_url));
ログイン後にコピー
ここでは中国語の名前と英語の名前を対応させるために配列が使用されています。face++ は中国語の名前を持つ画像をサポートしていないため、渡される画像はすべて英語の名前になりますが、中国語の名前は必要です。表示されるので、ここでマッピングが行われます。

$person_name = array("ami" => "艾米", "dongjian" => "张东健", "xiaowang" => "小王");
ログイン後にコピー







$img_url = array();$person_name = array();$trainDir = $_GET["trainDir"];listDir($trainDir, $person_name, $img_url);echo "从目录中我们得到了 ".sizeof($img_url)." 张图片".<br>;


版权声明:本文为博主原创文章,未经博主允许不得转载。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート