US 12,135,761 B2
Applying a convolution kernel on input data
Orly Weisel, Efrat (IL); Yaniv Fais, Tel Aviv (IL); and Arik Gaon, Shomrat (IL)
Assigned to Mobileye Vision Technologies Ltd., Jerusalem (IL)
Filed by Mobileye Vision Technologies Ltd., Jerusalem (IL)
Filed on Dec. 30, 2021, as Appl. No. 17/565,673.
Claims priority of provisional application 63/135,302, filed on Jan. 8, 2021.
Prior Publication US 2022/0222317 A1, Jul. 14, 2022
Int. Cl. G06F 17/15 (2006.01); B60W 60/00 (2020.01); G06N 3/04 (2023.01); G06V 10/44 (2022.01)
CPC G06F 17/153 (2013.01) [B60W 60/001 (2020.02); G06N 3/04 (2013.01); G06V 10/454 (2022.01)] 17 Claims
OG exemplary drawing
 
1. A system for convolution processing, the system comprising:
a memory module configured to receive input data, wherein the input data comprises input data segments of different input channels and of different input depth values; wherein a number of the different input channels exceeds a depth of the input data; and
a processing circuit configured to apply a convolution kernel on the input data to provide output data that comprises output data segments of different output channels and different output depth values;
wherein an application of the convolution kernel comprises, for each input data depth value of each different input depth values, repeating:
scanning, in parallel, input data segments of the different input channels and of the input data depth value, with portions of the convolution kernel associated with the input data depth value, to provide first intermediate results associated with the input data depth value;
scanning an input data segment of a certain input data channel with a certain convolution kernel segment to provide a certain output data segment, wherein different convolution kernel segments are allocated to different combinations of input data channels and output data channels; and
summing first intermediate results associated with a same output data channel and with different input depth values to provide, per each output data channel, a second result.
 
7. A method for applying a convolution kernel on input data, the method comprising:
receiving an input data by a processing circuit, the input data comprising input data segments of different input channels and of different input depth values, wherein a number of the different input channels exceeds a depth of the input data; and
applying, by the processing circuit, a convolution kernel on the input data to provide output data that comprises output data segments of different output channels and different output depth values;
wherein the application of the convolution kernel comprises, for each input data depth value of each different input depth values, repeating:
scanning, in parallel, input data segments of the different input channels and of the input data depth value, with portions of the convolution kernel associated with the input data depth value, to provide first intermediate results associated with the input data depth value;
scanning an input data segment of a certain input data channel with a certain convolution kernel segment to provide a certain output data segment, wherein different convolution kernel segments are allocated to different combinations of input data channels and output data channels; and
summing first intermediate results associated with a same output data channel and with different input depth values to provide, per each output data channel, a second result.
 
13. At least one non-transitory machine-readable storage medium, comprising a plurality of instructions that, responsive to being executed with processor circuitry of a computer-controlled device, cause the computer-controlled device to:
receive input data at a processing circuit, the input data comprising input data segments of different input channels and of different input depth values; wherein a number of the different input channels exceeds a depth of the input data; and
apply, by the processing circuit, a convolution kernel on the input data to provide output data that comprises output data segments of different output channels and different output depth values;
wherein the application of the convolution kernel comprises, for each input data depth value of each different input depth values, repeating:
scanning, in parallel, input data segments of the different input channels and of the input data depth value, with portions of the convolution kernel associated with the input data depth value, to provide first intermediate results associated with the input data depth value;
scanning an input data segment of a certain input data channel with a certain convolution kernel segment to provide a certain output data segment, wherein different convolution kernel segments are allocated to different combinations of input data channels and output data channels; and
summing first intermediate results associated with a same output data channel and with different input depth values to provide, per each output data channel, a second result.