Image processing neural networks with separable convolutional layers
AssigneeGoogle Inc.
InventorsFrancois Chollet, Andrew Gerald Howard
Life of this patent
Estimating the term…
Abstract
A neural network system is configured to receive an input image and to generate a classification output for the input image. The neural network system includes: a separable convolution subnetwork comprising a plurality of separable convolutional neural network layers arranged in a stack one after the other, in which each separable convolutional neural network layer is configured to: separately apply both a depthwise convolution and a pointwise convolution during processing of an input to the separable convolutional neural network layer to generate a layer output.
Claims21
(canceled)
A neural network system implemented by one or more computers, wherein the neural network system is configured to receive an input image and to generate a network output for the input image, and wherein the neural network system comprises:
- an input subnetwork configured to receive the input image and to process the input image to generate an initial output;
- one or more entry modules, wherein the entry modules are configured to receive the initial output and to collectively process the initial output to generate an entry output, and wherein each entry module comprises:
- a respective first pass-through convolutional layer configured to process a module input for the entry module to generate a first pass-through output,
- a respective first stack of separable convolutional neural network layers, wherein the layers in the first stack are configured to collectively process the module input to generate a first stack output,
- a respective max pooling layer configured to perform max pooling on the first stack output to generate a max pooled output, and
- a respective first concatenation layer configured to concatenate the first pass-through output and the max pooled output to generate an entry module output for the entry module;
- one or more middle modules, wherein the middle modules are configured to receive the entry output and to collectively process the entry output to generate a middle output, wherein each middle module comprises:
- a respective second pass-through convolutional layer configured to process a module input for the middle module to generate a second pass-through output,
- a respective second stack of separable convolutional neural network layers, wherein the layers in the second stack are configured to collectively process the module input to generate a second stack output, and
- a respective second concatenation layer configured to concatenate the second pass-through output and the second stack output to generate a middle module output for the middle module;
- and
- an exit module, wherein the exit module is configured to receive the middle output and to process the middle output to generate a separable convolution output for the separable convolution subnetwork, wherein the exit module comprises:
- a third pass-through convolutional layer configured to process the middle output to generate a third pass-through output;
- a third stack of separable convolutional neural network layers, wherein the layers in the third stack are configured to collectively process the middle output to generate a third stack output;
- a third max pooling layer configured to perform max pooling on the third stack output to generate a third max pooled output;
- and
- a third concatenation layer configured to concatenate the third pass-through output and the third pooled output to generate a concatenated output,
- wherein each separable convolutional neural network layer is configured to:
- separately apply both a depthwise convolution and a pointwise convolution during processing of an input to the separable convolutional neural network layer to generate a layer output.
One or more non-transitory storage media encoded with instructions that, when implemented by one or more computers, cause the one or more computers to perform operations comprising:
- receiving an input image;
- and
- processing the input image using a neural network system to generate a network output for the input image,
- wherein the neural network system comprises:
- an input subnetwork configured to receive the input image and to process the input image to generate an initial output;
- one or more entry modules, wherein the entry modules are configured to receive the initial output and to collectively process the initial output to generate an entry output, and wherein each entry module comprises:
- a respective first pass-through convolutional layer configured to process a module input for the entry module to generate a first pass-through output,
- a respective first stack of separable convolutional neural network layers, wherein the layers in the first stack are configured to collectively process the module input to generate a first stack output,
- a respective max pooling layer configured to perform max pooling on the first stack output to generate a max pooled output, and
- a respective first concatenation layer configured to concatenate the first pass-through output and the max pooled output to generate an entry module output for the entry module;
- one or more middle modules, wherein the middle modules are configured to receive the entry output and to collectively process the entry output to generate a middle output, wherein each middle module comprises:
- respective second pass-through convolutional layer configured to process a module input for the middle module to generate a second pass-through output,
- a respective second stack of separable convolutional neural network layers, wherein the layers in the second stack are configured to collectively process the module input to generate a second stack output, and
- a respective second concatenation layer configured to concatenate the second pass-through output and the second stack output to generate a middle module output for the middle module;
- and
- an exit module, wherein the exit module is configured to receive the middle output and to process the middle output to generate a separable convolution output for the separable convolution subnetwork, wherein the exit module comprises:
- a third pass-through convolutional layer configured to process the middle output to generate a third pass-through output;
- a third stack of separable convolutional neural network layers, wherein the layers in the third stack are configured to collectively process the middle output to generate a third stack output;
- a third max pooling layer configured to perform max pooling on the third stack output to generate a third max pooled output;
- and
- a third concatenation layer configured to concatenate the third pass-through output and the third pooled output to generate a concatenated output,
- wherein each separable convolutional neural network layer is configured to:
- separately apply both a depthwise convolution and a pointwise convolution during processing of an input to the separable convolutional neural network layer to generate a layer output.
A computer-implemented method comprising:
- receiving an input image;
- and
- processing the input image using a neural network system to generate a network output for the input image,
- wherein the neural network system comprises:
- an input subnetwork configured to receive the input image and to process the input image to generate an initial output;
- one or more entry modules, wherein the entry modules are configured to receive the initial output and to collectively process the initial output to generate an entry output, and wherein each entry module comprises:
- a respective first pass-through convolutional layer configured to process a module input for the entry module to generate a first pass-through output,
- a respective first stack of separable convolutional neural network layers, wherein the layers in the first stack are configured to collectively process the module input to generate a first stack output,
- a respective max pooling layer configured to perform max pooling on the first stack output to generate a max pooled output, and
- a respective first concatenation layer configured to concatenate the first pass-through output and the max pooled output to generate an entry module output for the entry module;
- one or more middle modules, wherein the middle modules are configured to receive the entry output and to collectively process the entry output to generate a middle output, wherein each middle module comprises:
- respective second pass-through convolutional layer configured to process a module input for the middle module to generate a second pass-through output,
- a respective second stack of separable convolutional neural network layers, wherein the layers in the second stack are configured to collectively process the module input to generate a second stack output, and
- a respective second concatenation layer configured to concatenate the second pass-through output and the second stack output to generate a middle module output for the middle module;
- and
- an exit module, wherein the exit module is configured to receive the middle output and to process the middle output to generate a separable convolution output for the separable convolution subnetwork, wherein the exit module comprises:
- a third pass-through convolutional layer configured to process the middle output to generate a third pass-through output;
- a third stack of separable convolutional neural network layers, wherein the layers in the third stack are configured to collectively process the middle output to generate a third stack output;
- a third max pooling layer configured to perform max pooling on the third stack output to generate a third max pooled output;
- and
- a third concatenation layer configured to concatenate the third pass-through output and the third pooled output to generate a concatenated output,
- wherein each separable convolutional neural network layer is configured to:
- separately apply both a depthwise convolution and a pointwise convolution during processing of an input to the separable convolutional neural network layer to generate a layer output.
Dependencies are inferred from the claim text.