PoseDance: Construye un Entrenador de TikTok

Rate this content
Bookmark

¿Pasas horas desplazándote por TikTok, asombrado por los movimientos de baile extravagantes pero complicados de los jóvenes de hoy en día? Esos chicos están triunfando mientras tú te sientas a codificar consultas SQL. Afortunadamente, somos tecnólogos y no hay problema que no podamos resolver, incluido mejorar en el baile de TikTok. En esta charla, te mostraré cómo perfeccioné mis movimientos construyendo PoseDance, tu amigable entrenador de TikTok. Discutiremos cómo aproveché PoseNet, que te permite identificar el movimiento del cuerpo y dibujar un 'esqueleto' en un video. Combinado con una cámara web que mapea tu propio esqueleto de baile, un poco de matemáticas para comparar los puntos coincidentes, Azure Functions para autenticar a un usuario y PlayFab como backend amigable para juegos para mantener las puntuaciones y crear un ranking, tienes el pasatiempo perfecto para la cuarentena, haciendo el ridículo frente a una cámara web. ¡Ven a bailar conmigo!

31 min
18 Jun, 2021

Video Summary and Transcription

En esta charla, Jen Looper presenta PoseDance, una aplicación entrenadora de TikTok que utiliza PoseNet para la detección de poses. Discute los desafíos de la puntuación y el potencial para aplicaciones médicas. Jen también menciona el uso de Azure Functions y PlayFab para el backend y despliegue de la aplicación. La charla concluye con un recorrido por el código y una invitación para contribuir a mejorar el sistema de puntuación.

Available in English

1. Introducción a PoseDance y TikTok

Short description:

Hola a todos, en esta parte, les presentaré PoseDance, una aplicación de entrenamiento de TikTok. Hablaremos sobre la idea de construir un esqueleto utilizando la API de Canvas y video para mejorar tus habilidades de baile. Soy Jen Looper, una Líder de Defensa en la Nube en Microsoft, y también hablaré sobre qué es TikTok, profundizaré en PoseNet, explicaré cómo funciona internamente y compartiré información sobre cómo construí PoseDance. ¡Estén atentos para una demostración emocionante!

Hola a todos, estoy muy emocionada de estar aquí para hablarles hoy sobre una aplicación muy interesante que he creado. Se llama PoseDance y lo que es es un entrenador de TikTok. Así que vamos a hablar un poco sobre PoseDance, la idea de construir un esqueleto, utilizando la API de Canvas y video para permitirte bailar tan bien como esos increíbles chicos a los que todos estamos perdiendo el tiempo viendo en TikTok. Mi nombre es Jen Looper, siempre puedes encontrarme en Twitter como Jen Looper y soy una Líder de Defensa en la Nube en Microsoft. Así que la agenda de hoy es hablar un poco sobre qué es TikTok, vamos a hablar sobre PoseNet, vamos a profundizar un poco en lo que se ejecuta detrás de escena en PoseNet y cómo fue construido. Vamos a hablar un poco sobre cómo construí PoseDance y luego voy a ir

2. Introducción a TikTok

Short description:

TikTok es una popular aplicación móvil que evolucionó a partir de Musical.ly. Es conocida por sus videos cortos, especialmente de bailes. A pesar de ser una pérdida de tiempo, es increíblemente divertida. Estén atentos para obtener más información y recursos sobre TikTok.

para hacer una demostración para ustedes, les encantará. Bueno, ¿qué es TikTok? Si no están al tanto de lo que es TikTok, les informo que es la mejor aplicación móvil actualmente en el mercado. Se basa en Musical.ly, que era una pequeña aplicación que se lanzó hace un par de años para que los niños hicieran videos musicales y evolucionó a TikTok, que es, para algunos, debido a esta evolución de Musical.ly, muy adecuada para que la gente baile en esta aplicación. Es una completa pérdida de tiempo, pero también es muy, muy divertida. Es muy similar a Vine, que eran videos cortos, los videos en TikTok duran aproximadamente un minuto cada uno, pero puedes unir varios videos pequeños para llegar al límite de 60 segundos y es famosa por sus bailes y más adelante compartiré esta presentación de diapositivas, pueden encontrarme en Twitter y compartiré el enlace y hay muchos artículos pequeños referenciados en estas diapositivas que pueden consultar.

3. Introducción a PoseNet

Short description:

PoseNet es un producto de Google que permite la detección de posturas en el navegador. Utiliza TensorFlow.js y se puede utilizar con cámaras web, video o imágenes. Puede mostrar una o más personas y tiene varios casos de uso, como deportes y yoga. Proporciona estimaciones de 17 puntos clave del cuerpo y el usuario puede crear el esqueleto en el lienzo. PoseNet se basa en los modelos de PersonLab, que permiten un enfoque de partes primero para determinar las acciones de una persona en una imagen.

