Heim >WeChat-Applet >WeChat-Entwicklung >Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

高洛峰
高洛峰Original
2017-03-01 09:35:575763Durchsuche

1. Vorwort

Die ersten paar kleinen Bewerbungen scheinen schwach zu sein, und die Resonanz ist lauwarm. Heute werde ich eine auffälligere vorstellen Sie: die öffentliche Plattform WeChat.

Ich habe vor einiger Zeit im Internet einen Bericht gesehen, dass Wei Xiaoyong, außerordentlicher Professor und Direktor der Informatikabteilung der Sichuan-Universität, ein bildbasiertes System zur Anwesenheitserkennung im Klassenzimmer entwickelt hat „Wischen Sie über Ihr Gesicht“ während des Appells im Klassenzimmer.

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

Während des Appells müssen Sie nur Fotos von den Schülern im Klassenzimmer machen Laden Sie dann die Fotos auf den Server hoch und fügen Sie sie automatisch zu einem Gesamtbild zusammen. Anschließend verarbeitet das System die Fotos. Die Schüler-Avatare werden automatisch nummeriert und identifiziert. Am Ende werden die persönlichen Daten des Schülers mit zwei Optionen angezeigt: „Es „sme“ und „notme“ daneben. Auf diese Weise können Sie sofort erkennen, wer im Unterricht ist und wer schwänzt.

Was noch erstaunlicher ist, ist die statistische Signifikanz dieser Sache: Sie kann sogar die zwischenmenschlichen Beziehungen und sogar die persönlichen Interessen der Schüler analysieren Sitzen Sie gerne im Unterricht und neben wem sitzen Sie gerne? Analysieren Sie die Rohdaten nach einiger Zeit erneut und Sie werden herausfinden, wer in wen verliebt ist und wer danach in wen aufbrechen. Wer sitzt schon immer gerne alleine in der Ecke (Autismus)? Ein bestimmter Junge und ein bestimmter Junge sitzen seit einem halben Jahr jedes Mal zusammen (schwule Freunde???). Ich habe sofort das Gefühl, dass dieses Ding den Menschen unbegrenzten Raum für Fantasie gibt . groß. . . . . .

Kommen wir zur Sache:

Werfen wir zunächst einen Blick darauf, was Gesichtserkennung ist, und werfen wir einen Blick auf die Definition der Baidu-Enzyklopädie: Gesichtserkennung speziell bezieht sich auf die Verwendung der Analyse und des Vergleichs der Gesichtserkennung durch Computertechnologie zur Identifizierung anhand charakteristischer Informationen. Die Gesichtserkennung ist ein beliebtes Gebiet der Computertechnologieforschung. Sie kann die Helligkeit und Dunkelheit des Gesichts erkennen, die dynamische Belichtungskorrektur automatisch anpassen, das Gesicht verfolgen und erkennen und die Bildvergrößerung automatisch anpassen ein Hilfsmittel zur biologischen Identifizierung (bezieht sich im Allgemeinen auf die biologischen Merkmale einer Person), um einzelne Organismen zu unterscheiden.

Der technische Prozess der Gesichtserkennung (aus der Baidu-Enzyklopädie)

Er gliedert sich im Allgemeinen in drei Schritte:
(1) Erstellen Sie zunächst ein Gesichtsprofil des Gesichts. Das heißt, eine Kamera wird verwendet, um Gesichtsbilddateien der Gesichter des Personals der Einheit zu sammeln oder ihre Fotos zu machen, um Gesichtsbilddateien zu erstellen, und diese Gesichtsbilddateien werden in Gesichtsabdruckcodes (Faceprint) generiert und gespeichert.
(2) Holen Sie sich das aktuelle Bild des menschlichen Gesichts. Das heißt, Sie können mit einer Kamera das Gesichtsbild der aktuell ein- und austretenden Person erfassen oder ein Foto aufnehmen, es eingeben und aus der aktuellen Gesichtsbilddatei einen Gesichtsmustercode generieren.
(3) Vergleichen Sie den aktuellen Gesichtsmustercode mit dem Archivinventar. Das heißt, der Gesichtsmustercode des aktuellen Gesichtsbildes wird abgerufen und mit dem Gesichtsmustercode im Archivinventar verglichen. Die oben erwähnte Methode der „Gesichtsmusterkodierung“ basiert auf den wesentlichen Merkmalen und Anfängen des menschlichen Gesichts. Diese Kodierung von Gesichtsmustern ist robust gegenüber Veränderungen des Lichts, des Hauttons, der Gesichtsbehaarung, der Frisur, der Brille, des Gesichtsausdrucks und der Körperhaltung und ermöglicht so die genaue Identifizierung einer Person unter Millionen anderen. Der Gesichtserkennungsprozess kann mit herkömmlichen Bildverarbeitungsgeräten automatisch, kontinuierlich und in Echtzeit durchgeführt werden.

2. Gesichtserkennung auf der öffentlichen WeChat-Plattform

1. Bilderfassung

Zunächst müssen Sie die von den Benutzern gesendeten Bilder erhalten , Öffentliche WeChat-Plattform Unterstützt den Empfang von Bildern,

Ein vom Benutzer gesendetes Bild sieht wie folgt aus:

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

Das Format der Bildnachricht ist wie folgt:

<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 des Nachrichtenempfängers, normalerweise die WeChat-ID des öffentlichen Plattformkontos
FromUserName WeChat-ID des Nachrichtensenders
CreateTime Nachrichtenerstellungszeit
MsgType Nachrichtentyp; Die Bildnachricht ist Bild
PicUrl Bildlinkadresse
MsgId Nachrichten-ID-Nummer

2 🎜>Face++ bietet eine Gesichtserkennungsschnittstelle,

Erkennt die Positionen aller Gesichter (Gesicht) in einem bestimmten Bild (Bild) und die entsprechende Schnittstellenadresse für Gesichtsattribute lautet wie folgt:

http://apicn. faceplusplus.com/v2/detection/detect


Parameterapi_keyapi_secretURL oder IMG[POST]Modus

Ist es notwendig

Bedeutung

Erforderlich

App's Face++ API-Schlüssel

Erforderlich

APP's Face++ API Secret

muss

URL des zu erkennenden Bildes Oder für Binärdaten, die über die POST-Methode hochgeladen werden, muss die Originalbildgröße weniger als 3M betragen

Optional

检测模式可以是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%

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

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

 

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. 效果展示

下面是实际使用结果:

漂亮/帅气指数鉴定技术

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und GesichtserkennungDie Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

近亲及亲子鉴定技术

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und GesichtserkennungDie Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

男人味/女人味鉴定技术

Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und GesichtserkennungDie Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung

更多Die Nachrichtenschnittstelle der öffentlichen WeChat-Plattform entwickelt Bilderkennung und Gesichtserkennung相关文章请关注PHP中文网!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn