Computer Vision News - March 2017

RSIP Vision ’s CEO Ron Soferman has launched a series of lectures to provide a robust yet simple overview of how to ensure that computer vision projects respect goals, budget and deadlines. This month we learn about Transitioning from R&D to Product . Progressing from the R&D phase , after having obtained good results in it, to the product phase , requires caution in several areas. First, we have to understand the level of performance which is needed in the product, as compared to the performance of the R&D model, which is generally built with more lenient requirements. The new target level is generally communicated by product management with input coming from marketing. What are the bottlenecks? Which tools are available in C++ or Java or whatever environment was chosen? R&D phase is often performed in a different environment ( Matlab , Python , R and the like) and the need arises to assess whether it is possible to just translate the code or it needs to be rewritten. The reason being that the flexibility of the platform used during R&D might turn into complicate code which is too difficult to maintain as a product. This decision taken, we must select and screen out all the previously tried sketches and tests, to keep only the code which we need for the product: that may cut a big chunk of the code, leaving us with the core technology we want to concentrate on. At this phase, we might choose to translate the algorithm into a simpler version, based on the most successful R&D tests, to focus on the simplest way to achieve those results. That might wipe out superfluous processes and merge other ones. I recommend to keep in mind even during the R&D phase that code is going to progress to the productization phase in the target environment. Thus, when you find effective algorithms, you should replace them with equivalent algorithms from the final library. For example, if you develop in Matlab and get hold of an efficient filter or algorithm, replace it with an OpenCV function. The reason being that not all functions perfectly translate into a different environment and if you do it earlier, you avoid accumulating a larger gap. If the migration is done by a team, the work must be divided in a thoughtful way. Each team member receives a well-defined set of tasks that fits his/her abilities, with sufficient data for testing, so that developer can do both code and validation. The end product will include unit test to ensure that code is working. After that, we will use continuous integration (CI) technology to enable us to run unit tests after each code change, so that results do not interfere with other parts of the code. During development, we have to do a concurrent evaluation of the code to detect if any team member is failing to comply with the level of code which we have decided to achieve. In that way, we candiscuss and solve before the final version. “The flexibility of the R&D platform might turn into complicate code ” Transition from R&D to Product Management 25 Computer Vision News Project Management Tip