cómo pasé una semana en TikTok y solo perdí una semana en TikTok. Muy bien. ¿Qué es PoseNet? Hablemos un poco sobre qué es PoseNet. PoseNet te permite hacer detección de posturas en el navegador. Es un producto de Google y es muy, muy interesante. Utiliza TensorFlow.js detrás de escena por lo que se puede utilizar para tus sitios web dentro de tus sitios web. Se puede utilizar con tu cámara web, con video dentro de un lienzo, o se puede utilizar en imágenes estáticas, cualquier tipo de imágenes que desees mostrar. Puede mostrar una o más personas, por lo que puedes tener un esqueleto que creas para las posturas de una persona que se mostrarán, o puedes enfocarte en varias personas en un video o una imagen. Uno de los casos de uso es su uso en deportes. Por ejemplo, para hablar con un modismo estadounidense, si me deslicé en la primera base al jugar béisbol y me torcí el tobillo, si hay un video de eso, puedes ver exactamente y puedes señalar exactamente dónde salió mal para que puedas descubrir dónde te equivocaste y torciste el tobillo, y tal vez puedas evitar hacerlo otra vez. Personalmente, me gustaría probar esto para mostrar posturas de yoga y cuál es la mejor posición y ubicación para tus manos, pies y todo tu cuerpo. Y todo lo que hace es proporcionar estimaciones de la posición de 17 puntos clave del cuerpo y tú mismo debes crear el esqueleto en el lienzo, por lo que no es completamente listo para usar. Todo lo que hace es darte la estimación de esos puntos del cuerpo, y luego puedes hacer lo que quieras con los datos que se te envían de vuelta a ti. Un ejemplo de salida de PoseNet se ve así. Básicamente dice que, sabes, creemos que esto es el ojo izquierdo. Envía de vuelta una puntuación que tiene un 99% de seguridad de que esto es un ojo izquierdo en las coordenadas cartesianas X e Y dentro de la imagen o dentro del video. Ahora, si estás ejecutando esto en un video, te dará este conjunto de datos para cada fotograma clave. Por lo tanto, es una pieza bastante poderosa de software. Así que cada vez que hablo de aprendizaje automático en el navegador, o cualquier tipo de aprendizaje automático integrado en aplicaciones web y móviles, también me gusta hablar sobre lo que está sucediendo detrás de escena. Y puedes echar un vistazo a algunos de los documentos, a algunas de estas investigaciones que se mencionan en estas diapositivas. PoseNet en realidad se basa en los modelos de PersonLab. Y PersonLab fue una nueva forma de determinar las posturas y acciones de las personas en un video o una foto. Anteriormente, estábamos buscando personas en un video o una foto mediante la creación de cajas delimitadoras. Estoy bastante seguro de que esto es una persona. Estoy bastante seguro de que esto es otra persona. Pero PoseNet y PersonLab te permiten hacer una determinación de abajo hacia arriba, perdón, primero las partes para determinar qué es una persona y qué están haciendo exactamente dentro de una imagen. Así que en lugar de las cajas de arriba hacia abajo, es una determinación de abajo hacia arriba, primero las partes, y es una determinación completamente convolucional sin cajas. Y predice la posición relativa de esos 17 puntos clave. Por lo tanto, hay ojos, orejas, nariz, hombros, codos, muñecas, cadera, rodilla, tobillo. Y comienza desde la detección más confiable y avanza según las posturas corporales entrenadas. Así que profundicemos un poco más en eso. Entonces, ¿qué está sucediendo detrás de escena aquí? Bueno, hablemos de PersonLab y cómo funciona esto en segundo plano.

4. Entrenamiento y Funcionalidad de PoseNet

Short description:

El entrenamiento de PersonLab consta de dos pasos: detectar a una persona y estimar las posturas. Utiliza mapas de calor y predicciones de desplazamiento de corto alcance para identificar puntos clave. El sistema utiliza votación huff y matrices huff para una colocación precisa de los puntos clave. PoseNet decodifica las posturas y agrupa a las personas utilizando desplazamientos de largo alcance. Se utilizan redes neuronales convolucionales en todo el proceso. PoseNet abstrae las complejidades y proporciona métodos fáciles de usar para la estimación en tiempo real en el navegador. Se puede instalar a través de NPM como parte de los modelos de TensorFlow.

Entonces, el entrenamiento de PersonLab consta de dos pasos, ¿verdad? Detecta a una persona y luego estima las posturas. Y primero intenta detectar los puntos clave. Puedes ver estos mapas de calor. Los agrupa en instancias de persona. Por lo tanto, está mirando una imagen, determinando qué partes pertenecen a qué persona y descubriendo qué elementos pertenecen a esa persona en particular. Intenta hacer estas agrupaciones y la red en sí se entrena de manera supervisada, y busca 17 partes del cuerpo y la cara utilizando el conjunto de datos COCO. COCO significa Objetos Comunes en Contexto, conjunto de datos COCO. Por lo tanto, siempre es útil saber cómo se construyeron estos modelos y qué conjunto de datos se utiliza para construir este tipo de cosas.

