Cuatro estudiantes de ingeniería de Santa Cruz de La Sierra idearon un sistema que podría hacer que las autoridades sean más eficientes para combatir el mosquito transmisor del dengue. Así superaron la carrera de obstáculos que los llevó a ser uno de los tres ganadores del Google Students Club Solutions Challenge.
A través de analíticas avanzadas y una trampa digitalizada que captura mosquitos y genera datos para entender dónde deberían concentrarse los esfuerzos de fumigación, un equipo de estudiantes bolivianos espera ayudar a las autoridades a luchar contra la epidemia más grave de dengue que ha vivido Bolivia en una década.
El camino del equipo Buzzbusters, como se hicieron llamar para el reto, comenzó asistiendo a un club en una universidad que no era la suya, tuvo paradas en laboratorios de biología y cursos rápidos de inteligencia artificial, y terminó en una transmisión en vivo, donde tuvieron que explicar su idea en un inglés que tuvieron que aprender a dominar a toda velocidad. Al final, le ganaron a 2.000 equipos de estudiantes de todo el mundo.
El primer problema que hubo que resolver fue entrar a un Google Students Club. No hay uno en la Universidad Autónoma Gabriel René Moreno, en la que sus cuatro miembros estudian ingeniería, así que al equipo le tocó pedir ingreso al club de la Universidad Mayor de San Andrés y formar una alianza de trabajo para poder colaborar con el grupo de otra universidad.
Cuando eso estaba resuelto, comenzó la labor de prepararse para el Solutions Challenge, un reto para proponer soluciones a las Metas de Desarrollo Sostenible de Naciones Unidas que involucren tecnologías de Google.
El dengue se transmite a través del mosquito de la especie Aedes, que vive en zonas tropicales. Por eso, la forma más eficaz de prevenir la enfermedad es evitar la presencia del mosquito, tomando medidas como la fumigación.
Las autoridades de Santa Cruz de la Sierra, su ciudad en Bolivia, podrían enfrentar mejor la epidemia de dengue que actualmente sufre la localidad si tuvieran información para saber dónde se concentra el mosquito y fumigar de forma eficiente. Es ahí donde Buzzbusters puede ayudar.
“Veíamos en Youtube como hacían trampas caseras para mosquitos, y ahí planteamos cómo podemos hacer utilizando inteligencia artificial”, explica Sergio Mauricio Núñez, uno de los integrantes del equipo. Esa idea se juntó con otra: “hacer un monitoreo en tiempo real y conocer la densidad de mosquitos por determinadas zonas aquí en la ciudad, para así poder hacer alertas tempranas y prevenir enfermedades transmitidas por mosquitos”.
Fueron siete meses de trabajo, entre investigación, creación de prototipos, desarrollo de software, análisis de datos, entrenamiento de modelos de inteligencia artificial, y el diseño de una presentación ganadora. Tuvieron que hacer una inmersión rápida en desarrollo de hardware, en etiquetado masivo de información y en tecnologías de visión computacional, pues las trampas identifican a partir de imágenes si los mosquitos que capturan son de la especie que transmite la enfermedad.
Para lograr eso, tuvieron que desarrollar modelos de inteligencia artificial que identificaran los mosquitos y que pudieran además ser ejecutado en una Raspberry Pi, usando diferentes lenguajes y tecnologías como TensorFlow o AutoML. “El entrenamiento de los modelos tomaba bastante tiempo”, explica Sergio, lo que les impuso el reto de encontrar soluciones que funcionaran lo suficientemente bien y que pudieran ser desarrolladas en pocas semanas.
“Lo que hicimos para salir del apuro, cuando ya teníamos que entregar el primer entregable, fue usar AutoML para etiquetar imágenes de mosquitos en la nube, y lo pasamos a entrenar. Después de eso salió el segundo modelo, que ya era creado en Vertex AI. Lo probamos y funcionó. Luego usamos contenedores de Docker para correrlo en la computadora, y funcionó. Reconoce los mosquitos”, explica Sergio Mauricio. Accede aquí a su código en Github.
Conseguir el hardware también fue difícil, pues no hay mucha disponibilidad ni recursos para equipos en Bolivia. “Con los recursos que teníamos siempre tratábamos de conseguir lo que estaba a nuestro alcance. A veces no encontraba el material, entonces yo utilizaba material reciclable”, cuenta Saleth Jhoselin Mamani, la integrante del equipo que se encargó del hardware.
También tuvieron que aprender de la biología de los mosquitos. Para eso, llevaron a cabo una colaboración con un laboratorio especializado en enfermedades tropicales, donde pudieron conseguir información crucial para diseñar y hacer funcionar la trampa. “Había que saber cómo se comporta el mosquito, en qué momento hay que poner la trampa, en qué se diferencian de otros mosquitos, qué comen, cuánto sobreviven. De ahí fuimos extrayendo todos estos datos para poder resolver el diseño de la trampa”, dice.
Mario Guajardo-Céspedes, un ingeniero de Google en inteligencia artificial, fue su mentor en este reto. “He visto muchos proyectos y prototipos, y lo que vi que habían logrado a nivel técnico, me parecía muy interesante. O sea, ya habían montado un prototipo que analiza imágenes. Cuando llegaron con preguntas, tenían preguntas muy técnicas, muy detalladas. Tenían muy buen nivel técnico”.
Más allá de todos los retos de desarrollo y producto, lo más importante fue encontrar resiliencia para superar los momentos duros. Wendy Nayely Huayhua López, otra integrante del equipo, encontró una fórmula. “Confiaba plenamente en que el proyecto iba a ser realidad y en que tendría un gran impacto”.
Cuando llegó el momento de preparar la presentación para el concurso, la experiencia de Mario fue vital. “Este equipo era muy fuerte técnicamente, pero había que enfocarse en el storytelling. Ellos ya habían hecho el trabajo duro, pero entonces, ¿cómo lo empaquetamos?” Pasaron al top 100, y luego al top 10. A pesar de que las obligaciones de la universidad no daban espera, hicieron el esfuerzo. “Si ya estamos en el top 10, ¿por qué no dar todo de nosotros para llegar al final, que el producto siga adelante?”, cuenta Moisés Cisneros, otro de los integrantes.
En ese punto, el principal obstáculo era que debían presentar en inglés, un idioma que no todos dominaban. En cuestión de un par de días, con la ayuda de Mario lograron hacer un guión para la presentación final, el 3 de agosto de 2023.
Ese día todo estaba listo. En la sala había equipos de Corea, Indonesia, Nigeria, Estados Unidos, Reino Unido, Kazajstán, Indonesia y Singapur. La mayoría de sus miembros venían de universidades reconocidas globalmente por la calidad de su educación técnica, y muchos eran hablantes nativos de inglés. A pesar de eso, Buzzbusters fue uno de los tres equipos ganadores El jurado les dijo: “Su solución tiene el potencial de tener un gran impacto en grandes áreas geográficas, y solo requiere unos pocos sistemas de monitoreo. Nos emociona ver el impacto que tendrá”.
Las felicitaciones vinieron de amigos, colegas y profesores; y por unos días estuvieron en los reflectores. Su universidad los destacó. Las autoridades de su ciudad, también, Y El Deber, el diario más influyente de Bolivia, publicó una nota destacando que las autoridades del país buscarán implementar el proyecto.
Luego de esos días agitados, han tenido tiempo para pensar en el futuro del proyecto. La siguiente iteración será añadir hardware más económico, paneles solares y tarjetas SIM a los sensores, para que el dispositivo sea más accesible y su funcionamiento no dependa del suministro eléctrico, que puede ser inestable en algunas zonas. También planean incorporar análisis de sonido al modelo de detección de mosquitos, lo que permitiría mejorar su precisión.
También han podido hacer acopio de los aprendizajes que obtuvieron en este proceso. No solo de la gran cantidad de retos técnicos que lograron resolver, sino también, de las lecciones de trabajo en equipo, resiliencia y liderazgo que les permitieron superar los momentos de incertidumbre y que les servirán en sus carreras profesionales.
En los últimos años, los emojis comenzaron a utilizarse cada vez con más frecuencia en la comunicación. Estos pequeños íconos se pueden usar para expresar una variedad de emociones y le agregan un toque personal a los mensajes. Sin embargo, agregar emojis a tu app para Android puede resultar todo un desafío. Para eso, contamos con la biblioteca del selector de emojis. Con solo agregar unas pocas líneas de código a tu app, podrás comenzar a usar emojis de inmediato. Es la forma más sencilla de empezar a usar emojis para que tu app sea más divertida y expresiva.
Cada año, se publican nuevas versiones de emojis y actualizamos la biblioteca periódicamente para ofrecerlos. Los teléfonos de más alta gama pueden renderizar estos nuevos emojis sin ningún problema. Sin embargo, en el caso de los teléfonos de gama más baja, es posible que los nuevos emojis se muestren como un pequeño cuadrado llamado tofu (☐). La biblioteca asegura su detección y eliminación. De esta manera, se garantiza que la biblioteca sea compatible con varios dispositivos y versiones de Android.
La biblioteca cuenta con varias optimizaciones que buscan reducir la latencia de inicio y acelerar la experiencia de desplazamiento, como el almacenamiento en caché de los emojis renderizables, el dibujo de emojis de manera asíncrona y las optimizaciones de RecyclerView.
Las selecciones del usuario son persistentes en la biblioteca. Los emojis que se eligieron recientemente se muestran en la fila superior para que los usuarios puedan buscarlos y compartirlos fácilmente. Además, la biblioteca ofrece una variedad de emojis que representan a diferentes personas y culturas en los paneles de variantes. Si el usuario elije un emoji de los paneles de variantes (Figura 2), la elección se guarda y se establece como predeterminada en el panel principal.
dependencies { implementation "androidx.emoji2:emojipicker:$version" }
De manera opcional, configura emojiGridColumns y emojiGridRows en función del tamaño deseado de cada celda de emoji.
<androidx.emoji2.emojipicker.EmojiPickerView … app:emojiGridColumns="9" />
Ahora, debería aparecer un selector de emojis muy simple en tu app. Para el siguiente paso, suponemos que quieres hacer algo con el emoji seleccionado.
// a listener example emojiPickerView.setOnEmojiPickedListener { findViewById<EditText>(R.id.edit_text).append(it.emoji) }
Ahora, tienes un selector de emojis básico en funcionamiento. Para seguir personalizándolo (por ejemplo, para anular algunos estilos o bien ofrecer un comportamiento diferente para la fila de emojis recientes), consulta nuestra API y app de ejemplo.
También puedes enviar un informe de errores o una solicitud de función para ayudarnos a mejorar la biblioteca.