IP Library › Granted Patent US 10,452,955
Granted Patent B2
US 10,452,955 · App. 15/871,945 · Granted Oct 22, 2019

System and method for encoding data in an image/video recognition integrated circuit solution

Inventors: Xiang Gao (San Jose, CA); Lin Yang (Milpitas, CA); Wenhan Zhang (Mississauga, CA)
Assignee: Gyrfalcon Technology Inc.
G06K9/6256G06K9/4642G06K9/6262G06N3/04G06N3/08G06T9/002
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,452,955
App. No.
15/871,945
Granted
Oct 22, 2019
Kind
B2
Abstract

Methods of encoding image data for loading into an artificial intelligence (AI) integrated circuit are provided. The AI integrated circuit may have an embedded cellular neural network for implementing AI tasks based on the loaded image data. An encoding method may apply image splitting, principal component analysis (PCA) or a combination thereof to an input image to generate a plurality of output images. Each output image has a size smaller than the size of the input image. The method may load the output images into the AI chip, execute programming instructions contained in the AI chip to generate an image recognition result based on the at least one of the plurality of output images, and output the image recognition result. The encoding method also trains a convolution neural network (CNN) and loads the weights of the CNN into the AI integrated circuit for implementing the AI tasks.

Claims (120)

1. A method of encoding image data for loading into an artificial intelligence (AI) chip, the method comprising:

receiving, by a processor, an input image having a size;

by the processor, generating a plurality of output images by splitting the input image using one of a plurality of resizing methods, wherein each of the plurality of output images has a size that is smaller than the size of the input image;

loading the plurality of output images into the AI chip;

for each output image of the plurality of output images:

(i) building a first layer in an embedded cellular neural network (CeNN) architecture in the AI chip to include the output image, and

(ii) running the CeNN in the AI chip by executing instructions contained in the AI chip to determine a respective prediction vector for the output image;

determining an image recognition result based on the respective prediction vectors from previous runs of the CeNN in steps (i)-(ii); and

outputting the image recognition result.

2. The method of claim 1 , splitting the input image using one of the plurality of resizing methods comprises:

selecting an upper left pixel of a sub-area of the input image to form a corresponding pixel in an output image of the plurality of output images;

selecting an upper right pixel of the sub-area of the input image to form the corresponding pixel in the output image;

selecting an lower left pixel of the sub-area of the input image to form the corresponding pixel in the output image; or

selecting an lower right pixel of the sub-area of the input image to form the corresponding pixel in the output image.

3. The method of claim 1 , wherein determining the image recognition result based on the respective prediction vectors from previous runs of the CeNN comprises determining the image recognition result based on averaging the respective prediction vectors.

4. The method of claim 3 , further comprising storing the respective prediction vector in a softmax layer of the CeNN of the AI chip or in a memory outside the CeNN of the AI chip.

5. The method of claim 1 , further comprising:

receiving, by the processor, an additional input image having a size and a plurality of channels;

by the processor, applying principal component analysis (PCA) to the additional input image to generate an additional output image having a size and a plurality of output image channels, wherein:

the size of the additional output image is smaller than the size of the additional input image,

each pixel in the additional output image corresponds to one of a plurality of sub-areas of the additional input image, and

each channel of the additional output image corresponds to one of a plurality of PCA components; and

loading the plurality of channels in the additional output image into the AI chip.

6. The method of claim 5 , wherein, applying PCA to the additional input image to generate the additional output image comprises:

determining volumetric data based on a plurality of sub-areas and the plurality of channels in the additional input image;

performing volumetric PCA over the volumetric data to determine one or more PCA components, each corresponding to one of the plurality of output image channels in the additional output image;

for a respective sub-area in the plurality of sub-areas of the additional input image:

determining a voxel based on the respective sub-area and the plurality of channels in the additional input image,

projecting the voxel over the one or more PCA components, and

mapping the projected voxel into a corresponding pixel in the additional output image, wherein each channel in the additional output image corresponds to one of the one or more PCA components.

7. The method of claim 5 , further comprising:

feeding at least one of the plurality of output images into a first layer of an embedded cellular neural network (CeNN) architecture in the AI chip;

feeding at least one of the plurality of output image channels of the additional output image into the first layer of the embedded CeNN;

running the CeNN in the AI chip by executing instructions in the CeNN to determine an image recognition result based on the at least one of the plurality of output images and at least one of the plurality of output image channels of the additional output image; and

outputting the image recognition result.

8. A method of encoding image data for loading into an artificial intelligence (AI) chip, the method comprising:

receiving, by a processor, an input image having a size;

by the processor, generating a plurality of output images by splitting the input image using one of a plurality of resizing methods, wherein each of the plurality of output images has a size that is smaller than the size of the input image;

loading the plurality of output images into the AI chip:

receiving a set of sample training images comprising one or more sample input images, each sample input image having a size;

for each sample input image:

generating a plurality of sample output images by splitting the sample input image using one of the plurality of resizing methods, wherein each of the sample output images has a size that is smaller than the size of the sample input image;

using one or more sample output images generated from the one or more sample input images to train one or more weights of a convolutional neural network; and

loading the one or more trained weights into an embedded cellular neural network architecture (CeNN) in the AI chip;

by the AI chip, executing one or more programming instructions contained in the AI chip to:

feed at least one of the plurality of output images into the CeNN in the AI chip;

generate an image recognition result from the CeNN based on the at least one of the plurality of output images; and

output the image recognition result.

9. A method of encoding image data for loading into an artificial intelligence (AI) chip, the method comprising:

receiving, by a processor; an input image having a size and a plurality of channels;

by the processor, applying principal component analysis (PCA) to the input image to generate an output image having a size and a plurality of output image channels, by:

determining a volumetric data based on a plurality of sub-areas and the plurality of channels in the input image;