Entonces, utiliza los mapas de calor y luego predicciones de desplazamiento de corto alcance para identificar posibles puntos clave, descubriendo, ya sabes, tal vez esto sea un tobillo. Tal vez esto sea una... Y luego utiliza un sistema de votación huff para determinar la colocación más precisa de un punto clave. Por lo tanto, utiliza la votación huff para crear matrices huff. Y puedes echar un vistazo a qué son las matrices huff haciendo una búsqueda rápida en Google. Las matrices huff se basan en las transformadas huff, que es una técnica de extracción de características utilizada en el análisis de imágenes y la visión por computadora. Y está diseñada para encontrar instancias imperfectas de objetos dentro de una cierta clase de formas mediante un procedimiento de votación. Curiosamente, fue inventada en 1959 y patentada en 1962, creo. Por lo tanto, todas estas técnicas de aprendizaje automático que estamos utilizando, muchas de ellas han existido durante mucho tiempo. Y es bastante interesante recordar que estamos construyendo sobre los hombros de gigantes. De todos modos, tenemos nuestras votaciones huff que llegan. Tenemos matrices huff construidas. Y luego tratamos de averiguar las personas involucradas en la creación de las posturas. Por lo tanto, decodifica las posturas de estas personas, utilizando estas detecciones para crear posibles instancias de personas individuales. ¿Verdad? Y utiliza los desplazamientos de largo alcance que encuentra para agrupar a las personas en instancias segmentadas de cada persona en una imagen. Y es bueno saber que todos estos pasos utilizan redes neuronales convolucionales. Por lo tanto, realmente hay mucho sucediendo detrás de escena para crear este modelo que luego se empaqueta y se nos proporciona para usar en PoseNet. Por lo tanto, siempre es útil saber qué está sucediendo detrás de escena y especialmente qué conjunto de datos se utilizó para crear el modelo que acabamos de tomar y usar. Echa un vistazo al artículo de investigación que se menciona en la parte inferior aquí. Como dije, PoseNet fue un proyecto de Google Creative Lab y se ejecuta en tiempo real en el navegador. Y lo que hace PoseNet es básicamente abstraer las complejidades del modelo que nos proporciona esta maquinaria compleja detrás de escena. Y encapsula la funcionalidad entregada por estos modelos en métodos fáciles de usar que podemos utilizar en la web. Se puede instalar a través de NPM como parte de los modelos de TensorFlow, por lo que puedes echar un vistazo al repositorio de modelos de TensorFlow y hay una gran cantidad de demos que puedes ver para obtener algo de inspiración.

5. Construyendo PoseDance y Abordando el Ableismo

Short description:

TensorFlow.js permite el aprendizaje automático en el navegador, lo que permite la inferencia y el entrenamiento de modelos. Basándome en TikTok, creé una aplicación inclusiva que utiliza PoseNet para comparar el movimiento de un bailarín con el tuyo. Abordé las preocupaciones sobre el ableismo mostrando bailarines con habilidades diferentes. Vamos a adentrarnos en la construcción de PoseDance, considerando el diseño, la arquitectura, el uso de PoseNet, la integración de la cámara web y el manejo de modelos pesados.

Y se acompaña de TensorFlow.js, lo cual es realmente útil, porque con TensorFlow.js, podemos utilizar el aprendizaje automático en nuestro navegador. Puedes realizar inferencias fácilmente utilizando TensorFlow.js en tu navegador. También puedes entrenar modelos en tu navegador. No es mi forma favorita de entrenar. Prefiero hacerlo, ya sabes, utilizando una pila diferente para que sea un poco más eficiente. Pero si quisieras, podrías entrenar modelos en tu navegador. Pero a mí me gusta usarlo para inferencia. Y un dato curioso, utiliza el algoritmo de decodificación FastGreedy del artículo de investigación del laboratorio del que hemos estado hablando. Así que tenemos el modelo que queremos usar. Hemos determinado que queremos construir algún tipo de aplicación. ¿Cuál sería la cosa más divertida que se te ocurra construir con esta tecnología? Para mí, me fui directamente a TikTok, porque, ya sabes, ¿por qué no perder un poco más de tiempo en TikTok y empujarlo un poco tecnológicamente, ver qué podemos construir sobre TikTok utilizando PoseNet? Pensé, bueno, ¿por qué no construir una comparación lado a lado para que puedas usar PoseNet para comparar el movimiento de un bailarín con el tuyo al comparar el video de TikTok con la salida de tu cámara web, porque esta cosa está diseñada para usar tu cámara web? Así que seré yo con mi cámara web aquí con mi esqueleto determinado y luego haré una comparación con el punto de verdad de TikTok. Así que, ¿por qué no? Hagámoslo.

Mientras pensaba en esto y comenzaba a construirlo, empecé a sentirme un poco incómodo. Porque pensé, bueno, tal vez lo que estoy construyendo y lo que estoy usando es inherentemente ableista. Así que solo una nota rápida sobre qué es el ableismo, es discriminación a favor de personas con habilidades estándar, personas que pueden caminar, personas que no están en sillas de ruedas. Y empecé a preguntarme, ¿nuestro laboratorio de personas es PoseNet y es PoseDance mi aplicación? ¿Es inherentemente ableista por naturaleza? Porque está buscando esqueletos, esqueletos intactos para dibujar sobre una imagen. Y como la mayoría de los modelos de aprendizaje automático, esta cosa en realidad no emite juicios. Solo mide. Y si no encuentra una parte del cuerpo o, por ejemplo, si el brazo se detiene en el codo, simplemente no mostrará ese punto clave de la muñeca. Así que simplemente no emite juicios. Solo busca partes, mide y muestra. Sin embargo, pensé que si creo una aplicación sobre TikTok comparando mis movimientos con un mecanismo de puntuación para bailarines semiprofesionales y capacitados, eso podría ser ableista. Así que decidí hacer una aplicación inclusiva y asegurarme de mostrar bailarines con habilidades diferentes, personas en sillas de ruedas, personas con diferentes habilidades. Eso es lo que intenté hacer, solo para que lo sepas. Así que cuando visites la aplicación, verás bailarines de diferentes tipos interesantes.

