Detalles Técnicos dentro del proyecto “Uso de las TICs en el desarrollo de las habilidades del Siglo XXI”

Dentro del proyecto “Uso de las TICs en el desarrollo de las habilidades del Siglo XXI”, se esta construyendo un conjunto de aplicaciones que posibiliten el uso efectivo de los contenidos preparados en base al trabajo con los niños y niñas.
En esta oportunidades les contaré del trabajo que vengo realizando en la construcción de una aplicación de realidad aumentada de la cual espero pueda motivar a los niños a aprender el lenguaje de señas; esta aplicación esta formada por varios componentes:

  • Componente de reconocimiento y ubicación del rostro
  • Componente de reconocimiento de voz
  • Componente de detección de movimiento y Menú
  • Componente de ubicación de contenidos

Veamos el primero:

Componente de reconocimiento y ubicación del rostro

La detección del rostro es uno de los elementos fundamentales en cualquier sistema de reconocimiento facial, en nuestro caso buscamos identificar un rostro y sobre su ubicación colocar contenido que ilustra el uso de un conjunto de señas. El identificador debe ser capaz de reconocer el rostro más grande dentro del flujo de video (esto debe ser independiente de la edad, el sexo y la orientación). Dentro del proyecto la implementación de este componente da pie a un conjunto de investigaciones de corte técnico para buscar una solución eficiente.
Algunos de los retos afrontados son la detección facial, el escalado, la pose, iluminación, la oclusión y la edad.
Por motivos de uso de plataformas el desarrollo se ha realizado sobre Csharp y OpenCVSharp; usando los algoritmos implementados para OpenCVSharp, siendo usadas las funciones de clasificación en cascada que usa la técnica de Viola y Jones.

detección de rostro

menurostro2
Este es el algoritmo en bruto que fue usado y optimizado para nuestro caso y es extraído de los ejemplos de OpenCvSharp 1.4.1

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace OpenCvSharp.Test
{
///

///

/// http://opencv.jp/sample/object_detection.html#face_detection
class FaceDetect
{
public FaceDetect()
{
// CvHaarClassifierCascade, cvHaarDetectObjects

CvColor[] colors = new CvColor[]{
new CvColor(0,0,255),
new CvColor(0,128,255),
new CvColor(0,255,255),
new CvColor(0,255,0),
new CvColor(255,128,0),
new CvColor(255,255,0),
new CvColor(255,0,0),
new CvColor(255,0,255),
};

const double Scale = 1.14;
const double ScaleFactor = 1.0850;
const int MinNeighbors = 2;

using (IplImage img = new IplImage(Const.ImageYalta, LoadMode.Color))
using (IplImage smallImg = new IplImage(new CvSize(Cv.Round(img.Width / Scale), Cv.Round(img.Height / Scale)), BitDepth.U8, 1))
{

using (IplImage gray = new IplImage(img.Size, BitDepth.U8, 1))
{
Cv.CvtColor(img, gray, ColorConversion.BgrToGray);
Cv.Resize(gray, smallImg, Interpolation.Linear);
Cv.EqualizeHist(smallImg, smallImg);
}

using (CvHaarClassifierCascade cascade = CvHaarClassifierCascade.FromFile(Const.XmlHaarcascade)) //
using (CvMemStorage storage = new CvMemStorage())
{
storage.Clear();

//
Stopwatch watch = Stopwatch.StartNew();
CvSeq faces = Cv.HaarDetectObjects(smallImg, cascade, storage, ScaleFactor, MinNeighbors, 0, new CvSize(30, 30));
watch.Stop();
Console.WriteLine(“detection time = {0}ms\n”, watch.ElapsedMilliseconds);

//
for (int i = 0; i < faces.Total; i++)
{
CvRect r = faces[i].Value.Rect;
CvPoint center = new CvPoint
{
X = Cv.Round((r.X + r.Width * 0.5) * Scale),
Y = Cv.Round((r.Y + r.Height * 0.5) * Scale)
};
int radius = Cv.Round((r.Width + r.Height) * 0.25 * Scale);
img.Circle(center, radius, colors[i % 8], 3, LineType.AntiAlias, 0);
}
}

//
CvWindow.ShowImages(img);
}
}
}
}

Componente de reconocimiento de voz:

Se esta usando los componentes de reconocimiento de voz de Microsoft en especial el System.Speech.Recognition, que permite el reconocimiento de voz; para reducir los tiempos se ha construido una gramática simple como por ejemplo reconocer cuatro palabras: izquierda, derecha e izquierda.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Speech.Recognition.SrgsGrammar;

namespace voz
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpeechSynthesizer mysyn = new SpeechSynthesizer();
SpriteFont letraPuntaje, letraPuntaje1;
string texto;
//SpeechRecognitionEngine _Recognition = new SpeechRecognitionEngine();
private SpeechRecognitionEngine reconocedor = new SpeechRecognitionEngine();
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = “Content”;
}

