Efficient Convolutional Neural Networks
By introducing linear bottleneck layers and reverse residual blocks into the convolutional neural network, combined with alternating dimensional structures and quick residual connections, the problem of excessive computing cost and storage requirements in the environment of convolutional neural networks is solved, and more efficient computing and storage is achieved.
Patent Information
- Application Number
- CN202110869378.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-02-17
- Filing Date
- 2018-08-09
- Publication Date
- 2025-05-02
- Estimated Expiration
- 2038-08-09
AI Technical Summary
Existing convolutional neural networks have excessive computational cost and storage requirements in environments where computing resources are constrained, especially in mobile and embedded applications.
Using a new neural network architecture, including linear bottleneck layers and reverse residual blocks, reduces computing and storage requirements through alternating dimensional structures and residual quick connections.
While maintaining the same accuracy, the required number of operations and memory is significantly reduced, increasing inference speed and reducing the use of processing resources.
Smart Images

Figure CN113657578B_ABST
Abstract
Description
[0001] This application is a divisional application of the PCT invention patent application with application date of August 9, 2018, application number 201880066914.4, and invention name “Efficient Convolutional Neural Network”.
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS
[0003] This application claims priority to and the benefit of U.S. Provisional Patent Application No. 62 / 586,007 filed on November 24, 2017 and U.S. Patent Application No. 15 / 898,566 filed on February 17, 2018, both entitled “Highly Efficient Convolutional Neural Networks.” U.S. Provisional Patent Application No. 62 / 586,007 and U.S. Patent Application No. 15 / 898,566 are incorporated herein by reference in their entirety. Technical Field
[0004] The present disclosure relates generally to artificial neural networks ("neural networks"). More specifically, the present disclosure relates to efficient convolutional neural network structures for mobile and / or embedded vision applications, and also to techniques for reducing the computational cost and / or memory requirements associated with convolutional neural networks. Background Art
[0005] Convolutional neural networks have become the workhorse of computer vision and have achieved state-of-the-art results in most major use cases. The general trend in the field of convolutional neural networks is to make larger and more complex networks in order to achieve higher accuracy. As convolutional neural networks increase in size and complexity in service of increased accuracy, their computational cost also increases. However, at a certain point, these advances bring diminishing returns, as the increased complexity, size, and additional computation only yield a small increase in accuracy.
[0006] The current trend toward larger and more complex networks is particularly problematic in the context of computing environments where certain computing resources (e.g., memory and processing power) are limited. For example, mobile computing devices and / or embedded computing provide challenging environments for implementing such large and complex networks. Furthermore, in certain scenarios or applications, the problems to be solved by the network may not require large and complex models that provide state-of-the-art accuracy.
[0007] Therefore, it is desirable to use techniques for reducing the computational cost and / or storage requirements of neural networks (e.g., convolutional neural networks). In some cases, such techniques may be referred to as performing neural network compression.
[0008] One general direction of neural network compression is network pruning, in which a subset of the connections included in the network are removed. However, if there are no constraints on which connections / parameters to remove, network pruning usually leads to irregular networks. Such networks are undesirable because the computational savings cannot be easily exploited and the unstructured nature of the connections requires additional effort to represent. These drawbacks have a negative impact on training time and memory usage. On the other hand, if the constraints on the parameters to be removed are too restrictive, the flexibility of the model will be reduced.
[0009] Another direction of neural network compression brings optimization methods including genetic algorithms and reinforcement learning to architecture search. However, one drawback is that the resulting networks are too complex. Summary of the invention
[0010] Aspects and advantages of embodiments of the present disclosure will be set forth in part in the following description, or may be learned from the description, or may be learned through practice of the embodiments.
[0011] An example aspect of the present disclosure is directed to a computing system that includes one or more processors and one or more non-transitory computer-readable media storing a convolutional neural network implemented by the one or more processors. The convolutional neural network includes one or more convolutional blocks. Each of the one or more convolutional blocks includes a linear bottleneck layer and one or more convolutional layers.
[0012] Another example aspect of the present disclosure is directed to a computing system comprising one or more processors and one or more non-transitory computer-readable media storing a convolutional neural network implemented by the one or more processors. The convolutional neural network includes one or more reverse residual blocks. Each of the one or more reverse residual blocks includes one or more convolutional layers configured to provide a first output and a linear bottleneck layer configured to receive the first output and generate a second output. The linear bottleneck layer is also configured to receive a residual and add the residual to the second output to provide a third output.
[0013] Another example aspect of the present disclosure is directed to a computing system comprising one or more processors and one or more non-transitory computer-readable media storing a convolutional neural network implemented by the one or more processors. The convolutional neural network comprises one or more convolutional blocks. Each of the one or more convolutional blocks comprises a linear layer and one or more non-linear convolutional layers.
[0014] Another example aspect of the present disclosure is directed to a computing system comprising one or more processors and one or more non-transitory computer-readable media storing a convolutional neural network implemented by the one or more processors. The convolutional neural network includes one or more reverse residual blocks. Each of the one or more reverse residual blocks includes one or more convolutional layers configured to provide a first output and a linear layer configured to receive the first output and generate a second output. The linear layer is also configured to receive a residual and add the residual to the second output to provide a third output.
[0015] Another example aspect of the present disclosure is directed to a computing system comprising one or more processors and one or more non-transitory computer-readable media storing a convolutional neural network implemented by the one or more processors. The convolutional neural network includes one or more reverse residual blocks. Each of the one or more reverse residual blocks includes a linear bottleneck layer that provides a first output and one or more convolutional layers that receive the first output and generate a second output. The linear bottleneck layer is configured to provide a residual describing the first output to a downstream linear bottleneck layer through a residual shortcut connection.
[0016] Another example aspect of the present disclosure is directed to a neural network system implemented by one or more computers. The neural network system is configured to receive an input image and generate an output for the input image. The neural network system includes a convolutional subnetwork. The convolutional subnetwork includes a linear bottleneck layer and one or more convolutional layers.
[0017] Another example aspect of the present disclosure is directed to a neural network system implemented by one or more computers. The neural network system is configured to receive an input image and generate an output for the input image. The neural network system includes a reverse residual subnetwork. The reverse residual subnetwork includes one or more convolutional layers configured to provide a first output and a linear layer configured to receive the first output and generate a second output. The linear layer is also configured to receive a residual and add the residual to the second output to provide a third output.
[0018] Other aspects of the present disclosure are directed to various systems, apparatuses, non-transitory computer-readable media, user interfaces, and electronic devices.
[0019] These and other features, aspects and advantages of various embodiments of the present disclosure will be better understood with reference to the following description and appended claims.The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate example embodiments of the present disclosure and, together with the description, serve to explain relevant principles. BRIEF DESCRIPTION OF THE DRAWINGS
[0020] A detailed discussion of embodiments for those of ordinary skill in the art is set forth in the specification with reference to the accompanying drawings, in which:
[0021] Figure 1AA block diagram of an example computing system is depicted according to an example embodiment of the present disclosure.
[0022] Figure 1B A block diagram of an example computing device is depicted according to an example embodiment of the present disclosure.
[0023] Figure 1C A block diagram of an example computing device is depicted according to an example embodiment of the present disclosure.
[0024] Figure 2A Depicted is a graphical diagram of an example standard convolution filter according to an example embodiment of the present disclosure.
[0025] Figure 2B Depicted is a graphical diagram of an example depthwise convolution filter according to an example embodiment of the present disclosure.
[0026] Figure 2C Depicted is a graphical diagram of an example pointwise convolution filter according to an example embodiment of the present disclosure.
[0027] Figure 3A and Figure 3B Depicted is a graphical diagram of an example convolutional block according to an example embodiment of the present disclosure.
[0028] Figure 4 A graphical diagram depicting an example inverted residual block according to an example embodiment of the present disclosure is depicted.
[0029] Figure 5A Depicted is a flow diagram of an example convolution block according to an example embodiment of the present disclosure.
[0030] Figure 5B Depicted is a flow diagram of an example reverse residual block according to an example embodiment of the present disclosure.
[0031] Figure 6 Depicted are example experimental results of example embodiments of the present disclosure.
[0032] Fig. 7A and Figure 7B Depicted are example experimental results of example embodiments of the present disclosure.
[0033] Reference numerals repeated in multiple figures are intended to identify like features in the various implementations. DETAILED DESCRIPTION
[0034] 1. Overview
[0035] Example aspects of the present disclosure are directed to new, more efficient neural network architectures. As an example, in some implementations, the neural network architecture of the present disclosure may include a linear bottleneck layer that is structurally located before and / or after one or more convolutional layers, for example, one or more depth-separable convolutional layers. As another example, in some implementations, the neural network architecture of the present disclosure may include one or more inverted residual blocks, wherein the input and output of the inverted residual block are thin bottleneck layers, and the intermediate layers are extended representations. For example, the extended representation may include one or more convolutional layers, for example, one or more depth-separable convolutional layers. According to another aspect of the present disclosure, there may be residual shortcut connections between thin bottleneck layers that serve as inputs and outputs of the inverted residual block. In addition, as described above, the bottleneck layer may be linear in nature. The neural network architecture described herein has been shown to improve the state-of-the-art performance of mobile optimization models on multiple benchmarks across spectrums of different sizes, while also reducing the amount of storage and processing resources required for implementation.
[0036] More specifically, neural networks have revolutionized many areas of machine intelligence, achieving superhuman accuracy on challenging image recognition tasks. However, the drive for improved accuracy often comes at a cost: modern state-of-the-art networks require massive computational resources that are beyond the capabilities of many mobile and embedded applications.
[0037] In contrast, the present disclosure introduces a new, more efficient neural network architecture that is particularly beneficial for mobile and resource-constrained environments. The network described herein pushes the state-of-the-art in mobile-tailored computer vision models by significantly reducing the number of operations and memory required while maintaining the same accuracy.
[0038] According to one aspect of the present disclosure, a neural network may include one or more convolutional blocks. The term "block" generally refers to a defined structure of one or more layers within a network, and may also be referred to as a module or subnetwork. Each convolutional block may include a linear bottleneck layer and one or more convolutional layers. The convolutional layer may perform nonlinear transformations. Therefore, compared to certain existing network structures that rely only on nonlinear layers, certain implementations of the present disclosure may include a bottleneck layer that performs a linear transformation on its input data.
[0039] In some implementations, one or more convolutional layers may be or include one or more separable convolutional layers. For example, each separable convolutional layer may be configured to apply both depthwise convolution and pointwise convolution respectively during processing of the input.
[0040] According to another aspect of the present disclosure, a linear bottleneck layer may operate or otherwise represent data in a first dimensional space, while one or more convolutional layers (e.g., separable convolutional layers) may operate or otherwise represent data in a second dimensional space, wherein the second dimensional space includes a larger number of dimensions. As an example, a linear bottleneck layer may represent data in a first tensor, while one or more convolutional layers may represent data in one or more second tensors, wherein each of the one or more second tensors includes a Euclidean space larger than the first tensor. Thus, a linear bottleneck layer may be configured to operate in a low dimensional space (e.g., perform a linear transformation), while one or more convolutional layers are configured to operate in a high dimensional space (e.g., perform one or more nonlinear transformations). Thus, in some cases, a convolutional layer may be referred to as a "dilated convolutional layer."
[0041] This dimensional structure enables a natural separation between the input domain and the output domain of the convolutional block. This allows the decoupling of the input / output domain from the expressiveness of the transformation, which provides a convenient framework for analysis. Specifically, this dimensional structure enables a natural separation between the input / output domain of the building block (e.g., the bottleneck layer) and the layer transformation (i.e., the nonlinear function that transforms the input to the output). The former can be viewed as the capacity of the network at each layer, while the latter can be viewed as expressiveness. This is in contrast to traditional convolutional network structures, where expressivity and capacity are entangled and are a function of the depth of the output layer.
[0042] Also, due to this alternating dimensional structure, in some cases the convolutional blocks can be referred to as “hybrid linear convolutional blocks” and / or “alternating linear convolutional blocks”.
[0043] In some implementations, a neural network may include multiple convolutional blocks stacked one after another. Thus, in some implementations, a linear bottleneck layer of a particular convolutional block may take as input (e.g., perform a linear transformation on) the output of a convolutional layer of a previous convolutional block (e.g., a previous sequential convolutional block).
[0044] Thus, in a stacked configuration, a neural network may include multiple linear bottleneck layers interleaved with multiple non-linear convolutional layers (e.g., separable convolutional layers). Thus, depending on how the convolutional blocks are defined, the linear bottleneck layer of each block may be structurally located before or after the corresponding convolutional layer of the block.
[0045] Another major contribution of the present disclosure is a novel layer module: a reverse residual block with a linear bottleneck. The reverse residual block can be similar to the convolutional block described above, but can further include passing residual information between layers (e.g., between linear bottleneck layers) via residual shortcut connections.
[0046] In some implementations, the reverse residual block may include one or more convolutional layers configured to provide a first output and a linear bottleneck layer configured to receive the first output and generate a second output. In addition, the linear bottleneck layer may also be configured to receive a residual and add the residual to the second output to provide a third output.
[0047] As an example, the linear bottleneck layer may receive residuals from the linear bottleneck layer of the previous reverse residual block (e.g., the previous sequential reverse residual block). More specifically, in some implementations, multiple reverse residual blocks may be stacked one after another, and each reverse residual block may include a linear bottleneck layer that receives residuals from the linear bottleneck layer of the previous block (e.g., the previous sequential block) and / or provides residuals to the linear bottleneck layer of the subsequent block (e.g., the next sequential block). For example, the residuals may be provided via corresponding residual shortcut connections. In another example, the linear bottleneck layer of the reverse residual block (e.g., the initial reverse residual block of the network) may receive residuals from an initial linear bottleneck layer that is structurally located before one or more convolutional layers of the at least one reverse residual block.
[0048] As described above, the linear bottleneck layer can be configured to operate in a lower dimensional space than the convolutional layer. Therefore, in one example, the reverse residual block can take as input a low-dimensional compressed representation that is first expanded to a high dimension and filtered using a convolutional layer (e.g., a lightweight depthwise convolution). The features can then be projected back to a low-dimensional representation using a linear convolution.
[0049] Similar to convolutional blocks, the dimensional structure of the inverted residual block enables a natural separation between the input and output domains of the convolutional block (e.g., the capacity of the block) and the layer transform of the block (e.g., the expressibility of the block). This allows decoupling the input / output domain from the expressibility of the transform, which provides a convenient framework for analysis.
[0050] The present disclosure provides many technical effects and benefits. As an example technical effect and benefit, the neural network structure provided by the present disclosure can be effectively implemented using standard operations in any modern framework. As an example technical effect and benefit, the neural network structure provided by the present disclosure has been proven to achieve or beat the most advanced network at multiple performance points using standard benchmarks. Therefore, the present disclosure represents an advancement in the performance of the network itself.
[0051] In addition, the convolutional block designs described herein are particularly well suited for mobile designs. Specifically, as another example technical effect and benefit, the neural network structures of the present disclosure significantly reduce the storage footprint required during inference because they never fully implement large intermediate tensors. This reduces the need for main memory access in many modern devices (e.g., embedded hardware designs) that provide a small amount of extremely fast memory (e.g., very fast software-controlled cache memory). Reducing the number of required accesses and / or computational operations also increases the speed at which inference can be performed while reducing the amount of processing resources consumed. Therefore, in addition to the advancement in the performance of the network itself, the present disclosure also provides significant improvements that reduce the use of memory and processing resources, thereby increasing the speed of inference.
[0052] Referring now to the drawings, example embodiments of the present disclosure will be discussed in further detail.
[0053] 2. Example Devices and Systems
[0054] Figure 1A A block diagram of an example computing system 100 in which the present disclosure may be implemented is depicted. System 100 includes a user computing device 102, a server computing system 130, and a training computing system 150 communicatively coupled via a network 180.
[0055] The user computing device 102 can be any type of computing device, such as, for example, a personal computing device (e.g., a laptop or desktop computer), a mobile computing device (e.g., a smartphone or tablet), a game console or controller, a wearable computing device, an embedded computing device, or any other type of computing device. In some implementations, the device 102 is not necessarily a device associated with a user, but can be any arbitrary mobile or embedded device or system.
[0056] The user computing device 102 includes one or more processors 112 and a memory 114. The one or more processors 112 may be any suitable processing device (e.g., a processor core, a microprocessor, an ASIC, an FPGA, a controller, a microcontroller, etc.), and may be one processor or multiple processors operably connected. The memory 114 may include one or more non-transitory computer-readable storage media, such as RAM, ROM, EEPROM, EPROM, flash memory devices, magnetic disks, etc., and combinations thereof. The memory 114 may store data 116 and instructions 118 that are executed by the processor 112 to cause the user computing device 102 to perform operations.
[0057] The user computing device 102 may store or include one or more machine learning models 120. For example, the machine learning model 120 may be or may include various machine learning models, such as a neural network (e.g., a deep neural network) or other multi-layer linear and / or nonlinear models. The neural network may include a recurrent neural network (e.g., a long short-term memory recurrent neural network), a feedforward neural network, a convolutional neural network (e.g., MobileNet), or other forms of neural networks.
[0058] In some implementations, one or more machine learning models 120 may be received from the server computing system 130 via the network 180, stored in the memory 114 of the user computing device, and used or otherwise implemented by the one or more processors 112. In some implementations, the user computing device 102 may implement multiple parallel instances of a single machine learning model 120.
[0059] Additionally or alternatively, one or more machine learning models 140 may be included in or stored and implemented by a server computing system 130 that communicates with the user computing device 102 according to a client-server relationship. For example, the machine learning model 140 may be implemented by the server computing system 130 as part of a web service. Thus, one or more models 120 may be stored and implemented at the user computing device 102 and / or one or more models 140 may be stored and implemented at the server computing system 130.
[0060] The user computing device 102 may also include one or more user input components 122 that receive user input. For example, the user input component 122 may be a touch-sensitive component (e.g., a touch-sensitive display screen or a touchpad) that is sensitive to the touch of a user input object (e.g., a finger or a stylus). The touch-sensitive component may be used to implement a virtual keyboard. Other example user input components include a microphone, a traditional keyboard, or other means by which a user may input communications.
[0061] The server computing system 130 includes one or more processors 132 and memory 134. The one or more processors 132 may be any suitable processing device (e.g., a processor core, a microprocessor, an ASIC, an FPGA, a controller, a microcontroller, etc.), and may be one processor or multiple processors operably connected. The memory 134 may include one or more non-transitory computer-readable storage media, such as RAM, ROM, EEPROM, EPROM, flash memory devices, magnetic disks, etc., and combinations thereof. The memory 134 may store data 136 and instructions 138 that are executed by the processor 132 to cause the server computing system 130 to perform operations.
[0062] In some implementations, server computing system 130 includes or is implemented by one or more server computing devices. Where server computing system 130 includes multiple server computing devices, such server computing devices may operate according to a sequential computing architecture, a parallel computing architecture, or some combination thereof.
[0063] Server computing system 130 may train machine learning model 140 through interaction with training computing system 150 communicatively coupled via network 180. Training computing system 150 may be separate from server computing system 130 or may be a part of server computing system 130.
[0064] The training computing system 150 includes one or more processors 152 and a memory 154. The one or more processors 152 may be any suitable processing device (e.g., a processor core, a microprocessor, an ASIC, an FPGA, a controller, a microcontroller, etc.), and may be one processor or multiple processors operably connected. The memory 154 may include one or more non-transitory computer-readable storage media, such as RAM, ROM, EEPROM, EPROM, flash memory devices, disks, etc., and combinations thereof. The memory 154 may store data 156 and instructions 158 that are executed by the processor 152 to cause the training computing system 150 to perform operations. In some implementations, the training computing system 150 includes or is implemented by one or more server computing devices.
[0065] The training computing system 150 may include a model trainer 160 that trains the machine learning model 140 stored at the server computing system 130 using various training or learning techniques (e.g., backwards propagation of errors). In some implementations, performing error backpropagation may include performing truncated backpropagation through time. The model trainer 160 may perform a variety of generalization techniques (e.g., weight decay, dropouts, etc.) to improve the generalization ability of the model being trained. Specifically, the model trainer 160 may train the machine learning model 140 based on a set of training data 162.
[0066] In some implementations, if the user has provided consent, the training examples may be provided by the user computing device 102. Thus, in such implementations, the model 120 provided to the user computing device 102 may be trained by the training computing system 150 on user-specific data received from the user computing device 102. In some cases, this process may be referred to as personalizing the model.
[0067] Model trainer 160 includes computer logic for providing the desired functionality. Model trainer 160 may be implemented in hardware, firmware, and / or software that controls a general purpose processor. For example, in some implementations, model trainer 160 includes a program file stored on a storage device, loaded into memory, and executed by one or more processors. In other implementations, model trainer 160 includes one or more sets of computer executable instructions stored in a tangible computer readable storage medium, such as a RAM hard disk or optical or magnetic media.
[0068] Network 180 can be any type of communication network, such as a local area network (e.g., an intranet), a wide area network (e.g., the Internet), or some combination thereof, and can include any number of wired or wireless links. In general, communications through network 180 can be carried via any type of wired and / or wireless connection using a variety of communication protocols (e.g., TCP / IP, HTTP, SMTP, FTP), encodings or formats (e.g., HTML, XML), and / or protection schemes (e.g., VPN, secure HTTP, SSL).
[0069] Figure 1A An example computing system that can be used to implement the present disclosure is shown. Other computing systems may also be used. For example, in some implementations, the user computing device 102 may include a model trainer 160 and a training data set 162. In such implementations, the machine learning model 120 may be trained and used locally at the user computing device 102. In some of such implementations, the user computing device 102 may implement the model trainer 160 to personalize the machine learning model 120 based on user-specific data.
[0070] Figure 1B Depicted is a block diagram of an example computing device 10 according to an example embodiment of the present disclosure. Computing device 10 may be a user computing device or a server computing device.
[0071] The computing device 10 includes multiple applications (e.g., applications 1 to N). Each application contains its own machine learning library and machine learning model. For example, each application can include a machine learning model. Example applications include text messaging applications, email applications, browser applications, photo storage and management applications, etc.
[0072] like Figure 1B As shown, each application can communicate with multiple other components of the computing device (e.g., one or more sensors, context managers, device state components, and / or additional components). In some implementations, each application can communicate with each device component using an API (e.g., a public API). In some implementations, the API used by each application is specific to the application.
[0073] Figure 1C Depicted is a block diagram of an example computing device 50 according to an example embodiment of the present disclosure. Computing device 50 may be a user computing device or a server computing device.
[0074] The computing device 50 includes a plurality of applications (e.g., applications 1 to N). Each application communicates with a central intelligence layer. Example applications include text messaging applications, email applications, photo storage and management applications, browser applications, etc. In some implementations, each application can communicate with the central intelligence layer (and the models stored therein) using an API (e.g., a common API for all applications).
[0075] The central intelligence layer includes many machine learning models. For example, Figure 1C As shown, a corresponding machine learning model (e.g., a neural network model) can be provided for each application and managed by the central intelligence layer. In other implementations, two or more applications can share a single machine learning model. For example, in some implementations, the central intelligence layer can provide a single model (e.g., a single neural network model) for all applications. In some implementations, the central intelligence layer is included in or implemented by the operating system of the computing device 50.
[0076] The central intelligence layer can communicate with the central device data layer. The central device data layer can be a centralized repository for data of the computing devices 50. Figure 1C As shown, the central device data layer can communicate with multiple other components of the computing device (e.g., one or more sensors, context managers, device state components, and / or additional components). In some implementations, the central device data layer can communicate with each device component using an API (e.g., a private API).
[0077] 3. Example network structure
[0078] 3.1 Example Depthwise Separable Convolution
[0079] Depthwise separable convolutions can be a key building block for building effective neural networks. The basic idea is to replace the full convolution operator with a factorized version that splits the convolution into two separate layers. In some implementations, the first layer is called depthwise convolution, and lightweight filtering is applied by applying a single convolution filter to each input channel. In such an implementation, the second layer is a 1×1 convolution, called a pointwise convolution, which is responsible for building new features by calculating linear combinations of the input channels. Therefore, in some implementations, depthwise convolution applies a single filter to each input channel. Pointwise convolution then applies a 1×1 convolution to combine the outputs of the depthwise convolution.
[0080] Figure 2A -C shows how to convert the standard convolution ( Figure 2A ) is factorized into a depthwise convolution ( Figure 2B ) and 1×1 point-wise convolution ( Figure 2C ).
[0081] A standard convolution both filters and combines the inputs into a new set of outputs in a single step. Depthwise separable convolutions split this into two layers, a separate layer for filtering and a separate layer for combining. This factorization has the effect of drastically reducing computation and model size.
[0082] Specifically, the standard convolution can be adopted h i × i ×d i Input tensor L i And apply the convolution kernel To generate L j , that is, h i ×W i ×d j Output tensor. The computational cost of a standard convolutional layer is:
[0083] h i ·w i ·d i ·d j ·k·k (1)
[0084] The computational cost depends on the product of all terms.
[0085] Depthwise separable convolutions can replace standard convolutional layers at a cost of only:
[0086] h i ·w i ·d i ·k·k+h i ·w i ·d i ·d j (2)
[0087] This is the sum of a depthwise convolution and a 1×1 pointwise convolution.
[0088] Compared to traditional computational layers, depthwise separable convolution reduces computation by the following factor:
[0089]
[0090] In some example implementations of the neural network structure of the present disclosure, the convolutional neural network can use k=3 (3×3 depthwise separable convolution), so the computational cost is 8 to 9 times less than the standard convolution with only a slight reduction in accuracy.
[0091] 3.2 Example Discussion of Linear Bottleneck
[0092] Consider a deep neural network consisting of n layers. Looking at layer L i , such a layer has dimension h i × i ×d i In this section, we discuss the basic properties of these activation tensors, viewing them as having d i Dimension h i × i Informally, for the i-th layer, when the input is a real image, its "manifold of interest" will refer to the set of observable high-dimensional pixels. Obviously, this manifold is not directly expressible, but its various properties can be studied empirically. For example, it has been hypothesized that this manifold of interest in neural networks can be embedded in a low-dimensional subspace. In other words, when one looks at all the individual d-channel pixels of a deep convolutional layer, the information encoded in these values actually lies in some kind of manifold, which in turn can be embedded in a low-dimensional subspace. Note, however, that the dimensionality of a manifold is not the same as the dimensionality of a subspace that can be embedded via a linear transformation.
[0093] At first glance, one can then capture and exploit this fact by simply reducing the dimensionality of the layer by reducing the dimensionality of the operation space. However, this intuition breaks down when considering that deep convolutional neural networks actually have nonlinear per-coordinate transformations such as relu. For example, a relu applied to a line in 1D space produces a "ray", while in space, for a general orientation, it results in a piecewise linear curve with n joints. It can be seen that, in general, if the result of the layer transformation relu Bx is a non-zero volume S, then the points mapped to the interior of this set interior S are obtained by a linear transformation B of the input, indicating that the part of the input space corresponding to the full-size output is restricted to linear transformations. In other words, the deep network has the power of a linear classifier only in the non-zero volume part of the output domain.
[0094] This shows that if the output manifold has a non-zero volume part V, then the input mapped to V is mapped by a linear transformation. On the other hand, when ReLU collapses the volume, it inevitably loses information. However, it can also be shown that if the input manifold can be embedded in a significantly lower dimensional subspace of the closed space, the ReLU transform usually preserves the information while introducing much-needed complexity into the set of expressible functions.
[0095] In summary, aspects of the present disclosure recognize and exploit two properties that indicate that the manifold of interest should lie in a low-dimensional subspace of a higher-dimensional space. First, the set of non-zero volumes after passing through a neural network corresponds to a linear transformation. Second, ReLU is able to preserve complete information about the input manifold, but only if the input domain lies in a low-dimensional subspace of the input space.
[0096] Aspects of the present disclosure can optimize existing neural architectures based on these principles. Since the manifold of interest is low-dimensional, this can be captured by inserting a linear bottleneck layer into the convolutional block. The linear layer can prevent nonlinearity from destroying too much information. The ratio between the size of the input bottleneck and the internal size can be called the expansion ratio.
[0097] 3.3 Example Convolutional Block
[0098] Figure 3A and Figure 3B Depicted is a graphical diagram of an example convolutional block according to an example embodiment of the present disclosure.
[0099] First reference Figure 3A , depicting a first example convolutional block 300. The term "block" generally refers to a defined structure of one or more layers within a network, and may also be referred to as a module or sub-network. A neural network may include one or more convolutional blocks 300. For example, multiple blocks 300 may be stacked one after another.
[0100] The example convolution block 300 includes a linear bottleneck layer 302 and a dilated convolution block including a depthwise convolution layer 304 and a pointwise convolution layer 306.
[0101] According to another aspect of the present disclosure, the linear bottleneck layer 302 can operate or otherwise represent data in a first dimensional space, while one or more convolutional layers (e.g., separable convolutional layers 304 and 306) can operate or otherwise represent data in a second dimensional space, wherein the second dimensional space includes a large number of dimensions. Thus, the linear bottleneck layer 302 can be configured to operate in a low dimensional space (e.g., perform a linear transformation), while one or more convolutional layers 304 and 306 are configured to operate in a high dimensional space (e.g., perform one or more nonlinear transformations). Thus, the convolutional layers 304 and 306 can be referred to as "extended convolutional layers" or together as "extended convolutional blocks".
[0102] Thus, in contrast to certain existing network structures that rely solely on non-linear layers, the convolutional block 300 may include a bottleneck layer 302 that performs a linear transformation on its input data.
[0103] This dimensional structure enables a natural separation between the input domain and the output domain of the convolutional block. This allows decoupling the input / output domain from the expressibility of the transform, which provides a convenient framework for analysis. In addition, due to this alternating dimensional structure, in some cases, the convolutional block can be referred to as a "hybrid linear convolution block" and / or "alternating linear convolution block".
[0104] After the point-wise convolution layer 306 is a second linear bottleneck layer 312. As an example, in some implementations, the second linear bottleneck layer 312 can be a linear bottleneck layer of a subsequent iteration of the convolution block 300. Figure 3A In FIG. 3 , this relationship (ie, layer 312 belongs to the subsequent block) is indicated by the lighter shading applied to layer 312. Throughout the drawings, this convention of lighter shading indicating that the lighter shaded layer belongs to the subsequent block is continued.
[0105] Thus, in some implementations, a linear bottleneck layer (e.g., 312) of a subsequent convolutional block may take as input (e.g., perform a linear transformation on) the output of the convolutional layers (e.g., 304 and 306) of a previous convolutional block (e.g., block 300).
[0106] Thus, in a stacked configuration, a neural network may include multiple linear bottleneck layers interleaved with multiple non-linear convolutional layers (e.g., separable convolutional layers). Thus, depending on how the convolutional blocks are defined, the linear bottleneck layer of each block may be structurally located before or after the corresponding convolutional layer of the block.
[0107] For example, the order of linear bottleneck layers and convolutional layers can be switched by changing the convention for defining blocks. Figure 3B This principle is explained.
[0108] Figure 3B350. Convolutional block 350 includes a depthwise convolutional layer 352 and a pointwise convolutional layer 354. Layers 352 and 354 may be similar to those described above with reference to Figure 3A The layers 304 and 306 are operated.
[0109] Still reference Figure 3B , after the convolutional layers 352 and 354 is a linear bottleneck layer 356. The linear bottleneck layer 356 can be similar to the above reference Figure 3A The layers 302 and / or 312 are operated.
[0110] Still reference Figure 3B , the linear bottleneck layer 356 is followed by one or more additional convolutional layers 362. For example, the additional convolutional layers 362 may be separable convolutional layers such that one or more additional depthwise convolutional layers are immediately followed by the linear bottleneck layer 356.
[0111] Therefore, reference Figure 3A and Figure 3B Both, it can be seen that the example convolutional block may include a linear bottleneck layer that is structurally located before and / or after one or more convolutional layers (e.g., a convolutional layer such as a separable convolutional layer that performs a non-linear transformation). In fact, in practice, example blocks 300 and 350 are equivalent when placed in a stacked configuration, respectively. In some implementations, the initial block and / or the final block in the stack may include two linear bottleneck layers.
[0112] As another example, Figure 5A Depicted is a flow diagram of another example convolution block according to an example embodiment of the present disclosure.
[0113] 3.4 Example Reverse Residual Block
[0114] Figure 4 A graphical diagram of an example reverse residual block 400 is depicted according to an example embodiment of the present disclosure. The reverse residual block 400 may be similar to the convolution blocks 300 and 350 described above, but may further include passing residual information between layers (e.g., between linear bottleneck layers 402 and 412) via residual shortcut connections 408.
[0115] More specifically, the example reverse residual block 400 may include a linear bottleneck layer 402. After the linear bottleneck layer 402, the block 400 may further include one or more convolutional layers. Figure 4 As shown, the block 400 may further include a plurality of depthwise convolutional layers 404 and a plurality of pointwise convolutional layers 406. For example, these layers 404 and 406 may be referred to as dilated convolutional layers or dilated convolutional blocks.
[0116] The second linear bottleneck layer 412 may be after the convolutional layers 404 and 406. As an example, in some implementations, the second linear bottleneck layer 412 may be a linear bottleneck layer of a subsequent iteration of the inverse residual block 400.
[0117] Thus, in some implementations, the linear bottleneck layer (e.g., 412) of a subsequent inverse residual block may take as input (e.g., perform a linear transformation on) the output of the convolutional layers (e.g., 404 and 406) of the previous convolutional block (e.g., block 400).
[0118] In addition, according to an aspect of the present disclosure, the linear bottleneck layer 402 can be configured to provide residuals to the second linear bottleneck layer 412 via the residual shortcut connection 408. The second linear bottleneck layer 412 can be configured to add the residuals to the output it generates by transforming the output of the point-by-point convolution layer 406. This pattern can be repeated. That is, similar to layer 412, the linear bottleneck layer 402 can receive residuals from the previous linear bottleneck layer of the previous reverse residual block (e.g., the previous sequential reverse residual block) (not shown). Similarly, the linear bottleneck layer 412 itself can provide residuals to the linear bottleneck layer of the subsequent block (e.g., the next sequential block) (not shown).
[0119] One motivation for inserting shortcuts is similar to the motivation for classic residual connections: improving the ability to propagate gradients across multiple layers. However, the inverse design is much more memory efficient, as well as providing improved performance.
[0120] Furthermore, in the networks described herein, layers are removable. For example, a convolutional block (e.g., an inverted residual block) can be removed and the rest of the network can be rewired without any retraining and with only a small cost in accuracy.
[0121] As another example, Figure 5B Depicted is a flowchart of another example reverse residual block according to an example embodiment of the present disclosure.
[0122] Figure 3A -B. Figure 4 and Figure 5A - The specific layers, filters, or kernel sizes shown in B are provided as examples only.
[0123] 4. Example network implementation
[0124] An example architecture of an example model implementation (referred to as "MobileNet V2") will now be described in detail. This example provides one example of possible implementations of aspects of the present disclosure. The present disclosure is not limited or restricted to the example implementations.
[0125] As mentioned in the previous sections, the basic building block can be a bottleneck depthwise separable convolution with residual. The architecture of MobilenetV2 can contain an initial fully convolutional layer with 32 filters, followed by 19 residual bottleneck layers listed in Table 2. Relu6 can be used as the source of nonlinearity due to its robust nature when used for low-precision calculations. A kernel size of 3×3 can be used, which is standard for modern networks. During training, random dropout and batch normalization can be utilized.
[0126] The example architecture can use a constant expansion rate throughout the network except for the first layer. Expansion rates between 5 and 10 result in almost identical performance curves, with smaller networks performing better with smaller expansion rates and larger networks performing slightly better with larger expansion rates.
[0127] In some example experiments performed on example implementations of the present disclosure, an expansion factor of 6 is always applied to the size of the input tensor. For example, for a bottleneck layer that takes a 64-channel input tensor and produces a tensor of size 128 channels, the intermediate expansion layer is 64*6=384 channels.
[0128] Table 1: Transformation of the bottleneck residual block from k channels to k′ channels, with stride s and expansion factor t.
[0129]
[0130] Table 2: Example Mobilenet V2 architecture. Each row describes a sequence of one or more identical (modulo stride) layers, depending on the number of repetitions. The last layer in each block can have stride 1 or 2. Fewer blocks with stride 2 can be used to preserve the layout of internal tensors. Scaling can always be applied to the input tensors.
[0131]
[0132] Trade-off hyperparameters: By using input image resolution and width multiplier as tunable hyperparameters that can be adjusted based on the desired accuracy / performance trade-off, the architecture can be tailored to different performance points. An example network (multiplier 1, 224x224) has a computational cost of 300 million multiply-adds and uses 3.4 million parameters. Performance trade-offs were explored for input resolutions ranging from 96 to 224 and width multipliers from 0.35 to 1.5. The network computational cost varied from 7 multiply-adds to 920 multiply-adds, while the model size varied between 1.7M and 5.3M. For multipliers less than 1, the width multiplier can be applied to all layers except the last convolutional layer. This improves the performance of smaller models.
[0133] 5. Example Implementation Description
[0134] 5.1 Example Storage Effective Inference
[0135] The inverted residual bottleneck layer allows for a particularly memory-efficient implementation, which is very important for mobile applications. Using standard efficient implementations of inference such as Tensorflow or Caffe, a directed acyclic computation hypergraph G can be constructed, consisting of edges representing operations and nodes representing tensors for intermediate computations. The computations are scheduled in order to minimize the total number of tensors that need to be stored in memory. In the most general case, it searches over all possible computation orders Σ(G) and picks the one that minimizes:
[0136]
[0137] Among them, R(i,π,G) is connected to π i …π n A list of intermediate tensors for any of the nodes, where |A| represents the size of node |A|, and size(i) is the total amount of storage required for internal storage during operation i.
[0138] For graphs with only trivially parallel structures (e.g., residual connections), there is only one non-trivial feasible order of computation, so the total amount and bounds of storage required to perform inference on the computation graph G can be simplified:
[0139]
[0140] In other words, the amount of storage is the maximum total size of the combined inputs and outputs over all tensors. In the following, it is shown that if the bottleneck residual block is treated as a single operation (and the inner convolutions are treated as one-shot tensors), the total amount of storage is dominated by the size of the bottleneck tensor rather than by the size of the tensors inside the bottleneck (which are even much larger).
[0141] Bottleneck residual block: In some implementations, the bottleneck block operator F(x) can be expressed as a composite of three operators: where A is the linear transformation A:R s×s×k →R s×s×n , is a nonlinear per-channel transform: And B is still a linear transformation of the output domain: B:R s′×s′×n →R s′×s′×k′ .
[0142] For some example implementations of the various aspects described herein, But the results hold for any per-channel transform. Assuming the input domain is of size |x| and the output domain is of size |y|, then F(X) can be written using only |s 2 k|+|s′ 2 k′|+O(max(s 2 ,s′ 2 ))'s storage.
[0143] The example algorithm can be based on the fact that the internal tensor I can be represented as the concatenation of t tensors of size n / t, and then the function can be expressed as:
[0144]
[0145] By accumulating the sum, only an intermediate block of size n / t needs to be kept in memory at all times. With n=t, one may end up having to keep only a single channel of the intermediate representation at all times. The two constraints that enable this trick are: (a) the fact that the internal transform (which can include nonlinearities and depth) is per-channel, and (b) the fact that continuous non-per-channel operators have a large ratio of input size to output. For most traditional neural networks, this trick does not produce a noticeable improvement.
[0146] Note that the number of multiply-add operators required to compute F(X) using t-way splitting is independent of t, however, in existing implementations, replacing one matrix multiplication with several smaller multiplications was found to hurt runtime performance due to increased cache misses. This approach was found to be most useful when used for small constants of t between 2 and 5, which significantly reduces storage requirements and still allows exploiting most of the efficiencies gained by using highly optimized matrix multiplication and convolution operators provided by deep learning frameworks. Special framework-level optimizations may lead to further runtime improvements.
[0147] 6. Example Applications and Experiments
[0148] The networks and network structures described in this disclosure can be used to solve multiple different problems or be applied to multiple different tasks. The following provides example experiments of example implementations of various aspects of the disclosure. These are provided only as examples. The disclosure is not limited to or by these examples.
[0149] 6.1 ImageNet Classification
[0150] As an example, a convolutional neural network including one or more structures described herein can be trained to perform image classification.
[0151] Example training setup: Training can be performed using Tensorflow. A standard RMSPropOptimizer with both decay and momentum set to 0.9 can be used. Batch normalization can be used after each layer, and the standard weight decay can be set to 0.00004. An initial learning rate of 0.045 can be used, and the learning rate decay rate per epoch is 0.98. Training can be performed by 16 GPU asynchronous workers with a batch size of 96.
[0152] Example Results: The example network of the present disclosure is compared with the MobileNetV1, ShuffleNet, and NASNet-A models. For ShuffleNet, see Zhang et al., “Sufflenet: An extremely efficient convolutional neural network for mobile devices,” CoRR, abs / 1707.01083, 2017. For NASNet-A, see Zoph et al., “Learning Transferable architectures for scalable image recognition,” CoRR, abs / 1707.07012, 2017.
[0153] Table 4 provides statistics for several selected models. Figure 6 A complete performance picture is given. Specifically, Figure 6 The performance curves of MobileNetV2 relative to MobileNetV1, SuffleNet and NAS are shown. For all MobileNetV2 networks, multipliers 0.35, 0.5, 0.75 and 1.0 are used for all resolutions, while adder 1.4 is used for 224.
[0154] Table 4: ImageNet performance, comparison of different networks. Following the convention of the operation, the total number of multiplications and additions is counted. In the last column, the runtime (in milliseconds (ms)) of running these networks on a single large core of a Pixel Phone using a proprietary optimized Tensorflow is reported. ShuffleNet numbers are not reported because the framework does not yet support efficient group convolutions.
[0155]
[0156] 6.2 Example Object Detection
[0157] As another example, a convolutional neural network including one or more structures described herein can be trained to perform object detection. For example, a Single Shot Detector (SSD) model can be modified to form a mobile-friendly variant, which can be referred to as "SSDLite". Specifically, in the SSD prediction layer, all conventional convolutions can be replaced with separable convolutions (e.g., depth followed by 1x1 projection). This design is consistent with the overall design of MobileNet and shows higher computational efficiency. Compared with conventional SSD, SSDLite greatly reduces both the number of parameters and computational cost, as shown in Table 5 below.
[0158] Table 5: Comparison of size and computational cost between SSD and SSDLite configured with MobilenetV2 and predicting 80 classes.
[0159]
[0160] The performance of MobileNetV2 and V1 as feature extractors for object detection is compared with a modified version of the Single Shot Detector (SSD) on the COCO dataset. These are also compared with YOLOv2 as a baseline and the original SSD (with VGG-16 as the base network).
[0161] For MobileNetV2, the first layer of SSDLite is attached to the middle expansion layer of layer 15 (output stride is 16), and the second layer and the remaining layers of SSDLite are attached to the top of the last layer (output stride is 32). This setting is consistent with MobileNet V1, as the first and second layers are attached to the base network feature maps with the same output stride.
[0162] Both MobileNet models were trained and evaluated using the open source Tensorflow object detection API. The input resolution for both models was 320x320. The mAP (COCO challenge metric), number of parameters, and number of multiplications and additions were benchmarked and compared. The results are shown in Table 6. MobileNetV2 SSDLite is not only the most efficient model, but also the most accurate of the three models. It is worth noting that MobileNetV2 SSDLite is 20 times more efficient and 10 times smaller in size, but still outperforms YOLOv2 on the COCO dataset.
[0163] Table 6: Performance comparison of MobileNetV2+SSDLite and other real-time detectors on the COCO dataset object detection task. MobileNetV2+SSDLite achieves competitive accuracy with very few parameters and computational complexity. All models are trained on trainval35k and evaluated on test-dev.
[0164]
[0165] 6.3 Example Semantic Segmentation
[0166] As another example, a convolutional neural network including one or more structures described herein can be trained to perform semantic segmentation. For example, the MobileNet architecture can be used as a feature extractor with DeepLabv3 (see Liang-Chieh Chen et al., "Rethinking atrous convolution for semantic image segmentation", CoRR, abs / 1706.05587, 2017).
[0167] Specifically, MobileNet can be used as a feature extractor with DeepLabv3 for semantic segmentation tasks. DeepLabv3 adopts a powerful tool - atrous convolution to explicitly control the resolution of the computed feature map, and constructs five parallel heads, including (a) an atrous spatial pyramid pooling module (ASPP), which contains three 3×3 convolutions with different atrous rates, (b) a 1×1 convolution head, and (c) image-level features. The ratio of the input image spatial resolution to the final output resolution is represented by output_stride, which is controlled by appropriately applying atrous convolutions. For semantic segmentation, output_stride=16 can be used; alternatively, for denser feature maps, output_stride=8 can be used. Example experiments are performed on the PASCAL VOC 2012 dataset with additional annotated images and the evaluation metric mIOU.
[0168] Experiments were conducted mainly on the following three aspects: (1) different feature extractors; (2) simplifying the DeepLabv3 head for faster computation; and (3) different inference strategies to improve performance. The main results are listed in Table 7 below. It can be observed from the table that (a) the inference strategy including multi-scale input and adding left-right flipped images significantly increases FLOPS and is therefore not suitable for application on the device; (b) using output_stride=16 is more efficient than output_stride=8, thereby reducing computation; (c) MobileNetV1 is already a powerful feature extractor and only requires about 4.9-5.7 times less FLOPS than ResNet-101 (e.g., mIOU: 78.56 vs 82.70, FLOPS: 1983.80 vs 9741.18); (d) Building the DeepLabv3 head on top of the penultimate feature map of MobileNetV2 is more efficient than the original last feature map because the penultimate feature map contains 320 channels instead of 1280 channels, and by doing so, similar performance can be achieved while requiring approximately 2.5 times fewer FLOPS than the corresponding FLOPS of MobileNetV1; and (e) The DeepLabv3 head is computationally very expensive, and removing the ASPP module significantly reduces the FLOPS with a slight performance degradation. Finally, a candidate for on-device application is identified in bold in the table, which achieves 75.32% mIOU and requires only 5.5B FLOPS (or 2.75B MAdds).
[0169] Table 7: MobileNet+DeepLabv3 inference strategy on the PASCAL VOC 2012 validation set. MNet V2*: The penultimate feature map is used for the DeepLabv3 head, which includes (1) an atrous spatial pyramid pooling (ASPP) module, and (2) a 1×1 convolution and image pooling feature. OS: output_stride, which controls the output resolution of the segmentation map. MF: Multi-scale and left-right flipped input during testing. All models have been pre-trained on COCO. Potential candidates for on-device applications are shown in bold. PASCAL images are of size 512x512, and the atrous convolutions allow us to control the output feature resolution without increasing the number of parameters.
[0170]
[0171] 6.4 Additional Example Experiments
[0172] Fig. 7A and Figure 7B Additional example experimental results of example embodiments of the present disclosure are depicted.
[0173] Specifically, Fig. 7A Figure 1 shows the effect of nonlinearity in the bottleneck layer. It is theoretically conjectured that a linear bottleneck model is much less powerful than a nonlinear bottleneck model, since the activations can always be manipulated in the linear regime with appropriate changes to the bias and scaling. However, Fig. 7A The example experimental results shown show that the linear bottleneck actually improves the performance, indicating that nonlinear operators are not beneficial in the low-dimensional space of the bottleneck.
[0174] Figure 7B The effect of changes in the residual block is shown. Specifically, Figure 7B The example experimental results shown in show that shortcuts connecting bottleneck layers perform better than shortcuts connecting expansion layers.
[0175] 7. Example Discussion
[0176] Aspects of the present disclosure are directed to a new network architecture that enables a range of models that push the state of the art at multiple performance points. A fundamental building block - the bottleneck residual block has multiple properties that make it particularly suitable for mobile applications. It allows very memory efficient inference and can leverage standard operations present in all neural frameworks.
[0177] For the ImageNet dataset, the example architecture according to the present disclosure is applicable to models ranging from 10 million multiplications to 700 million multiplications, thereby improving the existing technology. In addition, the architecture is much simpler than the previous state-of-the-art technology based on automatic network search.
[0178] For object detection tasks, the example network according to the present disclosure outperforms the most advanced real-time detectors on the COCO dataset in terms of both accuracy and model complexity. Notably, the architecture combined with the modified SSD detection module has 20 times less computation and 10 times fewer parameters than YOLOv2.
[0179] In theory: The proposed convolutional blocks have unique properties that allow decoupling the network expressiveness (encoded by the expansion layers) from its capacity (encoded by the bottleneck input).
[0180] 8. Additional Disclosures
[0181] The techniques discussed herein refer to servers, databases, software applications, and other computer-based systems, as well as actions taken and information sent to and from such systems. The inherent flexibility of computer-based systems allows for a wide variety of possible configurations, combinations, and divisions of tasks and functions among components. For example, the processes discussed herein may be implemented using a single device or component or multiple devices or components working in combination. Databases and applications may be implemented on a single system or distributed across multiple systems. Distributed components may run sequentially or in parallel.
[0182] Although the subject matter has been described in detail with respect to various specific example embodiments of the subject matter, each example is provided by way of illustration rather than limitation of the present disclosure. Those skilled in the art can easily give changes, modifications and equivalents to these embodiments after understanding the foregoing. Therefore, the subject matter disclosure does not exclude the inclusion of such modifications, modifications and / or additions to the subject matter as will be readily understood by those of ordinary skill in the art. For example, a feature shown or described as a part of an embodiment can be used together with another embodiment to produce yet another embodiment. Therefore, the present disclosure is intended to cover such changes, modifications and equivalents.
Claims
1. A computing system comprising: one or more processors; and One or more non-transitory computer-readable media storing: A convolutional neural network configured to process an input image to generate a prediction, the convolutional neural network comprising: an initial convolutional layer configured to receive and process the input image to generate a first intermediate representation; A plurality of reverse residual bottleneck blocks arranged in a sequence one after another, the plurality of reverse residual bottleneck blocks being configured to receive and process the first intermediate representation to generate a second intermediate representation, each of the plurality of reverse residual bottleneck blocks comprising one or more layer repetitions, each layer repetition comprising: Convolutional layers configured to apply depthwise convolutions; a convolutional layer configured to apply point-wise convolution; and a linear bottleneck layer configured to perform a linear transformation on its input data; and configured to receive and process the second intermediate representation to generate one or more subsequent layers of the prediction; and Instructions that, when executed by the one or more processors, cause the computing system to process the input image using the convolutional neural network to generate the prediction.
2. The computing system of claim 1, wherein: The initial convolutional layer applies a 3×3 filter.
3. The computing system of claim 1, wherein: The initial convolutional layer includes 32 channels.
4. The computing system of claim 1, wherein: The plurality of reverse residual bottleneck blocks include 7 reverse residual bottleneck blocks.
5. The computing system of claim 4, wherein: Each of at least a first order reverse residual bottleneck block, a second order reverse residual bottleneck block, and a fourth order reverse residual bottleneck block of the seven reverse residual bottleneck blocks applies a 3×3 filter.
6. The computing system of claim 4, wherein: A first order reverse residual bottleneck block of the 7 reverse residual bottleneck blocks has an expansion factor of 1, and each of a second order reverse residual bottleneck block, a third order reverse residual bottleneck block, a fourth order reverse residual bottleneck block, a fifth order reverse residual bottleneck block, a sixth order reverse residual bottleneck block and a seventh order reverse residual bottleneck block of the 7 reverse residual bottleneck blocks has an expansion factor of 6.
7. The computing system of claim 1, wherein: A first order reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks includes 16 channels.
8. The computing system of claim 1, wherein: A second sequential reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks includes 24 channels.
9. The computing system of claim 1, wherein: The final sequential reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks includes 320 channels.
10. The computing system of claim 1, wherein: A first sequential backward residual bottleneck block of the plurality of backward residual bottleneck blocks comprises a single layer repetition.
11. The computing system of claim 1, wherein: A second sequential backward residual bottleneck block of the plurality of backward residual bottleneck blocks includes two layer repetitions.
12. The computing system of claim 1, wherein: A final sequential backward residual bottleneck block of the plurality of backward residual bottleneck blocks comprises a single layer repetition.
13. The computing system of claim 1, wherein: A first order reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks has two thirds of the channels of a second order reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks.
14. The computing system of claim 1, wherein: A first order reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks has half the layer repetition of a second order reverse residual bottleneck block of the plurality of reverse residual bottleneck blocks.
15. The computing system of claim 1, wherein: The one or more subsequent layers perform at least one subsequent convolution and pooling operation.
16. One or more non-transitory computer-readable media storing: A convolutional neural network configured to process an input image to generate a prediction, the convolutional neural network comprising: an initial convolutional layer configured to receive and process the input image to generate a first intermediate representation; a plurality of reverse residual bottleneck blocks arranged in a sequence one after another, the plurality of reverse residual bottleneck blocks being configured to receive and process the first intermediate representation to generate a second intermediate representation, each of the plurality of reverse residual bottleneck blocks comprising a linear bottleneck layer and a depthwise separable convolutional layer, the linear bottleneck layer being configured to perform a linear transformation on its input data; and configured to receive and process the second intermediate representation to generate one or more subsequent layers of the prediction; and Instructions that, when executed by one or more processors, cause a computing system to process the input image using the convolutional neural network to generate the prediction.
17. The one or more non-transitory computer-readable media of claim 16, wherein: The initial convolutional layer includes 32 channels.
18. The one or more non-transitory computer-readable media of claim 16, wherein: The plurality of reverse residual bottleneck blocks include 7 reverse residual bottleneck blocks.
19. The one or more non-transitory computer-readable media of claim 18, wherein: Each of at least a first order reverse residual bottleneck block, a second order reverse residual bottleneck block and a fourth order reverse residual bottleneck block of the seven reverse residual bottleneck blocks applies a 3×3 filter.
20. The one or more non-transitory computer-readable media of claim 18, wherein: A first order reverse residual bottleneck block of the 7 reverse residual bottleneck blocks has an expansion factor of 1, and each of a second order reverse residual bottleneck block, a third order reverse residual bottleneck block, a fourth order reverse residual bottleneck block, a fifth order reverse residual bottleneck block, a sixth order reverse residual bottleneck block and a seventh order reverse residual bottleneck block of the 7 reverse residual bottleneck blocks has an expansion factor of 6.
Citation Information
Patent Citations
Highly efficient convolutional neural networks
CN111213160A