Recently I started working on convolutional neural networks (cnn) for obstacle avoidance. With the help of "DroNet" from ETH Zurich and the "Deep Learning for Computer Vision" book from Adrian Rosebrock, I managed to build my first cnn algorithm for obstacle avoidance. The cnn module is written in python, using a keras module with tensorflow backend. I included my cnn algorithm in a dronekit script. By sending mavlink distance messages to the flight controller in loiter or altitude hold flight mode, my drone is able to avoid obstacles. A brief description and demonstration of the developed cnn is given in the YouTube video. First results are promising.
You need to be a member of diydrones to add comments!
Comments
@Auturgy I intend to publish my code at GitHub once I have cleaned up my code.
@ Hugues. Well, by and large CNNs are bundled under deep learning, which is bundled under machine learning, which is bundled under AI. This type of diagram gets thrown around a lot:
We can argue definitions all we want but we don't have "real" AI in the sense of general intelligence nor are we anywhere near it.
Still, given the astonishingly slow progress of AI in general and computer vision in particular (nicely summed up by XKCD) for the last few decades, the current explosion of stuff that can be tackled with CNNs is breathtaking.
Great work! Is your plan to publish the code?
Very nice but stop saying this is AI. This is not an artificial intelligence, but a pattern/image recognition or expert system.
Thx for your interest.
This is seriously impressive, well done!
A few questions:
1 - The network is only fed individual still images, there is no comparison between previous and current image, correct?
2 - Is this running on the original Dronekit or DKPY 2.0?
3 - How long does it take between image capture and result being spat out of the net?
4 - Related to above, how fast could you fly and at what range could you detect? Do you think it would be suitable for fixed wings or is the RPi 3 not powerful enough?
5 - The RPi3 has a GPU, did you use it or are the calculations run on the CPU?
Massive respect :)