Artificial Intelligence at the Top of a Professional Sport

The lights dim and the music swells as an elite competitor in a silk robe passes through a cheering crowd to take the ring. It’s a blueprint familiar to boxing, only this pugilist won’t be throwing punches.

OpenAI created an AI bot that has beaten the best players in the world at this year’s International championship. The International is an esports competition held annually for Dota 2, one of the most competitive multiplayer online battle arena (MOBA) games.

Each match of the International consists of two 5-player teams competing against each other for 35-45 minutes. In layman’s terms, it is an online version of capture the flag. While the premise may sound simple, it is actually one of the most complicated and detailed competitive games out there. The top teams are required to practice together daily, but this level of play is nothing new to them. To reach a professional level, individual players would practice obscenely late, go to sleep, and then repeat the process. For years. So how long did the AI bot have to prepare for this competition compared to these seasoned pros? A couple of months.

Continue reading “Artificial Intelligence at the Top of a Professional Sport”

Table-Top Self Driving With The Pi Zero

Self-driving technologies are a hot button topic right now, as major companies scramble to be the first to market with more capable autonomous vehicles. There’s a high barrier to entry at the top of the game, but that doesn’t mean you can’t tinker at home. [Richard Crowder] has been building a self-driving car at home with the Raspberry Pi Zero.

The self-driving model is trained by first learning from the human driver.

[Richard]’s project is based on the EOgma Neo machine learning library. Using a type of machine learning known as Sparse Predictive Hierarchies, or SPH, the algorithm is first trained with user input. [Richard] trained the model by driving it around a small track. The algorithm takes into account the steering and throttle inputs from the human driver and also monitors the feed from the Raspberry Pi camera. After training the model for a few laps, the car is then ready to drive itself.

Fundamentally, this is working on a much simpler level than a full-sized self-driving car. As the video indicates, the steering angle is predicted based on the grayscale pixel data from the camera feed. The track is very simple and the contrast of the walls to the driving surface makes it easier for the machine learning algorithm to figure out where it should be going. Watching the video feed reminds us of simple line-following robots of years past; this project achieves a similar effect in a completely different way. As it stands, it’s a great learning project on how to work with machine learning systems.

[Richard]’s write-up includes instructions on how to replicate the build, which is great if you’re just starting out with machine learning projects. What’s impressive is that this build achieves what it does with only the horsepower of the minute Raspberry Pi Zero, and putting it all in a package of just 102 grams. We’ve seen similar builds before that rely on much more horsepower – in processing and propulsion.

We Should Stop Here, It’s Bat Country!

[Roland Meertens] has a bat detector, or rather, he has a device that can record ultrasound – the type of sound that bats use to echolocate. What he wants is a bat detector. When he discovered bats living behind his house, he set to work creating a program that would use his recorder to detect when bats were around.

[Roland]’s workflow consists of breaking up a recording from his backyard into one second clips, loading them in to a Python program and running some machine learning code to determine whether the clip is a recording of a bat or not and using this to determine the number of bats flying around. He uses several Python libraries to do this including Tensorflow and LibROSA.

The Python code breaks each one second clip into twenty-two parts. For each part, he determines the max, min, mean, standard deviation, and max-min of the sample – if multiple parts of the signal have certain features (such as a high standard deviation), then the software has detected a bat call. Armed with this, [Roland] turned his head to the machine learning so that he could offload the work of detecting the bats. Again, he turned to Python and the Keras library.

With a 95% success rate, [Roland] now has a bat detector! One that works pretty well, too. For more on detecting bats and machine learning, check out the bat detector in this list of ultrasonic projects and check out this IDE for working with Tensorflow and machine learning.

Machine Learning IDE in Alpha

Machine is an IDE for building machine learning systems using TensorFlow. You can sign up for the alpha, but first, have a look at the video below to see what it is all about.

You’ll see in the video, that you can import data for a model and then do training (in this case, to find a mustache in an image). You’ll see the IDE invites an iterative approach to development since you can alter parameters, run experiments, and see the results.

The IDE syncs with “the cloud” so you can work on it from multiple computers and roll back to previous results easily. We don’t know when the IDE will leave alpha status (or beta, for that matter), but the team’s goal is to release a free version of Machine to encourage widespread adoption.

If you want to learn more about TensorFlow, you are in the right place. We’ve also covered a bare-bones project if you’d rather get started that way. You can also find some good background material going all the way back to the early perceptron-based neural networks.

Using Machine Learning To Cut Down Surgical Videos

Recording video of medical surgeries is a great way to both educate doctors in training and identify process improvements. However, surgeries can be very time consuming, and it can be a gargantuan task to sort through endless hours of video searching for relevant points where the action happens. To tackle this issue, researchers at MIT have used machine learning techniques to analyse videos of surgical procedures.

There’s some fairly serious mathematics behind this sort of videographic analysis.

The machine learning algorithm needed to be trained to identify the relevant parts of surgical videos. To do this, the laparoscopic surgeries being investigated were split up into distinct stages, each relating to a different part of the surgical process. Researchers would then watch recordings of prior surgeries and mark the start of each stage. This data was used to train the model which was then used to sift through other recordings to capture the key moments of each surgery.

The time-saving advantages of such technology could be applied to a great many fields – such an algorithm could be put to great use to sort through hours of uneventful security footage looking for anomalies, or rapidly cut together holiday footage so you only have to see the good parts. We’d love to see the researchers release footage showing the algorithm’s work – thus far, all we have to go off is the project paper.

If you’re thirsty for more machine learning knowledge, read up on the state of working with neural networks in 2017.

Neural Networks: You’ve Got It So Easy

Neural networks are all the rage right now with increasing numbers of hackers, students, researchers, and businesses getting involved. The last resurgence was in the 80s and 90s, when there was little or no World Wide Web and few neural network tools. The current resurgence started around 2006. From a hacker’s perspective, what tools and other resources were available back then, what’s available now, and what should we expect for the future? For myself, a GPU on the Raspberry Pi would be nice.

Continue reading “Neural Networks: You’ve Got It So Easy”

Introduction To TensorFlow

I had great fun writing neural network software in the 90s, and I have been anxious to try creating some using TensorFlow.

Google’s machine intelligence framework is the new hotness right now. And when TensorFlow became installable on the Raspberry Pi, working with it became very easy to do. In a short time I made a neural network that counts in binary. So I thought I’d pass on what I’ve learned so far. Hopefully this makes it easier for anyone else who wants to try it, or for anyone who just wants some insight into neural networks.

Continue reading “Introduction To TensorFlow”