Ricardo's Place Robotics, machine learning, or simply random thoughts!

Testing my new TensorFlow / OpenCV / etc. docker image

My last post was all about creating a TensorFlow docker image that would work with OpenCV, inside a Jupyter notebook, creating external windows, accessing the webcam, saving things using the current user from host, etc. All that hard work had a reason: use the newest version of TensorFlow for computer vision. So, let’s try it!

First results from my TensorFlow docker image
Without the hat and the measuring tape, it was 0.9 for mask :disappointed_relieved:.


A TensorFlow docker image to rule them all

TensorFlow+OpenCV+Access to local HD+docker


3D Printer Bed Leveling - The Blu-Tack way!

Last month, I decided to sell my good ol’ 3D printer, a HobbyKing incarnation (Turnigy Fabrikator Mini) of the TinyBoy V1, to buy a delta one.

Linear Delta 3D Printer
My new Linear Delta 3D Printer working and working and working...


How to reset your Windows 7, 8 or 10 password without black magic

Currently, I’m a last year Robotics / Artificial Intelligence Ph.D candidate (don’t be shy, have a look at my publications), father of a 7-yrs-old boy and I’m living abroad with my family since 2013. So, life is quite busy, a little bit stressful and it happens that, sometimes, I simply forget things. The other day, I was setting up a new Dell laptop (I’ve bought it really, really cheap from their UK outlet, free delivery and I even got an extra student discount!) that came with Windows 10 and, as always, I created a very hard to guess password. It was so hard to guess that I forgot it after a week! And that’s how the idea for this post began.

How to recover your windows password
This webpage was not helpful in my situation.


Easy-peasy Deep Learning and Convolutional Networks with Keras - Part 2

This is the continuation (finally!), or the Part 2, of the “Easy-peasy Deep Learning and Convolutional Networks with Keras”. This post should be something self-contained, but you may enjoy reading Part 1 and Part 1½… it’s up to you.

Around one week ago, I’d attended a CUDA workshop presented (or should I say conducted?) by my friend Anthony Morse and I’m still astounded by DIGITS. So, during the workshop, I had some interesting ideas to use on this post!

The first thing I thought when I read (or heard?) for the first time the name Convolutional Neural Network was a bunch of filters (Gimp would agree with me). I’m an Electrical Engineer and, for most of us (Electrical Engineers), convolutions start as nightmares and, gradually, become our almighty super weapon after a module like Signal and Systems.

Let’s start with something easy… a video! Below, you can observe, step-by-step, what happens when a 2D convolution (think about a filter that detects, or enhances, edges) is applied to an image:


How to keep things running after you close your terminal (Linux/Unix)

When you start playing with cloud computing like Amazon Web Services, you will, sometimes, decide to launch a program that will take a while to run. If you simply close the connection before all processes are finished, the system will terminate bash (or whatever shell you were using) and, therefore, your program will be also terminated. Normally, when we are working on a terminal, we make use of the & (or ctrl+z and bg) to send things to the background freeing the terminal. If you sent your process to background, you will be able to use jobs to display information about processes that are sleeping (the ctrl+z thing) or running on the background.


Mounting an external USB device formatted with exFAT on Linux Ubuntu

This post is a personal reminder. I’m always forgetting Ubuntu (up to 16.04), doesn’t know how to mount exFAT - Extended File Allocation Table and then I need to Google for it. Why would you need exFAT? Among other things, it’s possible to have files bigger than 4GB.


Easy-peasy Deep Learning and Convolutional Networks with Keras - Part 1½

This is the continuation, Part 1½, of the “Easy-peasy Deep Learning and Convolutional Networks with Keras”. Do you really need to read Part 1 to understand what is going on here? Honestly, probably not, but I would suggest you doing so anyway.

Layers output as images
This is what my trained network outputs, but viewed as RGB images.


Running a Jupyter Notebook (IPython) on a remote server

Do you know what is a Jupyter Notebook? If you don’t, please, have a look at the previous link and come back later… just joking… ok, seriously, check the previous link because they will do a much better job explaining what is a Jupyter Notebook than me :wink:.

jupyter notebook
This is what I was doing just before start writing this post.


Easy-peasy Deep Learning and Convolutional Networks with Keras - Part 1

Deep learning… wow… this is “the” hot topic since, at least, some good years ago! I’ve attended a few seminars and workshops about deep learning, nevertheless I’ve never tried to code something myself - until now! - because I had always another priority. Also, I have to admit, I thought it was a lot harder and it would need much more time to be able to run anything that was not simply a sample code.

Classification of Dogs and Cats
Example of classification results.

I’m always forgetting things, so I like to take notes as if I was teaching a toddler. Consequently, this post was designed to remember myself when I forget how to use Keras :expressionless:.

All the things I’ll explain below will only make sense if you know what is a Multilayer perceptron and Feedforward neural network as well. In case you don’t, no worries, Google is your friend :stuck_out_tongue_winking_eye:.

Keras is a high-level neural networks library for TensorFlow and Theano. I would call it a Python wrapper that hides the extra details necessary to create neural networks... simplifying our life!

Since I’ve just learned how to create Github Markdown check boxes, let’s write down an outline of what we want to achieve at the end:

  • Convince ourselves learning Keras is a nice investment!
  • Create our very own first deep neural network (ok, not that deep) applying it to a well known task.
  • Show off by modifying the previous example using a convolutional layer.
  • Enjoy our time because when you work on something you like, it is not work anymore!