New question

Question:

Date: 20-03-2015 13:17:22 (In Spanish)

¿Cómo realizar reconocimiento facial con imágenes 2D?[Unresolved]

¿Alguien trabajó con reconocimiento facial?
Jugando un poquito con PHP realice un programa que convierte las imagenes a html/pixeles, y se me ocurre que con Inteligencia Artificial se podría realizar un trabajo con esos pixeles para reconocimiento de rostros, no?

DEMO: http://www.phpcentral.com/ejemplos/imgtohtml/index.php <-- si inspeccionan el código podrán ver que la imagen esta confeccionada con elementos html <ul> y <li>.

Espero sus comentarios, saludos!

--------------------------------------------------------------------------------

Edición 29/06/2016: a pedido de Victor se agrega el código de la demo, es 100% ejecutable.

Nota: recuerden incluir junto al script una imagen PNG (idealmente chica, aprox. de 150x150 pixeles) y modificar en el script el nombre de la foto. En el caso que quieran utilizar una imagen JPG (u otro formato) deberán utilizar la correspondiente función, ya que en este caso use imagecreatefrompng(), que como su nombre lo indica es para formato PNG.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <style type="text/css">
            ul{
                margin: 0;
                padding: 0;
                border: 0;
            }
            ul.padre li{
                display: block;
                border: 0;
                margin: 0;
                padding: 0;
            }
            ul.padre li ul.hijo li{
                width: 1px;
                height: 1px;
                padding: 0px;
                border: 0px;
                font-size: 0px;
                display: table-cell;
                border-spacing: 0px 0px;
                border-collapse: collapse;
            }
        </style>
        <?php
        $im = imagecreatefrompng("Fernando4x4.png");
        //config maximos y minimos
        $columnas = imagesx($im);
        $filas = imagesy($im);
        $countI = 0;
        $countJ = 0;
        ?>
        <ul class="padre">
            <?php for ($i = 0; $i < $filas; $i++): ?>
                <?php $countI++; ?>
                <li>
                    <ul class="hijo">
                        <?php for ($j = 0; $j < $columnas; $j++): ?>
                            <?php $countJ++; ?>
                            <?php
                            $rgb = imagecolorat($im, $j, $i);
                            $r = ($rgb >> 16) & 0xFF;
                            $g = ($rgb >> 8) & 0xFF;
                            $b = $rgb & 0xFF;
                            ?>
                            <li style="background-color: rgb(<?php echo $r, ',', $g, ',', $b; ?>);">&nbsp;</li>
                            <?php endfor; ?>
                    </ul>
                </li>
            <?php endfor; ?>
        </ul>
        Pixeles width:<?php echo $columnas; ?><br/>
        Pixeles height:<?php echo $filas; ?><br/>
        Tamaño calculado: <?php echo ($countJ / $countI), 'x', $countI; ?>
    </body>
