Customizing Progressive JPEG for Efficient Image Storage

Similar documents
JPEG decoding using end of block markers to concurrently partition channels on a GPU. Patrick Chieppe (u ) Supervisor: Dr.

Lecture 8 JPEG Compression (Part 3)

Bit Rate Reduction Video Transcoding with Distributed Computing

Review and Implementation of DWT based Scalable Video Coding with Scalable Motion Coding.

FlexiWeb: Network-Aware Compaction for Accelerating Mobile Web

Feedback: Twitter: #TechTalk #wpo #io2011. Make The Web Faster. Joshua Marantz Richard Rabbat Håkon Wium Lie.

Today s Papers. Array Reliability. RAID Basics (Two optional papers) EECS 262a Advanced Topics in Computer Systems Lecture 3

MULTIMEDIA COMMUNICATION

The Next Generation of Compression JPEG 2000

CS 260: Seminar in Computer Science: Multimedia Networking

Pixelsior: Photo Management as a Platform Service for Mobile Apps

ORBX 2 Technical Introduction. October 2013

Compression II: Images (JPEG)

JPEG Joint Photographic Experts Group ISO/IEC JTC1/SC29/WG1 Still image compression standard Features

Stereo Image Compression

JPEG Baseline JPEG Pros and Cons (as compared to JPEG2000) Advantages. Disadvantages

JPEG 2000 A versatile image coding system for multimedia applications

Decoding. Encoding. Recoding to sequential. Progressive parsing. Pixels DCT Coefficients Scans. JPEG Coded image. Recoded JPEG image. Start.

JPEG: An Image Compression System. Nimrod Peleg update: Nov. 2003

Parallelized Progressive Network Coding with Hardware Acceleration

The Standardization process

A LOW-COMPLEXITY AND LOSSLESS REFERENCE FRAME ENCODER ALGORITHM FOR VIDEO CODING

University of Mustansiriyah, Baghdad, Iraq

Cloud Transcoder: Bridging the Format and Resolution Gap between Internet Videos and Mobile Devices

Using Virtual Texturing to Handle Massive Texture Data

Cascade Mapping: Optimizing Memory Efficiency for Flash-based Key-value Caching

RADEON X1000 Memory Controller

