Distributed computing¶
Distributed computing is useful for processors that take a long time to compute. E.g. FeatureExtraction and feature matching. There are two methods to achieve distributed computing - one using the same machine multiple cpu, and second - to use a remote machine on the same network.
Using Multiprocessing¶
Using PyroCapture¶
Since FeatureExtraction doesn’t scale properly on the same machine and is usually already parallelized inside
openCV it is possible to relay some lengthy processing to a different machine. This is really useful
for stereo processing, where two machines will capture and process images from left and right camera respectively.
Then CalibratedStereoCamera would capture those processed frames and return as a single frame for further processing
e.g. for Visual Odometry engine.
To achieve that, you need to have two machines on the same network, that run EasyVision.bin.server instances
for serving captured and processed images. One machine that serves as a NameServer and consumer of those images.
Internally this mechanism uses Pyro4 library.
In case you want to expose other Pyro4 objects, you can pass them to Server as Server(..., objects=my_objects_list).
You can expand on EasyVision/bin/server.py code.