IP Library Granted Patent US 10,798,399
Granted Patent B1
US 10,798,399 · App. 15/837,884 · Granted Oct 6, 2020

Adaptive video compression

Inventors: Hai Wei (Seattle, WA); Charles Benjamin Franklin Waggoner (Portland, WA); Yang Yang (Issaquah, WA); Srinivas Rajagopalan (Seattle, WA); Deepthi Nandakumar (Bangalore, IN); Lei Li (Kirkland, WA)
Assignee: AMAZON TECHNOLOGIES, INC.
H04N19/46H04N19/132H04N19/172H04N19/182
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,798,399
App. No.
15/837,884
Granted
Oct 6, 2020
Kind
B1
Abstract

An adaptive video compression system may receive video data to be compressed, such as for delivery to a user device by a video streaming service. For example the video data may be an entire video file or a segment of a video file. The adaptive video compression system determines a suitable encoding scheme for compressing the video data. In order to determine the encoding scheme, the video data may be analyzed to extract a plurality of features interests of the video data, which may represent one or more characteristics of the video data. The features may be concatenated and collectively expressed as a feature vector. The feature vector is then used to determine a classification for the video data. Accordingly, an encoding scheme is determined for the video data based on the classification of the video data, and applied to video data to compress the video data.

Claims (78)

1. A computer-implemented method, comprising:

determining one or more feature values of video data;

analyzing the one or more feature values using a model trained to classify the video data into one of a plurality of classes associated with a plurality of respective encoding schemes, wherein the plurality of classes correspond to a plurality of clusters of sample video data formed during unsupervised training of the model the encoding scheme of a class determined based at least in part on feature values of sample video data in the cluster that corresponds to the class;

classifying the video data into a class selected from the plurality of classes using the model, the class associated with an encoding scheme; and

encoding the video data using the encoding scheme.

2. The method of claim 1 , further comprising:

down-sampling the video data to reduce the sampling rate of the video data.

3. The method of claim 1 , further comprising:

processing the video data using a preliminary encoding process to compress the video data and determine at least one of the one or more feature values.

4. The method of claim 1 , wherein the one or more feature values includes one or more video complexity values.

5. The method of claim 4 , wherein the one or more video complexity values includes a degree of complexity within a frame of the video data and a degree of complexity between multiple frames of the video data.

6. The method of claim 1 , further comprising:

obtaining the plurality of sample video data;

determining respective feature vectors for the plurality of sample video data;

determining a plurality of clusters of features vectors;

defining the plurality of classes based on the plurality of clusters; and

associating the plurality of classes with respective encoding schemes.

7. The method of claim 6 , further comprising:

determining respective model feature vectors for the plurality of classes, wherein the model includes at least the plurality of classes and respective model feature vectors;

generating a feature vector for the received video data;

comparing the feature vector to the model feature vectors to determine the class of the received video data.

8. The method of claim 1 , further comprising:

receiving a video file;

segmenting the video file into a plurality of segments of video data;

determining one or more feature values for individual segments of the plurality of segments;

classifying the individual segments into respective classes using the model, the classes associated with respective encoding schemes;

encoding the individual segments using the respective encoding schemes to generate a plurality of compressed segments; and

assembling the plurality of compressed segments into a continuous data stream.

9. The method of claim 8 , further comprising:

encoding at least two of the plurality of segments using different encoding schemes.

10. The method of claim 8 , further comprising:

segmenting the video file in the plurality of segments based at least in part on one or more encoder-determined compression characteristics of the video file.

11. The method of claim 1 , further comprising:

receiving the video data from a third party provider; and

transmitting the encoded video data to the third party provider or a user device associated with the third party provider.

12. A system, comprising:

at least one computing device processor; and

a memory device including instructions that, when executed by the at least one computing device processor, cause the system to:

receive video data;

determine one or more feature values of the video data;

analyze the one or more feature values using a model trained to classify the video data into one of a plurality of classes associated with a plurality of respective encoding schemes, wherein the plurality of classes correspond to a plurality of clusters of sample video data formed during unsupervised training of the model the encoding scheme of a class determined based at least in part on feature values of sample video data in the cluster that corresponds to the class;

classify the video data into a class selected from the plurality of classes using the model, the class associated with an encoding scheme; and

encode the video data using the encoding scheme.

13. The system of claim 12 , wherein the one or more feature values includes one or more video complexity values, including a degree of complexity within a frame of the video data and a degree of complexity between multiple frames of the video data.

14. The system of claim 12 , wherein the instructions when executed further cause the system to:

obtain the plurality of training video data;

determine respective feature vectors for the plurality of training video data;

determine a plurality of clusters of features vectors;

define the plurality of classes based on the plurality of clusters; and

associate the plurality of classes with respective encoding.

15. The system of claim 14 , wherein the instructions when executed further cause the system to:

determine respective model feature vectors for the plurality of classes, wherein the model includes at least the plurality of classes and respective model feature vectors;

generate a feature vector for the received video data;

compare the feature vector to the model feature vectors to determine the class of the received video data.

16. The system of claim 12 , wherein the instructions when executed further cause the system to:

receive a video file;

segment the video file into a plurality of segments of video data;

determine one or more feature values for individual segments of the plurality of segments;

classify the individual segments into respective classes using the model, the classes associated with respective encoding schemes;

encode the individual segments using the respective encoding schemes to generate a plurality of compressed segments; and

combine the plurality of compressed segments into a continuous data stream.

17. A non-transitory computer-readable storage medium including instructions that, when executed by at least one processor of a computing system, cause the computing system to:

receive video data;

determine one or more feature values of the video data;

analyze the one or more feature values using a model trained to classify the video data into one of a plurality of classes associated with a plurality of respective encoding schemes, wherein the plurality of classes correspond to a plurality of clusters of sample video data formed during unsupervised training of the model the encoding scheme of a class determined based at least in part on feature values of sample video data in the cluster that corresponds to the class;

classify the video data into a class selected from the plurality of classes using the model, the class associated with an encoding scheme; and

encode the video data using the encoding scheme.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the one or more feature values includes one or more video complexity values, including a degree of complexity within a frame of the video data and a degree of complexity between multiple frames of the video data.

19. The non-transitory computer-readable storage medium of claim 17 , wherein the instructions when executed further cause the system to:

obtain the plurality of training video data;

determine respective feature vectors for the plurality of training video data;

determine a plurality of clusters of features vectors;

define the plurality of classes based on the plurality of clusters; and

associate the plurality of classes with respective encoding.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the instructions when executed further cause the system to:

determine respective model feature vectors for the plurality of classes, wherein the model includes at least the plurality of classes and respective model feature vectors;

generate a feature vector for the received video data;

compare the feature vector to the model feature vectors to determine the class of the received video data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2017
From: WEI, HAI; WAGGONER, CHARLES BENJAMIN FRANKLIN; YANG, YANG; RAJAGOPALAN, SRINIVAS; NANDAKUMAR, DEEPTHI; LI, LEI
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 044357/0243 →
Cited By (7)
US 12,327,082 US 12,346,654 US 12,355,941 US 12,501,084 US 12,513,303 US 12,542,907 US 12,634,489