>  기사  >  위챗 애플릿  >  WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

高洛峰
高洛峰원래의
2017-03-01 09:35:575715검색

1. 서문

처음 몇 개의 작은 애플리케이션이 약한 것 같고, 반응이 미온적인 것 같습니다. 오늘은 더 눈길을 끄는 애플리케이션을 소개하겠습니다. 당신: WeChat 공개 플랫폼.

얼마 전 인터넷에서 쓰촨대학교 컴퓨터과학과 부교수이자 디렉터인 웨이샤오용(Wei Xiaoyong)이 이미지 기반 수업 출석 시스템을 개발했다는 ​​보도를 봤습니다. 수업 중 출석부 '얼굴 스와이프' 아래 사진을 참고하세요.

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

점호 중에는 교실에 있는 학생들의 모습만 여러 각도에서 촬영하면 됩니다. 그런 다음 사진을 서버에 업로드하고 자동으로 전체 사진으로 연결하면 시스템이 사진을 처리합니다. 학생 아바타에는 자동으로 번호가 매겨지고 식별되며 학생의 개인 정보가 마지막에 다음 두 가지 옵션과 함께 표시됩니다. 그 옆에는 'sme'와 'notme'가 있습니다. 이런 식으로 누가 수업을 듣고 있는지, 누가 수업을 빼먹는지 즉시 알 수 있습니다

더 놀라운 것은 이 것의 통계적 중요성입니다. 학생들의 대인 관계는 물론 성격 관심사까지 분석할 수 있습니다. 당신은 수업에 앉는 것을 좋아하고, 누구 옆에 앉는 것을 좋아합니까? 원시 데이터를 얻은 후 일정 시간이 지나면 누가 누구와 사랑에 빠졌는지, 누구와 헤어진 후에는 누구와 함께 있는지 분석할 수 있습니다. 항상 구석에 혼자 앉아 있는 것을 좋아하는 사람(자폐증), 어떤 소년과 어떤 소년은 반년 동안 매번 함께 앉아 있었고(게이 친구???), 이것이 사람들에게 무한한 상상의 공간을 제공한다는 것을 즉시 느낍니다. 큰. . . . . .

본론으로 들어가자:

먼저 얼굴 인식이 무엇인지 살펴보고 바이두 백과사전의 정의를 살펴보자. 얼굴 인식은 구체적으로 다음을 가리킨다. 특징적인 정보를 이용한 식별을 위해 안면 시각 분석 및 비교 컴퓨터 기술을 사용합니다. 얼굴 인식은 얼굴의 명암을 감지하고 동적 노출 보정을 자동으로 조정하며 얼굴을 추적 및 감지하고 이미지 확대를 자동으로 조정할 수 있는 컴퓨터 기술 연구 분야입니다. 생물학적 식별을 위한 도구. 일반적으로 개인의 생물학적 특성을 말함) 개별 유기체를 구별합니다.

얼굴 인식 기술 과정(바이두백과사전)

일반적으로 세 단계로 나누어집니다.
(1) 먼저 얼굴의 얼굴 이미지 파일을 만듭니다. 즉, 카메라를 이용하여 부대원들의 얼굴의 얼굴 이미지 파일을 수집하거나 사진을 촬영하여 얼굴 이미지 파일을 구성하고, 이러한 얼굴 이미지 파일을 얼굴 지문(Faceprint) 코드로 생성하여 저장한다.
(2) 현재 사람 얼굴 이미지를 가져옵니다. 즉, 카메라를 이용하여 현재 출입하는 사람의 얼굴영상을 캡쳐하거나, 사진을 촬영하여 입력하고, 현재 얼굴영상 파일로부터 얼굴패턴코드를 생성한다.
(3) 현재 얼굴 패턴 코드와 아카이브 인벤토리를 비교합니다. 즉, 현재 얼굴 영상의 얼굴 패턴 코드를 검색하여 아카이브 인벤토리에 있는 얼굴 패턴 코드와 비교한다. 위에서 언급한 "얼굴 패턴 인코딩" 방법은 인간 얼굴의 본질적인 특성과 시작점을 기반으로 작동합니다. 이 얼굴 패턴 인코딩은 빛, 피부색, 얼굴 털, 헤어스타일, 안경, 표현 및 자세의 변화에 ​​대해 강력하므로 수백만 명의 개인 중에서 개인을 정확하게 식별할 수 있습니다. 얼굴 인식 과정은 일반 영상처리 장비를 이용해 자동, 연속, 실시간으로 완료될 수 있다.