Así que hablemos de la construcción de PoseDance. Tuve muchas consideraciones que tuve que reunir cuando estaba comenzando el trabajo. Tuve que preocuparme por el diseño, establecer la arquitectura, descubrir cómo usar PoseNet, descubrir cómo usar una cámara web y darme cuenta de que estos modelos son pesados,

6. App Responsiveness and Back-end Implementation

Short description:

Para hacer que tu aplicación sea receptiva, considera construir la puntuación y el tablero de líderes. Azure Functions y PlayFab son excelentes herramientas para la implementación del backend. Azure Functions puede comunicarse con PlayFab para enviar puntuaciones y crear un tablero de líderes. La implementación es otro aspecto importante a considerar.

y tienes que manejar eso cuando estás construyendo una aplicación web. Tienes que hacer que tu aplicación sea receptiva. Cómo construir la puntuación y el tablero de líderes, eso fue interesante, y luego el backend implementación. Afortunadamente, tenía Azure Functions en mi bolsillo trasero. Sé cómo usarlos. Sé que esa es una forma realmente excelente de construir una API. Y también tenía un sistema llamado PlayFab en mi bolsillo trasero. Esta es otra adquisición de Microsoft llamada PlayFab. Y es un servicio backend muy bueno que puedes usar para juegos e interfaces gamificadas. Funciona muy bien. Y tus Azure Functions podrán comunicarse con PlayFab y enviar tus puntuaciones para que puedas construir un tablero de líderes. Luego tuve que preocuparme por la implementación de dónde va a vivir esta cosa. Así que muchas cosas en qué pensar.

7. App Dependencies and PoseNet Usage

Short description:

Al construir la aplicación, instalé NPM y las dependencias, incluyendo PoseNet de los modelos de TensorFlow y TFJS. También se utilizaron Axios, Bulma, Sass Loader, Vue y otros componentes. La interfaz permite la integración de la cámara web y los videos de TikTok. Inicialmente, intenté usar videos incrustados de TikTok, pero tuve que obtener los videos de la aplicación móvil. Preocupada por los términos de servicio, me aseguré de hacer las atribuciones y créditos adecuados. Usando PoseNet, que tiene modelos grandes, la aplicación tarda aproximadamente 10 segundos en cargarse. Se ejecutan dos modelos, uno para la cámara web y otro para los videos de TikTok.

Entonces, cuando estoy construyendo una aplicación, generalmente comienzo como cualquier desarrollador de JavaScript, instalando NPM y las dependencias. Aquí está la lista de mis dependencias para la aplicación. Y las dos más importantes son las dos primeras, ¿verdad? Tenemos instalado PoseNet de los modelos de TensorFlow y TFJS, eso es TensorFlow.js, también instalado. Esas dos tienen que estar emparejadas juntas. Funcionan juntas. Axios para llamar a mi API, Bulma para un sitio web receptivo agradable. Bulma utiliza Sass y Sass Loader. Es un sitio Vue. Soy un desarrollador de Vue. Así que necesito mis piezas de Vue. Y el resto es el enrutador, VueAllocate para el formulario que creé, para que puedas iniciar sesión y guardar tu puntuación. Y PersistentState para que VueX se comporte correctamente. Esas son las piezas que utilicé. Necesitaba construir una interfaz que te permitiera tener la cámara web en un lado y los videos de TikTok en el otro. Inicialmente, quería usar los videos incrustados de TikTok. Si vas a TikTok en la web, verás que puedes descargar incrustados. Pensé que podría dibujar mi esqueleto justo encima de ese incrustado. Resulta que no pude. Tuve que obtener el video de TikTok, y en realidad puedes hacer eso en su aplicación móvil, lo cual es interesante. Estoy obteniendo estos videos como mp4 y los estoy usando dentro de la aplicación web. Empecé a preocuparme por los términos de servicio, así que me aseguré de que los incrustados de TikTok estén en la página de inicio para que puedas ver todas las atribuciones y los créditos que se les dan a cada bailarín y a la música que utilizan. Bien. Usando PoseNet. Esto es realmente divertido cuando empiezas a pensar en cosas geniales que puedes hacer con estos modelos de aprendizaje automático. Luego te das cuenta, oh dios mío, estos son realmente grandes. Son modelos grandes. La aplicación tarda unos 10 segundos en cargarse. Estoy usando PoseNet dos veces. Tengo dos modelos en funcionamiento. Tengo uno para la cámara web y otro

8. Manejo de modelos grandes, cámara web, poses y puntuación

Short description:

Para manejar modelos grandes y la cámara web, crea un sitio web receptivo y compatible con asincronía. Utiliza llamadas asincrónicas y ganchos del ciclo de vida como Mounted Async para cargar el video, configurar la cámara web y dibujar puntos clave y esqueletos. La estimación de poses requiere cargar modelos y dibujar el esqueleto utilizando la API de lienzo. Ten en cuenta las limitaciones de rendimiento. Dibujar el esqueleto permite la creatividad en el grosor y color. La puntuación implica comparar puntos clave de diferentes videos.

