Presentation @ TDC 2017 – Images are not only pixels!

This week I had the pleasure of talk about computer vision and machine learning at The Developer Conference.

In a nutshell I explained how Convolutional Neural Networks works and it’s usage to Classify and Detect Objects in images. It was a really fun experience and the I am pretty  impressed/proud that machine learning and computer vision are getting more and more attention in developers world.

Here are the slides [in Portuguese] and here the videos that I presented.

I thank all the people that asked questions and give me feedback in the event.

Posted in Sem categoria | Leave a comment

Installing cuda 8.0 in Ubuntu 16.4

Install cuda using the .deb files is really simple 🙂

  1. Download the .deb(local) files from here: https://developer.nvidia.com/cuda-80-ga2-download-archive
    cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
    cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64-deb
  2. sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
  3. sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64-deb
  4. sudo apt-get update
  5. sudo apt-get install cuda
  6. Add cuda to you path in the .bashrc
  7. Reboot

You can use the same approach to install cuDNN 🙂

 

Posted in Sem categoria | Leave a comment

Yolo V2 and 9000 Presentation

I found this presentation by pjreddie about his object detection method YOLO version two. Yolo is pretty nice method :).

You can read more about yolo here: https://pjreddie.com/darknet/

Posted in DeepLearning, English, object detection | Leave a comment

Talk sobre Visão Computacional no TDC

Opa vou dar uma talk agora em novembro sobre CNNs na trilha de machine learning do TDC.

Imagens não são apenas pixels: Utilizando visão computacional e machine learning para extrair informações de imagens digitais  

O aprendizado de maquina vem sendo utilizado para encontrar padrões em dados para, por exemplo, melhorar a qualidade de um produto ou maximizar os lucros de uma empresa. Embora uma imagem digital possua bastante informação relevante para este tipo de aplicação, boa parte das empresas não incluem imagens em suas minerações. Esse fato vem da complexidade em fazer com que o computador entenda e seja capaz de extrair informações relevantes das imagens. Esta palestra tem como objetivo introduzir o telespectador ao uso da visão computacional e aprendizado de maquina para fins de extrair informações de imagens digitais.

Mais detalhes:  http://www.thedevelopersconference.com.br/tdc/2017/portoalegre/trilha-machine-learning

Posted in Sem categoria | Leave a comment

Editing a Ubuntu program from source

Today I had to modify the evince in my ubuntu. So here are the steeps:

1- download source: apt-get source evince

2- download dependences: sudo apt-get build-dep evince

3- edit code.

4-build/test

5-generate the .deb: dpkg-buildpackage -rfakeroot -uc -b

6- re-install the application: sudo dpkg -i evince_3.18.2-1ubuntu4_amd64.deb

It will work for any application, i think. Nice and Fun =)

Posted in Sem categoria | Leave a comment

Installing Cuda 8.0 on ubuntu 16.4

This post is depreciated, look a this: http://luiszeni.com.br/?p=116

Training deeplearning models in GPUs is faster than on CPUs, therefore GPU support is a good tool when we are training these models. I guess that Nvidia Cards are actually the market standard to this finality. In this way, it is necessary to install Cuda suport in the machine that we will compute our models using GPU.

When i was trying to install Cuda on my training server with an geforce 660 TI I had a lot of problems. In this “tutorial”  I  share the steeps that i fallowed to solve the problems that occurred while  I was installing CUDA in my training machine.

My first attempt was to install cuda 7.5 on 16.4, a complete failure.  I tried it on 14.4 too, fail again, beeeeeeeehhh =_____= …. On 15.4 it worked! However, 15.4 is not an LTS, have no updates anymore, and it SUX! In my delusion I figured out that the version 8.0 has been released, and, OK, let’s try IT, it worked in the end =).

Ok, let’s start.

  1. Download cuda_8.0.27_linux.run from NVidia website
  2. Download the path cuda_8.0.27.1_linux.run from NVidia website (It allows Cuda to work with gcc > 5 ) .
  3.  In my computer when I run cuda_8.0.27_linux.run, it says that nouveal is blocking the installation. Therefore I put that bad guy in a blacklist.
    1. sudo emacs /etc/modprobe.d/blacklist-nouveau.confc
    2. Then, add the following line in that file:
      blacklist nouveau option nouveau modeset=0d. sudo update-initramfs -u
    3. Reboot computer
  4. Go to a TTY (Ctrl+Alt+F1), and login to your user.
  5. The path to work with gcc 5 needs the Cuda driver installed and the Cuda driver needs the gcc < 5. Therefore, I installed gcc-4.9 and g++-4.9 and changed the link to them.
    1. sudo apt-get install gcc-4.9 g++-4.9
    2. sudo rm /usr/bin/gcc
    3. sudo rm /usr/bin/g++
    4. sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc
    5. sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++
  6. Go to the directory where you have the CUDA driver, and change it permissions to run
    chmod a+x
  7. Kill the lightdm to install the new graphic's card dr
    sudo service lightdm stop
  8.  Run the cuda driver
    ./cuda_8.0.27_linux.run
  9. Follow the installation….
  10. Return the links to gcc-5.x (Same as the steep 5)
  11. Install the path ./cuda_8.0.27.1_linux.run
  12. Put the exports on your .bashrc file:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export PATH=$PATH:/usr/local/cuda/bin
  13. Try to make the Cuda Examples
    if( it works)
    Drink a beer =), Prosit!