Error resilience capabilities (cont d R=0.5 bit/pixel, ber=0.001

Finding a needle in Haystack: Facebook's photo storage

Acceleration Systems Technical Overview. September 2014, v1.4

EC-Bench: Benchmarking Onload and Offload Erasure Coders on Modern Hardware Architectures

Reducing Solid-State Storage Device Write Stress Through Opportunistic In-Place Delta Compression

Building an Area-optimized Multi-format Video Encoder IP. Tomi Jalonen VP Sales

Multi-structured redundancy. Eno Thereska, Phil Gosset, Richard Harper Microsoft Research, Cambridge UK [HotStorage 12]

CSE 451: Operating Systems Spring Module 12 Secondary Storage. Steve Gribble

LETTER Improvement of JPEG Compression Efficiency Using Information Hiding and Image Restoration

Laboratoire d'informatique, de Robotique et de Microélectronique de Montpellier Montpellier Cedex 5 France

DigiPoints Volume 1. Student Workbook. Module 8 Digital Compression

ECE 634: Digital Video Systems Scalable coding: 3/23/17

Introduction to Video Compression

Performance Tuning on the Blackfin Processor

JPEG 2000 Implementation Guide

CS5950 / CS6030 Cloud Computing

ROI Based Image Compression in Baseline JPEG

LIST OF TABLES. Table 5.1 Specification of mapping of idx to cij for zig-zag scan 46. Table 5.2 Macroblock types 46

Application and Desktop Sharing. Omer Boyaci November 1, 2007

JPEG: An Image Compression System

Low-complexity video compression based on 3-D DWT and fast entropy coding

Lecture 6: Texturing Part II: Texture Compression and GPU Latency Hiding Mechanisms. Visual Computing Systems CMU , Fall 2014

The Scope of Picture and Video Coding Standardization

Finding a Needle in a Haystack. Facebook s Photo Storage Jack Hartner

Storage. CS 3410 Computer System Organization & Programming

ICS RESEARCH TECHNICAL TALK DRAKE TETREAULT, ICS H197 FALL 2013

CHAPTER 5 RATIO-MODIFIED BLOCK TRUNCATION CODING FOR REDUCED BITRATES

SECURED SOCIAL TUBE FOR VIDEO SHARING IN OSN SYSTEM

Real-Time Buffer Compression. Michael Doggett Department of Computer Science Lund university

Lawrence Ying Sr Tech Lead, Google Platforms Aug 9, 2018

Fundamentals of Video Compression. Video Compression

IMAGE COMPRESSION. October 7, ICSY Lab, University of Kaiserslautern, Germany

In-Memory Data Management

Comparison of EBCOT Technique Using HAAR Wavelet and Hadamard Transform

Lecture 3 Image and Video (MPEG) Coding

Robust Image Identification without any Visible Information for Double-Compressed JPEG Images

A Novel Fast Self-restoration Semi-fragile Watermarking Algorithm for Image Content Authentication Resistant to JPEG Compression

Be Fast, Cheap and in Control with SwitchKV Xiaozhou Li

Insight: that s for NSA Decision making: that s for Google, Facebook. so they find the best way to push out adds and products

irtc: Live Broadcasting

Setting up Flickr. Open a web browser such as Internet Explorer and type this url in the address bar.

Group Testing for Image Compression

Lecture 8 JPEG Compression (Part 3)

Live P2P Streaming with Scalable Video Coding and Network Coding

Content-Based Adaptive Binary Arithmetic Coding (CABAC) Li Li 2017/2/9

Bi-Level Image Compression

ADAPTIVE PICTURE SLICING FOR DISTORTION-BASED CLASSIFICATION OF VIDEO PACKETS

The Best-Performance Digital Video Recorder JPEG2000 DVR V.S M-PEG & MPEG4(H.264)

MPEG-2. And Scalability Support. Nimrod Peleg Update: July.2004

The Ultimate Social Media Setup Checklist. fans like your page before you can claim your custom URL, and it cannot be changed once you

A DEDUPLICATION-INSPIRED FAST DELTA COMPRESSION APPROACH W EN XIA, HONG JIANG, DA N FENG, LEI T I A N, M I N FU, YUKUN Z HOU

Low-Memory Packetized SPIHT Image Compression

MS Word Training Pictures and Text Wrapping

RTP Payload format for Application and Desktop Sharing

ERDAS APOLLO PERFORMANCE BENCHMARK ECW DELIVERY PERFORMANCE OF ERDAS APOLLO VERSUS ESRI ARCGIS FOR SERVER

06/12/2017. Image compression. Image compression. Image compression. Image compression. Coding redundancy: image 1 has four gray levels

My Own Web Site. Ian Whiting

GridGraph: Large-Scale Graph Processing on a Single Machine Using 2-Level Hierarchical Partitioning. Xiaowei ZHU Tsinghua University

Cassandra- A Distributed Database

JPEG IMAGE CODING WITH ADAPTIVE QUANTIZATION

PASTE: A Networking API for Non-Volatile Main Memory

CSE502: Computer Architecture CSE 502: Computer Architecture

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective

RPT: Re-architecting Loss Protection for Content-Aware Networks

Pick a time window size w. In time span w, are there, Multiple References, to nearby addresses: Spatial Locality

Combined Copyright Protection and Error Detection Scheme for H.264/AVC

Smart Video Transcoding Solution for Surveillance Applications. White Paper. AvidBeam Technologies 12/2/15

Compression of 3-Dimensional Medical Image Data Using Part 2 of JPEG 2000

CODING METHOD FOR EMBEDDING AUDIO IN VIDEO STREAM. Harri Sorokin, Jari Koivusaari, Moncef Gabbouj, and Jarmo Takala

The Existing DCT-Based JPEG Standard. Bernie Brower

Delta Compressed and Deduplicated Storage Using Stream-Informed Locality

Non-Blocking Writes to Files

CSE 451: Operating Systems Spring Module 12 Secondary Storage

Transcription:

Customizing Progressive JPEG for Efficient Image Storage Eddie Yan Kaiyuan Zhang Xi Wang Karin Strauss Luis Ceze HotStorage 17 July 11, 2017

2

2

2

2

2

2

2

2

2

Summary Today s image hosts need to store many images, but also at many different sizes (resolutions), increasing pressure on storage systems Leverage progressive image storage technology to reduce the effect of serving multiple resolutions of each image 3

Contents Intro & Related Work JPEG & Progressive JPEG Progressive JPEG for Dynamic Resizing Future Work & Conclusion 4

Facebook Stores Four Versions of Each Photo (2010) Facebook s photo store: handle many small files efficiently [Beaver OSDI 10] For each uploaded photo, Facebook generates and stores four images of different sizes, which translates to over 260 billion images and more than 20 petabytes of data. 5

Facebook Serves Different Image Sizes Depending on Context Facebook s photo cache: resizing on the fly + SSD caching [Huang SOSP 13] Facebook serves photos in many different forms to many different users. For instance, a desktop user with a big window will see larger photos than a desktop users with a smaller window who in turn sees larger photos than a mobile user. 6

FLICKR: No Capacity Upgrades for a Year with Resizing A Year Without A Byte [Flickr 2017 1] & Real-time Resizing of Flickr Images Using GPUs [Flickr 2017 2] 7

Goals for Image Storage image storage for large (social media services) should: 8

Goals for Image Storage image storage for large (social media services) should: offer low latency, high throughput [Beaver OSDI 10] [Huang SOSP 13] 8

Goals for Image Storage image storage for large (social media services) should: offer low latency, high throughput [Beaver OSDI 10] [Huang SOSP 13] serve multiple resolutions [Beaver OSDI 10] [Flickr 17 1 & 2 17] [Huang SOSP 13] 8

Goals for Image Storage image storage for large (social media services) should: offer low latency, high throughput [Beaver OSDI 10] [Huang SOSP 13] serve multiple resolutions [Beaver OSDI 10] [Flickr 17 1 & 2 17] [Huang SOSP 13] use minimal storage capacity [Google 17] [Horn NSDI 17] [Mozilla circa 14] 8

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2... 3... 9

JPEG: Quantization 1 2 less quantization 3...... 9

JPEG: Quantization 1 2 less quantization 3... more quantization... 9

JPEG: Lossless Compression (0, 2)( 3); (1, 2)( 3); (0, 2)( 2); (0, 3)( 6); (0, 2) (2); (0, 3)( 4); (0, 1)(1); (0, 2)( 3); (0, 1)(1); (0, 1)(1); (0, 3)(5); (0, 1) (1); (0, 2)(2); (0, 1)( 1); (0, 1)(1); (0, 1)( 1); (0, 2) (2); (5, 1)( 1); (0, 1)( 1); (0, 0). 10

Baseline JPEG: Scanline Order 11

Baseline JPEG: Scanline Order 12

Progressive JPEG 1 2... 3... 13

Progressive JPEG 1 2... 3... 13

Progressive JPEG 1 2... 3... each scan is a refinement pass 13

Progressive JPEG represent image data in the frequency domain, roughly in frequency order load data in frequency order, grouped by scans header scan 1 scan 2 scan 3 scan 4 scan 5 14

Progressive JPEG Example header scan 1 PSNR: 27.9 db 15

Progressive JPEG Example header scan 1 scan 2 PSNR: 29.8 db 16

Progressive JPEG Example header scan 1 scan 2 scan 3 PSNR: 31.9 db 17

Progressive JPEG Example header scan 1 scan 2 scan 3 scan 4 PSNR: 37.9 db 18

Progressive JPEG Example header scan 1 scan 2 scan 3 scan 4 scan 5 PSNR: inf db 19

Progressive JPEG Example header scan 1 scan 2 scan 3 scan 4 scan 5 PSNR: 31.9 db PSNR: inf db 20

Progressive JPEG Example header scan 1 scan 2 scan 3 scan 4 scan 5 21

Targeting Dynamic Resizing 22

Targeting Dynamic Resizing request( image.jpg, 500px) 22

Targeting Dynamic Resizing request( image.jpg, 500px) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) resize( image.jpg, 500px) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) resize( image.jpg, 500px) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) resize( image.jpg, 500px) send( image.jpg, 500px) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) resize( image.jpg, 500px) send( image.jpg, 500px) 22