para los videos de TikTok. Entonces, simplemente debes crear un sitio web receptivo y compatible con asincronía para manejar estos modelos grandes, grandes y también para manejar la cámara web porque esa cosa tiene que descargarse, inicializarse y cargarse también. Así que tenía un bonito widget de carga funcionando. Bulma es muy útil para eso. Bien. Manejo de la cámara web. Llamadas asincrónicas. Los ganchos del ciclo de vida asincrónicos como Mounted Async son tus amigos porque en el gancho Mounted, debes cargar tu video, hacer referencia al video, configurar la cámara web, cargar la cámara web, preparar esa cosa para funcionar. Configura tus dos lienzos para dibujar los puntos clave y esqueletos encima de ellos. Carga tus modelos y maneja los eventos de tu video. No pude meterlo todo en una sola pieza en la diapositiva. Así que realmente hay mucho sucediendo y todo tiene que ser asíncrono. Solo quiero enfatizar eso. Así que las poses. Para cada video, necesitas cargar un modelo y comenzar a estimar las poses. Entonces, aquí se llama a cada fotograma. Está capturando cada fotograma y capturando los datos que se envían de vuelta desde esta estimación de poses de red. Y luego estás dibujando los puntos clave y el esqueleto tú mismo utilizando la API de lienzo en la ubicación estimada. Así que es algo que debe ser bastante receptivo. Descubrí que si le pides demasiado, puede volverse un poco lento. Digamos que esta aplicación es algo divertido para probar. No la enviaría en este momento a producción y trataría de monetizarla. Pongámoslo de esa manera. Así que dibujar el esqueleto, como mencioné, estás utilizando la API de lienzo. Aquí es donde puedes ser un poco creativo y hacer que el esqueleto sea realmente grueso, puedes usar diferentes colores, puedes dibujar tus puntos clave de diferentes formas. Yo solo uso puntos para los puntos del esqueleto y luego líneas entre ellos. Muy tipo hazlo tú mismo. La puntuación. La puntuación fue un desafío. ¿Cómo puedes determinar qué tan bien te estás moviendo en comparación con otro video? Bueno, para cada uno de estos videos, para la alimentación de la cámara web y la alimentación del video, recopilé los puntos clave y los agregué todos a un arreglo y luego hice básicamente un

9. Desafíos con la Puntuación

Short description:

La puntuación tiende a degradarse a negativo a medida que te alejas del video. Posicionarte exactamente donde está la persona del video y alinearte a sus movimientos es un desafío. Mi puntuación más alta es solo 6, lo cual no es genial. Mi hija encuentra la aplicación molesta porque su puntuación fue mala.

sustracción. Entonces, pensé que el punto de referencia es el video. Y tu cámara web es con lo que lo estás comparando. Así que simplemente encuentras la diferencia entre los puntos de la cámara web y los puntos del video. Y resulta que tu puntuación tiende a degradarse a negativo a medida que te alejas del video. Tal vez esto es algo que se podría solucionar. Pero necesitas posicionarte exactamente donde está posicionada la persona del video y asegurarte de que te estás alineando realmente con donde esa persona se está moviendo. Así que eso fue un poco desafiante... Pongámoslo de esta manera. Creo que mi puntuación más alta es como 6. No es tan buena. Y en realidad, a mi hija le molesta. Encuentra toda la aplicación molesta porque su

10. Backend, Leader Board, and Deployment

Short description:

Hablemos del backend. Decidí utilizar PlayFab como backend para la aplicación. Es excelente para juegos. Construí el tablero de líderes utilizando la API de PlayFab y lo mostré con Axios. Para el despliegue, utilicé Azure Static Web Apps, que fue lanzado recientemente y funciona bien para varios tipos de aplicaciones.

La puntuación fue tan mala. Así que, lo negativo. Ok. Hablemos del backend. Ahora que tenemos nuestras puntuaciones. Decidí, como dije, utilizar PlayFab como una plataforma móvil de servicio backend. Es excelente para juegos. Puse todas las llamadas a él en una carpeta de API y uso funciones de Azure para llamar a PlayFab. Así que aquí está mi función de Azure que obtiene el paquete SDK de PlayFab y llama a su API, actualiza las estadísticas del jugador y envía una puntuación. Fue bastante fácil de construir, en realidad. Funciona bastante bien. Y luego, el tablero de líderes. PlayFab crea un tablero de líderes público de todos los jugadores. No es necesario iniciar sesión para ver el tablero de líderes. Sin embargo, debes iniciar sesión para enviar elementos al tablero de líderes. Pero cualquiera puede echar un vistazo al tablero de líderes. Solo necesitas la clave secreta del título. Así que eso se guarda en variables en el servicio en el que lo desplegué. Hablaré de eso en un segundo. Así que construí el tablero de líderes a través de la API de PlayFab y usé Axios para mostrarlo. Y ahora, el despliegue. Hablemos del despliegue. Aquí es donde el lanzamiento de un producto realmente me salvó la vida porque pude utilizar las nuevas Azure Static Web Apps. Esto se lanzó en Microsoft Build hace dos o tres semanas. Y es nuevo, genial. Está en versión preliminar. Pero funciona maravillosamente para este tipo de aplicaciones. Funciona muy bien para ViewPress, para Gatsby, para un sitio web de tipo SPA estándar. O React o lo que sea. Lo que tengas, lo mejor de Angular. Y si quieres probarlo, puedes ir a aka.ms.

