4 ms·
This is interesting. It really shows how deep learning has become almost "Lego-like". 1. Imagine the problem, add a camera or two (or more). 2. Build/use a pr
by cr0sh 9y ago
This is interesting. It really shows how deep learning has become almost "Lego-like".
1. Imagine the problem, add a camera or two (or more).
2. Build/use a pre-trained ImageNet model as a starting point (probably using TensorFlow/Keras).
3. Build a dataset, split it into test, train, validation sets.
4. Train the model further.
5. Test and validate the model. Lower the error rate (don't overfit though!).
6. Profit?
As far as what language to use, depending on the speed of whatever you're trying to do, Python would likely work fine in the majority of cases. If you need more than that, C/C++ is around the corner.
Oh - and OpenCV or some other vision library will probably be used (but just to grab the images, maybe a little pre-processing).
You wouldn't have to use this exact pipeline (you could substitute other deep learning libs, other vision libs, other languages, etc) - but the basics are to start with a well-known CNN model, preferably "pre-trained", then apply your own dataset(s) to the task to get it to work better. Not much more tweaking needed, the biggest thing is to get (or be able to synthesize from what you do have) enough data to throw at it (and have a fast enough system to train it in reasonable time).
We've seen this approach many, many times; it seems to work well for a ton of domains and problems. Again - very "Lego-like"...
- deleted 9y ago[deleted]
- clickok 9y agoFor the things they showed in the video, deep learning is probably overkill. The main thing is having a robot capable of surviving its initial failures, and then actually collecting the data. I can't comment specifically on airborne drones, but at my lab we've demonstrated that a robot[0] with an extremely low resolution camera and a very simple model is capable of learning to avoid running into walls with about a minute or so of training data. We use reinforcement learning with linear function approximation[1], and even though the robot sees the world through a couple hundred pixels, it's sufficient to discover that walls have a certain color and that if too much of your vision is "wall" you should probably move in a different direction. The advantage of deep learning is that your agent hopefully learns to generalize, and so isn't fooled by changes in brightness/color or room layout. If your task is simpler than that, you could just use some OpenCV filters to extract colors and textures and let the a simple linear model figure out which ones correspond to obstacles. ---- 0. An iRobot Create, basically a Roomba without the vacuum. 1. Incidentally, that means that if you don't require deep reinforcement learning, you can get simple obstacle avoidance up and running with like 5000 data points.
- halflings 9y agoNo offence, but it's hard to compare learning a colour histogram to learning concepts such as couch, floor, and open door. RL (Q-learning?)with a linear approximation wouldn't work if you have subtle patterns in the image (poor contrast between walls and floors, a gradient, a border, etc.) and that's exactly the issue with robots: not detecting things that seem obvious to us.
- ModernMech 9y ago> it's hard to compare learning a colour histogram to learning concepts such as couch, floor, and open door The output of most machine learning algorithms is just a belief function. Deep learning is nice, because it basically removes the need to manually choose features, which can be the hardest part of applying machine learning to solve a classification task. But the output is still a belief function. Machine learning as we generally know it today isn't about making a computer understand "concepts" or anything higher order like that. I think it is easy to compare learning a color histogram to learning classifications (e.g. couch, floor) because the two algorithms do exactly the same task in different ways. The parent is saying that the function the robot needs to learn is linear. It doesn't matter that it's a drone, and the deep learning apparatus in the middle is overkill, because learning linear functions is easy (you don't need much data to figure out which way is up on a line)
- alexleegk 9y agoYou could also use deep features (pre-trained for ImageNet classification) and use them in your Q-function approximator in such a way that the Q-function is linear wrt some high-level features. Then, you get the best of both: being able to process complex visual input while being able to do reinforcement learning with very few training trajectories. See [1] for an example (in simulation). [1] http://rll.berkeley.edu/visual_servoing/ http://rll.berkeley.edu/visual_servoing/
- eli_gottlieb 9y ago>The output of most machine learning algorithms is just a belief function. It's not even a belief function, in the sense of a normalized probability distribution that respects conditionalization properly. It's basically just a one-hot vector for classification.
- thearn4 9y agoIt concerns me a bit that at some point, there are fundamentals concerning simple yet effective approaches that may be forgotten (or a least not taught) in favor of black box neural nets, like Kalman filtering, PID control, etc. Institutional memory is something of a weak point in the software industry compared with other fields.
- markvdb 9y agoSimilar "institutional memory loss" happened in mechanics. On many occasions, it's not so much the theory as the fluency putting it in practice that might be lost...
- sjg007 9y agoI mean that's math... not as likely to get lost. Now designing a NN to perform kalmann filtering seems interesting ways maybe it would lead to insight in how the network operates... e.g more of a grey box
- clickok 9y agoPart of the solution, I think, is making implementations of existing techniques available (and of course, rewriting them in Rust). Deep learning is popular because it's so widely applicable that it justifies the effort of learning to use it: deep nets work with image processing and robot control, and it's kinda unusual to have the mostly the same bag of tricks such different tasks. But a reliable way to improve your performance (or at least write a publishable paper) is to examine why a specific technique worked, rewrite it as a differentiable function or finite automaton, and then implement it as a component in a deep net. So it's a cause for concern, but also an opportunity for academic arbitrage. I think it will work out eventually, but I become uncertain when I meet machine learning "experts" who are only familiar with deep learning and unwilling to consider anything else.