WO2020149178A1 - ニューラルネットワークの縮約装置 - Google Patents

ニューラルネットワークの縮約装置 Download PDF

Info

Publication number
WO2020149178A1
WO2020149178A1 PCT/JP2020/000231 JP2020000231W WO2020149178A1 WO 2020149178 A1 WO2020149178 A1 WO 2020149178A1 JP 2020000231 W JP2020000231 W JP 2020000231W WO 2020149178 A1 WO2020149178 A1 WO 2020149178A1
Authority
WO
WIPO (PCT)
Prior art keywords
neural network
unit
arithmetic
accuracy
calculations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2020/000231
Other languages
English (en)
French (fr)
Inventor
浩朗 伊藤
豪一 小野
理宇 平井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to US17/298,801 priority Critical patent/US12412097B2/en
Priority to DE112020000202.0T priority patent/DE112020000202T5/de
Priority to CN202080006824.3A priority patent/CN113272831B/zh
Priority to JP2020566382A priority patent/JP7104183B2/ja
Publication of WO2020149178A1 publication Critical patent/WO2020149178A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Definitions

  • the present invention relates to a contracting device for a neural network.
  • a neural network is known as a machine learning method used for object recognition and the like.
  • a convolution operation and the like which requires a large number of operations, are performed, which has been a problem when an arithmetic unit mounted on a vehicle performs real-time processing.
  • a reduction method that reduces the calculation load of the neural network while suppressing the influence on the recognition performance by reducing the branches (interlayer coupling) in which the weighting factor of each node of the neural network is equal to or less than the threshold value ( A compression method) is disclosed (see Non-Patent Document 1).
  • Non-Patent Document 1 discloses a method of reducing the number of operations of the neural network by reducing some branches of the neural network. However, even if the number of operations is reduced, the processing time of the arithmetic processing is shortened. Not necessarily. In addition, a plurality of arithmetic units provided in the arithmetic unit may not be effectively used for the arithmetic processing of the neural network. Such a problem may occur not only in the vehicle-mounted arithmetic device but also in other arithmetic devices using a neural network.
  • the present invention is to solve the above problems, and an object of the present invention is to reduce the processing time of a neural network and reduce the number of operations of the neural network so that a plurality of arithmetic units can be effectively used. It is to provide a contracting device.
  • a neural network contracting apparatus is a neural network contracting apparatus that reduces the number of operations of a neural network by an arithmetic unit including a plurality of arithmetic units by contracting the neural network.
  • An arithmetic unit assigning unit that sets the assigned number of the arithmetic units for the arithmetic processing of the neural network; an arithmetic operation number setting unit that sets the arithmetic operation number of the neural network after contraction based on the assigned number of the arithmetic units;
  • a neural network contracting unit for contracting the neural network so that the number of operations of the neural network by the arithmetic unit becomes equal to the number of operations set by the operation number setting unit.
  • FIG. 11 is a diagram showing another example of the node processing of the first intermediate layer according to the first embodiment.
  • FIG. 1 is a block diagram of an automatic driving system according to the first embodiment.
  • the neural network contracting device may be a monitoring camera system, a medical image diagnostic system, a voice recognition system, or the like. It can be applied to other systems.
  • a vehicle 10 that automatically drives using a neural network and a server 20 that periodically notifies the vehicle 10 of parameters of the neural network are connected by wireless communication. ..
  • the vehicle 10 is provided with a camera 120 that captures an image of the surroundings of the vehicle, a vehicle control unit 110 that controls automatic driving of the vehicle 10, and an actuator 130 that is used for various operations such as accelerator, brake, and steering.
  • the server 20 is equipped with a neural network contracting apparatus 100 that reduces the number of operations of the neural network by the contracting technique.
  • the vehicle control unit 110 includes an image input unit 111 that converts an image input from the camera 120 into a predetermined format, an image recognition unit 112 that recognizes an image using a neural network, and an actuator that outputs a control signal corresponding to the recognition result.
  • a signal output unit 113 for outputting to 130 is provided.
  • the image recognition unit 112 is notified by the neural network contracting apparatus 100 of the parameters of the contracted neural network.
  • the parameter of the neural network is a parameter for constructing the contracted neural network in the image recognition unit 112, and is, for example, a weighting coefficient used in the neural network.
  • the image recognition unit 112 constructs a reduced neural network based on the parameters notified from the neural network reduction device 100, and recognizes the image input from the image input unit 111 using the neural network.
  • the signal output unit 113 outputs to the actuator 130 a control signal including vehicle control information necessary for automatic driving such as the traveling direction and traveling speed of the host vehicle based on the recognition result of the image.
  • the actuator 130 includes a drive actuator for accelerator, a braking actuator for brake, a steering actuator for steering, and the like. The actuator 130 controls the vehicle 10 based on the control signal from the signal output unit 113.
  • the vehicle control unit 110 is realized by the arithmetic device 140 including a plurality of arithmetic units.
  • An arithmetic unit of the arithmetic unit 140 is assigned to various processes of the vehicle control unit 110.
  • image recognition using a neural network is performed, and automatic driving control of the vehicle 10 is performed based on the recognition result. ..
  • the image recognition process has a large calculation load, and therefore, a larger number of computing units are assigned to the image recognition process than the other processes of the vehicle control unit 110.
  • the neural network contracting apparatus 100 is provided with a neural network holding unit 101, an arithmetic unit allocating unit 102, an arithmetic operation number setting unit 103, and a neural network contracting unit 104.
  • the neural network holding unit 101 holds a learned neural network that has been learned by a PC, a server, or the like, that is, a neural network used for inference processing.
  • the arithmetic unit allocating unit 102 sets the number of arithmetic units to be allocated to the arithmetic unit 140 for the arithmetic processing of the neural network when the image recognition unit 112 performs image recognition using the neural network.
  • the arithmetic unit allocation unit 102 sets the number of allocated arithmetic units input by the user via the input device or the like in the reduction device 100.
  • the number-of-calculations setting unit 103 calculates the number of calculations necessary for the calculation processing of the neural network held in the neural network holding unit 101, and sets the number of calculations of the neural network after contraction based on the number of assigned computing units. ..
  • the neural network contracting unit 104 contracts the neural network held in the neural network holding unit 101 so that the number of times the neural network is operated by the operation device 140 becomes equal to the number of times of operations set by the number-of-operations setting unit 103. To do. Further, the neural network contracting unit 104 notifies the image recognition unit 112 of the vehicle 10 of the parameters of the contracted neural network, and reduces the number of operations of the neural network used for the image recognition processing of the image recognition unit 112. ing.
  • Each unit of the contracting apparatus 100 of the neural network may be realized by software using a processor, or may be realized by a logic circuit (hardware) formed in an integrated circuit or the like.
  • the processor reads and executes the program stored in the memory to execute various processes.
  • the processor for example, a CPU (Central Processing Unit), MPU (Micro Processing Unit), GPU (Graphics Processing Unit), etc. are used.
  • the memory is configured by one or a plurality of recording media such as ROM (Read Only Memory) and RAM (Random Access Memory) depending on the purpose.
  • FIG. 2 is a diagram illustrating an example of the neural network according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of node processing of the first intermediate layer according to the first embodiment.
  • FIG. 4 is a diagram illustrating another example of node processing of the first intermediate layer according to the first embodiment.
  • FIG. 5 is a diagram illustrating an example of node processing of the second intermediate layer according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of node processing in the output layer according to the first embodiment.
  • FIG. 7 is a diagram illustrating an example of the contraction process according to the first embodiment. Further, in the following description, for convenience of description, the reference numerals of FIG.
  • the neural network includes an input layer 200, a first intermediate layer 201, a second intermediate layer 202, and an output layer 203.
  • the neural network When five input values X 0 -X 4 are input to the input layer 200, the neural network outputs two output values Y 0 , Y from the output layer 203 via the first and second intermediate layers 201, 202. 1 is output.
  • the input layer 200 is provided with five input nodes N X0 to N X4 as input elements
  • the output layer 203 is provided with two output nodes N Y0 and N Y1 as output elements.
  • the first intermediate layer 201 is provided with nodes N 00 -N 03 as arithmetic elements
  • the second intermediate layer 202 is provided with nodes N 10 -N 13 .
  • the nodes N 00 -N 03 of the first intermediate layer 201 multiply the input values X 0 -X 4 input from the input layer 200 by the weighting factor set for each interlayer coupling (branch), and perform each multiplication.
  • the result of adding the results is output to the nodes N 10 -N 13 of the second intermediate layer 202.
  • the nodes N 10 -N 13 of the second intermediate layer 202 multiply the values input from the nodes N 00 -N 03 of the first intermediate layer 201 by the weighting factor set for each interlayer coupling, and
  • the result of adding the multiplication results is output to the output nodes N Y0 and N Y1 of the output layer 203.
  • the output nodes N Y0 and N Y1 of the output layer 203 multiply the values input from the nodes N 10 -N 13 of the second intermediate layer 202 by the weighting factor set for each interlayer coupling, and the respective multiplication results And outputs the result of adding as output values Y 0 and Y 1 .
  • FIG. 3 shows the arithmetic processing of the node N 00 of the first intermediate layer 201.
  • the node N 00 of the first intermediate layer 201 uses the weighting factors W 000 -W 040 between the input nodes N X0 -N X4 and the node N 00 of the input layer 200, and outputs from the node N 00.
  • the output value Z 00 is calculated by the following equation (1).
  • Z 00 X 0 *W 000 +X 1 *W 010 +X 2 *W 020 +X 3 *W 030 +X 4 *W 040 (1)
  • FIG. 4 shows the arithmetic processing of the node N 01 of the first intermediate layer 201.
  • the input node N X0 weighting factor of layers of -N X4 and node N 01 W 001 -W 041 of node N 01 in the input layer 200 of the first intermediate layer 201 is used, is output from the node N 01
  • the output value Z 01 is calculated by the following equation (2).
  • the output values Z 02 and Z 03 are similarly output to the other nodes N 02 and N 03 of the first intermediate layer 201.
  • Z 01 X 0 *W 001 +X 1 *W 011 +X 2 *W 021 +X 3 *W 031 +X 4 *W 041 (2)
  • FIG. 5 shows the arithmetic processing of the node N 10 of the second intermediate layer 202. 5 the node N 00 -N 03 and the weight coefficient W 100 -W 130 of layers of nodes N 10 of the second node N in 10 the first intermediate layer 202 of the intermediate layer 201 is used, from the node N 10
  • the output value Z 11 to be output is obtained by the following equation (3).
  • the output values Z 11 -Z 13 are similarly output to the other nodes N 11 -N 13 of the second intermediate layer 202.
  • Z 11 Z 00 *W 100 +Z 01 *W 110 +Z 02 *W 120 +Z 03 *W 130 (3)
  • FIG. 6 shows the arithmetic processing of the output node N Y0 of the output layer 203.
  • the weighting factors W 200 -W 230 between the nodes N 10 -N 13 and the output node N Y0 of the second intermediate layer 202 are used, and the output nodes N Y0 to The output value Y 0 to be output is obtained by the following equation (4).
  • the output value Y 1 is similarly output to the other output node N Y1 of the output layer 203.
  • Y 0 Z 10 *W 200 +Z 11 *W 210 +Z 12 *W 220 +Z 13 *W 230 (4)
  • the neural network of this embodiment is used for the image recognition unit 112 for automatic driving.
  • Image input values X 0 -X 4 are input from the image input unit 111 to the input nodes N X0 -N X4 of the input layer 200, and output values which are image recognition results from the output nodes N Y0 , N Y1 of the output layer 203.
  • Y 0 and Y 1 are output.
  • the probability that the image is another vehicle is output as Y 0
  • the probability that the image is a pedestrian is output as Y 1 .
  • the vehicle control unit 110 controls the own vehicle to follow the other vehicle, and when the image has a high probability of being a pedestrian, the own vehicle avoids the pedestrian. Controlled by.
  • the neural network includes a network configuration and a weighting factor for obtaining a desired output value from the input value, and the neural network holding unit 101 stores various information such as the network configuration and the weighting factor.
  • the arithmetic unit allocating unit 102 sets the number of arithmetic units to be allocated to the arithmetic processing of the neural network, that is, the image recognition processing of the image recognition unit 112.
  • the number of arithmetic units assigned to the image recognition process is set in consideration of the processing load of each unit of the vehicle control unit 110.
  • An FPGA Field Programmable Gate Array
  • the FPGA is an arithmetic unit 140 capable of designing and executing desired processing in the form of a logic circuit.
  • the FPGA is equipped with an arithmetic unit called DSP (Digital Signal Processor) that can process multiply-accumulate operations at high speed, and is useful for processing multiplication and addition of neural networks at high speed. Since the number of DSPs to be mounted is predetermined for each FPGA, the arithmetic unit allocating unit 102 sets the number of DSPs used for arithmetic processing of the neural network. Note that the number of operations of the neural network is generally much larger than the number of DSPs of the FPGA, and it is difficult to process the entire neural network at once. Therefore, the calculation processing of the neural network is performed in a plurality of times. Further, the arithmetic device 140 is not limited to the FPGA, and may be any device provided with a plurality of product-sum arithmetic units usable for the neural network.
  • the calculation count setting unit 103 calculates the calculation count of the neural network before reduction. As an example, the number of calculations required for the calculation processing of the neural network shown in FIG. 2 will be described.
  • the arithmetic processing of each node of the second intermediate layer 202 requires a total of 7 arithmetic operations including 4 multiplications and 3 additions as shown in the above equation (3).
  • the number-of-calculations setting unit 103 reduces the number of calculations of the neural network before the reduction, and reduces the neural network after the reduction to an integer multiple of the number of assigned operation units set by the operation unit assignment unit 102.
  • Set the number of network operations As calculated by the above equation (5), the number of calculations of the neural network before reduction is 78 times.
  • the number of assigned arithmetic units is 20, as an example, the number of arithmetic operations of the neural network after contraction is set by the following equation (6).
  • the neural network contracting unit 104 reduces the number of calculations of the neural network before contraction of 78 and the number of calculations of 60 set by the calculation number setting unit 103 by 18 to reduce the number of calculations. Contract.
  • the number of calculations of the neural network before reduction may be acquired by the neural network reduction unit 104 from the calculation number setting unit 103, or may be calculated by the neural network reduction unit 104 in the same manner as the calculation number setting unit 103. Good.
  • the contraction method of the neural network is not particularly limited, but the present embodiment will be described by exemplifying the Pruning process.
  • the Pruning processing determines that the influence on the output value Z 00 is sufficiently small and reduces the multiplication processing for multiplying the input value by the weighting coefficient.
  • the neural network is contracted by sequentially reducing the weighting coefficient with the smallest absolute value of the weighting coefficient of the neural network.
  • the number of operations of the node N 00 is three times of multiplication and two times of addition, which is a total of five times, and the number of operations is reduced by four times compared with the expression (1).
  • the number of operations is reduced by deleting the connection between nodes that has a small effect on the output.
  • Z 00 X 0 *W 000 +X 2 *W 020 +X 3 *W 030 (7)
  • FIG. 8 is a block diagram showing a part of the arithmetic unit according to the first embodiment.
  • FIG. 9 is a diagram showing an example of a timing chart of the arithmetic processing of the neural network.
  • FIG. 10 is a diagram showing another example of a timing chart of the arithmetic processing of the neural network.
  • FIG. 11 is a diagram showing another example of a timing chart of the arithmetic processing of the neural network.
  • the memory 301 stores the intermediate data 303 calculated by the calculator 302. Further, the arithmetic processing is repeated by the arithmetic unit 302 using the input value 304 and the intermediate data 305 stored in the memory 301. When all arithmetic processing is completed by the arithmetic unit 302, the arithmetic unit 302 outputs an arithmetic result 306. Assuming that the number of assigned arithmetic units 302 is 20, and the number of arithmetic operations required for the reduced neural network is 60, the arithmetic result 306 is output after the arithmetic processing of 3 cycles is executed for one arithmetic unit 302. It As shown in FIG.
  • the neural network as a whole has a processing time T of three cycles of 60 times (#0-#59). ), the arithmetic processing ends.
  • the processing time T shows the processing time for one cycle by one arithmetic unit 302, but the arithmetic processing is executed in parallel by the 20 arithmetic units 302 at the processing time T.
  • FIG. 10 shows a case in which the number of operations of the neural network is reduced without considering the number of assigned operation units 302.
  • the number of arithmetic units 302 assigned is 20, and the number of arithmetic operations of the neural network is reduced from 78 times to 62 times.
  • the number of calculations of the neural network is 60, the number of calculations is only increased twice (#60, #61), but the processing time T of 4 cycles is required for the entire neural network. The processing time T for one cycle increases.
  • FIG. 11 shows a case where the number of calculations of the neural network is reduced without considering the number of allocations of the calculator 302.
  • the number of assigned arithmetic units 302 is 20, and the number of arithmetic operations of the neural network is reduced from 78 times to 45 times.
  • the arithmetic processing of the first cycle and the arithmetic processing of the second cycle all 20 arithmetic units 302 are used, but in the arithmetic processing of the third cycle, only 5 of the 20 arithmetic units 302 are used. Absent.
  • the processing time of the operation processing is not shortened although the number of times of operation is reduced 15 times.
  • the arithmetic unit 302 is not effectively used in the arithmetic processing of the third cycle, and the recognition performance of the image recognition unit 112 may deteriorate.
  • the number of operations of the neural network used for image recognition of the image input from the camera is set to the integer of the number assigned to the operator 302 set by the operator assigning unit 102. It has been reduced to double. As a result, the plurality of computing units 302 assigned to the computing process of the neural network simultaneously start the computing process and simultaneously finish the computing process. It is possible to eliminate the cycle of calculation by only some of the arithmetic units 302, reduce the processing time of the arithmetic processing, and maximize the usage efficiency of the plurality of arithmetic units 302.
  • the number of calculations is not limited to the configuration in which the total number of calculations from the first intermediate layer 201 to the output layer 203 of the neural network is reduced, and the number of calculations may be reduced for each layer of the neural network.
  • the arithmetic unit allocation unit 102 sets the allocation number of the arithmetic units 302 for each layer of the neural network.
  • the number of assigned arithmetic units 302 to the first intermediate layer 201 is set to 8
  • the number of assigned arithmetic units 302 to the second intermediate layer 202 is set to 8
  • the number of assigned arithmetic units 302 to the output layer 203 is set to 4. It
  • the number of calculations setting unit 103 sets the number of calculations for each layer of the contracted neural network.
  • the number of operations for the first intermediate layer 201 is set by the following equation (8)
  • the number of operations for the second intermediate layer 202 is set by the following equation (9)
  • the number of operations for the output layer 203 is the following equation (10).
  • the number of assigned arithmetic units 302 is set individually for each layer in equations (8) to (10)
  • the same number of assigned arithmetic units 302 may be set for each layer.
  • the neural network contracting unit 104 reduces the number of operations for each layer of the neural network by using a contraction method such as Pruning.
  • the calculation processing for four times in the first intermediate layer 201 is reduced, the calculation processing for four times in the second intermediate layer 202 is reduced, and the calculation processing for two times in the output layer 203 is reduced.
  • the calculation processing can be performed with a relatively small number of allocations (e.g., 8) of the calculation units 302.
  • the implementation scale can be reduced.
  • the number-of-calculations setting unit 103 sets the number of calculations of the neural network after contraction by subtracting the remainder obtained by dividing the number of calculations required for the calculation processing of the neural network by the number of allocations of the calculator 302 from this number of calculations. It is not limited to the configuration.
  • the equation (11) becomes the same as the equation (6).
  • the number of calculations is set to 40 according to the following equation (12).
  • the number-of-calculations setting unit 103 is not limited to the configuration that sets the number of calculations of the neural network after contraction so as to be an integer multiple of the number of allocations of the calculator 302.
  • the number-of-times-of-calculations setting unit 103 does not necessarily need to set the number of calculations of the reduced neural network to an integral multiple of the number of allocations of the arithmetic units 302.
  • the number-of-operations setting unit 103 divides the number of operations of the neural network after the contraction so that the remainder obtained by dividing the number of operations of the neural network before the contraction by the number of allocations of the operator 302 becomes more than half of the number of allocations of the unit 302. The number of calculations may be set.
  • the number of calculations after reduction is changed according to the value of m.
  • the number of operations after reduction is 59, only 19 of the 20 arithmetic units 302 are used in the arithmetic processing of the third cycle, and one arithmetic unit 302 is used.
  • the vessel 302 is unused. For this reason, although the use efficiency of the computing unit 302 is reduced, the reduction rate of the neural network can be changed to be flexible according to the recognition accuracy of the reduced neural network.
  • the value of m may be set arbitrarily by the user or may be set in advance.
  • FIG. 13 is a block diagram of the automatic driving system according to the second embodiment.
  • the same blocks as those in the automatic driving system according to the first embodiment are designated by the same reference numerals.
  • the neural network reduction apparatus 100 includes a verification data holding unit 106 and a recognition accuracy verification unit 107 as a function of verifying the recognition accuracy of the neural network.
  • the verification data storage unit 106 stores verification values and correct values as verification data for verifying the recognition accuracy of the contracted neural network.
  • the recognition accuracy verification unit 107 verifies the recognition accuracy by calculating the recognition accuracy of the contracted neural network and comparing the recognition accuracy with a predetermined target accuracy. In this case, the recognition accuracy verification unit 107 inputs the verification value read from the verification data holding unit 106 to the contracted neural network, and reads the output value output from the neural network and the verification data holding unit 106. The recognition accuracy is calculated by comparing with the correct answer value. Then, the recognition accuracy verification unit 107 verifies the recognition accuracy based on the target accuracy by comparing the recognition accuracy with the target accuracy.
  • the recognition accuracy verification unit 107 When the recognition accuracy verified by the recognition accuracy verification unit 107 is less than the target accuracy, the recognition accuracy verification unit 107 notifies the arithmetic unit allocation unit 102 of an instruction to increase the number of allocated arithmetic units. Upon receiving a command to increase the number of assigned operation units from the recognition accuracy verification unit 107, the operation unit assignment unit 102 increments the number of assigned operation units by one and updates the assigned number. The number-of-calculations setting unit 103 sets the number of calculations of the contracted neural network based on the updated number of allocated arithmetic units.
  • the recognition accuracy verification unit 107 notifies the arithmetic unit allocation unit 102 of a command to reduce the number of allocated arithmetic units.
  • the arithmetic unit assignment unit 102 reduces the assigned number of arithmetic units by one and updates the assigned number.
  • the number-of-calculations setting unit 103 sets the number of calculations of the contracted neural network based on the updated number of allocated arithmetic units.
  • the number of neural network calculations before contraction is 78.
  • the number of assigned operation units is set to 20 by the operation unit assignment unit 102
  • the number of operations is set to 60 by the operation number setting unit 103 using the following equation (14).
  • the recognition accuracy verification unit 107 verifies the recognition accuracy of the contracted neural network.
  • the arithmetic unit allocation unit 102 increases the number of arithmetic units allocated by one to 21.
  • the operation unit assignment unit 102 resets the number of operations to 63 using the following equation (15).
  • the recognition accuracy verification unit 107 verifies the recognition accuracy of the re-reduced neural network.
  • the recognition accuracy by the recognition accuracy verification unit 107 becomes equal to or higher than the target accuracy
  • the parameters of the neural network are notified to the image recognition unit 112 and used for the image recognition processing on the image input from the camera 120.
  • the arithmetic unit allocation unit 102 increases the number of allocated arithmetic units by one again. By repeating this process, the recognition accuracy of the neural network can approach the target accuracy.
  • the recognition accuracy verification unit 107 feeds back an instruction to increase the number of allocated arithmetic units to the arithmetic unit allocation unit 102 so as to improve the recognition accuracy. It is not limited to the configuration. When the recognition accuracy of the contracted neural network is higher than necessary, the recognition accuracy verification unit 107 feeds back a command to decrease the number of allocated arithmetic units to the arithmetic unit allocation unit 102 so as to reduce the recognition accuracy to the target accuracy. Good.
  • the automatic driving system similar to the first embodiment, it is possible to reduce the processing time of the arithmetic processing and increase the usage efficiency of the plurality of arithmetic units. Further, the number of arithmetic units assigned to the arithmetic processing of the neural network can be adjusted according to the recognition accuracy of the contracted neural network. Therefore, the number of calculations of the neural network can be reduced to such an extent that the recognition accuracy of the neural network can maintain the target accuracy.
  • FIG. 14 is a block diagram of the automatic driving system according to the third embodiment.
  • the same blocks as those in the automatic driving system according to the second embodiment are designated by the same reference numerals.
  • the neural network contracting apparatus 100 is configured to adjust the number of operations of the number-of-operations setting unit 103 based on the verification result of the recognition accuracy verification unit 107. There is. That is, when the recognition accuracy verified by the recognition accuracy verification unit 107 is less than the target accuracy, the recognition accuracy verification unit 107 notifies the operation count setting unit 103 of an instruction to increase the operation count. Upon receiving a command to increase the number of operations from the recognition accuracy verification unit 107, the number of operations setting unit 103 increases the number of operations of the neural network after contraction and resets the number of operations.
  • the recognition accuracy verification unit 107 notifies the operation count setting unit 103 of a command to reduce the operation count.
  • the calculation number setting unit 103 receives the calculation number reduction command from the recognition accuracy verification unit 107, the calculation number setting unit 103 reduces the calculation number of the contracted neural network and resets the calculation number.
  • the number of neural network calculations before contraction is 78.
  • the number of operations is set by the operation number setting unit 103 using the following equation (16).
  • the neural network contracting unit 104 reduces the arithmetic processing for 58 times of the neural network and contracts the neural network.
  • the recognition accuracy verification unit 107 verifies the recognition accuracy of the contracted neural network.
  • the neural network contracting unit 104 reduces the neural network's 38 arithmetic operations and contracts the neural network again. Since the number of operations of the neural network has increased from 20 to 40, improvement in recognition accuracy can be expected.
  • the recognition accuracy verification unit 107 verifies the recognition accuracy of the re-reduced neural network.
  • the recognition accuracy by the recognition accuracy verification unit 107 becomes equal to or higher than the target accuracy
  • the parameters of the neural network are notified to the image recognition unit 112 and used for the image recognition processing on the image input from the camera 120.
  • the calculation number setting unit 103 again increases the value of n in Expression (16) by one. By repeating this process, the recognition accuracy of the neural network can approach the target accuracy.
  • the recognition accuracy verification unit 107 feeds back an operation number increase command to the operation number setting unit 103 so as to improve the recognition accuracy. I can't.
  • the recognition accuracy verification unit 107 may feed back a calculation frequency reduction command to the calculation number setting unit 103 so as to reduce the recognition accuracy to the target accuracy.
  • the automatic driving system As described above, in the automatic driving system according to the third embodiment, as in the second embodiment, it is possible to reduce the processing time of the arithmetic processing and improve the usage efficiency of the plurality of arithmetic units.
  • the number of operations of the neural network can be adjusted according to the recognition accuracy of the contracted neural network. Therefore, the number of calculations of the neural network can be reduced to such an extent that the recognition accuracy of the neural network can maintain the target accuracy.
  • FIG. 15 is a block diagram of an automatic driving system according to the fourth embodiment.
  • the same blocks as those in the automatic driving system according to the first embodiment are designated by the same reference numerals.
  • the neural network contracting apparatus 100 is provided with a calculation number correcting unit 108 as a function of correcting the calculation number of the neural network after contraction.
  • the number-of-times-of-calculations correction unit 108 corrects the number of calculations of the reduced neural network based on the number of assigned operation units set by the operation-unit assignment unit 102.
  • the calculation number correction unit 108 corrects the calculation number of the neural network so that it becomes an integral multiple of the number of assigned arithmetic units set by the arithmetic unit assignment unit 102 for the reduced neural network.
  • the number of neural network calculations before contraction is 78.
  • the number of calculations setting unit 103 sets the number of calculations of the neural network after contraction to 39 times.
  • the number of calculations of the neural network after contraction is a value that is half the number of calculations of the neural network before contraction.
  • the neural network contracting unit 104 reduces the arithmetic processing of the 39th part to contract the neural network.
  • the arithmetic unit allocating unit 102 sets the number of arithmetic units to be allocated to 20
  • the arithmetic operation number correcting unit 108 corrects the arithmetic operation number of the neural network after contraction using the following equation (17).
  • Number of calculations after correction (div(39,20)+INT(div(mod(39,20),20)+0.5))*20...(17)
  • Div (A, B) in the equation (17) indicates a process of dividing A by B
  • INT(X) indicates a process of rounding down the fractional part of X.
  • the expression (17) is (1+1)*20. Therefore, the number of calculations after correction is set to 40 times. As a result, it becomes possible to correct the number of operations of the neural network after contraction to be an integral multiple of the number of assigned operation units.
  • the automatic driving system As described above, in the automatic driving system according to the fourth embodiment of the present invention, as in the first embodiment, it is possible to reduce the processing time of the arithmetic processing and improve the usage efficiency of a plurality of arithmetic units. Further, it is possible to first reduce the neural network and correct the number of calculations of the reduced neural network while considering the number of assigned arithmetic units.
  • the contracting device for the neural network used for the image recognition processing has been described, but the present invention is not limited to this configuration.
  • the neural network contracting device can be applied to other recognition processing such as voice recognition processing as well as contraction of a neural network used for prediction processing of future data.
  • the neural network contracting apparatus 100 is provided in the server 20, but the neural network contracting apparatus 100 may be provided in the vehicle 10.
  • the calculation number setting unit 103 and the neural network contraction unit 104 are configured to calculate the number of calculations of the neural network before the contraction by the arithmetic device 140, but the present invention is not limited to this structure.
  • the number of operations of the neural network before contraction may be held in the neural network holding unit 101 in advance.
  • the neural network contracting apparatus 100 may be provided with a calculation number calculation unit that calculates the calculation times of the neural network before contraction.
  • the arithmetic unit allocating unit 102 sets the number of the arithmetic units 302 to be assigned to the arithmetic processing of the neural network, but the present invention is not limited to this configuration.
  • the arithmetic unit allocating unit 102 may set a ratio of the total number of the arithmetic units 302 to be allocated to the arithmetic processing of the neural network.
  • the number-of-calculations setting unit 103 sets the number of calculations of the neural network, but the present invention is not limited to this structure.
  • the calculation number setting unit 103 may set the reduction rate of the neural network instead of the calculation number of the neural network.
  • the number-of-operations correction unit 108 corrects the number of operations of the neural network after contraction so that it becomes an integral multiple of the number of allocations of the arithmetic units, but the present invention is not limited to this configuration. Not done.
  • the number-of-operations correction unit 108 may correct the number of operations for each layer of the neural network, or the number of operations of the neural network may be adjusted so that the remainder divided by the number of assigned operation units is more than half the number of assigned operation units. May be corrected.
  • the neural network contracting apparatus (100) contracts the neural network to the number of operations of the neural network by the arithmetic unit (140) including the plurality of arithmetic units (302).
  • a reduction device (100) for a neural network which is reduced by means of the calculation, wherein an arithmetic unit allocation unit (102) for setting the number of arithmetic units (302) allocated to arithmetic processing of the neural network, and an allocation of arithmetic units (302).
  • the calculation number setting unit (103) that sets the calculation number of the neural network after contraction based on the number, and the calculation number of the neural network by the calculation device (140) set by the calculation number setting unit (103)
  • a neural network contracting unit (104) for contracting the neural network so as to be equal to the number of times.
  • the number of calculations necessary for the calculation processing of the neural network is reduced in consideration of the allocation number of the calculation unit (302) for the calculation processing of the neural network. That is, the number of operations per cycle that can be simultaneously processed by the plurality of arithmetic units (302) assigned to the arithmetic processing of the neural network is considered. Therefore, the number of operations of the neural network is reduced so as to eliminate the cycle in which only a small number of arithmetic units (302) are operated, the processing time of the arithmetic processing is shortened, and the use efficiency of the plurality of arithmetic units (302) is increased. be able to.
  • the operation number setting unit (103) is smaller than the operation number of the neural network before contraction and is set by the arithmetic unit assigning unit (102).
  • the number of calculations of the neural network after contraction is set to an integer multiple of the number of allocations of the arithmetic unit (302).
  • the plurality of arithmetic units (302) assigned to the arithmetic processing of the neural network simultaneously start the arithmetic processing and simultaneously terminate the arithmetic processing. Therefore, there is no cycle in which only some of the arithmetic units (302) perform arithmetic operations, which can shorten the processing time of arithmetic processing and maximize the usage efficiency of the plurality of arithmetic units (302).
  • the number-of-operations setting unit (103) is the number of allocated operation units (302) set by the operation unit allocation unit (102),
  • the number of operations of the contracted neural network is set so that the remainder obtained by dividing the number of operations is equal to or more than half of the number assigned to the operator (302).
  • the plurality of computing units (302) assigned to the computing process of the neural network start the computing processes at the same time, and more than half of the plurality of computing units (302) simultaneously perform the computing processes (302).
  • the arithmetic processing is ended. Therefore, there is no cycle in which only a small number of arithmetic units (302) are used for calculation, and it is possible to shorten the processing time of the arithmetic processing and improve the usage efficiency of the plurality of arithmetic units (302).
  • the neural network has a plurality of layers, and the computing unit assigning unit (102) assigns the computing unit (302) to each layer of the neural network.
  • the number of calculations is set, and the number-of-calculations setting unit (103) sets the number of calculations of the neural network after contraction for each layer of the neural network.
  • the neural network contracting unit (104) contracts the neural network by the Pruning process. According to this configuration, it is possible to reduce the number of operations of the neural network while suppressing the deterioration of the accuracy of the neural network due to the prune processing.
  • the neural network contracting apparatus (100) includes an accuracy verification unit (recognition accuracy verification unit 107) that calculates the accuracy of the contracted neural network and compares the accuracy with the target accuracy.
  • an accuracy verification unit recognition accuracy verification unit 107 that calculates the accuracy of the contracted neural network and compares the accuracy with the target accuracy.
  • the arithmetic unit allocating unit (102) sets a small number of the arithmetic units (302) to be allocated, and when the precision is less than the target precision, the arithmetic unit allocating unit (102) calculates the arithmetic unit (302). ).
  • this configuration it is possible to adjust the number of arithmetic units (302) assigned to the arithmetic processing of the neural network according to the accuracy of the contracted neural network. Therefore, the number of calculations of the neural network can be reduced to such an extent that the accuracy of the neural network can maintain the target accuracy.
  • the neural network contracting apparatus (100) includes an accuracy verification unit (recognition accuracy verification unit 107) that calculates the accuracy of the contracted neural network and compares the accuracy with the target accuracy.
  • an accuracy verification unit recognition accuracy verification unit 107 that calculates the accuracy of the contracted neural network and compares the accuracy with the target accuracy.
  • the number-of-calculations setting unit (103) sets the number of computations of the neural network after reduction to a small number, and when the precision is less than the target precision, the number-of-calculations setting unit (103) reduces Set a large number of calculations for the neural network of.
  • the number of operations of the neural network can be adjusted according to the accuracy of the contracted neural network. Therefore, the number of calculations of the neural network can be reduced to such an extent that the accuracy of the neural network can maintain the target accuracy.
  • the number of operations of the neural network by the arithmetic unit (140) including a plurality of arithmetic units (302) is reduced by contracting the neural network.
  • a neural network contracting device (100) wherein an arithmetic operation number setting unit (103) for setting the arithmetic operation number of the neural network after the contraction and an arithmetic operation number of the neural network by the arithmetic device (140) are set.
  • Neural network reduction unit (104) that reduces the neural network so that the number of operations set by the unit (103) becomes equal to the number of operations assigned to the operation unit (302) for the operation processing of the neural network.
  • An arithmetic unit allocating unit (102) and an arithmetic operation number correcting unit (108) that corrects the arithmetic operation number of the contracted neural network based on the number of arithmetic units (302) assigned.
  • the number of calculations required for the calculation processing of the neural network after contraction is corrected in consideration of the number of the calculation units (302) assigned to the calculation processing of the neural network. That is, the number of operations per cycle that can be simultaneously processed by the plurality of arithmetic units (302) assigned to the arithmetic processing of the neural network is considered. Therefore, it is possible to correct the number of calculations of the neural network so as to eliminate the cycle in which only a small number of arithmetic units are operated, thereby shortening the processing time of the arithmetic processing and improving the usage efficiency of the plurality of arithmetic units (302). ..
  • neural network contracting device 100 neural network contracting device, 102 arithmetic unit allocating unit, 103 arithmetic operation number setting unit, 104 neural network contracting unit, 107 recognition accuracy verification unit (accuracy verification unit), 108 arithmetic operation correction unit, 140 arithmetic device, 302 arithmetic operation vessel

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

ニューラルネットワークの処理時間を短縮すると共に複数の演算器を有効利用できるようにニューラルネットワークの演算回数を低減する。複数の演算器を備えた演算装置(140)によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置(100)であり、ニューラルネットワークの演算処理に対する演算器の割り当て数を設定する演算器割り当て部(102)と、演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部(103)と、演算装置(140)によるニューラルネットワークの演算回数が、演算回数設定部(103)によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部(104)とを備える構成にした。

Description

ニューラルネットワークの縮約装置
 本発明はニューラルネットワークの縮約装置に関する。
 近年、機械学習を用いた物体認識や行動予測を車両の自動運転に適用する技術が進展している。物体認識等に使用される機械学習手法として、ニューラルネットワークが知られている。ニューラルネットワークでは演算回数が多い畳み込み演算等が実施され、車両に搭載される演算装置がリアルタイムに処理を行う際の課題になっていた。上記の課題に対し、ニューラルネットワークの各ノードの重み係数が閾値以下となる枝(層間結合)を削減することによって、認識性能に対する影響を抑制しながらニューラルネットワークの演算負荷を軽減する縮約方法(圧縮方法)が開示されている(非特許文献1参照)。
Song Han、 Jeff Pool、 John Tran、 William J. Dally、"Learning both Weights and Connections for Efficient Neural Networks"、[online]、2015年10月30日、[平成30年12月24日検索]、インターネット<URL :https://arxiv.org/pdf/1506.02626.pdf>
 非特許文献1にはニューラルネットワークの一部の枝を削減することにより、ニューラルネットワークの演算回数を低減する方法が示されているが、演算回数が低減されても演算処理の処理時間が短縮されるとは限られない。また、ニューラルネットワークの演算処理に対して、演算器に設けられた複数の演算器が有効に利用されない場合がある。このような問題は、車載用の演算装置に限らず、ニューラルネットワークを利用した他の演算装置でも生じる可能性がある。
 本発明は前記課題を解決するもので、その目的とするところは、ニューラルネットワークの処理時間を短縮すると共に複数の演算器を有効利用できるようにニューラルネットワークの演算回数を低減することができるニューラルネットワークの縮約装置を提供することである。
 本発明の一態様のニューラルネットワークの縮約装置は、複数の演算器を備えた演算装置によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置であって、ニューラルネットワークの演算処理に対する前記演算器の割り当て数を設定する演算器割り当て部と、前記演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部と、前記演算装置によるニューラルネットワークの演算回数が、前記演算回数設定部によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部とを備えたことを特徴とする。
 本発明によれば、ニューラルネットワークの処理時間を短縮すると共に複数の演算器を有効利用できるようにニューラルネットワークの演算回数を低減することができる。本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の、課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
第1の実施形態に係る自動運転システムのブロック図。 第1の実施形態に係るニューラルネットワークの一例を示す図。 第1の実施形態に係る第1の中間層のノード処理の一例を示す図。 第1の実施形態に係る第1の中間層のノード処理の他の一例を示す図。 第1の実施形態に係る第2の中間層のノード処理の一例を示す図。 第1の実施形態に係る出力層のノード処理の一例を示す図。 第1の実施形態に係る縮約処理の一例を示す図。 第1の実施形態に係る演算装置の一部を示すブロック図。 ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。 ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。 ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。 ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。 第2の実施形態に係る自動運転システムのブロック図。 第3の実施形態に係る自動運転システムのブロック図。 第4の実施形態に係る自動運転システムのブロック図。
[第1の実施形態]
 以下、添付の図面を参照して、ニューラルネットワークの縮約装置を適用した自動運転システムについて説明する。図1は、第1の実施形態に係る自動運転システムのブロック図である。なお、以下の説明では、ニューラルネットワークの縮約装置を自動運転システムに適用した一例について説明するが、ニューラルネットワークの縮約装置は、監視カメラシステム、医療用の画像診断システム、音声認識システム等の他のシステムに適用可能である。
 図1に示すように、自動運転システムは、ニューラルネットワークを用いて自動運転する車両10と、車両10に対してニューラルネットワークのパラメータを定期的に通知するサーバ20とが無線通信によって接続されている。車両10には、車両周辺を撮像するカメラ120と、車両10の自動運転を制御する車両制御部110と、アクセル、ブレーキ、操舵等の各種操作に用いるアクチュエータ130とが設けられている。サーバ20には、縮約技術によってニューラルネットワークの演算回数を低減するニューラルネットワークの縮約装置100が実装されている。
 車両制御部110には、カメラ120から入力された画像を所定形式に変換する画像入力部111と、ニューラルネットワークを用いて画像を認識する画像認識部112と、認識結果に応じた制御信号をアクチュエータ130に出力する信号出力部113とが設けられている。画像認識部112には、ニューラルネットワークの縮約装置100から縮約後のニューラルネットワークのパラメータが通知される。ニューラルネットワークのパラメータとは、画像認識部112において縮約後のニューラルネットワークを構築するためのパラメータであり、例えばニューラルネットワークで使用される重み係数等である。
 画像認識部112は、ニューラルネットワークの縮約装置100から通知されたパラメータに基づいて縮約後のニューラルネットワークを構築して、ニューラルネットワークを用いて画像入力部111から入力された画像を認識する。信号出力部113は、画像の認識結果に基づいて自車両の走行方向及び走行速度等の自動運転に必要な車両制御情報を含む制御信号をアクチュエータ130に出力する。アクチュエータ130は、アクセル用の駆動アクチュエータ、ブレーキ用の制動アクチュエータ、ステアリング用の操舵アクチュエータ等を含んでいる。アクチュエータ130は、信号出力部113からの制御信号に基づいて車両10を制御する。
 車両制御部110は、複数の演算器を備えた演算装置140によって実現されている。車両制御部110の各種処理に対して演算装置140の演算器が割り当てられている。演算装置140の複数の演算器によって車両制御部110の各種処理が実行されることで、ニューラルネットワークを用いた画像認識が実施されて、認識結果に基づいて車両10の自動運転制御が実施される。なお、車両制御部110の各種処理のうち、画像認識処理は演算負荷が大きいため、車両制御部110の他の処理と比較して多数の演算器が画像認識処理に対して割り当てられている。
 ニューラルネットワークの縮約装置100には、ニューラルネットワーク保持部101と、演算器割り当て部102と、演算回数設定部103と、ニューラルネットワーク縮約部104とが設けられている。ニューラルネットワーク保持部101には、PC、サーバ等において学習された後の学習済みのニューラルネットワーク、すなわち推論処理に用いるニューラルネットワークが保持されている。演算器割り当て部102は、画像認識部112によってニューラルネットワークを用いて画像認識を行う際に、ニューラルネットワークの演算処理に対する演算装置140の演算器の割り当て数を設定する。この場合、演算器割り当て部102は、入力デバイス等を介してユーザから入力された演算器の割り当て数を縮約装置100に設定している。
 演算回数設定部103は、ニューラルネットワーク保持部101に保持されたニューラルネットワークの演算処理に必要な演算回数を算出し、演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する。ニューラルネットワーク縮約部104は、演算装置140によるニューラルネットワークの演算回数が、演算回数設定部103によって設定された演算回数と等しくなるように、ニューラルネットワーク保持部101に保持されたニューラルネットワークを縮約する。また、ニューラルネットワーク縮約部104は、縮約後のニューラルネットワークのパラメータを車両10の画像認識部112に通知して、画像認識部112の画像認識処理に用いられるニューラルネットワークの演算回数を低減している。
 なお、ニューラルネットワークの縮約装置100の各部は、プロセッサを用いてソフトウェアによって実現されてもよいし、集積回路等に形成された論理回路(ハードウェア)によって実現されてもよい。プロセッサを用いる場合には、プロセッサがメモリに格納されているプログラムを読み出して実行することで各種処理が実施される。プロセッサとしては、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等が使用される。また、メモリは、用途に応じてROM(Read Only Memory)、RAM(Random Access Memory)等の一つ又は複数の記録媒体によって構成されている。
 以下、ニューラルネットワークの縮約装置100について具体例を用いて説明する。図2は、第1の実施形態に係るニューラルネットワークの一例を示す図である。図3は、第1の実施形態に係る第1の中間層のノード処理の一例を示す図である。図4は、第1の実施形態に係る第1の中間層のノード処理の他の一例を示す図である。図5は、第1の実施形態に係る第2の中間層のノード処理の一例を示す図である。図6は、第1の実施形態に係る出力層のノード処理の一例を示す図である。図7は、第1の実施形態に係る縮約処理の一例を示す図である。また、以下の説明では、説明の便宜上、図1の符号を適宜使用して説明する。
 図2に示すように、ニューラルネットワークは、入力層200と、第1の中間層201と、第2の中間層202と、出力層203とによって構成されている。ニューラルネットワークは、入力層200に5つの入力値X-Xが入力されると、第1、第2の中間層201、202を経由して出力層203から2つの出力値Y、Yを出力する。入力層200には入力要素として5つの入力ノードNX0-NX4が設けられ、出力層203には出力要素として2つの出力ノードNY0、NY1が設けられている。第1の中間層201には演算要素としてノードN00-N03が設けられ、第2の中間層202にはノードN10-N13が設けられている。
 第1の中間層201のノードN00-N03は、入力層200から入力された入力値X-Xに対して層間結合(枝)毎に設定された重み係数を乗算し、各乗算結果を加算した結果を第2の中間層202のノードN10-N13に出力する。第2の中間層202のノードN10-N13は、第1の中間層201のノードN00-N03から入力された値に対して層間結合毎に設定された重み係数を乗算し、各乗算結果を加算した結果を出力層203の出力ノードNY0、NY1に出力する。出力層203の出力ノードNY0、NY1は、第2の中間層202のノードN10-N13から入力された値に対して層間結合毎に設定された重み係数を乗算し、各乗算結果を加算した結果を出力値Y、Yとして出力する。
 ここで、各ノードの演算処理について詳細に説明する。図3は、第1の中間層201のノードN00の演算処理を示している。図3において、第1の中間層201のノードN00では入力層200の入力ノードNX0-NX4とノードN00の層間の重み係数W000-W040が使用され、ノードN00から出力される出力値Z00は次式(1)によって求められる。
 
 Z00=X*W000+X*W010+X*W020+X*W030+X*W040・・・(1)
 図4は、第1の中間層201のノードN01の演算処理を示している。図4において、第1の中間層201のノードN01では入力層200の入力ノードNX0-NX4とノードN01の層間の重み係数W001-W041が使用され、ノードN01から出力される出力値Z01は次式(2)によって求められる。第1の中間層201の他のノードN02、N03についても同様にして出力値Z02、Z03を出力する。
 
 Z01=X*W001+X*W011+X*W021+X*W031+X*W041・・・(2)
 図5は、第2の中間層202のノードN10の演算処理を示している。図5において、第2の中間層202のノードN10では第1の中間層201のノードN00-N03とノードN10の層間の重み係数W100-W130が使用され、ノードN10から出力される出力値Z11は次式(3)によって求められる。第2の中間層202の他のノードN11-N13についても同様にして出力値Z11-Z13を出力する。
 
 Z11=Z00*W100+Z01*W110+Z02*W120+Z03*W130・・・(3)
 図6は、出力層203の出力ノードNY0の演算処理を示している。図6において、出力層203の出力ノードNY0では第2の中間層202のノードN10-N13と出力ノードNY0の層間の重み係数W200-W230が使用され、出力ノードNY0から出力される出力値Yは次式(4)によって求められる。出力層203の他の出力ノードNY1についても同様にして出力値Yを出力する。
 
 Y=Z10*W200+Z11*W210+Z12*W220+Z13*W230・・・(4)
 本実施形態のニューラルネットワークは、自動運転用の画像認識部112に用いられるものである。画像入力部111から入力層200の入力ノードNX0-NX4に画像の入力値X-Xが入力されて、出力層203の出力ノードNY0、NY1から画像認識結果である出力値Y、Yが出力される。例えば、画像が他車両である確率がYとして出力され、画像が歩行者である確率がYとして出力される。画像が他車両である確率が高い場合には車両制御部110によって自車両が他車両に追従するように制御され、画像が歩行者である確率が高い場合には自車両が歩行者を避けるように制御される。このように、ニューラルネットワークは、入力値から所望の出力値を得るためのネットワーク構成及び重み係数等から成り、ニューラルネットワーク保持部101にはネットワーク構成及び重み係数等の各種情報が記憶されている。
 次に、ニューラルネットワークの縮約装置100の具体的な動作について説明する。演算器割り当て部102は、ニューラルネットワークの演算処理、すなわち画像認識部112の画像認識処理に対する演算器の割り当て数を設定する。この場合、車両10に搭載された演算装置140の複数の演算器のうち、車両制御部110の各部の処理負荷を考慮して画像認識処理に対する演算器の割り当て数が設定される。本実施形態の自動運転システム等の組込みシステムに用いられる演算装置140としてはFPGA(Field Programmable Gate Array)が挙げられる。FPGAは所望の処理を論理回路の形式によって設計及び実行できる演算装置140である。FPGAには積和演算を高速に処理することが可能なDSP(Digital Signal Processor)と呼ばれる演算器が搭載されており、ニューラルネットワークの乗算及び加算を高速に処理するのに有用である。DSPはFPGA毎に搭載数が予め決められているため、演算器割り当て部102によってニューラルネットワークの演算処理に用いるDSP数が設定される。なお、ニューラルネットワークの演算回数は、一般にFPGAのDSP数よりもはるかに多く、ニューラルネットワーク全体を一度に処理することは困難である。このため、ニューラルネットワークの演算処理が複数回に分けて実施される。また、演算装置140は、FPGAに限定されるものではなく、ニューラルネットワークに対して使用可能な複数の積和演算器を備えたものであればよい。
 演算回数設定部103は、縮約前のニューラルネットワークの演算回数を算出する。一例として、図2に示したニューラルネットワークの演算処理に必要な演算回数について説明する。第1の中間層201の各ノードの演算処理には、上記の式(1)に示すように5回の乗算と4回の加算の計9回の演算が必要となる。第1の中間層201にはノードN00-N03まで4つのノードがあるため、第1の中間層201の演算処理に必要な演算回数は9*4=36回となる。同様に、第2の中間層202の各ノードの演算処理には、上記の式(3)に示すように4回の乗算と3回の加算の計7回の演算が必要となる。第2の中間層202にはノードN10-N13まで4つのノードがあるため、第2の中間層202の演算処理に必要な演算回数は7*4=28回となる。出力層203の各出力ノードの演算処理には、上記の式(4)に示すように4回の乗算と3回の加算の計7回の演算が必要となる。出力層203には出力ノードNY0、NY1の2つのノードがあるため、出力層203の演算処理に必要な演算回数は7*2=14回となる。以上の各層の演算回数を合計すると、図2に示すニューラルネットワークの演算処理に必要な演算回数は次式(5)によって示される。
 
 36回+28回+14回=78回・・・(5)
 実際に使用されるニューラルネットワークには演算回数が100万回を越える大規模なニューラルネットワークもあるが、本実施形態では説明の便宜上、ニューラルネットワークを簡略化して説明している。
 次に、演算回数設定部103は、縮約前のニューラルネットワークの演算回数よりも少なく、かつ演算器割り当て部102によって設定された演算器の割り当て数の整数倍になるように縮約後のニューラルネットワークの演算回数を設定する。上記の式(5)によって求めたように、縮約前のニューラルネットワークの演算回数は78回である。ここでは、一例として演算器の割り当て数を20個とすると、縮約後のニューラルネットワークの演算回数は次式(6)によって設定される。なお、式(6)のmod(A,B)はAをBによって除算した時の剰余を算出する処理を示している。
 
 78-mod(78,20)=60・・・(6)
 ニューラルネットワーク縮約部104は、縮約前のニューラルネットワークの演算回数78回と演算回数設定部103によって設定された演算回数60回との差分である18回分の演算を削減するようにニューラルネットワークを縮約する。縮約前のニューラルネットワークの演算回数については、ニューラルネットワーク縮約部104が演算回数設定部103から取得してもよいし、ニューラルネットワーク縮約部104が演算回数設定部103と同様に算出してもよい。ニューラルネットワークの縮約方法は、特に限定されないが、本実施形態ではPruning処理を例示して説明する。Pruning処理は、重み係数の絶対値が予め定められた閾値未満の場合には、出力値Z00に対する影響が十分小さいとして、入力値に重み係数を乗算する乗算処理を削減するものである。ニューラルネットワークの重み係数の絶対値が小さい重み係数から順に削減することでニューラルネットワークが縮約される。
 例えば、図3に示すように、第1の中間層201のノードN00の出力値Z00を得るためには、上記の式(1)に示すように5回の乗算と4回の加算の計9回の演算が必要となる。このとき、図7に示すように、重み係数W010、W040の絶対値が閾値未満の場合、入力値Xと重み係数W010の乗算処理と、入力値Xと重み係数W040の乗算処理が削減される。この結果、第1の中間層201のノードN00の出力値Z00は次式(7)によって求められる。式(7)では、ノードN00の演算回数が3回の乗算と2回の加算の計5回になっており、式(1)と比べて演算回数が4回削減されている。このように、Pruning処理は、出力に対する影響が小さなノード間の結合を削除することで演算回数を低減する。
 
 Z00=X*W000+X*W020+X*W030・・・(7)
 ニューラルネットワークの演算処理の処理時間について説明する。図8は、第1の実施形態に係る演算装置の一部を示すブロック図である。図9は、ニューラルネットワークの演算処理のタイミングチャートの一例を示す図である。図10は、ニューラルネットワークの演算処理のタイミングチャートの他の一例を示す図である。図11は、ニューラルネットワークの演算処理のタイミングチャートの他の一例を示す図である。
 図8に示すように、メモリ301には演算器302によって演算された中間データ303が格納される。また、演算器302によって入力値304とメモリ301に格納された中間データ305とを用いて演算処理が繰り返される。演算器302によって全ての演算処理が終了すると、演算器302から演算結果306が出力される。演算器302の割り当て数が20個、縮約後のニューラルネットワークに必要な演算回数が60回とすると、1個の演算器302につき3サイクルの演算処理が実施された後に演算結果306が出力される。図9に示すように、各演算器302が1サイクル(1回)の演算処理に要する処理時間をTとすると、ニューラルネットワーク全体として3サイクル分の処理時間Tで60回(#0-#59)の演算処理が終了する。なお、処理時間Tは1個の演算器302による1サイクル分の処理時間を示しているが、処理時間Tで20個の演算器302によって並列に演算処理が実施されている。
 図10は、演算器302の割り当て数を考慮せずにニューラルネットワークの演算回数を低減した場合を示している。ここでは、一例として、演算器302の割り当て数を20個とし、ニューラルネットワークの演算回数を78回から62回に低減した場合について説明する。ニューラルネットワークの演算回数が60回の場合と比較して、演算回数が2回(#60、#61)増えただけであるが、ニューラルネットワーク全体として4サイクル分の処理時間Tが必要になって1サイクル分の処理時間Tが増える。
 同様に、図11は、演算器302の割り当て数を考慮せずにニューラルネットワークの演算回数を低減した場合を示している。ここでは、一例として、演算器302の割り当て数を20個とし、ニューラルネットワークの演算回数を78回から45回に低減した場合について説明する。1サイクル目の演算処理と2サイクル目の演算処理では20個の演算器302の全てが使用されているが、3サイクル目の演算処理では20個の演算器302のうち5個しか使用されていない。このため、ニューラルネットワークの演算回数が60回の場合と比較して、15回分の演算回数が低減されているにも関わらず、演算処理の処理時間が短縮されていない。特に、3サイクル目の演算処理で演算器302が有効利用されておらず、画像認識部112の認識性能が低下するおそれがある。
 以上のように、第1の実施形態の自動運転システムでは、カメラから入力した画像の画像認識に用いるニューラルネットワークの演算回数を、演算器割り当て部102によって設定された演算器302の割り当て数の整数倍になるように低減している。これにより、ニューラルネットワークの演算処理に割り当てられた複数の演算器302によって同時に演算処理が開始されて同時に演算処理が終了される。一部の演算器302だけで演算するサイクルが無くなり、演算処理の処理時間を短縮すると共に複数の演算器302の使用効率を最大限に高めることができる。
 また、ニューラルネットワークの第1の中間層201から出力層203までの合計の演算回数を低減する構成に限定されず、ニューラルネットワークの層毎に演算回数が低減されてもよい。
 上記したように、図2に示すニューラルネットワークの第1の中間層201の演算回数は36回、第2の中間層202の演算回数は28回、出力層203の演算回数は14回である。この場合、演算器割り当て部102(図1参照)によってニューラルネットワークの層毎に演算器302の割り当て数が設定される。第1の中間層201に対する演算器302の割り当て数が8個、第2の中間層202に対する演算器302の割り当て数が8個、出力層203に対する演算器302の割り当て数が4個に設定される。
 また、演算回数設定部103(図1参照)によって縮約後のニューラルネットワークの層毎に演算回数が設定される。第1の中間層201に対する演算回数は次式(8)によって設定され、第2の中間層202に対する演算回数は次式(9)によって設定され、出力層203に対する演算回数は次式(10)によって設定される。なお、式(8)-(10)には、各層に対して演算器302の割り当て数が個別に設定されているが、各層に同じ演算器302の割り当て数が設定されてもよい。
 
 36-mod(36,8)=32・・・(8)
 28-mod(28,8)=24・・・(9)
 14-mod(14,4)=12・・・(10)
 ニューラルネットワークの層毎に演算回数が設定されると、ニューラルネットワーク縮約部104によってPruning等の縮約方法を用いてニューラルネットワークの層毎に演算回数が低減される。第1の中間層201における4回分の演算処理が削減され、第2の中間層202における4回分の演算処理が削減され、出力層203における2回分の演算処理が削減される。このように、演算回数設定部103によってニューラルネットワークの層毎に演算回数が設定されることで、比較的少ない演算器302の割り当て数(例えば、8個)によって演算処理できるため、演算装置140の実装規模を小さくすることができる。
 演算回数設定部103は、ニューラルネットワークの演算処理に必要な演算回数を演算器302の割り当て数によって除算した剰余を、この演算回数から減算することで縮約後のニューラルネットワークの演算回数を設定する構成に限定されない。演算回数設定部103は、演算器302の割り当て数の整数倍を設定すればよい。例えば、演算回数設定部103は、次式(11)を用いて演算回数を設定してもよい。
 
 低減後の演算回数=78-mod(78,20)-20×n・・・(11)
 (n=0,1,2… 但し、低減後の演算回数は正数)
 n=0の場合には、式(11)は式(6)と同じになる。n=1の場合には、次式(12)によって演算回数が40回に設定される。演算回数が40回に設定されると、ニューラルネットワーク縮約部104によって、78-40=38回分の演算を削減するようにPruning処理が実施される。この場合、式(6)から求められた演算回数よりも削減数が多い分、認識精度の低下を考慮する必要があるが、1サイクル分の処理時間Tを短縮することができる。すなわち、n=0の場合にはニューラルネットワークの演算処理に3サイクル分の処理時間Tが必要なのに対して、n=1の場合にはニューラルネットワークの演算処理に2サイクル分の処理時間Tで処理を終えることができる。なお、nの値はユーザによって任意に設定されてもよいし、予め設定されてもよい。
 
 78-mod(78,20)-20=40・・・(12)
 演算回数設定部103は、演算器302の割り当て数の整数倍になるように縮約後のニューラルネットワークの演算回数を設定する構成に限定されない。演算回数設定部103は、縮約後のニューラルネットワークの演算回数を、必ずしも演算器302の割り当て数の整数倍に設定しなくてもよい。演算回数設定部103は、演算器302の割り当て数で、縮約前のニューラルネットワークの演算回数を除算した余りが演算器302の割り当て数の半分以上になるように、縮約後のニューラルネットワークの演算回数を設定してもよい。例えば、演算回数設定部103は、次式(13)を用いて演算回数を設定してもよい。なお、kは、演算器割り当て部102によって設定された演算器302の割り当て数の1/2以下である。
 
 低減後の演算回数=78-mod(78,20)-m・・・(13)
 (m=0,1,2,・・・,k)
 式(13)では、低減後の演算回数は、mの値によって変更される。例えば、m=0の場合には演算回数が60回、m=1の場合には演算回数が59回、m=kの場合には演算回数が60-k回に設定される。図12に示すように、低減後の演算回数が59回の場合には、3サイクル目の演算処理では20個の演算器302のうち19個の演算器302のみが使用され、1個の演算器302は未使用になる。このため、演算器302の使用効率が低下するが、縮約後のニューラルネットワークの認識精度に応じて、ニューラルネットワークの縮約率を柔軟性に変更することができる。なお、mの値はユーザによって任意に設定されてもよいし、予め設定されていてもよい。
[第2の実施形態]
 以下に、第2の実施形態に係る自動運転システムについて説明する。第2の実施形態に係る自動運転システムは、ニューラルネットワークの認識精度を検証しながら、演算器の割り当て数の調整によってニューラルネットワークを縮約する点について第1の実施形態と相違している。したがって、第1の実施形態と同様な構成については説明を省略する。図13は、第2の実施形態に係る自動運転システムのブロック図である。図13では、第1の実施形態の自動運転システムと同一のブロックについては同一の符号を付している。
 図13に示すように、第2の実施形態に係るニューラルネットワークの縮約装置100には、ニューラルネットワークの認識精度を検証する機能として、検証用データ保持部106と認識精度検証部107とが設けられている。検証用データ保持部106には、縮約後のニューラルネットワークの認識精度を検証するための検証用データとして検証値及び正解値が保存されている。認識精度検証部107は、縮約後のニューラルネットワークの認識精度を算出して、当該認識精度と予め定められた目標精度を比較することで認識精度を検証する。この場合、認識精度検証部107は、検証用データ保持部106から読み出した検証値を縮約後のニューラルネットワークに入力し、ニューラルネットワークから出力される出力値と検証用データ保持部106から読み出した正解値とを照らし合わせて認識精度を算出する。そして、認識精度検証部107は、認識精度と目標精度の比較することで、目標精度を基準として認識精度を検証する。
 認識精度検証部107に検証された認識精度が目標精度未満の場合には、認識精度検証部107から演算器割り当て部102に演算器の割り当て数の増加指令が通知される。演算器割り当て部102は、認識精度検証部107から演算器の割り当て数の増加指令を受信すると、演算器の割り当て数を1個増加して割り当て数を更新する。演算回数設定部103は、更新後の演算器の割り当て数に基づいて、縮約後のニューラルネットワークの演算回数を設定する。一方で、認識精度検証部107に検証された認識精度が目標精度以上の場合には、認識精度検証部107から演算器割り当て部102に演算器の割り当て数の減少指令が通知される。演算器割り当て部102は、認識精度検証部107から演算器の割り当て数の減少指令を受信すると、演算器の割り当て数を1個減少して割り当て数を更新する。演算回数設定部103は、更新後の演算器の割り当て数に基づいて、縮約後のニューラルネットワークの演算回数を設定する。
 一例として、第1の実施形態と同様に、図2に示すニューラルネットワークを用いて具体的に説明する。縮約前のニューラルネットワーク演算回数は78回である。演算器割り当て部102によって演算器の割り当て数が20個に設定されると、演算回数設定部103によって次式(14)を用いて演算回数が60回に設定される。ニューラルネットワーク縮約部104によってニューラルネットワークの18回分の演算処理が削減されてニューラルネットワークが縮約される。
 
 78-mod(78,20)=60・・・(14)
 次に、認識精度検証部107によって縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部107による認識精度が目標精度未満である場合には、演算器割り当て部102によって演算器の割り当て数が1個増加されて21個に更新される。演算器の割り当て数が更新されると、演算器割り当て部102によって次式(15)を用いて演算回数が63回に再設定される。ニューラルネットワーク縮約部104によってニューラルネットワークの15回分の演算処理が削減されてニューラルネットワークが再び縮約される。ニューラルネットワークの演算回数が60回から63回に増加しているため認識精度の改善が期待できる。
 
 78-mod(78,21)=63・・・(15)
 次に、認識精度検証部107によって再縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部107による認識精度が目標精度以上になった場合には、ニューラルネットワークのパラメータが画像認識部112に通知され、カメラ120から入力された画像に対する画像認識処理に用いられる。一方、認識精度検証部107による認識精度が目標精度未満になった場合には、再び演算器割り当て部102によって演算器の割り当て数が1個増加される。この処理を繰り返すことで、ニューラルネットワークの認識精度が目標精度に近づけられる。
 なお、縮約後のニューラルネットワークの認識精度が不足している場合に、認識精度を改善するように認識精度検証部107から演算器割り当て部102に演算器の割り当て数の増加指令がフィードバックされる構成に限られない。縮約後のニューラルネットワークの認識精度が必要以上に高い場合に、認識精度を目標精度まで下げるように認識精度検証部107から演算器割り当て部102に演算器の割り当て数の減少指令がフィードバックされてもよい。
 以上のように、第2の実施形態に係る自動運転システムでは、第1の実施形態と同様に、演算処理の処理時間を短縮すると共に複数の演算器の使用効率を高めることができる。
  また、縮約後のニューラルネットワークの認識精度に応じて、ニューラルネットワークの演算処理に対する演算器の割り当て数を調整することができる。よって、ニューラルネットワークの認識精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
[第3の実施形態]
 以下に、第3の実施形態に係る自動運転システムについて説明する。第3の実施形態に係る自動運転システムは、ニューラルネットワークの認識精度を検証しながら、演算回数の調整によってニューラルネットワークを縮約する点について第2の実施形態と相違している。したがって、第1の実施形態と同様な構成については説明を省略する。図14は、第3の実施形態に係る自動運転システムのブロック図である。図14では、第2の実施形態の自動運転システムと同一のブロックについては同一の符号を付している。
 図14に示すように、第3の実施形態に係るニューラルネットワークの縮約装置100では、認識精度検証部107の検証結果に基づいて演算回数設定部103の演算回数を調整するように構成されている。すなわち、認識精度検証部107によって検証された認識精度が目標精度未満の場合には、認識精度検証部107から演算回数設定部103に演算回数の増加指令が通知される。演算回数設定部103は、認識精度検証部107から演算回数の増加指令を受信すると、縮約後のニューラルネットワークの演算回数を増加して演算回数を再設定する。一方で、認識精度検証部107によって検証された認識精度が目標精度以上の場合には、認識精度検証部107から演算回数設定部103に演算回数の減少指令が通知される。演算回数設定部103は、認識精度検証部107から演算回数の減少指令を受信すると、縮約後のニューラルネットワークの演算回数を減少して演算回数を再設定する。
 一例として、第1の実施形態と同様に、図2のニューラルネットワークを用いて具体的に説明する。縮約前のニューラルネットワーク演算回数は78回である。演算器割り当て部102によって演算器の割り当て数が20個に設定されると、演算回数設定部103によって次式(16)を用いて演算回数が設定される。一例として、n=2が設定されていた場合には、演算回数設定部103によって演算回数が20回に設定される。ニューラルネットワーク縮約部104によってニューラルネットワークの58回分の演算処理が削減されてニューラルネットワークが縮約される。
 
 低減後の演算回数=78-mod(78,20)-20×n・・・(16)
 (n=0,1,2,・・・。但し、低減後の演算回数は正数)
 次に、認識精度検証部107によって縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部107による認識精度が目標精度未満である場合には、演算回数設定部103によって式(16)のnの値が1つ減らされてn=1になり、演算回数が40回に再設定される。ニューラルネットワーク縮約部104によってニューラルネットワークの38回分の演算処理が削減されてニューラルネットワークが再び縮約される。ニューラルネットワークの演算回数が20回から40回に増加しているため認識精度の改善が期待できる。
 次に、認識精度検証部107によって再縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部107による認識精度が目標精度以上になった場合には、ニューラルネットワークのパラメータが画像認識部112に通知され、カメラ120から入力された画像に対する画像認識処理に用いられる。一方、認識精度検証部107による認識精度が目標精度未満になった場合には、再び演算回数設定部103によって式(16)のnの値が1つ増加される。この処理を繰り返すことで、ニューラルネットワークの認識精度が目標精度に近づけられる。
 なお、縮約後のニューラルネットワークの認識精度が不足している場合に、認識精度を改善するように認識精度検証部107から演算回数設定部103に演算回数の増加指令がフィードバックされる構成に限られない。縮約後のニューラルネットワークの認識精度が必要以上に高い場合に、認識精度を目標精度まで下げるように認識精度検証部107から演算回数設定部103に演算回数の減少指令がフィードバックされてもよい。
 以上のように、第3の実施形態に係る自動運転システムでは、第2の実施形態と同様に、演算処理の処理時間を短縮すると共に複数の演算器の使用効率を高めることができる。
  また、縮約後のニューラルネットワークの認識精度に応じて、ニューラルネットワークの演算回数を調整することができる。よって、ニューラルネットワークの認識精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
[第4の実施形態]
 以下に、第4の実施形態に係る自動運転システムについて説明する。第4の実施形態に係る自動運転システムは、縮約後のニューラルネットワークの演算回数を、演算器の割り当て数の調整によって補正する点について第1の実施形態と相違している。したがって、第1の実施形態と同様な構成については説明を省略する。図15は、第4の実施形態に係る自動運転システムのブロック図である。図15では、第1の実施形態の自動運転システムと同一のブロックについては同一の符号を付している。
 第4の実施形態に係るニューラルネットワークの縮約装置100には、縮約後のニューラルネットワークの演算回数を補正する機能として演算回数補正部108が設けられている。演算回数補正部108は、演算器割り当て部102によって設定された演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を補正する。この場合、演算回数補正部108は、縮約後のニューラルネットワークに対し、演算器割り当て部102によって設定された演算器の割り当て数の整数倍となるようにニューラルネットワークの演算回数を補正する。
 一例として、第1の実施形態と同様に、図2に示すニューラルネットワークを用いて具体的に説明する。縮約前のニューラルネットワーク演算回数は78回である。演算回数設定部103によって縮約後のニューラルネットワークの演算回数が39回に設定される。この縮約後のニューラルネットワークの演算回数は、縮約前のニューラルネットワークの演算回数の半分にした値である。ニューラルネットワーク縮約部104によって39回部の演算処理が削減されてニューラルネットワークが縮約される。また、演算器割り当て部102によって演算器の割り当て数が20個に設定されると、演算回数補正部108によって次式(17)を用いて縮約後のニューラルネットワークの演算回数が補正される。
 
 補正後の演算回数=(div(39,20)+INT(div(mod(39,20),20)+0.5))*20・・・(17)
 式(17)のdiv(A,B)はAをBによって除算する処理を示し、INT(X)はXの小数点以下を切り捨てする処理を示している。式(17)の一例では、div(39,20)=1、INT(div(mod(39,20),20)+0.5)=1であるため、式(17)が(1+1)*20になって補正後の演算回数が40回に設定される。これにより、縮約後のニューラルネットワークの演算回数を、演算器の割り当て数の整数倍になるように補正することが可能となる。
 以上のように、本発明の第4の実施形態の自動運転システムでは、第1の実施形態と同様に、演算処理の処理時間を短縮すると共に複数の演算器の使用効率を高めることができる。また、最初にニューラルネットワークを縮約して、演算器の割り当て数を考慮しながら縮約後のニューラルネットワークの演算回数を補正することが可能である。
 なお、上記した各実施形態では、画像認識処理に用いるニューラルネットワークの縮約装置について説明したが、この構成に限定されない。ニューラルネットワークの縮約装置は、音声認識処理等の他の認識処理の他、将来データの予測処理に用いるニューラルネットワークの縮約にも適用可能である。
 また、上記した各実施形態では、ニューラルネットワークの縮約装置100がサーバ20に設けられる構成にしたが、ニューラルネットワークの縮約装置100が車両10に設けられていてもよい。
 また、上記した各実施形態では、演算回数設定部103及びニューラルネットワーク縮約部104が、演算装置140による縮約前のニューラルネットワークの演算回数を算出する構成にしたが、この構成に限定されない。縮約前のニューラルネットワークの演算回数はニューラルネットワーク保持部101に予め保持されていてもよい。また、ニューラルネットワークの縮約装置100に縮約前のニューラルネットワークの演算回を算出する演算回数算出部が設けられていてもよい。
 また、上記した各実施形態では、演算器割り当て部102がニューラルネットワークの演算処理に割り当てる演算器302の個数を設定する構成にしたが、この構成に限定されない。演算器割り当て部102は、演算器302の全体数のうちニューラルネットワークの演算処理に割り当てる割合を設定してもよい。
 また、上記した第4の実施形態では、演算回数設定部103がニューラルネットワークの演算回数を設定する構成にしたが、この構成に限定されない。演算回数設定部103は、ニューラルネットワークの演算回数の代わりに、ニューラルネットワークの縮約率を設定してもよい。
 また、上記した第4の実施形態では、演算回数補正部108が演算器の割り当て数の整数倍となるように縮約後のニューラルネットワークの演算回数を補正する構成にしたが、この構成に限定されない。演算回数補正部108は、ニューラルネットワークの層毎に演算回数を補正してもよいし、演算器の割り当て数によって除算した余りが演算器の割り当て数の半分以上になるようにニューラルネットワークの演算回数を補正してもよい。
 以上の通り、本実施形態に記載のニューラルネットワークの縮約装置(100)は、複数の演算器(302)を備えた演算装置(140)によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置(100)であって、ニューラルネットワークの演算処理に対する演算器(302)の割り当て数を設定する演算器割り当て部(102)と、演算器(302)の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部(103)と、演算装置(140)によるニューラルネットワークの演算回数が、演算回数設定部(103)によって設定された演算回数と等しくなるようにニューラルネットワークを縮約するニューラルネットワーク縮約部(104)とを備えている。
 この構成によれば、ニューラルネットワークの演算処理に対する演算器(302)の割り当て数を考慮してニューラルネットワークの演算処理に必要な演算回数が低減される。すなわち、ニューラルネットワークの演算処理に割り当てられた複数の演算器(302)によって同時に処理可能な1サイクル当たりの演算回数が考慮される。よって、少数の演算器(302)だけで演算されるサイクルを無くすようにニューラルネットワークの演算回数を低減して、演算処理の処理時間を短縮すると共に複数の演算器(302)の使用効率を高めることができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、演算回数設定部(103)は、縮約前のニューラルネットワークの演算回数よりも小さく、かつ演算器割り当て部(102)によって設定された演算器(302)の割り当て数の整数倍に縮約後のニューラルネットワークの演算回数を設定する。この構成によれば、ニューラルネットワークの演算処理に割り当てられた複数の演算器(302)によって同時に演算処理が開始されて同時に演算処理が終了される。よって、一部の演算器(302)だけで演算するサイクルが無くなり、演算処理の処理時間を短縮すると共に複数の演算器(302)の使用効率を最大限に高めることができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、演算回数設定部(103)は、演算器割り当て部(102)によって設定された演算器(302)の割り当て数で、ニューラルネットワークの演算回数を除算した余りが当該演算器(302)の割り当て数の半分以上になるように、縮約後のニューラルネットワークの演算回数を設定する。この構成によれば、ニューラルネットワークの演算処理に割り当てられた複数の演算器(302)によって同時に演算処理が開始されて、複数の演算器(302)のうち半分以上の演算器(302)によって同時に演算処理が終了される。よって、少数の演算器(302)だけで演算するサイクルが無くなり、演算処理の処理時間を短縮すると共に複数の演算器(302)の使用効率を高めることができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、ニューラルネットワークは複数の層を有しており、演算器割り当て部(102)はニューラルネットワークの層毎に演算器(302)の割り当て数を設定し、演算回数設定部(103)はニューラルネットワークの層毎に縮約後のニューラルネットワークの演算回数を設定する。この構成によれば、比較的少ない演算器によって演算処理することができるため、演算装置(140)の実装規模を小さくすることができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、ニューラルネットワーク縮約部(104)はPruning処理によってニューラルネットワークを縮約する。この構成によれば、Pruning処理によってニューラルネットワークの精度の低下を抑えつつ、ニューラルネットワークの演算回数を低減することができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部(認識精度検証部107)を備え、精度が目標精度以上の場合に演算器割り当て部(102)が演算器(302)の割り当て数を小さく設定し、精度が目標精度未満の場合に演算器割り当て部(102)が演算器(302)の割り当て数を大きく設定する。この構成によれば、縮約後のニューラルネットワークの精度に応じて、ニューラルネットワークの演算処理に対する演算器(302)の割り当て数を調整することができる。よって、ニューラルネットワークの精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部(認識精度検証部107)を備え、精度が目標精度以上の場合に演算回数設定部(103)が縮約後のニューラルネットワークの演算回数を小さく設定し、精度が目標精度未満の場合に演算回数設定部(103)が縮約後のニューラルネットワークの演算回数を大きく設定する。この構成によれば、縮約後のニューラルネットワークの精度に応じて、ニューラルネットワークの演算回数を調整することができる。よって、ニューラルネットワークの精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
 本実施形態に記載のニューラルネットワークの縮約装置(100)において、複数の演算器(302)を備えた演算装置(140)によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置(100)であって、縮約後のニューラルネットワークの演算回数を設定する演算回数設定部(103)と、演算装置(140)によるニューラルネットワークの演算回数が、演算回数設定部(103)によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部(104)と、ニューラルネットワークの演算処理に対する演算器(302)の割り当て数を設定する演算器割り当て部(102)と、演算器(302)の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を補正する演算回数補正部(108)とを備えている。
 この構成によれば、ニューラルネットワークの演算処理に対する演算器(302)の割り当て数を考慮して、縮約後のニューラルネットワークの演算処理に必要な演算回数が補正される。すなわち、ニューラルネットワークの演算処理に割り当てられた複数の演算器(302)によって同時に処理可能な1サイクル当たりの演算回数が考慮される。よって、少数の演算器だけで演算されるサイクルを無くすようにニューラルネットワークの演算回数を補正して、演算処理の処理時間を短縮すると共に複数の演算器(302)の使用効率を高めることができる。
 以上、本発明の実施形態について詳述したが、本発明は、前記の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の精神を逸脱しない範囲で、種々の設計変更を行うことができるものである。例えば、前記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。さらに、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
100 ニューラルネットワークの縮約装置、102 演算器割り当て部、103 演算回数設定部、104 ニューラルネットワーク縮約部、107 認識精度検証部(精度検証部)、108 演算回数補正部、140 演算装置、302 演算器

Claims (8)

  1.  複数の演算器を備えた演算装置によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置であって、
     ニューラルネットワークの演算処理に対する前記演算器の割り当て数を設定する演算器割り当て部と、
     前記演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部と、
     前記演算装置によるニューラルネットワークの演算回数が、前記演算回数設定部によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部とを備えたことを特徴とするニューラルネットワークの縮約装置。
  2.  前記演算回数設定部は、縮約前のニューラルネットワークの演算回数よりも小さく、かつ前記演算器割り当て部によって設定された前記演算器の割り当て数の整数倍に縮約後のニューラルネットワークの演算回数を設定することを特徴とする請求項1に記載のニューラルネットワークの縮約装置。
  3.  前記演算回数設定部は、前記演算器割り当て部によって設定された前記演算器の割り当て数で、縮約前のニューラルネットワークの演算回数を除算した余りが当該演算器の割り当て数の半分以上になるように、縮約後のニューラルネットワークの演算回数を設定することを特徴とする請求項1に記載のニューラルネットワークの縮約装置。
  4.  ニューラルネットワークは複数の層を有しており、
     前記演算器割り当て部はニューラルネットワークの層毎に前記演算器の割り当て数を設定し、
     前記演算回数設定部はニューラルネットワークの層毎に縮約後のニューラルネットワークの演算回数を設定することを特徴とする請求項1に記載のニューラルネットワークの縮約装置。
  5.  前記ニューラルネットワーク縮約部はPruning処理によってニューラルネットワークを縮約することを特徴とする請求項1に記載のニューラルネットワークの縮約装置。
  6.  縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部を備え、
     前記精度が目標精度以上の場合に前記演算器割り当て部が前記演算器の割り当て数を小さく設定し、前記精度が目標精度未満の場合に前記演算器割り当て部が前記演算器の割り当て数を大きく設定することを特徴とする請求項1から請求項5のいずれか一項に記載のニューラルネットワークの縮約装置。
  7.  縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部を備え、
     前記精度が目標精度以上の場合に前記演算回数設定部が縮約後のニューラルネットワークの演算回数を小さく設定し、前記精度が目標精度未満の場合に前記演算回数設定部が縮約後のニューラルネットワークの演算回数を大きく設定することを特徴とする請求項1から請求項5のいずれか一項に記載のニューラルネットワークの縮約装置。
  8.  複数の演算器を備えた演算装置によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置であって、
     縮約後のニューラルネットワークの演算回数を設定する演算回数設定部と、
     前記演算装置によるニューラルネットワークの演算回数が、前記演算回数設定部によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部と、
     ニューラルネットワークの演算処理に対する前記演算器の割り当て数を設定する演算器割り当て部と、
     前記演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を補正する演算回数補正部とを備えたことを特徴とするニューラルネットワークの縮約装置。
PCT/JP2020/000231 2019-01-18 2020-01-08 ニューラルネットワークの縮約装置 Ceased WO2020149178A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US17/298,801 US12412097B2 (en) 2019-01-18 2020-01-08 Neural network compression device
DE112020000202.0T DE112020000202T5 (de) 2019-01-18 2020-01-08 Komprimierungsvorrichtung für neuronale Netze
CN202080006824.3A CN113272831B (zh) 2019-01-18 2020-01-08 神经网络的缩简装置
JP2020566382A JP7104183B2 (ja) 2019-01-18 2020-01-08 ニューラルネットワークの縮約装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-006660 2019-01-18
JP2019006660 2019-01-18

Publications (1)

Publication Number Publication Date
WO2020149178A1 true WO2020149178A1 (ja) 2020-07-23

Family

ID=71613862

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/000231 Ceased WO2020149178A1 (ja) 2019-01-18 2020-01-08 ニューラルネットワークの縮約装置

Country Status (5)

Country Link
US (1) US12412097B2 (ja)
JP (1) JP7104183B2 (ja)
CN (1) CN113272831B (ja)
DE (1) DE112020000202T5 (ja)
WO (1) WO2020149178A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4092579A1 (en) 2021-05-21 2022-11-23 Fujitsu Limited Machine learning program, machine learning method, and information processing device
JP2023030754A (ja) * 2021-08-24 2023-03-08 キヤノン株式会社 ニューラルネットワーク演算装置、ニューラルネットワーク演算装置の制御方法およびプログラム
JP2024510624A (ja) * 2021-03-26 2024-03-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 行列乗算演算のための行列の近似のためのデータ圧縮器

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220036164A1 (en) * 2020-07-29 2022-02-03 Micron Technology, Inc. Neuromorphic memory and inference engine stacked with image sensor to reduce data traffic to host
US12246736B2 (en) 2020-07-29 2025-03-11 Micron Technology, Inc. Image sensor for processing sensor data to reduce data traffic to host system
US20250103901A1 (en) * 2023-09-22 2025-03-27 Robert Bosch Gmbh Collaborative learning with full model alignment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11215380A (ja) * 1998-01-26 1999-08-06 Ricoh Co Ltd 画像処理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2877413B2 (ja) * 1990-02-06 1999-03-31 富士通株式会社 余剰ニューロン決定処理方式
JP6258560B2 (ja) * 2015-05-27 2018-01-10 株式会社日立製作所 ニューラルネットワークの学習装置及び学習方法
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
US10762426B2 (en) * 2016-08-12 2020-09-01 Beijing Deephi Intelligent Technology Co., Ltd. Multi-iteration compression for deep neural networks
KR102415506B1 (ko) * 2016-10-26 2022-07-01 삼성전자주식회사 뉴럴 네트워크 간소화 방법 및 장치
KR102457463B1 (ko) * 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
US10650303B2 (en) * 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
US11615297B2 (en) * 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
WO2020033898A1 (en) * 2018-08-09 2020-02-13 Board Of Trustees Of Michigan State University Systems and methods for providing flexible, multi-capacity models for use of deep neural networks in mobile devices
KR102796861B1 (ko) * 2018-12-10 2025-04-17 삼성전자주식회사 인공 신경망을 압축하기 위한 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11215380A (ja) * 1998-01-26 1999-08-06 Ricoh Co Ltd 画像処理装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KOJIMA , TAKAO: "Intelligent technology to support the s advancement of automated driving", HITACHI REVIEW, vol. 99, no. 5, October 2017 (2017-10-01), pages 52 - 56, ISSN: 0367-5874 *
YOSHIDA, AKIMASA: "2.2 Execution method of coarse grain task parallel processing", LAYER-UNIFIED EXECUTION CONTROL SCHEME FOR COARSE GRAIN TASK PARALLEL PROCESSING, IPSJ JOURNAL, vol. 45, no. 12, 15 December 2004 (2004-12-15), pages 2732 - 2740, ISSN: 0387-5806 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2024510624A (ja) * 2021-03-26 2024-03-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 行列乗算演算のための行列の近似のためのデータ圧縮器
JP7797522B2 (ja) 2021-03-26 2026-01-13 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 行列乗算演算のための行列の近似のためのデータ圧縮器
EP4092579A1 (en) 2021-05-21 2022-11-23 Fujitsu Limited Machine learning program, machine learning method, and information processing device
JP2023030754A (ja) * 2021-08-24 2023-03-08 キヤノン株式会社 ニューラルネットワーク演算装置、ニューラルネットワーク演算装置の制御方法およびプログラム

Also Published As

Publication number Publication date
US12412097B2 (en) 2025-09-09
DE112020000202T5 (de) 2021-08-26
JP7104183B2 (ja) 2022-07-20
JPWO2020149178A1 (ja) 2021-10-14
US20220036190A1 (en) 2022-02-03
CN113272831A (zh) 2021-08-17
CN113272831B (zh) 2024-07-23

Similar Documents

Publication Publication Date Title
WO2020149178A1 (ja) ニューラルネットワークの縮約装置
CN111758104B (zh) 适合于硬件实现的神经网络参数优化方法、神经网络计算方法和装置
JP7021904B2 (ja) 畳み込み神経網処理方法及び装置
US11847569B2 (en) Training and application method of a multi-layer neural network model, apparatus and storage medium
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
JP6990813B2 (ja) 多層ニューラルネットワークモデルの学習及び適用方法、装置、並びに記憶媒体
KR20190128795A (ko) 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
CN111062472A (zh) 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法
KR102610842B1 (ko) 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법
KR101987475B1 (ko) 하드웨어 구현에 적합한 신경망 파라미터 최적화 방법, 신경망 연산방법 및 그 장치
CN107844826A (zh) 神经网络处理单元及包含该处理单元的处理系统
KR20200062743A (ko) 컨볼루션 신경망 훈련의 다차원 병렬화 방법과 이를 수행하는 장치 사이의 재구성 가능한 연결 구조
CN115600637B (zh) 面向数据流神经网络加速器设计的架构自动优化方法
KR102247896B1 (ko) 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
KR102396447B1 (ko) 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
CN109919312B (zh) 卷积神经网络的运算方法、装置及dpu
KR102153167B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
CN114065923A (zh) 一种卷积神经网络的压缩方法、系统及加速装置
CN110929854A (zh) 一种数据处理方法、装置及硬件加速器
CN108304926B (zh) 一种适用于神经网络的池化计算装置及方法
CN114298291A (zh) 一种模型量化处理系统及一种模型量化处理方法
CN110197262B (zh) 用于lstm网络的硬件加速器
CN116205275A (zh) 量化参数模型的训练方法及装置、电子设备、存储介质
CN114065121B (zh) 一种求解伊辛模型的计算方法及设备
CN114647818A (zh) 矩阵运算结果的确定方法及装置、存储介质、电子装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20740966

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020566382

Country of ref document: JP

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 20740966

Country of ref document: EP

Kind code of ref document: A1

WWG Wipo information: grant in national office

Ref document number: 17298801

Country of ref document: US