11. Pose Dance Demo

Short description:

Voy a mostrarles mi aplicación, Pose Dance. Tiene una invitación para bailar tanto como quieras. Incluye a personas con discapacidades diferentes. El modelo se está cargando y puedo hacer clic en vista previa para ver el video con el esqueleto. Mi puntuación no se captura porque no he iniciado sesión.

slash Prueba Static Web Apps. Una excelente manera de alojar tus aplicaciones. Te proporciona una URL agradable y puedes ir directamente a la acción. Funciona maravillosamente. Lo recomiendo encarecidamente.

De acuerdo. Creo que en este punto estamos listos para la demostración. Creo que podemos intentarlo. Voy a escapar de esto. Y les voy a mostrar mi aplicación. Aquí está. Y bien. Esta es Pose Dance. Esta es la aplicación que construí. Esta es la primera página y tiene una invitación para bailar tanto como quieras. Como dije, incluí a personas con discapacidades diferentes. Y voy a bailar con este chico. Y puedes ver que se está cargando, cargando, cargando el modelo. Se está cargando, cargando, cargando. De acuerdo. Está listo. No he iniciado sesión, así que mi puntuación no se capturará. También puedo hacer clic en vista previa y simplemente ver el video con el esqueleto. Pero no he jugado esto. Ya está un poco lento. Aquí vamos. Ups. Ya lo arruiné.

QnA

Conclusion and Q&A

Short description:

Te animo a visitar la aplicación en aka.ms/slashosedance. Todo el contenido, incluido un video, diapositivas y código, está disponible en GitHub. Espero que hayas disfrutado de mi charla. Gracias.

De acuerdo. Mira, no estoy lo suficientemente atrás. ¿Cuál es mi puntuación? Probablemente sea terrible. Oh, estoy en negativo y en negativo. Bueno, debería intentarlo de nuevo. La última vez obtuve seis. Afortunadamente no he iniciado sesión. Así que no visitaremos la tabla de clasificación. Bueno, visitaremos la tabla de clasificación y veremos si alguien lo está haciendo mejor que yo.

Ah, mi puntuación más alta como anónimo sigue siendo seis. Bueno, te animo a ir a aka.ms slashosedance para visitar la aplicación. Todo el contenido está en GitHub. Y he escrito un bonito post-dance. Léeme. Y puedes obtener toda la información que necesitas en este post-dance. Hay un video. Puedes echar un vistazo a las diapositivas. Próximamente publicaré un artículo en el blog. Y puedes probar la aplicación. Y todo el código está listo para ti. Espero que hayas disfrutado de mi charla. Hablaremos en Twitter. Y eso es todo por mi parte. Gracias. Increíble, increíble presentación, Jen. Por favor, únete a mí en el escenario para algunas preguntas y respuestas. ¡Hola! ¡Hola a todos! ¡Hola, Jen, cómo estás? Muy bien. ¿Y tú? Bien, bien, bien. Antes de nada, quería agradecerte personalmente por crear post-dance. ¡De nada!

App Lagging and Body Types

Short description:

Tengo una amplia experiencia bailando mal. La aplicación tiene algunos problemas de retraso debido al JavaScript pesado y los modelos que se implementan. El retraso puede ser causado por la cantidad de incrustaciones de TikTok y la carga de modelos, webcam y video. Puede haber una fuga de memoria que debe investigarse. Los tipos de cuerpo, como los hombros más anchos y las alturas diferentes, pueden afectar la coincidencia de los fotogramas en la aplicación.

Exactamente. Tengo una amplia experiencia bailando mal. Y que te tomes tu tiempo para crear esto es un buen pecado para mí. Bueno, estoy muy feliz de crear aplicaciones útiles para el mundo. Exactamente, exactamente. Aquellas que importan. Aquellas que cambian vidas. Así es. Estaba diciendo que cuando inicié sesión en la aplicación solo para prepararme para esta charla, obtuve una puntuación de 61.98, que pensé que era como aquí arriba. Lo es, lo es. Exactamente, exactamente. Esa es una gran puntuación. La mía es como negativa 133, para ser completamente honesta. Esto es, esto es. Siento que estoy mejorando mientras hablamos, incluso con un solo intento. Intenté volver y apuntar aún más alto, pero hay muchos problemas de retraso con la aplicación. Me preguntaba si podrías hablar un poco sobre eso, sobre los desafíos que enfrentaste al construirlo y los problemas de retraso y cómo podrían haberse evitado o reparado.

