The present disclosure provides systems and methods to reduce computational costs associated with convolutional neural networks. In addition, the present disclosure provides a class of efficient models termed “MobileNets” for mobile and embedded vision applications. MobileNets are based on a straight-forward architecture that uses depthwise separable convolutions to build light weight deep neural networks. The present disclosure further provides two global hyper-parameters that efficiently trade-off between latency and accuracy. These hyper-parameters allow the entity building the model to select the appropriately sized model for the particular application based on the constraints of the problem. MobileNets and associated computational cost reduction techniques are effective across a wide range of applications and use cases.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A computer-implemented method to reduce computational costs associated with convolutional neural networks, the method comprising: obtaining, by one or more computing devices, an existing convolutional neural network structure, wherein the existing convolutional neural network structure comprises one or more convolutional layers, and wherein each of the one or more convolutional layers has a respective existing number of filters; receiving, by the one or more computing devices, a width multiplier value; determining, by the one or more computing devices, a respective reduced number of filters for each of the one or more convolutional layers based at least in part on the width multiplier value, wherein the reduced number of filters for each convolutional layers is less than the existing number of filters for such convolutional layer; and generating, by the one or more computing devices, a reduced convolutional neural network structure that has the existing convolutional neural network structure except that each of the one or more convolutional layers in the reduced convolutional neural network has the respective reduced number of filters determined for such convolutional layer. 2. The computer-implemented method of claim 1, wherein each of the one or more convolutional layers in the existing convolutional neural network structure comprises a depthwise separable convolution that comprises a depthwise convolution layer and a pointwise convolution layer. 3. The computer-implemented method of claim 1, wherein the one or more convolutional layers comprise a plurality of convolutional layers, and wherein determining, by the one or more computing devices, the respective reduced number of filters for each of the plurality of convolutional layers comprises uniformly applying, by the one or more computing devices, the width multiplier to the respective existing number of filters for each of the plurality of convolutional layers. 4. The computer-implemented method of claim 1, wherein receiving, by the one or more computing devices, the width multiplier value comprises receiving, by the one or more computing devices, the width multiplier value as a user input. 5. The computer-implemented method of claim 1, wherein receiving, by the one or more computing devices, the width multiplier value comprises: receiving, by the one or more computing devices, one or more desired performance parameters for the reduced convolutional neural network structure; and generating, by the one or more computing devices, the width multiplier value based at least in part on the one or more desired performance parameters and one or more existing performance parameters associated with the existing convolutional neural network structure. 6. The computer-implemented method of claim 5, wherein the one or more desired performance parameters comprises a desired processing capability expressed in a number of frames processed per second. 7. The computer-implemented method of claim 1, wherein the width multiplier value comprises a number between 0 and 1. 8. The computer-implemented method of claim 1, wherein the one or more convolutional layers comprise a plurality of convolutional layers, and wherein determining, by the one or more computing devices, the respective reduced number of filters for each of the plurality of convolutional layers comprises multiplying, by the one or more computing devices, the respective existing number of filters for each of the plurality of convolutional layers by the width multiplier. 9. The computer-implemented method of claim 1, wherein generating, by the one or more computing devices, the reduced convolutional neural network structure comprises reconfiguring, by the one or more computing devices, the existing convolutional neural network structure to reduce the number of filters included in each convolutional layer from the respective existing number of filters to the respective reduced number of filters determined for such convolutional layer. 10. The computer-implemented method of claim 1, further comprising: training, by the one or more computing devices, a convolutional neural network that has the reduced convolutional neural network structure on a set of training data. 11. The computer-implemented method of claim 1, further comprising: using, by a mobile computing device or an embedded computing device, a machine-learned convolutional neural network that has the reduced convolutional neural network structure to perform one or more of: image classification, fine grained recognition, geolocalization, face attribute classification, and object detection. 12. A computer-implemented method to reduce computational cost associated with a convolutional neural network, the method comprising: obtaining, by the one or more computing devices, an input image that has an existing resolution; receiving, by the one or more computing devices, a resolution multiplier value; determining, by the one or more computing devices, a reduced resolution for the input image based at least in part on the existing resolution and the resolution multiplier value; modifying, by the one or more computing devices, the input image to have the reduced resolution; and inputting, by the one or more computing devices, the modified input image into the convolutional neural network. 13. The computer-implemented method of claim 12, wherein receiving, by the one or more computing devices, the resolution multiplier value comprises receiving, by the one or more computing devices, the resolution multiplier value as a user input. 14. The computer-implemented method of claim 12, wherein receiving, by the one or more computing devices, the resolution multiplier value comprises: receiving, by the one or more computing devices, one or more desired performance parameters for the convolutional neural network; and generating, by the one or more computing devices, the resolution multiplier value based at least in part on the one or more desired performance parameters and one or more existing performance parameters associated with the convolutional neural network. 15. The computer-implemented method of claim 12, wherein the resolution multiplier value comprises a number between 0 and 1. 16. The computer-implemented method of claim 12, wherein determining, by the one or more computing devices, the reduced resolution for the input image based at least in part on the existing resolution and the resolution multiplier value comprises multiplying, by the one or more computing devices, the existing resolution by the resolution multiplier value. 17. A convolutional neural network structure that is optimizable for mobile or embedded applications, the convolutional neural network structure comprising: a plurality of depthwise separable convolution layers, each depthwise separable convolution layer comprising a depthwise convolution layer and a pointwise convolution layer; wherein the convolutional neural network structure has user-adjustable parameters that include one or more of: a number of the plurality of depthwise separable convolution layers; and a respective number of filters included in the depthwise convolution layer of each of the plurality of depthwise separable convolution layers. 18. The convolutional neural network structure of claim 17, further comprising: an image resolution reduction component positioned structurally prior to the plurality of depthwise separable convolution layers, wherein the image resolution reduction component is configured to reduce a resolution of an input image according to a resolution multiplier. 19. The convolutional neural network structure of claim 17, wherein the user-adjustable parameters further include where downsampling is performed. 20. The convolutional neural network structure of claim 17, wherein each depthwise separable convolution layer comprises a 3×3 depthwise convolution layer followed by a first batch normalization layer followed by a first rectified linear unit layer followed by a 1×1 pointwise convolution layer followed by a second batch normalization layer followed by a second rectified linear unit layer.