IP Library Granted Patent US 12,079,727
Granted Patent B2
US 12,079,727 · App. 16/892,192 · Granted Sep 3, 2024

Butterfly transform layer

Inventors: Ali Farhadi (Seattle, WA); Mohammad Rastegari (Bothell, WA); Keivan Alizadeh Vahid (Seattle, WA)
Assignee: Apple Inc.
G06N3/084G06F17/142G06N3/02G06N3/04G06N3/048G06N3/082
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 12,079,727
App. No.
16/892,192
Granted
Sep 3, 2024
Kind
B2
Abstract

Input data having multiple channels may be received and passed through a convolutional neural network model to generate output data. Passing the input data through the convolutional neural network model may include passing the input data through a depth-wise convolutional layer configured to perform a convolution on the input data for each channel of the input data to generate first data. The first data is passed from the depth-wise convolutional layer through a butterfly transform layer comprising multiple sub-layers configured to perform a linear transformation of the first data to fuse the channels of the first data and generate second data, wherein the output data is based on the generated second data. The output data may be provided for further processing on a computing device.

Claims (38)

1. A method, comprising:

receiving an image comprising a plurality of channels;

executing a convolutional neural network model configured to generate a classification of the image, wherein executing the convolutional neural network model comprises:

executing convolution on each channel of the image by a depth-wise convolutional layer to generate first data comprising a plurality of channels; and

executing a linear transformation of the first data by a butterfly transform layer comprising a plurality of sub-layers to combine the plurality of channels of the first data to generate second data, wherein the classification is based on the generated second data; and

providing the classification of the image for further processing on a computing device.

2. The method of claim 1 , wherein the plurality of sub-layers are configured to recursively calculate the second data.

3. The method of claim 1 , wherein a number of input nodes and a number of output nodes for each of the plurality of sub-layers are equal.

4. The method of claim 3 , wherein the butterfly transform layer comprises a path between each input node of a first sub-layer of the plurality of sub-layers that receives the first data and each output node of a second sub-layer of the plurality of sub-layers that outputs the second data.

5. The method of claim 1 , wherein the butterfly transform layer is further configured to execute a non-linearity function on the generated second data.

6. The method of claim 1 , wherein the butterfly transform layer is further configured to execute a batch normalization of the generated second data.

7. The method of claim 1 , wherein all nodes within each sub-layer of the plurality of sub-layers have a same out degree.

8. The method of claim 1 wherein the plurality of sub-layers comprises log(n) sub-layers, wherein n is a number of channels of the image.

9. A system, comprising:

a processor; and

a memory device containing instructions which, when executed by the processor, cause the processor to:

receive an image comprising a plurality of channels;

execute a convolutional neural network model configured to generate a classification of the image, wherein executing the convolutional neural network model comprises:

executing convolution on each channel of the image by a depth-wise convolutional layer to generate first data comprising a plurality of channels; and

executing a linear transformation of the first data by a butterfly transform layer comprising a plurality of sub-layers to combine the plurality of channels of the first data to generate second data, wherein the classification is based on the generated second data;

execute a non-linearity function on the generated second data to generate the classification of the image; and

provide the a classification of the image for further processing on a computing device.

10. The system of claim 9 , wherein the plurality of sub-layers are configured to recursively calculate the second data.

11. The system of claim 9 , wherein a number of input nodes and a number of output nodes for each of the plurality of sub-layers are equal.

12. The system of claim 9 , wherein the butterfly transform layer comprises a path between each input node of a first sub-layer of the plurality of sub-layers that receives the first data and each output node of a second sub-layer of the plurality of sub-layers that outputs the second data.

13. The system of claim 9 , wherein the butterfly transform layer is further configured to execute a batch normalization of the generated second data.

14. The system of claim 9 , wherein the plurality of sub-layers comprises log(n) sub-layers, wherein n is a number of channels of the image.

15. A computer program product comprising code stored in a non-transitory computer-readable storage medium, the code comprising:

code for receiving an image comprising a plurality of channels;

code for executing a convolutional neural network model configured to generate a classification of the image, wherein the code for executing the convolutional neural network model comprises:

code for executing convolution on each channel of the image by a depth-wise convolutional layer to generate first data comprising a plurality of channels; and

code for executing a linear transformation of the first data by a butterfly transform layer comprising a plurality of sub-layers to combine the plurality of channels of the first data to generate second data, wherein the butterfly transform layer comprises a path from each input node of the butterfly transform layer to each output node of the butterfly transform layer, and wherein the classification is based on the generated second data; and

code for providing the classification of the image for further processing on a computing device.

16. The computer program product of claim 15 , wherein a number of input nodes and a number of output nodes for each of the plurality of sub-layers are equal.

17. The computer program product of claim 15 , wherein the plurality of sub-layers are configured to recursively calculate the second data.

18. The computer program product of claim 15 , wherein code for passing the first data through the butterfly transform layer further comprises code for executing a non-linearity function on the generated second data.

19. The computer program product of claim 15 , wherein code for passing the first data through the butterfly transform layer further comprises code for normalizing the generated second data.

20. The computer program product of claim 16 , wherein the plurality of sub-layers comprises log(n) sub-layers, wherein n is a number of channels of the image.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2022
From: XNOR.AI, INC.
To: APPLE INC.
Reel/Frame 059664/0964 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2021
From: FARHADI, ALI; RASTEGARI, MOHAMMAD; ALIZADEH VAHID, KEIVAN
To: XNOR.AI, INC.
Reel/Frame 056996/0508 →
Continuity (2)
Provisional Application 62857003 · Jun 4, 2019
Related Publication 20200387776A1 · Dec 10, 2020