Sí, creo que hay un par de cosas que podrían estar causando ese retraso. Una cosa que he notado es que cuando vuelves a la pantalla con todas esas incrustaciones, creo que hay ocho incrustaciones provenientes de TikTok, y creo que hay mucho JavaScript cargándose en esa página. No hay mucho que pueda hacer al respecto porque quería mantener toda la marca alrededor de esas incrustaciones de TikTok de acuerdo con sus términos de servicio. Si vas a usar TikTok, al menos debes tener eso en tu sitio web, y no quería tener problemas con TikTok. Y luego, en cuanto a cuando haces clic en el botón de baile, y llegas a la segunda página donde creas los esqueletos y todo eso, como dije en la charla, hay una gran cantidad de JavaScript. Por lo general, tarda unos 10 segundos en cargar tus modelos, cargar tu webcam, cargar el video, organizar todo y hacer clic en ese botón de presión porque hay dos modelos en funcionamiento en esa página. Así que es mucho JavaScript, son aplicaciones muy pesadas y modelos pesados que se implementan allí. Así que no vamos a lanzar esto a producción ahora mismo. Es muy probable que haya una fuga de memoria que no he encontrado, pero tal vez tú sí. Así que cosas que necesito revisar.

Claro, claro, claro. Y tenemos una pregunta de uno, que preguntaba si los tipos de cuerpo, como los hombros más anchos, los niños versus los adultos, afectan eso ya que los fotogramas deben coincidir exactamente con la posición. Excelente pregunta. Y sí, lo harían, porque realmente está mirando esas coordenadas x e y de donde están todos tus puntos clave dentro del fotograma. Entonces, si tienes una persona que mide 6'7, comparándose con, ya sabes, mi hija muy baja, si tengo una,

App Potential and Medical Applications

Short description:

Podrías posicionarte mejor en el encuadre. La aplicación tiene potencial para entrenamiento de yoga y aplicaciones médicas. Puede ayudar a asegurar posiciones corporales correctas y prevenir lesiones. Sería interesante ejecutar un video de un gimnasta. La tecnología tiene diversas aplicaciones más allá del baile.

no coincidirá. Sin embargo, podrías posicionarte un poco mejor en el encuadre, acercarte un poco más a la cámara e intentar lograr esa coincidencia. Por eso incluimos el botón de vista previa para que puedas ver dónde está situada la persona y organizarte antes de comenzar, ya sabes. Sí, y luego, Moldita, solo pensando más ampliamente sobre la aplicación en sí y la tecnología detrás de ella, supongo, ¿dónde más podrías ver o qué otras aplicaciones puedes ver para esta aplicación y esta tecnología?

Sí, bueno, como dije, hice que mi hija probara esto y ella dijo, ya sabes, realmente perdiste una oportunidad aquí porque mucha gente está probando el yoga en este momento y no tienen idea de lo que están haciendo. Están viendo, ya sabes, un minuto en TikTok y convirtiéndose en yoguis de inmediato. No es una situación muy difícil. Así que creo que en términos de usar PoseNet para asegurarse de que todas tus partes del cuerpo estén en la posición correcta para que no te lastimes haciendo yoga. Creo que sería una excelente forma de trabajar con un entrenador personal, ya sabes, igualar mi pose exactamente y obtener una puntuación, eso funcionaría. Siempre me pregunté sobre las aplicaciones médicas para esto y si la gente estaría considerando, ya sabes, descubrir qué sucede si te lesionas, ¿qué pasa si te lesionas? Ya sabes, con la cadera girada en exceso, como en el caso de un gimnasta, por ejemplo, cuando estás entrenando, cuando subes y haces ciertos movimientos en las barras paralelas, ¿hay cosas que no deberías hacer para no lastimarte al desmontar? Ya sabes, ese tipo de cosas. En realidad, ahora tengo muchas ganas de probar ejecutar un video de un gimnasta con esto y ver qué sucede. Será interesante. Ahí lo tienes. Ahí lo tienes. Siento que no solo estamos obteniendo respuestas sobre qué tan bueno puedo ser como bailarín, sino que también estamos obteniendo otras respuestas.

Scoring System Rework

Short description:

Hay planes para reestructurar el sistema de puntuación, posiblemente haciéndolo basado en el movimiento en lugar de basado en la posición. El sistema de puntuación actual involucra mucha matemática y no es muy eficiente. Se aceptan sugerencias y PR para mejorar la puntuación y hacerla más rápida.

PoseDance utiliza y otras formas en las que esto se puede aplicar para mejorar. Tenemos una pregunta de Jay. Él está preguntando si hay planes para reestructurar la puntuación, tal vez basada en el movimiento en lugar de basada en la posición. Sí, realmente no me gusta cómo hice la puntuación. Es mucha matemática, y no soy matemático. Así que agradecería un PR para resolver la puntuación y alejarnos de estar constantemente en negativo, excepto por Chris, que obtuvo un más 65, quien es como un gurú de Tic Tac-a-doo de esta manera. Así que sí, envíenme sus PR y pensemos en cómo podemos mejorarlo y hacerlo más rápido. El sistema de puntuación actual no es muy eficiente. Ahora mismo es como

Recorrido de código y PR para mejorar la puntuación

Short description:

Ayer, agregué un recorrido de código a mi base de código en Visual Studio Code. Puedes realizar un recorrido del código y brindar comentarios. Agradezco tus PR para ayudar a solucionar cualquier problema. También hay una pregunta sobre medir los ángulos de las extremidades en lugar de X, X, Y para mejorar la puntuación. Es una idea inteligente que eliminaría la necesidad de estar cerca de la cámara. Siéntete libre de hacer un PR y mejorarlo. Para más preguntas, visita aka.ms/Posedance y consulta el repositorio de GitHub para mejoras.

