Hi,
I am curious the internal of visiond, I want to do similar work but not in selfdrive domain, can anyone answer this questions:
1) If the car on the road is very fast, how can the visiond take a sharp photograph in a very short time?
2) Which deep learning framework does the visiond use now ? I want to optimize the backend with arm cpu, the tensorflow is too heavy.
thanks,
hi,me too
I am also curious the internal of visiond. why not open source?
tks
They apparently use opencv.
https://github.com/commaai/openpilot/blob/master/selfdrive/visiond/visiond
Q: there a better forum for questions? Does anyone know where to discuss?
-Sorry to barge in.
@geohot Is it possible for Comma to release a visiond skeleton that does the following:
i.e. visiond with no neural networks, the community can write other agents just using opencl.
You can already do this with the released visiond. See how UI reads the image from visiond, it's open source.
As for linking OpenCV, that should just work the same as on a desktop on NEOS.
The problem is that if I run visiond just to get the camera feed from it I am not sure I would have enough processing power to try to reproduce it. As I understand things it would continue to run the network, save the videos, etc.
If all you plan to use is OpenCV none of that will have any effect, since OpenCV is CPU only. Network and videos are done off CPU.
I was thinking of using opencl on the adreno GPU for now ...
... But after your comment I realized that I will have a full Nvidia GTX 1070 on the back of the car, so I can develop for tensorflow during the next few months and in the near future hopefully we all switch to the oneplus [1] that comes with a Snapdragon 835 for tensorflow support on CPU, GPU and DSP [2]
[1] https://oneplus4.net/oneplus-5-release-date/
[2] https://www.qualcomm.com/news/snapdragon/2017/01/09/tensorflow-machine-learning-now-optimized-snapdragon-835-and-hexagon-682
To answer the original poster and maybe close the issue.
If the car on the road is very fast, how can the visiond take a sharp photograph in a very short time?
George answered. To add to it, due to how visiond works, sharp pictures are not needed, you can see in this other repo how neural networks are even used to increase resolution on low res pictures: https://github.com/alexjc/neural-enhance
Which deep learning framework does the visiond use now ? I want to optimize the backend with arm cpu, the tensorflow is too heavy.
visiond uses a custom backend, I believe they are using OpenCL + OpenCV, and possibly a reverse engineered camera driver. They can train on the cloud with a lot of gpu power, and then port the right network and weights with a lot of dot products, trigonometrical operations, sum, etc on a simple c program to be run on the GPU. See a very basic example in python here: http://www.wildml.com/2015/09/implementing-a-neural-network-from-scratch/
strings says it uses at least Qualcomm FastCV Library.
Issue #4 mention the API.
From objdump on visiond (running from an nvidia TX2):
Dynamic Section:
NEEDED libgnustl_shared.so
NEEDED libavformat.so.57
NEEDED libavcodec.so.57
NEEDED libswscale.so.4
NEEDED libavutil.so.55
NEEDED libz.so.1
NEEDED libOmxVenc.so
NEEDED libOmxCore.so
NEEDED libgsl.so
NEEDED libCB.so
NEEDED libOpenCL.so
NEEDED libcutils.so
NEEDED libm.so
NEEDED liblog.so
NEEDED libdl.so
NEEDED libc.so
visiond is now open source.
Cool. I found it in https://github.com/commaai/openpilot/tree/devel/selfdrive/visiond and will definitely give it a go now. :)
Most helpful comment
From objdump on visiond (running from an nvidia TX2):