Targeting Dynamic Resizing request( image.jpg, 500px) read( image.jpg, src) resize( image.jpg, 500px) you can cache this send( image.jpg, 500px) 22

Three Methods for Dynamic Resizing read( image.jpg, src) 23

Three Methods for Dynamic Resizing read source JPEG read( image.jpg, src) decode 23

Three Methods for Dynamic Resizing read source JPEG read progressive JPEG partially read( image.jpg, src) decode decode 23

Three Methods for Dynamic Resizing read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) decode decode decode 23

Three Methods for Dynamic Resizing Baseline Progressive JPEG Custom Progressive JPEG read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) decode decode decode 23

Our Approach Store only one size of each image, resize dynamically, and customize JPEGs to match target sizes 24

Using Custom Progressive JPEG find custom scan configuration predefined resolutions (a) write resolution to read offset mapping (b) saved data (c) read read necessary scans resize and encode (transcode) 25

Using Custom Progressive JPEG find custom scan configuration predefined resolutions (a) write resolution to read offset mapping (b) saved data (c) read read necessary scans resize and encode (transcode) 25

Using Custom Progressive JPEG find custom scan configuration predefined resolutions (a) write resolution to read offset mapping (b) saved data (c) read read necessary scans resize and encode (transcode) 25

Customizing Progressive JPEG 1 2... 3... 26