muy a la fuerza bruta recorriendo los arreglos. Una cosa que quería decirte es que ayer tomé mi base de código y agregué un recorrido de código. Entonces, si abres mi base de código en Visual Studio Code, puedes ejecutarlo y tener instalada la extensión de recorrido de código. Puedes realizar un recorrido del código base. Así que adelante y dame tu opinión al respecto también. Sí, agradezco tus PR. Por favor, ayúdame a solucionar este problema. Esto es todo. Esto es todo. Y también tenemos otra pregunta de Ruben. Quiere saber, ¿crees que medir los ángulos de las extremidades en lugar de X, X, Y podría mejorar la puntuación? Sí, creo que sí. Creo que definitivamente podría hacerlo porque entonces no tendrías ese problema de tener que situarte más cerca de la cámara. Creo que es una idea realmente inteligente. Y por favor, haz un PR para mejorarlo. Genial. Y luego solo una pregunta final, supongo. Cuando digo final, ya sabes, solo amigos. Jen no se va a ninguna parte. Estará en la sala virtual para responder todas tus preguntas. Así que sigue haciéndolas. Y si ustedes quieren ver mi puntuación, nuevamente mi 61.83 también, estaré encantado de compartirlo con ustedes y dar algunos consejos. Pero supongo que en cuanto a esa pregunta, alguien, Rin, está preguntando ¿dónde podemos enviar PR para mejorarlo? Muy bien. Entonces, si van a aka.ms/Posedance. Asegurémonos de que ese sea el enlace correcto. Eso los llevará a la aplicación. Y ayer mismo agregué el repositorio de GitHub en la esquina superior derecha. Así que solo tienen que hacer clic en el pequeño icono de GitHub y los llevará directamente al repositorio y está abierto y listo para usar. Genial, genial. Gracias. Muchas gracias, Jen, por ayudarme a mejorar mi vida social, que una vez que salgamos de esto, espero poder conseguir algunos seguidores más, ya sabes, de los más de un millón que ya tengo en TikTok en este momento, ya sabes, explotando, explotando. Exactamente, exactamente. Así que Jen no... va a tener su sala virtual de Zoom, así que no dudes en enviar más preguntas que tengas sobre PoseDance, sobre, ya sabes, Machine Learning, en JavaScript y muchas otras preguntas y ella estará encantada de responderlas. Jen, gracias. Gracias. Y hablamos de nuevo. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

JSNation Live 2020JSNation Live 2020
31 min
From Code to Scale! Build a Static Web App in Minutes
You've built an app and you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.

Workshops on related topic

JSNation 2022JSNation 2022
141 min
Going on an adventure with Nuxt 3, Motion UI and Azure
WorkshopFree
We love easily created and deployed web applications! So, let’s see what a very current tech stack like Nuxt 3, Motion UI and Azure Static Web Apps can do for us. It could very well be a golden trio in modern day web development. Or it could be a fire pit of bugs and errors. Either way it will be a learning adventure for us all. Nuxt 3 has been released just a few months ago, and we cannot wait any longer to explore its new features like its acceptance of Vue 3 and the Nitro Engine. We add a bit of pizzazz to our application with the Sass library Motion UI, because static design is out, and animations are in again.Our driving power of the stack will be Azure. Azure static web apps are new, close to production and a nifty and quick way for developers to deploy their websites. So of course, we must try this out.With some sprinkled Azure Functions on top, we will explore what web development in 2022 can do.
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Azure Static Web Apps were launched earlier in 2021, and out of the box, they could integrate your existing repository and deploy your Static Web App from Azure DevOps. This workshop demonstrates how to publish an Azure Static Web App with Azure DevOps.
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
Workshop
The workshop gives a practical perspective of key principles needed to develop, build, and maintain a set of microservices in the Node.js stack. It covers specifics of creating isolated TypeScript services using the monorepo approach with lerna and yarn workspaces. The workshop includes an overview and a live exercise to create cloud environment with Pulumi framework and Azure services. The sessions fits the best developers who want to learn and practice build and deploy techniques using Azure stack and Pulumi for Node.js.
ML conf EU 2020ML conf EU 2020
146 min
Introduction to Machine Learning on the Cloud
Workshop
This workshop will be both a gentle introduction to Machine Learning, and a practical exercise of using the cloud to train simple and not-so-simple machine learning models. We will start with using Automatic ML to train the model to predict survival on Titanic, and then move to more complex machine learning tasks such as hyperparameter optimization and scheduling series of experiments on the compute cluster. Finally, I will show how Azure Machine Learning can be used to generate artificial paintings using Generative Adversarial Networks, and how to train language question-answering model on COVID papers to answer COVID-related questions.
React Summit Remote Edition 2021React Summit Remote Edition 2021
138 min
Publishing, Automating and Monitoring your JS App on Azure
Workshop
In this workshop you're going to deploy a JS app to our Azure Services. Obviously, we don't want to do this manually, so you're going to use GitHub actions to streamline this experience. Now that our App is on Azure, we want to make sure that we're aware of crashes and performance issues, so we'll add some App Insights in the mix. During the workshop, we'll show some cool features you could leverage!