Cuando discutimos con el equipo de Pixela cual podría ser nuestro primer proyecto como parte de la iniciativa Re-Spawn, tuvimos claro que nuestra meta principal era trabajar con Realidad Aumentada en alguna medida. Sin embargo, la necesidad de integrar una Inteligencia Artificial que fuera capaz de reconocer objetos específicos surgió hasta después, cuando desarrollamos el concepto concreto de la aplicación de una forma concreta.
Como discutimos en los artículos anteriores, la idea central de la app consiste en usar A.R para colocar una portería virtual sobre las manos reales de jugadores cuando estos hacen un gesto en específico. Esto permite luego jugar un partido de fútbol de una manera completamente única. Sin embargo, aunque ya hablamos de nuestra experiencia diseñando videojuegos y trabajando con A.R, para desarrollar la aplicación también fue de vital importancia crear una Inteligencia Artificial personalizada que detectara los objetos que nosotros quisiéramos. Así fue como inició nuestro viaje para trabajar con TensorFlow Lite dentro de Unity, una tarea que resultaría compleja en varias maneras distintas.
Desventajas de opciones ilimitadas
La Inteligencia Artificial es una tecnología emergente que se puede usar para una gran cantidad de campos diferentes. Desde controlar robots de forma automática hasta traducir la voz de una persona a un mensaje escrito en un celular. Y aunque el alcance de esta tecnología es sumamente emocionante, también significa que pueden haber temas que no se han explorado sumamente a profundidad. Así que, si bien pueden aparecer miles de resultados al googlear “Cómo crear una Inteligencia Artificial”, no encontraremos mucho sobre “Reconocimiento de imágenes dentro de Unity con I.A”, que era justo lo que buscábamos hacer. Pasamos días intentando averiguar cuál era la mejor manera de comunicar la I.A con Unity, desde intentar integrar todo Tensorflow en el motor de juegos hasta considerar comunicarlos como parte de un SDK.
Afortunadamente, no tuvimos que empezar desde cero. Con suficiente investigación logramos encontrar avances de otras personas en repositorios en GitHub. Gracias a ello, pudimos usar como base un proyecto en Unity que hacía uso de TensorFlow para reconocimiento de objetos comunes y logramos partir desde ahí.
¿Cómo trabajar con tecnologías emergentes?
Al tener que desarrollar e integrar nuestra propia inteligencia artificial me encontré día tras día con una misma pregunta “¿Cómo rayos vamos a lograr esto?”. No solo bastaba con generar un archivo personalizado de TensorFlow Lite capaz de reconocer objetos, sino que también teníamos que aprender a utilizarlo de manera correcta. Desafortunadamente, casi toda información que se encuentra sobre I.A puramente teórica, y no hay muchos ejemplos prácticos en donde se siga una sucesión de pasos para llegar a un fin específico.
Así que ¿Cómo lograr nuestro objetivo? Al final, el único método que funcionó fue: a prueba y error. Si bien se podría leer día tras día sobre las ventajas teóricas de usar Google Collab para crear una Inteligencia Artificial, no se estaba más cerca de la meta si uno no intenta usar activamente Google Collab. Al pasar los días hicimos varias pruebas, cometimos demasiados errores y aplicamos mucha lógica para intentar averiguar qué es lo que salía mal, e identificar qué funcionaba bien. Y aunque podíamos pasar días enteros algo programando que resultaba fallando, no hubiéramos avanzado en lo absoluto de haber querido encontrar una solución directa dentro de alguna documentación.
Gran poder en dispositivos pequeños
TensorFlow Lite nos permitió crear una Inteligencia Artificial lo suficientemente liviana para correr en dispositivos móviles, pero lo suficientemente poderosa para lograr identificar dónde se encuentra un objeto específico dentro de una imagen con gran exactitud. Y aunque actualmente es necesario mucho trabajo de optimización sobre los archivos de TensorFlow Lite para que corran de manera rápida y estable, resulta impresionante pensar que algo tan único se ejecute en algo tan común como lo es un celular. Un dispositivo que la mayoría lleva consigo en la palma de sus manos con la capacidad de reconocimiento de objetos y ejecutar experiencias en A.R.
Trabajar con TensorFlow dentro de Unity no resultó sencillo, y personalmente creo que desarrollar una Inteligencia Artificial hoy en día no es algo que se haga de una manera fácil. Sin embargo, es completamente posible hacerlo con las herramientas que tenemos hoy en día, sin la necesidad de esperar a que la tecnología “se desarrolle más”. Claro, en un futuro esta labor será menos complicada y se podrá ir ejecutando en más y más dispositivos distintos, pero eso solo se logrará si explotamos esta tecnología hoy en día y empujamos los límites de lo que es capaz de hacer.
Esto ha sido todo por el momento, pero en futuros artículos hablaremos sobre nuestra experiencia al tener que integrar I.A, Game Development y A.R, tres tecnologías completamente distintas cuya coordinación llevó más imprevistos de lo pensado. Así que nos veremos en la próxima ocasión.
Android, Mobile Development, Jetpack Compose
Creando una animación de sonido con Jetpack Compose
Crear animaciones en cualquier framework puede parecer una tarea complicada, pero Jetpack Compose lo hace fácil.
Android, Mobile Development
Jetpack Compose: enamorándote de Android otra vez
Android como SDK ha tenido muchos cambios que han sido para bien, pero realmente sentía que Android se estaba quedando atrás. Todo esto cambio con el lanzamiento de Jetpack Compose
Tecnologías Emergentes • AR Foundation • Unity
Trabajando Con Realidad Aumentada
Crear una experiencia en AR podría sonar relativamente simple, pero el flujo de trabajo también incluye Inteligencia Artificial y tecnologías de videojuegos.
AR, Videojuegos
Desarrollando videojuegos: no es lo que esperaba, pero eso es bueno.
Crear videojuegos puede ser al mismo tiempo una experiencia familiar y completamente distinta. ¿Cómo desarrollar tu primer videojuego si ya eres un desarrollador avanzado?
Announcements
Presentamos Re-Spawn
Nuestra primera incursión en el mundo de la creación de contenido audiovisual.
Flusmic 2.0.0 Released
Pixelaversario
Pixelaversario: 5 años
Esta es especial: Nuestro 5to aniversario y que nos cuenta el team de este logro.
Mobile / Flutter
Manage your app content with Flutter and Prismic.io
There are many ways to provide content for our apps and websites, we show you how to use our very own implementation of Prismic IO in your flutter app.