Facebook Develops Custom 360-Degree Video Stabilization Technology

Facebook announced at its @Scale Conference 2016 Wednesday that it developed a custom-designed stabilization technology for 360-degree videos.

Facebook announced at its @Scale Conference 2016 in San Jose, Calif., Wednesday that it developed a custom-designed stabilization technology for 360-degree videos.

Other announcements by the social network at @Scale included the open-sourcing of its Zstandard compression algorithm and the deployment of its MyRocks next-generation MySQL storage engine based on RocksDB.

Facebook said in an email to SocialTimes that current video-stabilization technology is generally designed for videos with narrow frame views, such as those captured via smartphones, and for 2-D motion models, which is inadequate for 360 video, adding of its new technology:

This new approach combines 2-D and 3-D stabilization methods with a new “deformed rotation” motion model to make shaky 360 videos incredibly smooth so that they’re easier to watch with less chance of motion sickness.

It improves efficiency, with a 10 percent to 20 percent reduction in bit rate for the same video quality. And it’s fast—it can stabilize video in less than 22 milliseconds per frame, meaning that you can improve your video stability with no major wait or interruptions when you upload. In fact, videos can be stabilized using this technology in less time than it takes to play the video at normal speed.

Research scientist Johannes Kopf provided a detailed look at the development of Facebook’s news 360-degree video stabilization technology in a blog post, citing its advantages over current 2-D and 3-D models:

  • Accuracy: It’s more accurate than pure 2-D methods because we use a more powerful 3-D analysis to stabilize the key frames.
  • Robustness: It’s more robust than pure 3-D methods because we don’t perform full reconstruction—we use 3-D analysis to estimate relative rotations, which is an easier problem. We also apply the 3-D analysis only sparsely to the key frames, which avoids error accumulation.
  • Regularization: The fixed key frames provide a regularizing backbone for the 2-D optimization of the inner frames. This constrains the deformable-rotation motion model and prevents wobble artifacts.
  • Speed: The mixed architecture performs faster than performing purely 3-D analysis or 2-D optimization. Our algorithm stabilizes a video faster than it would take to play the video at normal speed.

Facebook360DegreeStabilizedVideos from SocialTimes on Vimeo.

Facebook360DegreeVideoStabilizationSideBySide from SocialTimes on Vimeo.

CurrentVideoStabilizationAlgorithmSteps Facebook360DegreeVideoStabilizationAlgorithmSteps 360DegreeVideoStabilizationMotionModel Hybrid3D2DStabilization

Facebook said in an email to SocialTimes that the Zstandard compression algorithm v1 that was open-sourced Wednesday brings 5 percent to 10 percent efficiency to general data compression while simultaneously providing central-processing-unit savings, making data processing two times to three times faster, and adding:

Unlike other compression algorithms, Zstandard doesn’t compromise a smaller file size for speedier compression and decompression; in fact, when compared with zlib, ZStandard shows substantial improvements in both compression and decompression speed, while compressing at the same ratio and without a loss in file quality:

  • At the same compression ratio, it compresses three times to five times faster.
  • At the same compression speed, it is 10 percent to 15 percent smaller.
  • It’s nearly two times faster at decompression, regardless of compression ratio.

The flexibility of this technology helps us scale. With Zstandard, we can make flexible and granular tradeoffs between compression speed and compression ratio, tweaking the algorithm to our needs and making it very good at many diverse use cases.

Data compression expert Yann Collet and software engineer Chip Turner provided a detailed, thorough explanation of Zstandard in a blog post, also offering this glimpse at future plans for the compression algorithm:

While we have hit 1.0 and consider Zstandard ready for every kind of production use, we’re not done. Coming in future versions:

  • Multi-threaded command line compression for even faster throughput on large data sets, similar to the pigz tool for zlib.
  • New compression levels, in both directions, allowing for even faster compression and higher ratios.
  • A community-maintained predefined set of compression dictionaries for common data sets such as JSON, HTML and common network protocols.

ZStandardCompressionSpeed ZstandardLogo

Finally, Facebook announced at the @Scale event that it deployed its MyRocks next-generation MySQL storage engine, based on RocksDB, in one of its largest database services, the UDB tier, adding in an email to SocialTimes:

After deploying MyRocks to this tier in one of our data center regions, we were able to use 50 percent less storage for the same amount of data compared with compressed InnoDB.

Ultimately, this will allow us to use one-half as many server machines to host our MySQL databases. By sharing MyRocks with the community through open source, we hope that others can also take advantage of these efficiencies.

Database engineer Yoshinori Matsunobu provided a detailed analysis of MyRocks in a blog post, along with a look at future plans for the storage engine:

Our work on MyRocks has been centered on making storage savings efficient. In looking ahead, we’ll be focused on building out more complete features to support MyRocks. For example, it lacks features like foreign keys, online DDL, automatic deadlock detection (we use short lock wait timeouts) and native partitioning. It also lacks interesting features that are native in InnoDB like FULLTEXT and SPATIAL indexes. Some applications need these features, and they will allow MyRocks to become an all-purpose storage engine. The good news is that MyRocks is open-source, and anyone can download, use and contribute to it to take advantage of some of the storage savings efficiencies we’ve built.

MyRocksDatabaseSizeComparison MyRocksWriteAmpComparison MyRocksLogo