Decision Forests

forestDecision Forests (also called random trees, random forests etc) are a machine learning system that can be applied to many tasks including image recognition. What’s nice is that software is available here, OpenCV has an implementation and there’s also a GPU implementation along with no doubt many others. The image shows one of the examples using the Microsoft code where the forest has learned the classification of a spiral pattern. This paper describes a very interesting project using multiple layers of decision forests to determine depth using reflected near IR illumination intensity so that an (almost) standard webcam can recover depth information for things like gesture recognition. The nice thing is that the sensor can be very small and processing overhead is very low.

GStreamer launch for processing RTSP/H.264 video on the Jetson TK1

IP cameras such as the Foscam FI9821 stream network video using H.264 over RTSP. The gstreamer-0.10 launch code snippet below creates a pipeline that allows an application to get access to the streaming video as a series of RGB frames via the appsink plug-in. It makes use of the Jetson TK1‘s hardware acceleration for H.264 decoding.

launch = g_strdup_printf (
     " rtspsrc location=rtsp://%s:%d/videoMain user-id=%s user-pw=%s "
     " ! gstrtpjitterbuffer ! rtph264depay ! queue ! nv_omx_h264dec "
     " ! capsfilter caps=\"video/x-raw-yuv\" ! ffmpegcolorspace "
     " ! capsfilter caps=\"video/x-raw-rgb\" ! queue ! appsink name=videoSink0 "
     m_IPAddress, m_port, m_user, m_pw);
 m_pipeline = gst_parse_launch(launch, &error);
 g_free(launch);

Deep convolutional neural networks in practice

Found this very interesting paper on deep convolutional neural networks via a post on the MIT Technology Review web site. It describes a system using multiple GPUs to achieve pretty accurate image recognition. What’s even better, code is available here for multiple NVIDIA CUDA systems. I need to look at it in more detail but it looks like it has all the necessary config files to set up the neural network as described in the paper and would be a good starting point for other uses.

Pizza-stabilized restaurant tables – a demonstration of restaurant table engineering

PizzaJust returned from a tour of California and came across this piece of engineering at a restaurant at SFO. Sadly, the table designers had chosen to have four points of contact between the table and the floor which is of course a disaster. Apparently, a section of pizza had the correct size and compliance to form a stable interface between the table and the floor. An adjacent table had what seemed like a better design in that a single pole came down from the table to a circular disk base but the base had five points of contact with the floor. A waitress noticed my interest and a more general discussion ensued, causing some hilarity to other patrons. It was explained that I was a nerd (we’d visited CalTech after all) and that seemed to take care of it.

Believe it or not, restaurant table stability is a common subject for discussion here, especially since one of our number is a mechanical engineer and also because we spend too much time at restaurants. So, time to develop a proper (although not very rigorous or perhaps even correct) theory…

Continue reading “Pizza-stabilized restaurant tables – a demonstration of restaurant table engineering”

Linux: setting permissions for USB serial ports using udev rules

USBIt’s pretty annoying that, by default, USB serial devices come up with somewhat restricted permissions. Sometimes adding the user to the dialout  group works, sometimes it doesn’t. The most reliable way to fix this for all time is to add a udev rule but I can never remember the syntax, hence this post…

Continue reading “Linux: setting permissions for USB serial ports using udev rules”