¿Qué algoritmo utiliza AutoDraw de Google para asociar nuestro dibujo con uno existente?

No tengo ningún conocimiento interno de cómo se hace, pero así es como lo construiría. Lo trataría como un motor de búsqueda, recuperando coincidencias de la misma manera que lo hacen Google o Bing cuando ingresas una imagen en su barra de búsqueda.

Obtén datos de entrenamiento

  1. Construye una biblioteca con un montón de formas diferentes que la gente quiera dibujar.
  2. Haga que la gente intente dibujar esas cosas usando una sola curva. Cada intento es dibujar uno en particular. Esto nos da datos de entrenamiento etiquetados.

Representar dibujos

Hay muchas formas de representar una curva y no puedo decir con certeza lo que hicieron, pero aquí hay algunas posibilidades.

  1. Recorta un cuadro alrededor de la curva y guárdalo.
    1. Esto se procesaría con una red neuronal convolucional.
    2. No recomendaría este enfoque para un proyecto personal, ya que es mucho más computacionalmente intensivo que los demás. Sin embargo, para Google no es un problema demasiado grande, por lo que es probable que lo que estén usando.
  2. Codifíquelo como una secuencia de puntos
    1. Procesado por una red neuronal recurrente, muy probablemente.
    2. Consideraría seriamente este enfoque.
  3. Codifíquelo como una secuencia de ángulos entre puntos
    1. También procesado por una red neuronal recurrente
    2. Este es el enfoque con el que probablemente terminaría yendo.
    3. Tenga en cuenta que esta codificación es, naturalmente, invariante de traducción, pero no invariante de rotación.

Codificar dibujos

Ahora necesitamos transformar nuestras representaciones de dibujos en un espacio en el que puedan compararse fácilmente con nuestra base de datos de formas. Para hacer esto, construimos una red de Manhattan.

Una red de Manhattan es esencialmente dos subredes separadas con dos entradas diferentes cuyas salidas son de la misma dimensión. La función de pérdida es la norma de la distancia entre sus salidas si se supone que las entradas son las mismas. Entrena las subredes para codificar las entradas en un espacio donde una métrica de similitud estándar puede compararlas, haciendo que las comparaciones sean mucho más eficientes desde el punto de vista computacional.

Se llama red de Manhattan porque tradicionalmente usa la métrica de Manhattan (distancia L1) para medir la similitud, pero puede usar la métrica que desee.

  1. Entrene a la red de Manhattan para que coincida con los datos de entrenamiento con las formas apropiadas en su base de datos.
  2. Mantenga la codificación de subred de cada forma en su base de datos. Ese es tu índice de búsqueda.

Manejando un dibujo

Ahora el usuario ha dibujado algo. ¿Cómo se determina qué formas sugerir?

  1. Ejecute el dibujo del usuario a través de la subred para obtener su codificación.
  2. Compare esa codificación con cada una de las codificaciones de su base de datos de formas y devuelva la [matemática] n [/ matemática] más cercana, clasificada en orden creciente de distancia.

AutoDraw de Google utiliza redes neuronales artificiales para reconocer los dibujos. Lanzaron un clon de Pictionary llamado Quick, Draw! hace un par de meses para reunir un montón de muestras diferentes de dibujos de personas para capacitar a la red.

Parece que la solución se basa en este documento: una representación neuronal de dibujos de croquis
Como ya señaló Noah Townsend, recopilaron datos con Quick, Draw!

¡Prácticamente obtuvieron datos de entrenamiento gratis al gamificar el proceso!