I programmed the artificial neural network from my previous post to process a video feed from my camera. Then, I pointed the camera at a youtube video of traffic to see if it could detect cars.
And, I am happy to say yes, technically it can detect cars from the video. It's a little hit or miss right now, but it can definitely pick up about 50% of the cars that pass by. Not only that - but the camera isn't hooked up to my desktop computer. I have this whole program (minus the youtube video) running on a $35 mini computer that is about the size of a deck of cards (Raspberry Pi). It's processing video at just under 3 frames per second.
I will need to work on getting that frame rate up higher - I'd like for it to be at least 5 frames per second, and 10 would be ideal. More importantly, I need to improve its comprehension. The photos that I trained the neural network on were mostly of cars taken from the side or taken from the back. If the training photos included some taken from above and at diagonal angles, I think the performance would improve a lot.
Below is a gif of the neural network in action. The red boxes are where it's looking. The boxes turn green when it thinks it sees a car. Yeah, obviously it has a ways to go - but it's a start.
2 years, 3 months ago
Last Saturday, we went to see a band named Twiddle in Boston. The music sounded great. They are a jam band from Vermont. They are in the same genre as Phish and DMB, but they seem to stick to an "up-beat" funk sound. Clearly a lot of talent in this band.
We saw them in a venue called The Paradise - as you can tell from the photo, it's a pretty small place. I thought the venue was fun. I think some bands that are popular enough to fill a larger venue (such as the Orpheum, House of Blues, or Blue Hills Pavilion) would really be more at home in a place like this. Sometimes the music just belongs in a smaller venue without seats. I'd be willing to pay more for the tickets, really.
Picking up from where I left off on my previous machine learning post, which you can find here...
I am embarking on a personal project involving machine learning and computer vision. The project has four main goals:
Develop an artificial neural network that can identify vehicles within an image.
Optimize that neural network so it can scan between five and ten images every second (in other words, allow it to operate on a video stream).
Further optimize that neural network so it can run on a $35 mini-computer known as a Raspberry Pi (rather than my large desktop computer).
Develop some computer routines that utilize the above and collect data.
Learn as much as possible in the process.
Tonight, the project reached its first milestone: I programmed and trained my first artificial neural network. I trained it by showing it 6,592 images - half of which contained a car, and half did not contain a car. After viewing each image, the neural network would say whether or not it thought the image contained a car. If it guessed wrong, it would re-calibrate itself, and then we'd move to the next image.
The above sounds like a really boring a tedious process - but it's not. The training is all automated, and it completed in under one hour. After training, I showed the neural network about 750 images that it never seen before, and it was able to predict whether or not they contained a car with over 95% accuracy.
These accomplishments are rather mundane in the world of computer science - but its a humble start to the project. I can't make the neural network too flashy, or else Steps 2 and 3 will get very difficult.
Fundamental human discoveries...and net neutrality
2 years, 3 months ago
Fire, agriculture, the wheel, electricity, the internet
Above is a brief overview of human technology. Obviously, there are tons of things we could argue about adding to this list: steel, the gun, the automobile, the airplane, the television, nuclear fission, the shamwow. But, in my person opinion, these five items are the fundamental stepping-stones of human technology. Each of these items were completely unfathomable to humans prior to their discovery. Also, each of these discoveries are disruptive; they changed the world – whether people like it or not! These are the big ones.
It’s interesting to think of what unfathomable discovery might be next on this list. Those who are smart enough to discover the next big thing will become legends. But, I am not sure if they will become rich. That’s because these fundamental discoveries are not “products”. They belong to the human race. It’s not like a company somewhere could make you pay a royalty every time you start a fire or spin a wheel. Sure, a company can sell you a lighter, or a tractor, or some electricity, or a connection to the internet – but these are just instances of the technology, no company “owns” the technology outright.
I think everyone can agree that these discoveries deserve to be left “unfettered”. In fact, I believe that the forces of nature will guarantee that these discoveries remain unfettered. For instance, if someone very powerful were to tell us that all wheels need to square from now on – I don’t think they would get very far. That’s because the circular wheel is out there, it’s been discovered, and that’s that. End of story.
I’d like to use the above is an introduction to the “Net Neutrality” debate going on in the U.S. right now. American politicians are currently struggling with question, “how do we make laws to keep the internet unfettered?” At first, that seems like a super simple question – but if you think about it, the definition of “unfettered” isn’t clear when it comes to the internet. Two viewpoints have emerged, and the FCC is likely going to vote on which viewpoint becomes law next month.
The reason why many people get confused by the net neutrality debate is that both “viewpoints” describe their version of an “unfettered” internet as “open” and “neutral”. It's just two different opinions on what "open" and "neutral" means. I will try my best to state each of these viewpoints below.
Viewpoint One: The internet is a crucial technology and no government agency should be allowed to dictate how any internet service provider chooses to deliver the internet to any person or company.
Viewpoint Two: The internet is a crucial technology and all internet service providers should be required to offer the same connection to all people and companies.
Think about those two viewpoints for a while - there are subtle differences. If you chose Viewpoint One, then you side with the current chairman of the FCC (Ajit Pai) and the Republican Party in general. This viewpoint really empowers existing companies that do business on and with the internet; so this viewpoint is good for business in that way. This viewpoint makes the internet somewhat similar to a shopping mall – some businesses will be able to afford a storefront, and others will not – but at the end of the day, a lot of money is going to be spent in that mall. The biggest criticism is that new companies will have a harder time finding a big presence on the internet.
If you happened to pick viewpoint 2, then you side with the founder of the internet (Tim Berners-Lee), and the Democratic Party in general. This viewpoint is better for small companies trying to start out on the internet, and it lets internet users have more variety. The drawback to this viewpoint is that internet service providers aren't provided the liberty to prioritize (or de-prioritize) content served to their subscribers.
If you want to know my opinion – in the long run, I think this doesn’t matter. In the short term, the government may be able to regulate the internet in some sort of way. But, I believe the internet has earned its spot on that list of the fundamental discoveries of mankind. Its like a force of nature now, and it will ultimately get used the way that is most efficient and meaningful for mankind. I’m honestly not sure which of these viewpoints will become law – but as the owner of a quaint low-traffic blog, I hope it will be viewpoint 2.
I've been spending some of my own time learning about computer vision, machine learning, and robotics. It has been very interesting, and I think I will make a post about it once a week or so.
Perceiving objects is something that us humans do quite easily, but for computers it is very hard. Computers like to operate using "rules" and it's impossible to write a set of rules for a computer to scan an image and determine if it contains a person, or a chair, or a house, or a lamp, or a pizza (or any other object). When a computer looks at a photo, it just sees pixels. It doesn't see objects, or shapes, or anything.
In the past few years, machine learning and computer vision have taken big steps forward. Researchers have learned that humans simply can't write code to teach a computer how see - but they can write code that will enable the computers to teach themselves how to see. These programs are called "artificial neural networks", and they have some parallels with the way our human brains work. The main premise of a neural network is that the pixels of an image are filtered through several "layers" of artificial neurons which parse the image in different ways. The first layer might detect edges, the second layer might detect shapes, the third layer might combine shapes into objects, and eventually the final layer will determine what object is being shown. I said "might" a lot in the last sentence because humans (including those who developed the fundamental mathematics and technology) don't really understand how the artificial neural network works. We just know that they do indeed work, and we know some of the basic theory behind it.
When an artificial neural network is first set up, it is very very unintelligent. It only becomes "smart" after you "train" it. If you're training a neural network to do object detection, you'll need to show it thousands and thousands of example images while telling it "this is a person", "this is a chair", "this is another person", etc. This process can take days or even weeks - and keep in mind that a fast computer can process hundreds of these training images every minute.
In the picture above, I was using an artificial neural network pre-trained by google (so they did most of the hard work here). It analyzed this photo and was 77% sure I am a person, and it was 94% sure that Violet was a cat.
Hello, yes I am still awake. I thought it would be fun to share this old picture of Jess holding a baby owl. This was taken on Jess's birthday, April 13, 2014 BC. The BC stands for "before comet."
The owl guy (I don't have a better term to describe this guy) brought the baby owl into the museum in an old toaster box, so I suggested the owl's name should be Toaster. I don't know if the guy went with my suggestion.
2 years, 3 months ago
YouTube recommended I watch this video about a Koi Retailer from California traveling to Japan to buy new stock of Koi. I have no idea why YouTube recommended this obscure video to me; it has less than 400,000 views, so it's certainly not going viral or anything.
The video is honestly great though. Very relaxing, yet engaging. It's kinda long though, and I've only made it through the first half so far.