/// <summary>

protected override void Initialize()
{
// TODO: Add your initialization logic here
reconocedor.SetInputToDefaultAudioDevice();
texto = “derecha”;
SrgsDocument doc = new SrgsDocument();
SrgsRule rules = new SrgsRule(“rules”, new SrgsOneOf(“derecha”, “izquierda”, “arriba”, “abajo”));
doc.Rules.Add(rules);
doc.Root = rules;
doc.Culture = reconocedor.RecognizerInfo.Culture;
doc.Language = “es-ES”;
reconocedor.LoadGrammar(new Grammar(doc));//

reconocedor.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(reconocedor_SpeechRecognized);

reconocedor.RecognizeAsync(RecognizeMode.Multiple);
base.Initialize();
}

/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
List<string> nombre = new List<string>();
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
letraPuntaje = Content.Load<SpriteFont>(“letra”);

foreach (InstalledVoice voz in mysyn.GetInstalledVoices())
{
nombre.Add(voz.VoiceInfo.Name.ToString());
}

// TODO: use this.Content to load your game content here
}
void reconocedor_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{

///destripa el datagrmaa

foreach (RecognizedWordUnit word in e.Result.Words)
{

texto = word.Text;
}
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name=”gameTime”>Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here

base.Update(gameTime);
}

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name=”gameTime”>Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

spriteBatch.Begin();
spriteBatch.DrawString(letraPuntaje, texto, new Vector2(60, 180),
Color.PaleVioletRed, MathHelper.ToRadians(0), new Vector2(0, 0), 2f, SpriteEffects.None, 0);
spriteBatch.End();
base.Draw(gameTime);
}

}
}

Componente de detección de movimiento y Menú

Respecto a este componente básicamente se cuenta en número de pixeles blancos dentro de una imagen en blanco y negro dentro de una región de la imagen ver la figura inferior.

blancoynegro

Componente de ubicación de contenidos

Este es el componente más importante y esta relacionado con el trabajo de los niños y niñas de la I.E. “Jesús Nazareno”. Ellos están aprendiendo de una manera muy dinámica el lenguaje de señas, este aprendizaje está siendo alentado por los padres de familia y afortunadamente con la participación de especialistas del Centro de Educación Especial “Señor de la Soledad” se ha podido mejorar la interpretación de las señas. Para ello se usan gif animados los que son ubicados sobre la posición de ubicación del rostro y se coordinan en base a estructuras CASE.

bailar trabajar comer barrer

Aquí la primera versión del Software

Juan Cadillo

El análisis de Necesidades en los Proyectos Educativos con TIC – Primera Parte

Deseo iniciar con este post una serie de tres artículos en los que expongo  conceptos sobre el análisis de necesidades dentro de los Proyectos Educativos que utilizan TICs y su importancia para lograr la visión organizacional.

Una idea innovadora es frecuentemente el punto de partida para un nuevo proyecto. Pero desde ahí a su materialización hay un largo camino, que se inicia con entender las necesidades de los usuarios, ya que es crucial  la definición de lo que se trata de alcanzar y de lo que sucederá como resultado del proyecto.

Se  necesita entender las necesidades de los usuarios para poder acercarlos e involucrarlos en el plan decisivo a desarrollar, luego se podrá ir por las diferentes etapas del proceso, tales como el desarrollar un plan, iniciar las actividades y  evaluar los resultados.

La etapa de análisis de necesidades es parte de la formulación de proyectos y es concebida para asegurar que se está planificando un proyecto y:

  • Es consistente con los intereses y necesidades de los miembros potenciales y beneficiarios de la intervención.
  • Cumple con todos los requerimientos necesarios para ser implementado con éxito.

Las actividades que propongo pueden ser discutibles, pero son un inicio para reflexionar sobre muchos proyectos educativos que involucran TIC que han fracasado y otros que tienen relativo éxito.

Las  actividades propuestas son:

  • Definir una idea, en la que se conforma un equipo y se define sus metas
  • Estimar o  evaluar las necesidades de los potenciales usuarios.
  • Valorar la capacidad de generación y utilización de las TIC
  • Analizar las barreras técnicas, financieras, institucionales y sociales.

DEFINIR UNA IDEA, EN LA QUE SE CONFORMA UN EQUIPO Y SE DEFINE SUS METAS

Un proyecto no debe ser la visión y conocimiento de una sola persona o grupo de personas ajenas a la realidad educativa de intervención. Ya que el  proyecto involucrará algunos cambios en la forma en que la gente vive y trabaja, es esencial incluir a aquellos que serán afectados por el cambio y obtener su visto bueno (Directores, profesores, personas administrativo, alumnos, padres de familia, etc.). Este es el porqué de la importancia de conformar un equipo o comité.

