Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo
En esta actividad construiremos un videojuego en el que el ordenador jugará contra nosotros al
popular juego “piedra, papel o tijeras”. Y lo hará viendo e interpretando los gestos de nuestras
manos. Esto es, tendrá que ser capaz de reconocer el gesto de la mano que simboliza cada una de
las jugadas permitidas en el juego.
La intención de la aplicación que vamos a desarrollar es que uno de los jugadores sea el ordenador,
y el otro una persona. Teniendo en cuenta las reglas del juego, un posible análisis del problema sería
el siguiente:
● Un objeto, al que llamaremos Árbitro dirá: “piedra, papel o tijeras”.
● Un objeto, al que llamaremos Computadora, jugará de manera aleatoria una de las tres
posibles jugadas, y se almacenará en una variable. Podemos llamarla jugada_computadora.
● Un objeto, al que llamaremos Persona, activará la cámara de el ordenador, y el jugador le
mostrará su gesto, es decir, la jugada que ha elegido.
● El ordenador, a través del objeto Persona, reconocerá la jugada que corresponde al gesto del
jugador, y cuando la confianza en el reconocimiento de la imagen sea suficientemente alta,
almacenará el resultado en una variable. Podemos llamarla jugada_persona.
● Entonces, el Árbitro, aplicando las reglas del juego, decidirá quién de los dos ha ganado y el
juego termina.
Aunque parece que el ordenador es juez y parte en el juego, no tiene porqué ser así. Recordemos
que el ordenador es una máquina absolutamente obediente, solo hace lo que nosotros le ordenemos
mediante nuestro programa, así que el objeto Computadora, cuando selecciona su juego, no tiene
que usar la información que el ordenador tiene sobre el gesto que ha usado la persona. Eso es algo
que el programador decide. Por tanto, el ordenador no juega con ventaja.
Pues bien, ¡vamos al lío! El análisis que hemos realizado parece fácil de convertir en un programa
informático. Sin embargo, hay una parte que podría parecer muy complicada de implementar: el
reconocimiento del gesto que la persona expone a el ordenador a través de la cámara. Pero nosotros
ya sabemos que este tipo de problemas se resuelve aplicando las técnicas de Machine Learning.
Para resolver esa parte del problema podemos crear un modelo de ML capaz de reconocer los tres
gestos del juego, y una vez que funcione correctamente, lo podemos usar, como cualquier otro
bloque, en nuestro videojuego.
Pasos a seguir
1. CONSTRUCCIÓN MODELO ML
Abrimos el editor de LearningML https://web.learningml.org/ y hacemos clic en
Versión 1.2 (estable) y entramos en reconocer imágenes. A continuación hacemos
clic en Sección 1 Entrenar, creamos cuatro clases, una para cada jugada que
llamaremos piedra, papel y tijeras, y la cuarta para reconocer la ausencia de gesto,
que llamaremos sin gesto. Esta última nos vendrá bien para que el ordenador no
asocie por error una de las jugadas cuando aún no la hemos mostrado a la cámara.
A cada clase añadimos unas 30 imágenes del gesto que le corresponda usando la
cámara. Es importante colocar la mano en distintas posiciones de la cámara, es
decir, más arriba, más abajo, hacia la derecha, hacia la izquierda, más cerca, más
lejos, etcétera. La intención es que el conjunto de imágenes sea representativo del
gesto, y que el modelo sea capaz de reconocer cada gesto con independencia de la
posición exacta que la mano ocupe en el cuadro de la cámara.
Cuando hayamos completado el conjunto de entrenamiento, pasamos a la fase de
aprendizaje para que el algoritmo de ML construya un modelo a partir de las
imágenes.
Esto lo hacemos haciendo clic en el botón “Aprender a reconocer imágenes” de la
sección 2. Aprender.
Y cuando haya finalizado, es el momento de probarlo y comprobar si funciona
correctamente. Esto lo hacemos usando los controles de la sección 3. Probar.
Hacemos clic en el botón con la cámara y comprobamos si los gestos que
presentamos a la cámara se reconocen correctamente y con suficiente confianza.
Si durante la evaluación vemos que el modelo no está funcionando correctamente, o
la confianza es menor al 70% hay que mejorar el conjunto de datos de
entrenamiento, añadiendo o quitando imágenes a las clases que presentan
problemas en la clasificación.
¡Y ya tenemos el modelo! Ahora hay que usarlo en el videojuego que vamos a
construir. Este modelo constituirá el componente de Inteligencia Artificial de la
aplicación.
Ahora hacemos clic en el botón del gatito de Scratch, para iniciar la plataforma de
programación.
Llegados a este punto puedes probar el código. Si todo va bien el árbitro dará
comienzo al juego y la computadora seleccionará su jugada.
A continuación añadimos el siguiente código al objeto Persona, para ello haz clic en
el objeto persona y copia el siguiente código:
Igual que con el objeto Computadora, cuando se hace clic en la bandera, se fija el
tamaño a la mitad, se coloca en la parte derecha de la pantalla y se esconde, pues
no queremos que se vea la jugada de la persona hasta que no llegue el momento.
Además, se apagará la cámara, pues al no haber comenzado aún el juego, no es
necesaria. Al recibir el mensaje “mostrar”, el objeto aparecerá en pantalla. Como ya
hemos comentado, es el objeto Árbitro quien decide cuándo enviar ese mensaje.
Y la parte más compleja sucede cuando el objeto recibe el mensaje “a jugar”.
Primero definiremos la transparencia de la cámara al 50%. Para usar ese bloque hay
que añadir la extensión “sensor de video”. Se hace clic en el botón de abajo a la
izquierda. Aparecen las extensiones disponibles entre las que se encuentra “sensor
de video”. Una vez seleccionada ya tienes disponible dicho bloque.
Y en cada uno de esos bloque conjuntivos (Y), meter una de las condiciones
ganadoras:
Finalmente podemos añadir dos objetos sin código para indicar quién es la
computadora y quién la persona.
Y con esto ya tenemos una versión sencilla del juego “piedras, papel o tijeras”. Ya
solo nos queda probarlo y jugar.