Time for another quick development update! As usual, we update on a regular(ish) basis the 3dscanninghacks wiki but it’s always nice to elaborate a little bit more.
Technology Improvements
In the previous Avocado development status report we explained that Samantha, our Structure from Motion technology, was becoming faster than ever.
With today’s status report, we’d like to elaborate a bit on it. We have run four tests on the same machine, a fairly decent i7-4770 CPU with 32GB of ram and an NVIDIA GeForce GTX1050 2GB, which is a pretty entry level configuration with a not-so-much-newer CPU but still, a decent one.
Lets see how these tests performed on the same machine against our current stable release v3.702 – obviously, all tests have been run using the same settings both in 3.702 and in Avocado.
It’s important to note that although the 20% – 80% speedup is relative to the SfM process only, even the following steps are getting small speed improvements as we are merging the new and improved Stasia and into our main development trunk. We are also working a novel photoconsistency filter, but it’s still disabled in the following benchmark and tests.
- Zeche zollern
| This dataset from isprs (credits) shows how Avocado managed to get one more camera oriented (227 out of 228) compared to 3.702. Accuracy is our priority and we’re happy to see Samantha perform better in less time, regardless of the overall speedup, which was cut in half. Even the speedup in the stereo generation due to the new Stasia is amazing (almost 50% less, although an atypical speed gain which which is not to be expected as a general rule) as well as the mesh generation with faster meshing algorithms (more than 33% less). For completeness, we’re also reporting the texturing phase. Those algorithm haven’t been touched in Avocado, so their timing are just to be taken “as they are” as they are dependent on the underlying mesh geometry (number of triangles, topology, etc.) so they are expected to be different. |
Lets have a look at how the new Stasia and photoconsistency worked in this dataset.
The new MVS pipeline:
On the left half, the mesh output from 3.702 and on the right, the mesh output from Avocado.
The new dense point cloud and mesh computation are faster and better than it is in its current 3.702 implementation. Aside from the speed improvements, the new algorithms are much better with thin surfaces. You can see an example of this improvement in this dataset by looking at the window grates. Border are sharper and cleaner for bulkier parts (for example the details in the top right of the image).
The same improvements also lead to much better noise removal, as demonstrated by this comparison of the same dataset: note how the left side of the building is now showing much less noise.
Lets see some other datasets performance comparison.
- Cherub Dataset
| Our cherub dataset is always a good benchmark for our testing. This test shows how even in small datasets, the speedup is significant, in this case, by almost cutting in half the Structure from Motion phase. Both 3.702 and Avocado of course managed to orient all 65 cameras – our first priority is accuracy, and these speedup improvements are not going to make Samantha less accurate. The new and improved stasia is also getting slightly faster (in this case, saving us 8 minutes) while also creating a dense point cloud that is also richer. The mesh generation has also almost being cut in half in this test. Overall, the Cherub dataset has taken ~1h35m in 3.702 and roughly ~1h18m in Avocado. |
- Church Dataset
| Sometimes the improvement is unfortunately less massive. In this specific dataset, both 3.702 and Avocado successfully oriented 459 out of 461 images. The results are however better in Avocado and overall the full process took about one hour less compared to 3.702. Unfortunately not all datasets will gain massive speed improvements, but once again, our priority is accuracy as we truly believe quality is more important than processing speed. |
- Piazza dei Signori (half) Dataset
| In this specific dataset Samantha once again performed much better not only just when talking about speed but by successfully compute the camera pose on 383 out of 488 cameras while v3.702 only managed to correctly compute 332 out of 488 cameras. All of this in about ~30% less time. The dense point cloud generation is also significantly faster: it took around the same time as in 3.702, but with 51 more cameras to compute too. The drawback is that having a lot more cameras caused the mesh to take longer, but on the other hand, we got a much more complete model 🙂 |
- 50 Megapixels Dataset
| This dataset is composed by 6134×8178 pixels 16-bit tif files. We mentioned in the previous status report how the Samantha improvement is much more significant when the input images are significantly bigger and/or in high quantity. In this case we’re using just 18 cameras as a toy example, but given the high resolution, the improvement during the SfM phase is already significant and noticeable. This test speaks for itself: although not the most common case for most users (hobbysts, small business, etc) this is probably the most common configuration in the high-end professional world, which obviously needed to be optimized as well. |
- Overall notes
We’re very happy with our performance tests! Samantha is faster than ever and even more accurate than before. We are also managing to squeeze in improvements to the other phases of the 3D reconstruction pipeline which, albeit not as significant as the Samantha improvements, are definitely interesting and welcome.
SDK GNU/Linux porting
Filippo has been working non-stop on porting our core technology to Linux. While we’re not going to bring 3DF Zephyr on Linux (although it works pretty well on Wine, including CUDA acceleration ) but only the SDK, it’s still nice to see everything work well in a native GNU/Linux environment 🙂 |
Customizable grid
Pictured on the left, a wholesome Avocado image used as grid startup image. While the ability to change the grid startup logo is absolutely cosmetic and brings no additional functions in Zephyr, it’s still fun and looks pretty nice especially for those computers used in organizations 🙂 Overall, just some eye candy that was suggested and we managed to squeeze in pretty fast for the next release! |