Introducción
- Los usuarios de Canva pueden dar rienda suelta a su creatividad y agregar ilustraciones personalizadas a sus diseños mediante la nueva herramienta Draw.
- Como las líneas o formas simples que los usuarios dibujan con el mouse o el trackpad pueden ser imprecisas, se desarrolló la función Shape Assist para compensarlo.
- Shape Assist usa aprendizaje automático (ML) para convertir garabatos inestables en gráficos vectoriales suaves.
Consideraciones de diseño
- Al desarrollar la función, la prioridad principal fue la latencia de clasificación para que la experiencia del usuario fuera rápida y precisa.
- La solución se implementó dentro del navegador para ofrecer reconocimiento de formas y asistencia de dibujo en tiempo real.
- No requiere conexión a internet, lo que garantiza accesibilidad incluso en situaciones sin conexión.
Recolección de datos
- La base de un modelo de ML exitoso está en la recolección de datos, y se recopilaron datos de dibujos de diversos usuarios.
- Las líneas dibujadas por los usuarios se registraron como secuencias de coordenadas x e y, reuniendo un conjunto de datos con estilos y variaciones diversos.
- Al registrar los datos usando coordenadas, se aseguró flexibilidad para el preprocesamiento de datos y la aplicación de diversas técnicas de aumento de datos.
Diseño y entrenamiento del modelo
- Se diseñó un modelo de ML que pudiera ejecutarse del lado del cliente sin afectar negativamente el tiempo de carga de la página.
- En lugar de CNN, se experimentó con RNN que usan directamente las coordenadas para minimizar el tamaño del modelo.
- Se ajustaron diversos hiperparámetros para identificar las propiedades óptimas del modelo.
- Considerando las diferencias en la velocidad de dibujo de los usuarios, se fijó la cantidad de puntos que representan cada forma.
- Se modificó el algoritmo Ramer-Douglas-Peucker (RDP) para reducir la cantidad de puntos manteniendo los detalles importantes.
Consideraciones de despliegue
- Como el modelo es pequeño y computacionalmente simple, todo el procesamiento puede ejecutarse dentro de la aplicación cliente.
- La función opera completamente offline, sin necesidad de conectarse a un servidor.
Arquitectura del modelo
- El modelo está compuesto por una estructura que incluye una capa LSTM y Gemm (capa densa o totalmente conectada).
- El modelo tiene un tamaño aproximado de 250 kilobytes y se implementó directamente en Typescript para ejecutarse en el cliente.
Reemplazo de formas
- Después de determinar la forma dibujada por el usuario, se usa un enfoque de template matching para alinear con precisión la representación de gráficos vectoriales y la ruta del dibujo del usuario.
Conclusión
- Están muy contentos de compartir la función Shape Assist con todo el mundo y esperan que tanto diseñadores profesionales como quienes solo hacen garabatos la disfruten.
Opinión de GN⁺
Lo más importante de este artículo es que Canva desarrolló la función Shape Assist, que usa un modelo de aprendizaje automático ejecutado dentro del navegador para reconocer con precisión las formas dibujadas por el usuario y convertirlas en gráficos vectoriales suaves. Esta función brinda retroalimentación inmediata al usuario y puede usarse incluso sin conexión a internet, lo que mejora la accesibilidad. Lo interesante de este artículo es que muestra cómo el avance de la tecnología puede hacer que el trabajo creativo sea más fácil y disfrutable.
1 comentarios
Opiniones de Hacker News
En lugar de una RNN, el algoritmo "$1 unistroke recognizer" es una solución simple y elegante para el problema
Ingenieros de ASML, TSMC y otras empresas crean chips más pequeños y con mejor rendimiento disparando láseres a plomo líquido para generar luz de longitudes de onda extremadamente cortas todos los días
Incluso al dibujar una línea recta con mouse o trackpad, es fácil que salga una forma irregular
Interés por la biblioteca que usa Canva para dibujar líneas
Sorpresa por la función de suavizado de curvas al dibujar curvas a mano alzada en Macromedia Flash hace más de 20 años
Mención del desarrollo de una variante del algoritmo Ramer-Douglas-Peucker (RDP)
Una versión de "garabato tembloroso" con apariencia dibujada a mano puede resultar más atractiva que los gráficos vectoriales pulidos
Al implementar este tipo de funciones, el usuario debería poder elegirlas y su estado de activación debería ser claro
Se entrena un modelo para reconocer 9 formas predefinidas
Ojalá esta función fuera de código abierto