From Algorithm to App – Increasing the Speed of Evolution
We’ve been talking about apps for geospatial imagery analytics and ENVI in the Cloud lately, and a couple of my colleagues and I have discussed what makes up an app. I’ll return to that topic in the future, but I thought I’d take a step back to discuss algorithms and apps. Algorithms are at the heart of geospatial processing and image analytics. Traditionally, algorithms have been deployed in desktop applications like ENVI® or ArcGIS® for Desktop. The algorithms in these tools are fairly static. They are tested and evaluated with the product release cycles, which are two or three times per year, at best. Here at Exelis VIS, we require a rigorous process for vetting new algorithms before they are deployed into ENVI for commercial or production use. Traditionally, the path from algorithm to application has been slow and methodical.
With the advent of the Cloud and deployment of image analytics as services, new algorithms can be made widely available almost overnight. App Stores and other web sites are providing platforms for user contribution of algorithms that range from conceptual in nature to tools used widely in production settings. Some of these algorithms are deployed as bits of code that can be downloaded and run locally while others are provided as web services that can be run independently, chained with other services, or integrated into larger infrastructures. These public deployments often give the impression that the algorithms are of a higher quality, or more thoroughly tested and evaluated, than they actually are. This is particularly true in cases where the algorithm is deployed in a standalone app. The app itself gives the impression of credibility where there may not be any. Publication on the Internet can also give a false sense of credibilty. Of course, some of the algorithms and apps published on the Internet are tested and validated and are perfectly reasonable to use for production efforts. Also, the Internet can provide an excellent forum for vetting new algorithms.
Defining a classification for algorithms, no matter how and where they are deployed, would be valuable in eliminating confusion around the appropriate use of the tools available in app stores and similar environments. Further, a defined workflow for managing the life cycle of an algorithm would not only help us to understand the quality of what we're getting, but also help accelerate the transition from experimental to operational since all would follow a consistent set of steps and standards. This new model of rapid algorithm deployment through widely available platforms affords us a tremendous opportunity to keep pace with the increasing speed of scientific breakthroughs as well as the growth in sensor platforms and data volumes, especially if we develop guidelines for how to use these emerging tools. I haven't come up with a classification scheme for algorithms or the ideal workflow for evolving them, but if you send me your thoughts, I'll publish a summary.