Sources:
http://askubuntu.com/questions/672047/anyone-has-successfully-installed-cuda-7-5-on-ubuntu-14-04-3-lts-x86-64
http://askubuntu.com/questions/26498/choose-gcc-and-g-version
https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide
https://devtalk.nvidia.com/default/topic/827737/system-with-cuda-7-installed-giving-error-for-libcudart-so-6-5/

Posted in Caffe, Cuda, DeepLearning, English | Leave a comment

Enviando e recebendo imagens entre Android e Web Services

Que tal enviar e receber imagens entre Android e web server? E por que não mostrar as imagens em uma ListView personalizada bonitinha? Como exemplo fiz um aplicativo de cadastro de usuários com foto.

O código do web service e do aplicativo estão disponíveis no meu git: https://github.com/luiszeni/aulasandroid
Nas pastas ImageToDatabaseViaWebServices (aplicativo) e WebServiceDatabaseAndImages (Web service)

Na vídeo aula a seguir, explico como o código do aplicativo funciona. 😉

Quem ainda não assistiu as vídeo aulas do post anterior, recomendo que assista elas primeiro. Pois nelas que explico passo a passo os fundamentos para criar o web service e consumi-lo no Android. Clique aqui para ir ao post.

 

Posted in Android, Banco de Dados, Java, Portuguese, Web Services | 3 Comments

Banco de Dados externo ao Android: Web Services + MySQL + Android

No post anterior mostrei como utilizar o banco de dados SQLite interno do Android. Mas isso é muito bonito, até o momento em que precisa-se ter uma base centralizada de informações para vários usuários de um aplicativo. E ai como faz?

Uma solução seria acessar diretamente pelo Android um banco de dados externo. O problema é que os dados de acesso ao banco de dados como url, usuário e senha ficariam acessíveis para qualquer pessoa que saiba decompilar um APK. E certamente esta é uma grave falha de segurança. Acredito que este seja o motivo de não existirem drives JDBC para o Android.

Uma solução possível é consumir um web service no aplicativo android e deixar a parte de acesso ao banco de dados no web service no servidor.

Portanto, nesta série de duas vídeos aulas demostro como criar um web service em java, como acessar um banco de dados MySQL dentro do web service e como consumir este web service no Android através da biblioteca KSoap2.

Aproveite, até onde eu sei, não existe um material semelhante tanto em inglês quanto em português. 🙂

Banco de Dados externo ao Android: Web Services + MySQL + Android – Parte 1

Banco de Dados externo ao Android: Web Services + MySQL + Android – Parte 2

Espero que as vídeo aulas sejam úteis. Caso tenhas alguma sugestão deixe nos comentários. 😉

Posted in Android, Banco de Dados, Java, Portuguese, Web Services | 6 Comments

Utilizando o Banco de Dados Interno do Android

Nesta série de duas vídeos aulas, demonstro o básico de como utilizar o banco de dados SQLite do Android. Com auxilio da classe SQLiteOpenHelper. Nas vídeos aulas, serão dados como exemplo as seguintes funcionalidades:

  • Cadastro de livros;
  • Visualização de todos os livros cadastrados.

Parte 1:

Parte 2:

Espero que as vídeo aulas sejam úteis. Caso tenhas alguma sugestão deixe nos comentários. 😉

Posted in Android, Banco de Dados, Java, Portuguese | Leave a comment

System.out.println(“hello world”);

Esta é a primeira postagem do blog, então, nada mais justo do que falar um pouco de minha pessoa e do que pretendo escrever aqui.

Meu nome é Luis Felipe Zeni, resido na cidade de Porto Alegre – Rio Grande do Sul. Possuo 26 anos, tenho graduação em Sistemas de Informação e Mestrado em Computação. Em computação tenho interesse por assuntos relacionados à programação de computadores, desenvolvimento de software, metodologias de desenvolvimento, visão computacional , processamento de imagens, Arduino e Android. Tenho um espírito inventivo e desde pequeno sempre gostei de inventar coisas. Adoro cerveja, gosto tanto que faço cerveja artesanal. Uma das invenções que me orgulho é a minha cervejaria controlada por Arduino e Android, em breve, espero escrever uma postagem sobre a cervejaria.  Gosto de jogar xadrez, embora esteja enferrujado.  Sinto prazer ao  lecionar, principalmente sobre assuntos relacionados a programação de computadores. Ouço de Heavy Metal, Rock à música clássica. Não sou um leitor ávido, mas alguns dos meus autores favoritos são Douglas Adams, Bernard Cornwell e J. R. R. Tolkien.

Em 2015, quero tirar alguns projetos da gaveta, um deles é manter este blog. Pretendo escrever um pouco sobre desenvolvimento de software, fabricação de cerveja artesanal e o que me der na telha. Espero conseguir manter o blog sempre ativo e atrativo para as pessoas que o acessarem. Minha pretensão é de escrever ao menos uma postagem por mês. Quem sabe, desta forma me forço a escrever e a gerar algum conteúdo.  Espero que você goste das próximas postagens e caso ache interessante, deixe um comentário.

Um Abraço, e até a próxima.

Posted in Portuguese, Sobre o Autor, Sobre o Blog | 2 Comments