Este comité o equipo se encargará de:

  • Involucrará gente en el proyecto,
  • Establecerá las metas, en base a la visión o misión organizacional (de la Escuela, Red Educativa, Consorcio Educativo o Área de Influencia Local, Regional o Nacional)
  • Recolectará y analizará datos para su valoración,
  • Desarrollará el plan; y
  • Supervisará la implementación del proyecto.

Los motivadores o interesado en el desarrollo del proyecto deben tener una idea clara de quién tiene interés en su proyecto. Una guía es el análisis de los stakeholders que es categorización ilustrativamente por Johnson y Scholes (2001). En su estudio establecen los denominados “mapas de grupos de interés” a través de la matriz poder/dinamismo y de la matriz poder/interés. Este análisis permite determinar su actuación y relevancia en el éxito del proyecto.

Matriz poder/dinamismo

Predecibilidad
Alta Baja
Poder Bajo A

Pocos problemas

B

Impredecible pero manejable

Alto C

Poderoso pero predecible

D

Los mayores peligros u oportunidades

La siguiente matriz, permite establecer las acciones o estrategias a tomar en cuenta a la hora de involucrar a las personas pertenecientes a los grupos de clasificación.

Matriz poder/interés

Nivel de interés
Bajo Alto
Poder Bajo A

Mínimo esfuerzo

B

Tener informado

Alto C

Tener satisfecho

D

Jugadores clave

La siguiente matriz es una clasificación correspondiente a los involucrados y actores de la educación.

Matriz poder/interés – Proyectos Educativos y TIC

Nivel de Interés
Poder Bajo Alto
Bajo A

Gobierno, Asociaciones, Empresas.

B

Comunidad,

Universidades

Alto C

Padres de Familia, Alumnos

D

Trabajadores de la Educación,

Socios (ONGs)

Elaboración propia en base a Johnson y Scholes (2001).

Estos actores clave son aquellas organizaciones o personas que pueden dar apoyo o se pueden oponer al proyecto. En el caso Proyectos Educativos que usen TIC es beneficioso  involucrar personas (docentes, padres de familia, alcaldes, otros aliados, etc.) que no están familiarizadas con estas tecnologías e incluso algunos que sean  anti-tecnología o que tiene miedo a la tecnología.  Una tarea clave entonces es involucrar a actores clave significa asegurarse de que hay diferentes intereses que pueden ser representados en todas las fases del proyecto.

quienes_forman_el_equipo

La participación no significa involucrar a todos en todas las decisiones que se toman todo el tiempo: tener mucha gente involucrada en absolutamente todo va hacer el proceso más lento. La clave es encontrar una buena combinación de personas que pueden definir una visión juntos, formar una estrategia y completar tareas.

Probablemente se le hará cambios a las metas y objetivos en la medida en que se conoce más de lo que los participantes pueden necesitar o en lo que están interesados.

Aquí una guía de cómo seleccionar a los miembros del equipo.

¿QUIÉN? GRUPO POTENCIAL CRITERIO PARA SU PARTICIPACIÓN
Gobierno Nacional
Gobierno Provincial
Gobierno local
Negocios
Universidades
ONGs
Grupos Comunitarios/asociaciones / Sindicatos
Padres de Familia
Profesores / Directores /Auxiliares
Alumnos
Técnicos

La clave es encontrar una buena combinación de personas que pueden definir una visión conjunta, formar una estrategia y completar tareas.

Respecto al establecimiento de metas del proyecto, estas deben responder a la visión y misión organizacional.

Uno de los errores más comunes en el ámbito educación es que los proyectos no están alineados al planeamiento estratégico de la organización educativa (colegio, red educativa, consorcio educativo, municipio, región, etc.).

Una vez determinado que nuestro proyecto responde a la visión y misión de nuestra organización educativa el equipo debe hacerse las siguientes preguntas:

  1. ¿A dónde queremos llegar?
  2. ¿Dónde estamos?
  3. ¿Qué necesitamos hacer para conseguirlo?

Como planteamos en el post sobre los factores claves para generar desarrollo de las TICs, es conveniente que se parta de la pregunta ¿A dónde queremos llegar? antes de ¿Dónde estamos?.

¿Que necesitamos hacer o saber? (Para cumplir mi meta) ¿Cómo actuaremos/ qué actividades? ¿Qué tecnologías podemos usar?

Elaboración Propia.

Aquí la matriz que permite tener una visión integral:

Visión
Misión
Proyecto
Objetivo General Objetivo Específicos Indicadores Productos Actividades

En las dos siguientes publicaciones trataremos sobre:

  • Estimar las necesidades: evaluar las necesidades de los potenciales usuarios.
  • Valorar la capacidad de generación y utilización de las TIC
  • Analizar las barreras técnicas, financieras, institucionales y sociales.

Ing. Juan Cadillo León