</html>
Tags: Artificial Intelligence (AI) - Input - PHP - Question Votes: 2 - Answers: 16 - Views: 59 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 20-03-2015 13:19:38 Les dejo un video en el cual se puede ver las implicaciones del reconocimiento facial.

    La Vigilancia Total - Reconocimiento Facial


      Votes: 1 - Link answer
     
  • Date: 20-03-2015 14:23:53 Lo unico que se me ocurre es implementar base64 para codificar la imagen luego determinar por medio de patrones sectores de codigo y determinar esquinas del rostro
    Pero seria tendria que saber que seccion de codigo corresponde a cada n pixeles colororeados
      Votes: 0 - Link answer
     
  • Date: 20-03-2015 14:25:32 Pues ese tipo de programas buscan los patrones faciales comunes, nariz, ojos boca, nunca he trabajado con algo similar la neta, pero supongo que el sistema tiene una plantila por ejemplo de un ojo humano y compara la similitud en pixeles o nose como sea, y ya determina la coordenada donde se ubica   Votes: 1 - Link answer
     
  • Date: 20-03-2015 14:39:09 Muy bueno el artículo de Wikipedia sobre "Sistema de reconocimiento facial": http://es.wikipedia.org/wiki/Sistema_de_reconocimiento_facial

    Funcionamiento
    El proceso consta de cuatro módulos principales:
    1) Detección de la cara: detecta que hay una cara en la imagen, sin identificarla. Si se trata de un video, también podemos hacer un seguimiento de la cara. Proporciona la localización y la escala a la que encontramos la cara.
    2) Alineación de la cara: localiza las componentes de la cara y, mediante transformaciones geométricas, la normaliza respecto propiedades geométricas, como el tamaño y la pose, y fotometricas, como la iluminación. Para normalizar las imágenes de caras, se pueden seguir diferentes reglas, como la distancia entre las pupilas, la posición de la nariz, o la distancia entre las comisuras de los labios. También se debe definir el tamaño de las imágenes y la gama de colores. Normalmente, para disminuir la carga computacional del sistema, se acostumbra a utilizar imágenes pequeñas en escala de grises. A veces también se realiza una ecualización del histograma.
    3) Extracción de características: proporciona información para distinguir entre las caras de diferentes personas según variaciones geométricas o fotométricas.
    4) Reconocimiento: el vector de características extraído se compara con los vectores de características extraídos de las caras de la base de datos. Si encuentra uno con un porcentaje elevado de similitud, nos devuelve la identidad de la cara; si no, nos indica que es una cara desconocida.

    Los resultados obtenidos dependen de las características extraídas para representar el patrón de la cara y de los métodos de clasificación utilizados para distinguir los rostros, pero para extraer estas características apropiadamente, hace falta localizar y normalizar la cara adecuadamente

      Votes: 1 - Link answer
     
  • Date: 20-03-2015 15:47:26 Buenas Fernando, es un gusto ayudarte, el reconocimiento facial va más allá de un conjunto procesos, combina mucha y muchísima matemática más que programación (esto mediante AI), en PHP puede ser implementada mediante FANN (Fast Artificial Neural Networks) pero esto se torna muy complicado debido a la cantidad de álgebral lineal y otras variedades de la matemática que se deben conocer, el cálculo de una perceptron es bastante simple sin embargo se deben usar muchas y no es lo correcto si no es una propagación hacia atrás para crear un reconocimiento multicapa, una excelente opción es OpenCV, igual para entenderlo deberías saber matemática pero puedes usarlo sin saberlo, no hay adaptación oficial hasta el momento para PHP pero puedes crear un webservice mediante WebRTC que envíe a un script en Python que retorne un JSon y que lo interprete el PHP.

    Te voy a explicar un poco eigenfaces (espero que lo entiendas de una manera simple):
    1) Las eigenfaces son vectores común y corrientes como los que conoces en programación
    2) Estas se derivan de las matrices de covarianza (muy útil en la estadística para correlacionar datos) de aquí viene el porque se utiliza
    3) Pero no solo entra esto, además tiene un PCA (componente principal de análisis) su nombre lo describe de una manera bastante comprensible si no sabes muchas matemáticas
    4) En resumen este vector guarda posiciones y se basa en las mismas para comparlas con el resto, esto solo para el reconocimiento
    5) Cuando se habla de comparación sucede lo mismo, hay diversas técnicas para comparación ya a nivel de programación, puedes crear un modelo el cual entrenar y extraer las imágenes en escala de grises PGM y comparlas con la imagen que se obtiene de diversos multimedios
    6) Cuando obtengas la imagen de un multimedio recuerda debes convertirla a PGM
      Votes: 3 - Link answer
     
  • Date: 20-03-2015 16:12:51 La logica destras de la IA se puede realizar en c++ y diseñar el ejecutable para que retorne un Json ? o c++ no retorna ese tipo de archivos ?   Votes: 0 - Link answer
     
  • Date: 20-03-2015 16:58:21 Pues la lógica IA es preferible por mucho diseñarla en C++ he trabajado para altos consumos y la verdad es más que buena. Si bien c++ no retorna directamente json, se puede trabajar con Frameworks como CPPCMS para trabajar c++ con web y retornar un JSON (bastante complicado a mi parecer), una buena opción es utilizar Python (lo uso mucho) tiene el sci-kit y los numpy para trabajar con IA.   Votes: 1 - Link answer
     
  • Date: 20-03-2015 19:19:44 Yo e realizado algunos experimientos con cierto grado de acierto les comparto la arquitectura:

    Linux Ubuntu 12.04 [Base]
    OpenCV 2.4.*
    Base de Datos para entrenamiento: http://facedetection.com/facedetection/datasets.htm
    el software lo realize en c++, empaquetado con enlaces simbolicos.
    <<La tarea del c++, era reconocer y detectar el face (eigenfaces), y enviar los resultados a un mensaje a la cola de mensajeria>>
    RabbitMQ (para la gestion de mensajes)
    Base de Datos MongoDB.
    PHP recibia los datos. y mostraba los resultados (Nada de logica aqui)
    Nginx Como servidor HTTP. (mas ligero q apache)
    


    Saludos
      Votes: 1 - Link answer
     
  • Date: 21-03-2015 20:30:36 Esta muy bueno el generador de la imagen a html5 que hiciste

    En este link Reconocimiento facial muestran como hacer un reconocimiento facial al estilo de Facebook.
    Esta realizado con Jquery y Face detection.

    Habría que buscar mas información al respecto a la biometria

    Saludos
      Votes: 2 - Link answer
     
  •  
      0  
     
    Date: 28-06-2016 12:01:38 @fernando wow! nos podrías mostrar tu algoritmo para convertir la imagen en html/pixeles   Votes: 0 - Link answer
     
  • Date: 28-06-2016 12:33:41 el link Reconocimiento facial lamentablemente la pagina ya no existe :(   Votes: 1 - Link answer
     
  • Date: 29-06-2016 06:35:09 Walter, que lastima que el código de reconocimiento facial que habias encontrado en aquel momento ya no este disponible, ya que recuerdo haberlo descargado/probado y funcionaba muy bien..... En base a tu comentario me di a la tarea de buscarlo en mis disco pero no lo encontre, una lastima, por favor si alguien más lo había descargado y lo tiene a disposición compartanlo, muchas gracias de antemano.

    Victor, me alegra que te guste la demo de mi post original, y para serte sincero me disgusta un poco ver que por un lado pedis el código y por otro votas negativamente mi aporte, la verdad que no te comprendo, pero bueno, vos tendras tus razones. Al margen de lo dicho, he editado la pregunta original y agregado el código, que se aproveche (si alguien lo puede optimizar para imágenes grandes bienvenido sea).

    Cambio el estado de la pregunta a "No resuelta" ya que el código compartido por Walter (el cual daba la solución) ya no esta disponible. Espero que podamos encontrar una nueva solución.

    Saludos a todos y buen código!
      Votes: 0 - Link answer
     
  •  
      1  
     
    Date: 29-06-2016 07:33:15 jaja disculpa, soy nuevo en el foro no sé donde le habré clickeado, ahora lo arreglo. GRACIAS   Votes: 1 - Link answer
     
  • Date: 07-12-2016 07:43:45 Con respecto al comentario de Walter, dejo el link de webarchive, donde podran ver la pagina.

    https://web.archive.org/web/20121003172210/http://www.lewebmonster.com/reconocimiento-de-caras-utilizando-jquery-y-el-plugin-face-detection/



    Saludos!
      Votes: 0 - Link answer
     
  • Date: 07-12-2016 12:12:52 Hola
    Aqui les dejo otra web parecida a la web que he mencionado que ya no esta mas disponible.
    Detección de caras con jQuery tiene el codigo para descargar una demo online

    Espero que no desaparezca la web.

    Saludos
      Votes: 0 - Link answer
     
  • Date: 13-04-2019 04:39:35 Hice una pequeña prueba con la librería PHP Face Detection y escribí este post.

    La verdad es que el resultado fue muy bueno y muy fácil de usar.
      Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com