IBM Watson y su inteligencia artificial

IBM Watson, ¿que es?

Según wikipedia:

Watson es un sistema informático de inteligencia artificial que es capaz de responder a preguntas formuladas en lenguaje natural.​ Esta desarrollado por la corporación estadounidense IBM y forma parte del proyecto del equipo de investigación DeepQA, liderado por el investigador principal David Ferruci. Lleva su nombre en honor del fundador y primer presidente de IBM, Thomas J. Watson.

Efectivamente, más inteligencia artificial, y ademas es una de las 7 grandes empresas que junto a Google(Alphabet), Apple, Sentient Technologies, Facebook, Microsoft y Amazon luchan por tener la más rápida y potente inteligencia artificial del mundo.

Gracias a la lucha de estas empresas, hoy tenemos acceso publico y gratuito (casi gratuito) a casi toda su potencia y/o casi todos sus servicios.

Muy bonito, ¿Por donde comienzo?

Para acceder a los servicios que ofrece IBM haremos clic aquí y nos registramos para tener acceso a nuestro panel de control.

Una vez finalizado el proceso de registro accederemos a nuestro dashboard y desde allí iniciaremos nuestro producto/servicio de IBM Cloud

La siguiente pantalla sera nuestro panel de control y es donde gestionamos todos los servicios, recursos, etc…, que ofrece IBM. La primera vez que entras no se mostrara ningún recurso ya que acabamos de iniciar y todavía no hemos creado nada.

Para continuar necesitamos Crear un recurso, así que vamos a pulsar sobre Crear recurso

En la siguiente pantalla podemos ver que IBM tiene todo tipo de servicios, pero nosotros vamos a centrarnos en la parte de inteligencia artificial: Watson

Cuando seleccionemos Watson se mostraran los diferentes servicios que IBM tiene relacionado con la inteligencia artificial, pero para este ejemplo vamos a elegir el servicio de reconocimiento visual ( visual recognition )

En la siguiente pantalla  aparecerá toda la información sobre el servicio, limitaciones, versiones beta, etc…

Pulsando en el botón Crear  finalizaremos el proceso.

Para entrar en profundidad y conocer todos los detalles sobre cualquier servicio, IBM ofrece una guía y la documentación API de como usar cada servicio, dentro del propio servicio.

Ahora con nuestro servicio y el api_key creado solo queda empezar a escribir un poco de código.

Probando el servicio de forma simple (solo local)

¿¡¡Pero!!?, ¿porque solo local?. Pues la respuesta es muy sencilla, el primer ejemplo es tan simple que no requiere de programación, solo es necesario realizar una llamada al API desde un formulario en HTML, y salvo que quieras que tu api_key la conozca todo el mundo, no te recomiendo esta opción.

{api_key} -> cambiar por vuestra api_key.

Y con esto ya tenemos un sistema de clasificación de objetos y reconocimiento facial dentro de una imagen, CHAS!!!!.

Para este ejemplo he puesto un vídeo para comprobar como funciona el servicio y el respuesta que nos devuelve, porque como decía antes, las api keys están en el propio código.

Ahora si!!, usando Node para realizar la consulta

Para probar el API de reconocimiento visual de IBM he creado una página que comprueba el fichero a subir.

Cuando abrimos la página desde un ordenador se abre el explorador de ficheros para seleccionar una imagen, pero si se usa el móvil nos permite usar también la cámara del móvil.

Si todo es correcto nos mostrara en la página la imagen que vamos a enviar para su clasificación.

Cuando pulsamos sobre el botón clasificar fotografía se realizara una petición ajax a un servidor creado en Node que sera el encargado de subir el fichero y enviarlo al API de reconocimiento visual de IBM.

Si todo el proceso es correcto tendríamos una respuesta en JSON con toda la información que ha podido extraer y clasificar el servicio de reconocimiento visual de IBM.

Finalmente desde la página web tramitaremos esa respuesta y mostrar los resultados.

Aunque voy a poner todo el código en la web, siempre me gusta dejar un repositorio de todo lo que hago así que desde aquí accedes al repositorio y en este enlace puedes probar la aplicación.

A continuación todo el código del proyecto:

[Página estática que se carga desde Node]

Para que funcione el API de IBM de reconocimiento visual en el servidor de Node necesitaremos instalar la librería de acceso a los servicios de IBM Watson.

Como este ejemplo esta creado en Node usaremos NPM: npm install –save watson-developer-cloud

No obstante toda la documentación de uso viene especificada en cada servicio y con pequeños ejemplos de uso. Desde aquí puedes acceder a todo el API de reconocimiento visual.

[Servidor Node que carga la página estática y realiza la llamada a el servicio de IBM]

Con esta pequeña introducción y la gran documentación que ofrece IBM espero que te animes a probar todo lo que IBM pone a nuestra disposición.

ACTUALIZACIÓN [07/03/2019]

Gracias al comentario de antonio indicando que tenia problemas para ejecutar el proyecto, he realizado algunos cambios en el código ya que IBM Watson ha cambiado la clave api_key por iam_apikey.

Para comprobar que es correcta la solución, ademas de un vídeo con el proyecto en funcionamiento también he actualizado el repositorio de github con los cambios, he añadido el package.json con las dependencias necesarias y he modificado el código de los gist de este artículo con los últimos cambios.