Customizing Progressive JPEG 1 2... 3..... 26

Tune Coefficients Included in Each Scan to Match Quality Targets Directly 1 2... 3... 27

Tune Coefficients Included in Each Scan to Match Quality Targets Directly 1 2... 3..... 27

Tune Coefficients Included in Each Scan to Match Quality Targets Directly 1 2... 3..... 10% 27

Tune Coefficients Included in Each Scan to Match Quality Targets Directly 1 2... 3..... 10% 25% 27

Tune Coefficients Included in Each Scan to Match Quality Targets Directly 1 2... 3..... 10% 25% 50% 27

Choosing Coefficients 28

Choosing Coefficients 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Choosing Coefficients best 28

Evaluation 29

Evaluation minimize required storage capacity 29

Evaluation minimize required storage capacity minimize amount of data read (bandwidth) 29

Evaluation minimize required storage capacity minimize amount of data read (bandwidth) limit decode-time overheads 29

Dynamic Resizing Saves Capacity over Static Schemes 30

Customizing Progressive Reduces Read Bandwidth Requirements 31

Where to Decode for Resizing? Baseline Progressive JPEG Custom Progressive JPEG read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) decode decode decode 32

Where to Decode for Resizing? Baseline Progressive JPEG Custom Progressive JPEG read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) decode decode decode 32

Where to Decode for Resizing? Progressive JPEG is more expensive to decode than baseline JPEG Baseline Progressive JPEG Custom Progressive JPEG read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) decode decode decode 32

Where to Decode for Resizing? Progressive JPEG is more expensive to decode than baseline JPEG Baseline Progressive JPEG Custom Progressive JPEG read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) decode decode decode 32

Where to Decode for Resizing? Progressive JPEG is more expensive to decode than baseline JPEG Baseline Progressive JPEG Custom Progressive JPEG read source JPEG read progressive JPEG partially read custom progressive JPEG partially read( image.jpg, src) Two Choices: decode decode decode 1. decode on client 2. decode on server 32

Where to Decode for Resizing? 33

Where to Decode for Resizing? Client Server 33

Where to Decode for Resizing? Client Server Input Truncated PJPEG Truncated PJPEG 33

Where to Decode for Resizing? Client Server Input Truncated PJPEG Truncated PJPEG Output Resized JPEG Resized JPEG 33

Where to Decode for Resizing? Client Server Input Truncated PJPEG Truncated PJPEG Output Resized JPEG Resized JPEG Baseline Input Resized JPEG Full Size JPEG 33

Where to Decode for Resizing? Client Server Input Truncated PJPEG Truncated PJPEG Output Resized JPEG Resized JPEG Baseline Input Resized JPEG Full Size JPEG Change in Input Resized JPEG to Truncated Progressive Full Size JPEG to Truncated Progressive 33

Decoding on the Server has Lower Overhead 34

Decoding on the Server has Lower Overhead 34

35

Minimize required storage capacity 35

Minimize required storage capacity Minimize amount of data read 35

Minimize required storage capacity Minimize amount of data read Limit decode-time overheads 35

dynamic resizing custom PJPEG +dynamic resizing Minimize required storage capacity Minimize amount of data read Limit decode-time overheads 35

dynamic resizing custom PJPEG +dynamic resizing Minimize required storage capacity Minimize amount of data read Limit decode-time overheads 35

dynamic resizing custom PJPEG +dynamic resizing Minimize required storage capacity Minimize amount of data read Limit decode-time overheads 35

dynamic resizing custom PJPEG +dynamic resizing Minimize required storage capacity Minimize amount of data read Limit decode-time overheads 35

Future Work we need accurate, perceptual, image quality metrics we should make this faster 36

Conclusion 37

Conclusion modern image storage services store a lot of images, at many resolutions 37

Conclusion modern image storage services store a lot of images, at many resolutions serving multiple resolutions is necessary, but wastes capacity 37

Conclusion modern image storage services store a lot of images, at many resolutions serving multiple resolutions is necessary, but wastes capacity we can do better by only reading the necessary data for each request and customizing image data layout 37

Thank You Questions? 38