2. 위챗 공개 플랫폼에서 얼굴 인식

1. 이미지 획득

먼저 사용자가 보낸 사진을 얻어야 합니다. , WeChat 공개 플랫폼은 사진 수신을 지원합니다.

사용자가 보낸 사진은 다음과 같습니다.

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

사진 메시지의 형식은 다음과 같습니다. 🎜>

<xml>
    <ToUserName><![CDATA[gh_13d1a3a7x46a]]></ToUserName>
    <FromUserName><![CDATA[oKaHDjt60aAyPvQmUX3ddyix_zG8]]></FromUserName>
    <CreateTime>1357543196</CreateTime>
    <MsgType><![CDATA[image]]></MsgType>
    <PicUrl><![CDATA[http://www.php.cn/]]></PicUrl>
    <MsgId>5830603629728080261</MsgId></xml>

ToUserName 메시지 수신자의 WeChat ID, 일반적으로 공개 플랫폼 계정 WeChat ID

FromUserName 메시지 발신자의 WeChat ID
CreateTime 메시지 생성 시간
MsgType 메시지 유형, 그림 메시지 이미지
PicUrl 이미지 링크 주소
MsgId 메시지 ID 번호

Face++ 얼굴 인식 인터페이스를 제공합니다.

주어진 이미지(Image)에서 모든 얼굴(Face)의 위치를 ​​감지하고 해당 얼굴 속성 인터페이스 주소는 다음과 같습니다.

http://apicn.faceplusplus.com /v2/Detection/Detect


매개변수api_keyapi_secreturl 또는 img[POST]모드

필수여부

의미

필수

앱의 Face++ API 키

필수

APP의 Face++ API 비밀

이어야 합니다.

감지하거나 통과할 이미지의 URL POST 방식으로 업로드한 바이너리 데이터의 경우 원본 이미지 크기가 3M 미만이어야 합니다

선택

检测模式可以是normal(默认) 或者 oneface 。在oneface模式中,检测器仅找出图片中最大的一张脸。

attribute

可选

可以是none或者由逗号分割的属性列表。默认为gender, age, race, smiling。目前支持的属性包括:gender, age, race, smiling, glass, pose

tag

可选

可以为图片中检测出的每一张Face指定一个不包含^@,&=*'"等非法字符且不超过255字节的字符串作为tag,tag信息可以通过 /info/get_face 查询

async

可选

如果置为true,该API将会以异步方式被调用;也就是立即返回一个session id,稍后可通过/info/get_session查询结果。默认值为false。


返回如下

{
    "face": [
        {
            "attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }
            },
            "face_id": "c772b4b66c00d46b15344eff74b56e48"
        }
    ],
    "img_height": 293,
    "img_id": "3005132383841edd08c9b500fb1fe2c4",
    "img_width": 440,
    "session_id": "4e64c73fec19442cbefde3cf9bd6b53d",
    "url": ""
}

参数:

gender

object

包含性别分析结果,value的值为Male/Female, confidence表示置信度

age

object

包含年龄分析结果,value的值为一个非负整数表示估计的年龄, range表示估计年龄的正负区间

race

object

包含人种分析结果,value的值为Asian/White/Black, confidence表示置信度

smiling

object

包含微笑程度分析结果,value的值为0-100的实数,越大表示微笑程度越高

实现方法

取结果参数中的gender,age,race,smiling等参数 ,如

"attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }

上述结果中,

年龄age为17,误差在5岁
性别为female,表示女,置信度为99%
种族为亚洲Asian,
微笑度 87%

和图片比较一下,还是比较一致的

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

 

3. 程序实现

SDK如下:

"attribute": {
                "age": {
                    "range": 5,
                    "value": 17
                },
                "gender": {
                    "confidence": 99.9781,
                    "value": "Female"
                },
                "glass": {
                    "confidence": 99.9815,
                    "value": "None"
                },
                "pose": {
                    "pitch_angle": {
                        "value": 0.000019753399999999996
                    },
                    "roll_angle": {
                        "value": 1.75177
                    },
                    "yaw_angle": {
                        "value": 4
                    }
                },
                "race": {
                    "confidence": 99.471,
                    "value": "Asian"
                },
                "smiling": {
                    "value": 87.1365
                }

调用方式如下:

<?PHP
/**
* Face++ PHP SDK
* author: Tianye
* since:  2013-12-11
**/
class Facepp{
    ######################################################
    ### If you choose Amazon(US) server,please use the ###
    ### http://apius.faceplusplus.com/v2               ###
    ### or                                             ###
    ### https://apius.faceplusplus.com/v2              ###
    ######################################################
    var $server = &#39;http://apicn.faceplusplus.com/v2&#39;;
    #var $server = &#39;https://apicn.faceplusplus.com/v2&#39;;
    #var $server = &#39;http://apius.faceplusplus.com/v2&#39;;
    #var $server = &#39;https://apius.faceplusplus.com/v2&#39;;

    #############################################
    ### set your api key and api secret here. ###
    #############################################
    var $api_key = &#39;{your API KEY}&#39;;
    var $api_secret = &#39;{your API SECRET}&#39;;

    public function __construct($api_key=NULL, $api_secret=NULL, $server=NULL){
        if($api_key){
            $this->api_key = $api_key;
        }
        if($api_secret){
            $this->api_secret = $api_secret;
        }
        if($server){
            $this->server = $server;
        }
    }

    /**
    * @param $method : The Face++ API 
    * @param $params : Request Parameters
    * @return : Array {&#39;http_code&#39;:&#39;Http Status Code&#39;, &#39;request_url&#39;:&#39;Http Request URL&#39;,&#39;body&#39;:&#39; JSON Response&#39;}
    **/
    public function execute($method,$params){
        if(empty($params)){
            $params=array();
        }
        $params[&#39;api_key&#39;] = $this->api_key;
        $params[&#39;api_secret&#39;] = $this->api_secret;

        return $this->request("{$this->server}{$method}",$params);
    }

    private function request($request_url , $request_body){
        $useragent = &#39;Faceplusplus PHP SDK/1.0&#39;;
        $curl_handle = curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, $request_url);
        curl_setopt($curl_handle, CURLOPT_FILETIME, TRUE);
        curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, FALSE);
        curl_setopt($curl_handle, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_LEAST_RECENTLY_USED);
        curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 5);
        curl_setopt($curl_handle, CURLOPT_HEADER, FALSE);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl_handle, CURLOPT_TIMEOUT, 5184000);
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 120);
        curl_setopt($curl_handle, CURLOPT_NOSIGNAL, TRUE);
        curl_setopt($curl_handle, CURLOPT_REFERER, $request_url);
        curl_setopt($curl_handle, CURLOPT_USERAGENT, $useragent);
        if (extension_loaded(&#39;zlib&#39;)){
            curl_setopt($curl_handle, CURLOPT_ENCODING, &#39;&#39;);
        }
        curl_setopt($curl_handle, CURLOPT_POST, TRUE);
        if(array_key_exists(&#39;img&#39;,$request_body)){
            $request_body[&#39;img&#39;] = &#39;@&#39;.$request_body[&#39;img&#39;];
        }else{
            $request_body=http_build_query($request_body);
        }
        curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $request_body);
        $response_text = curl_exec($curl_handle);
        $reponse_header = curl_getinfo($curl_handle);
        curl_close($curl_handle);
        return array(&#39;http_code&#39;=>$reponse_header[&#39;http_code&#39;],&#39;request_url&#39;=>$request_url,&#39;body&#39;=>$response_text);
    }
}

在微信中再将结果整理成文本消息就可以了。

 

4. 效果展示

下面是实际使用结果:

漂亮/帅气指数鉴定技术

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

近亲及亲子鉴定技术

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

男人味/女人味鉴定技术

WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발

更多WeChat 공개 플랫폼 메시징 인터페이스, 이미지 인식 및 얼굴 인식 개발相关文章请关注PHP中文网!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.