Showing posts with label inteligencia artificial. Show all posts
Showing posts with label inteligencia artificial. Show all posts

Saturday, January 19, 2013

Cubieboard + OpenCV


¿Qué es la visión artificial?

Cuando un ordenador procesa una imagen, no entiende lo que realmente se ve en ella.
Pero y si necesitamos detectar una persona, o una cara en concreto, o un objeto, o seguir un color, o encontrar una forma, interpretar lo que vemos, etc.
De todo esto se encarga la visión artificial.

¿Cómo aplicamos la visión artificial?

Bueno aquí es donde viene en nuestra ayuda OpenCV, es un conjunto de librerías que nos permite abstraer al programador de la parte más laboriosa de la programación y utilizar funciones ya preparadas para todas las necesidades que tengamos.
Hay posibles instalaciones para Linux, android, windows, ios

Instalando OpenCV


He sacado toda la información técnica de este blog, muy bueno, no solo por este artículo sino por muchos otros.

Fuente: http://mitchtech.net/raspberry-pi-opencv
Fuente: http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation

Raspbian : Linux raspberrypi 3.4.19-a10-aufs+
OpenCV: OpenCV-2.4.3.tar.bz2 (os recomiendo entrar y descargar la última versión)
http://OpenCV.org

¿Quizas antes de hacer la instalación deberías decidir si libjpeg o libjpeg-turbo?
May be if you are reading this you should to think libjpeg or libjpeg-turbo?
  1. ¿Dónde vamos a hacer la instalación?
    1. Tarjeta ¿Hay espacio?, Con 2 GB suficiente pero mejor una de 8GB (que luego ya iremos necesitando)

      S.ficheros     Tamaño Usados  Disp Uso% Montado en
      rootfs           7,3G   1,5G  5,5G  22% /


      NOTA: Se hace un poco lenta, pero funciona

      ¿Por qué sobre la tarjeta? En el futuro quiero que esta placa sea el "razonador lógico" (no me gusta la definición inteligencia artificial), además de portátil debe consumir poco y un disco duro por muy ligero que sea, tiene un consumo muy alto para baterías (1A a 5 V)
  2. Descargar la última versión
    1. Yo instale esta OpenCV-2.4.3.tar.bz2  de todas formas buscar la última versión.
  3. Dependencias
    Bueno para hacer la instalación necesitamos hacer nuestra máquina con una base de herramientas necesarias. Describir cada una de ellas se escapa de este blog, pero las más interesante es cmake que nos permitirá configurar nuestra compilación e instalación.

    sudo apt-get -y install build-essential cmake pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools

    sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config
  4. Ahora vamos por pasos a instalar
    1. Nuestro directorio OpenCV con su versión OpenCV-2.4.3.tar.bz2

      tar -xvjpf OpenCV-2.4.3.tar.bz2
      rm OpenCV-2.4.3.tar.bz2
      cd OpenCV-2.4.3.tar.bz2
      mkdir build
      cd build

    2. Preconfigurando la compilación
      Con esto le diremos que nos compile lo que necesitemos, con este se crea una instalación bastante estándar, además de instalar el soporte para python


      cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..

      make
      sudo make install

  5. Últimos pasos
    1. Unas configuraciones para indicar las bibliotecas y librerías.

      $ sudo vi /etc/ld.so.conf.d/opencv.conf

      Si no existe lo creamos y añadimos la siguiente línea

      /usr/local/lib

      Configuramos el enlace dinámico de las librerías

      $sudo ldconfig -v

    2. Configuramos el sistema de bashrc de modo global

      sudo vi /etc/bash.bashrc
      Y añadimos la siguiente línea

      PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
  6. Probando OpenCV
    1. Nos vamos al directorio de ejemplos de C
      ~/OpenCV/OpenCV-2.4.3/build/bin

      convexhull

      kmeans

      drawing

Hull

Cluster


Dibujos



Siguientes pasos

Wednesday, January 9, 2013

Vaso Medio lleno, vaso medio vacio, o ... sobra vaso

Bueno ahora ya hemos visto que nuestra cubieboard es más lenta en procesamiento que un dos nucleos (cielos y tanto estudiar para esto :S)
¿Pero eso realmente significa que es malo ?

¿ Realmente cuanta potencia necesito ?

Para contestar esa pregunta hay que hacer otra pregunta.

¿Qué vamos a hacer ?

Algún ejemplo
Por ejemplo el software de  cabina del space shutthle (1981) (transbordador espacial ) funcionaba con un intel 8086 y luego fue un 80386.
Los equipos de la estación internacional espacial (ISS) usan para los comandos  un 80386.
http://www.gratisprogramas.org/descargar/los-cpu-de-las-naves-espaciales-computadoras-en-el-espacio/

Ahora si queremos jugar al Angrybirds igual necesitamos algo más.

¿Qué voy a hacer?

Una vez visto los ejemplos me tendré que centrar en lo que yo quiero hacer.
  1. Visión artificial con Opencv (umm igual se me queda corto, pero estamos hablando de una plataforma de estudio)
  2. Manejo y comunicación con arduinos
  3. Estudiar temas de Inteligencia artificial para problemas racionales. (aquí estoy algo verde)
Bueno pues ya tengo tarea para estudiar.
Iré poniendo los temas de las cosas que vaya aprendiendo.