performing volumetric PCA over the volumetric data to determine one or more PCA components, each corresponding to one of the plurality of output image channels of the output image; and

for a respective sub-area in the plurality of sub-areas of the input image:

determining a voxel based on the respective sub-area and the plurality of channels in the input image,

projecting the voxel over the one or more PCA components, and

mapping the projected voxel into a corresponding pixel in the output image; and

loading the plurality of channels in the output image into the AI chip;

wherein:

the size of the output image is smaller than the size of the input image,

each pixel in the output image corresponds to one of a plurality of sub-areas of the input image, and

each channel of the output image corresponds to one of a plurality of PCA components.

10. The method of claim 9 , further comprising, by the AI chip, executing one or more programming instructions contained in the AI chip to:

feed one or more channels of the output image into an embedded cellular neural network (CeNN) architecture in the AI chip;

generate an image recognition result from the embedded CeNN based on the one or more channels of the output image; and

output the image recognition result.

11. The method of claim 10 , further comprising, by a processor:

receiving a set of sample training images comprising one or more sample input images, each sample input image having a size and a plurality of channels;

for each sample input image:

applying PCA to the sample input image to generate a sample output image having a size and a plurality of output image channels, wherein:

the size of the sample output image is smaller than the size of the sample input image,

each pixel in the sample output image corresponds to a sub-area of the sample input image, and

each channel of the sample output image corresponds to one of the plurality of PCA components; and

using one or more sample output images generated from the one or more sample input images to train one or more weights of a convolutional neural network; and

loading the one or more trained weights into the embedded CeNN in the AI chip.

12. A system for encoding image data for loading into an artificial intelligence (AI) chip, the system comprising:

a processor; and

a non-transitory computer readable medium containing programming instructions that, when executed, will cause the processor to:

receive an input image having a size;

generate a plurality of output images by splitting the input image using one of a plurality of resizing methods, wherein each of the plurality of output images has a size that is smaller than the size of the input image;

load the plurality of output images into the AI chip;

cause the AI chip to:

for each output image of the plurality of output images:

(i) build a first layer in an embedded cellular neural network (CeNN) architecture in the AI chip to include the output image; and

(ii) run the CeNN in the AI chip by executing instructions contained in the AI chip to determine a respective prediction vector for the output image;

determine an image recognition result based on the respective prediction vectors from previous runs of the CeNN in steps (i)-(ii); and

output the image recognition result.

13. A system for encoding image data for loading into an artificial intelligence (AI) chip, the system comprising:

a processor; and

a non-transitory computer readable medium containing programming instructions that, when executed, will cause the processor to:

receive an input image having a size;

generate a plurality of output images by splitting the input image using one of a plurality of resizing methods, wherein each of the plurality of output images has a size that is smaller than the size of the input image;

load the plurality of output images into the AI chip;

receive an additional input image having a size and a plurality of channels;

apply principal component analysis (PCA) to the additional input image to generate an additional output image having a size and a plurality of output image channels, by:

determining a volumetric data based on a plurality of sub-areas and the plurality of channels in the additional input image;

performing volumetric PCA over the volumetric data to determine one or more PCA components, each corresponding to one of the one or more channels in the additional output image; and

for a respective sub-area in the plurality of sub-areas of the additional input image:

determining a voxel based on the respective sub-area and the plurality of channels in the additional input image,

projecting the voxel over the one or more PCA components, and

mapping the projected voxel into a corresponding pixel in the additional output image, wherein each channel in the additional output image corresponds to one of the one or more PCA components; wherein:

the size of the additional output image is smaller than the size of the additional input image, and

each pixel in the additional output image corresponds to one of a plurality of sub-areas of the additional input image, and

load the plurality of channels in the additional output image into the AI chip.

14. The system of claim 13 , further comprising additional programming instructions configured to cause the AI chip to:

feed at least one of the plurality of output images into a first layer of an embedded cellular neural network (CeNN) architecture in the AI chip;

feed one or more channels of the additional output image into the first layer of the embedded CeNN;

run the CeNN in the AI chip by executing instructions contained in the AI chip to determine an image recognition result based on the at least one of the plurality of output images and one or more channels of the additional output image in the first layer of the embedded CeNN; and

output the image recognition result.

15. The system of claim 13 , further comprising programming instructions configured to:

receive a set of sample training images comprising a set of sample input images and an additional sample input image, each of the set of sample input images and the additional sample input image has a size;

for each of the set of sample input images:

generate a plurality of sample output images by splitting the sample input image using one of the plurality of resizing methods, wherein each of the plurality of sample output images has a size that is smaller than the size of the sample input image;

receives an additional sample input image;

apply PCA to the additional sample input image to generate an additional sample output image having a size and a second plurality of output image channels, wherein:

the size of the additional output image is smaller than the size of the additional input image,

each pixel in the additional output image corresponds to one of a plurality of sub-areas of the additional input image, and

each channel of the additional output image corresponds to one of a plurality of PCA components;

use at least one of the plurality of sample output images generated from the one or more sample input images and at least one of the second plurality of output image channels of the additional sample output image to train one or more weights of a convolutional neural network; and

load the one or more trained weights into an embedded cellular neural network (CeNN) in the AI chip.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 045971 FRAME 0375. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 9, 2019
From: GAO, XIANG; YANG, LIN; ZHANG, WENHAN
To: GYRFALCON TECHNOLOGY INC.
Reel/Frame 050320/0956 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2018
From: GAO, XIANG; YANG, LIN; ZHANG, WENHAN
To: GYRFALCON TECHNOLOGY, INC.
Reel/Frame 045971/0375 →
Continuity (1)
Related Publication 20190220700A1 · Jul 18, 2019
Cited By (1)
US 12,713,073